Archived
1
0
Fork 0

Refresh 16

This commit is contained in:
n64 2023-08-17 08:56:02 -04:00
parent 66018e9f3c
commit ae770e0df5
1326 changed files with 73566 additions and 26397 deletions

26
CHANGES
View file

@ -1,3 +1,29 @@
Refresh 16 (Two years later...)
1.) remove capstone from readme, slight update (#1212)
2.) Update ido static recomp (#1211)
3.) Fix misleading pointer (#1209)
4.) update outdated link (#1208)
5.) Match iQue (#1207)
6.) iQue matching except BSS (#1124)
7.) Create LICENSE.md
8.) Reorganize and apply licenses to some of the tools/ programs per discussions with their author(s). (#1203)
9.) Fix rumble_init libultra includes and checks (#1195)
10.) Stacksize moved to defines (#1199)
11.) Renamings we were too lazy to make a PR for for 3 years (#1198)
12.) Fix spelling error in sound.h comment (#1197)
13.) Update instrument sample names (#1196)
14.) Object Labeling, Behavior Params, and Cleanup (#1193)
15.) Significantly more Libultra Cleanup (#1192)
16.) Typedefs for area Terrain Data and Rooms (#1178)
17.) Allow spaces in filename for vadpcm_enc (#1175)
18.) Label all warp nodes (#1191)
19.) Remove hardware.h (#1190)
20.) Document __osSetHWintrRoutine (#1186)
21.) Change 3 space indent to 4 space indent and cleanup (#1189)
22.) Libultra cleanup and labelling (#1188)
23.) in-game menu renaming (#1187)
24.) AVOID_UB fixes and cleanup (#1185)
Refresh 15 (mostly a hotfix for RSP microcode selection)
1.) Renamed frame_buffer funcs and _ZBUFFER (#1184)

View file

@ -3,9 +3,8 @@ FROM ubuntu:18.04 as build
RUN apt-get update && \
apt-get install -y \
binutils-mips-linux-gnu \
bsdmainutils \
build-essential \
libcapstone-dev \
git \
pkgconf \
python3

16
Jenkinsfile vendored
View file

@ -12,32 +12,38 @@ pipeline {
sh 'ln -s "$ROMS_DIR/Super Mario 64 (U) [!].z64" baserom.us.z64'
sh 'ln -s "$ROMS_DIR/Super Mario 64 (E) (M3) [!].z64" baserom.eu.z64'
sh 'ln -s "$ROMS_DIR/Super Mario 64 - Shindou Edition (J) [!].z64" baserom.sh.z64'
sh 'ln -s "$ROMS_DIR/Super Mario 64 - iQue (Ch).z64" baserom.cn.z64'
// verify no assets were committed to repo
sh '[ -z "$(find {actors,levels,textures}/ -name \'*.png\')" ]'
sh '[ -z "$(find assets/ -name \'*.m64\' -or \'*.bin\')" ]'
sh './extract_assets.py jp us eu sh'
sh './extract_assets.py jp us eu sh cn'
}
}
stage('Build U Source') {
stage('Build US Source') {
steps {
sh 'make -j4 VERSION=us VERBOSE=1 COLOR=0'
}
}
stage('Build S Source') {
stage('Build SH Source') {
steps {
sh 'make -j4 VERSION=sh VERBOSE=1 COLOR=0'
}
}
stage('Build E Source') {
stage('Build EU Source') {
steps {
sh 'make -j4 VERSION=eu VERBOSE=1 COLOR=0'
}
}
stage('Build J Source') {
stage('Build JP Source') {
steps {
sh 'make -j4 VERSION=jp VERBOSE=1 COLOR=0'
}
}
stage('Build CN Source') {
steps {
sh 'make -j4 VERSION=cn VERBOSE=1 COLOR=0 COMPARE=0'
}
}
stage('Test Enhancements') {
steps {
sh '''

241
Makefile
View file

@ -32,29 +32,40 @@ $(eval $(call validate-option,COMPILER,ido gcc))
# us - builds the 1996 North American version
# eu - builds the 1997 PAL version
# sh - builds the 1997 Japanese Shindou version, with rumble pak support
# cn - builds the 2003 Chinese iQue version
VERSION ?= us
$(eval $(call validate-option,VERSION,jp us eu sh))
$(eval $(call validate-option,VERSION,jp us eu sh cn))
ifeq ($(VERSION),jp)
DEFINES += VERSION_JP=1
OPT_FLAGS := -g
GRUCODE ?= f3d_old
VERSION_JP_US ?= true
VERSION_SH_CN ?= false
else ifeq ($(VERSION),us)
DEFINES += VERSION_US=1
OPT_FLAGS := -g
GRUCODE ?= f3d_old
VERSION_JP_US ?= true
VERSION_SH_CN ?= false
else ifeq ($(VERSION),eu)
DEFINES += VERSION_EU=1
OPT_FLAGS := -O2
GRUCODE ?= f3d_new
VERSION_JP_US ?= false
VERSION_SH_CN ?= false
else ifeq ($(VERSION),sh)
DEFINES += VERSION_SH=1
OPT_FLAGS := -O2
GRUCODE ?= f3d_new
VERSION_JP_US ?= false
VERSION_SH_CN ?= true
else ifeq ($(VERSION),cn)
DEFINES += VERSION_CN=1
OPT_FLAGS := -O2
GRUCODE ?= f3d_new
VERSION_JP_US ?= false
VERSION_SH_CN ?= true
endif
TARGET := sm64.$(VERSION)
@ -129,7 +140,7 @@ $(eval $(call validate-option,COMPARE,0 1))
TARGET_STRING := sm64.$(VERSION).$(GRUCODE)
# If non-default settings were chosen, disable COMPARE
ifeq ($(filter $(TARGET_STRING), sm64.jp.f3d_old sm64.us.f3d_old sm64.eu.f3d_new sm64.sh.f3d_new),)
ifeq ($(filter $(TARGET_STRING), sm64.jp.f3d_old sm64.us.f3d_old sm64.eu.f3d_new sm64.sh.f3d_new sm64.cn.f3d_new),)
COMPARE := 0
endif
@ -161,6 +172,7 @@ ifeq ($(filter clean distclean,$(MAKECMDGOALS)),)
$(info =======================)
endif
DEFINES += _FINALROM=1
#==============================================================================#
# Universal Dependencies #
@ -186,11 +198,16 @@ ifeq ($(filter clean distclean print-%,$(MAKECMDGOALS)),)
endif
# Make tools if out of date
$(info Building tools...)
$(info Building general tools...)
DUMMY != $(MAKE) -s -C $(TOOLS_DIR) $(if $(filter-out ido0,$(COMPILER)$(USE_QEMU_IRIX)),all-except-recomp,) >&2 || echo FAIL
ifeq ($(DUMMY),FAIL)
$(error Failed to build tools)
endif
$(info Building sm64tools...)
DUMMY != $(MAKE) -s -C $(TOOLS_DIR)/sm64tools $(if $(filter-out ido0,$(COMPILER)$(USE_QEMU_IRIX)),) >&2 || echo FAIL
ifeq ($(DUMMY),FAIL)
$(error Failed to build tools)
endif
$(info Building ROM...)
endif
@ -207,6 +224,8 @@ ROM := $(BUILD_DIR)/$(TARGET).z64
ELF := $(BUILD_DIR)/$(TARGET).elf
LIBULTRA := $(BUILD_DIR)/libultra.a
LD_SCRIPT := sm64.ld
CHARMAP := charmap.txt
CHARMAP_DEBUG := charmap.debug.txt
MIO0_DIR := $(BUILD_DIR)/bin
SOUND_BIN_DIR := $(BUILD_DIR)/sound
TEXTURE_DIR := textures
@ -217,6 +236,10 @@ LEVEL_DIRS := $(patsubst levels/%,%,$(dir $(wildcard levels/*/header.h)))
SRC_DIRS := src src/engine src/game src/audio src/menu src/buffers actors levels bin data assets asm lib sound
BIN_DIRS := bin bin/$(VERSION)
ifeq ($(VERSION),cn)
LIBGCC_SRC_DIRS += lib/src/libgcc
endif
ULTRA_SRC_DIRS := lib/src lib/src/math lib/asm lib/data
ULTRA_BIN_DIRS := lib/bin
@ -232,6 +255,7 @@ S_FILES := $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.s))
ULTRA_C_FILES := $(foreach dir,$(ULTRA_SRC_DIRS),$(wildcard $(dir)/*.c))
GODDARD_C_FILES := $(foreach dir,$(GODDARD_SRC_DIRS),$(wildcard $(dir)/*.c))
ULTRA_S_FILES := $(foreach dir,$(ULTRA_SRC_DIRS),$(wildcard $(dir)/*.s))
LIBGCC_C_FILES := $(foreach dir,$(LIBGCC_SRC_DIRS),$(wildcard $(dir)/*.c))
GENERATED_C_FILES := $(BUILD_DIR)/assets/mario_anim_data.c $(BUILD_DIR)/assets/demo_data.c
# Sound files
@ -240,7 +264,11 @@ SOUND_SAMPLE_DIRS := $(wildcard sound/samples/*)
SOUND_SAMPLE_AIFFS := $(foreach dir,$(SOUND_SAMPLE_DIRS),$(wildcard $(dir)/*.aiff))
SOUND_SAMPLE_TABLES := $(foreach file,$(SOUND_SAMPLE_AIFFS),$(BUILD_DIR)/$(file:.aiff=.table))
SOUND_SAMPLE_AIFCS := $(foreach file,$(SOUND_SAMPLE_AIFFS),$(BUILD_DIR)/$(file:.aiff=.aifc))
ifeq ($(VERSION),cn)
SOUND_SEQUENCE_DIRS := sound/sequences sound/sequences/sh
else
SOUND_SEQUENCE_DIRS := sound/sequences sound/sequences/$(VERSION)
endif
# all .m64 files in SOUND_SEQUENCE_DIRS, plus all .m64 files that are generated from .s files in SOUND_SEQUENCE_DIRS
SOUND_SEQUENCE_FILES := \
$(foreach dir,$(SOUND_SEQUENCE_DIRS),\
@ -258,16 +286,14 @@ ULTRA_O_FILES := $(foreach file,$(ULTRA_S_FILES),$(BUILD_DIR)/$(file:.s=.o)) \
GODDARD_O_FILES := $(foreach file,$(GODDARD_C_FILES),$(BUILD_DIR)/$(file:.c=.o))
LIBGCC_O_FILES := $(foreach file,$(LIBGCC_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
DEP_FILES := $(O_FILES:.o=.d) $(ULTRA_O_FILES:.o=.d) $(GODDARD_O_FILES:.o=.d) $(LIBGCC_O_FILES:.o=.d) $(BUILD_DIR)/$(LD_SCRIPT).d
# Files with GLOBAL_ASM blocks
ifeq ($(NON_MATCHING),0)
ifeq ($(VERSION),sh)
GLOBAL_ASM_C_FILES != grep -rl 'GLOBAL_ASM(' $(wildcard src/**/*.c) $(wildcard lib/src/*.c)
else
GLOBAL_ASM_C_FILES != grep -rl 'GLOBAL_ASM(' $(wildcard src/**/*.c)
endif
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
endif
@ -277,6 +303,9 @@ endif
# Compiler Options #
#==============================================================================#
IQUE_EGCS_PATH := $(TOOLS_DIR)/ique_egcs
IQUE_LD_PATH := $(TOOLS_DIR)/ique_ld
# detect prefix for MIPS toolchain
ifneq ($(call find-command,mips-linux-gnu-ld),)
CROSS := mips-linux-gnu-
@ -298,13 +327,17 @@ else
ACPP := $(QEMU_IRIX) -silent -L $(IRIX_ROOT) $(IRIX_ROOT)/usr/lib/acpp
COPT := $(QEMU_IRIX) -silent -L $(IRIX_ROOT) $(IRIX_ROOT)/usr/lib/copt
else
IDO_ROOT := $(TOOLS_DIR)/ido5.3_recomp
IDO_ROOT := $(TOOLS_DIR)/ido-static-recomp/build/out
CC := $(IDO_ROOT)/cc
ACPP := $(IDO_ROOT)/acpp
COPT := $(IDO_ROOT)/copt
endif
endif
ifeq ($(VERSION),cn)
LD := LD_LIBRARY_PATH=$(IQUE_LD_PATH) $(IQUE_LD_PATH)/mips64-elf-ld
else
LD := $(CROSS)ld
endif
AR := $(CROSS)ar
OBJDUMP := $(CROSS)objdump
OBJCOPY := $(CROSS)objcopy
@ -322,13 +355,41 @@ endif
C_DEFINES := $(foreach d,$(DEFINES),-D$(d))
DEF_INC_CFLAGS := $(foreach i,$(INCLUDE_DIRS),-I$(i)) $(C_DEFINES)
IQUE_AS := $(IQUE_EGCS_PATH)/as
IQUE_ASFLAGS = -mcpu=r4300 -mabi=32 $(MIPSISET) $(foreach i,$(INCLUDE_DIRS),-I$(i)) $(foreach d,$(DEFINES),--defsym $(d))
ifeq ($(VERSION),cn)
IQUE_REASSEMBLED_ASM_FILES := $(wildcard asm/*.s) $(wildcard lib/asm/*.s)
IQUE_REASSEMBLED_ASM_FILES := $(filter-out asm/ipl3_font.s,$(IQUE_REASSEMBLED_ASM_FILES))
IQUE_REASSEMBLED := $(foreach file,$(IQUE_REASSEMBLED_ASM_FILES),$(BUILD_DIR)/$(file:.s=.o))
$(IQUE_REASSEMBLED): AS := $(IQUE_AS)
$(IQUE_REASSEMBLED): MIPSISET :=
$(IQUE_REASSEMBLED): ASFLAGS = $(IQUE_ASFLAGS)
endif
IQUE_CC := COMPILER_PATH=$(IQUE_EGCS_PATH) $(IQUE_EGCS_PATH)/gcc
IQUE_CFLAGS = -G 0 $(TARGET_CFLAGS) $(OPT_FLAGS) -D__sgi -DBBPLAYER -mcpu=r4300 -mgp32 -fno-pic -Wa,--strip-local-absolute $(MIPSISET) $(DEF_INC_CFLAGS)
# iQue recompiled some files with a different compiler
ifeq ($(VERSION),cn)
IQUE_RECOMPILED_SRC_GAME := $(addprefix $(BUILD_DIR)/src/game/,rumble_init.o level_update.o memory.o area.o print.o ingame_menu.o hud.o cn_common_syms_1.o cn_common_syms_2.o) $(addprefix $(BUILD_DIR)/src/menu/,title_screen.o intro_geo.o file_select.o star_select.o)
IQUE_RECOMPILED_LIB_SRC := $(ULTRA_O_FILES)
# osDriveRomInit is weird
IQUE_RECOMPILED_LIB_SRC := $(filter-out $(addprefix $(BUILD_DIR)/lib/src/,osDriveRomInit.o),$(IQUE_RECOMPILED_LIB_SRC))
IQUE_RECOMPILED_LIBGCC_SRC := $(LIBGCC_O_FILES)
IQUE_RECOMPILED = $(IQUE_RECOMPILED_SRC_GAME) $(IQUE_RECOMPILED_LIB_SRC) $(IQUE_RECOMPILED_LIBGCC_SRC)
$(IQUE_RECOMPILED): CC := $(IQUE_CC)
$(IQUE_RECOMPILED): MIPSISET :=
$(IQUE_RECOMPILED): CFLAGS = $(IQUE_CFLAGS)
endif
# Prefer clang as C preprocessor if installed on the system
ifneq (,$(call find-command,clang))
CPP := clang
CPPFLAGS := -E -P -x c -Wno-trigraphs $(DEF_INC_CFLAGS)
CPPFLAGS := -E -P -x c -Wno-trigraphs -D_LANGUAGE_ASSEMBLY $(DEF_INC_CFLAGS)
else
CPP := cpp
CPPFLAGS := -P -Wno-trigraphs $(DEF_INC_CFLAGS)
CPPFLAGS := -P -Wno-trigraphs -D_LANGUAGE_ASSEMBLY $(DEF_INC_CFLAGS)
endif
# Check code syntax with host compiler
@ -362,10 +423,10 @@ export LANG := C
#==============================================================================#
# N64 tools
MIO0TOOL := $(TOOLS_DIR)/mio0
N64CKSUM := $(TOOLS_DIR)/n64cksum
N64GRAPHICS := $(TOOLS_DIR)/n64graphics
N64GRAPHICS_CI := $(TOOLS_DIR)/n64graphics_ci
MIO0TOOL := $(TOOLS_DIR)/sm64tools/mio0
N64CKSUM := $(TOOLS_DIR)/sm64tools/n64cksum
N64GRAPHICS := $(TOOLS_DIR)/sm64tools/n64graphics
N64GRAPHICS_CI := $(TOOLS_DIR)/sm64tools/n64graphics_ci
TEXTCONV := $(TOOLS_DIR)/textconv
AIFF_EXTRACT_CODEBOOK := $(TOOLS_DIR)/aiff_extract_codebook
VADPCM_ENC := $(TOOLS_DIR)/vadpcm_enc
@ -394,10 +455,13 @@ YELLOW := \033[0;33m
BLINK := \033[33;5m
endif
# Use Objcopy instead of extract_data_for_mio
# Use objcopy instead of extract_data_for_mio to get 16-byte aligned padding
ifeq ($(COMPILER),gcc)
EXTRACT_DATA_FOR_MIO := $(OBJCOPY) -O binary --only-section=.data
endif
ifeq ($(VERSION),cn)
EXTRACT_DATA_FOR_MIO := $(OBJCOPY) -O binary --only-section=.data
endif
# Common build print status function
define print
@ -420,6 +484,7 @@ clean:
distclean: clean
$(PYTHON) extract_assets.py --clean
$(MAKE) -C $(TOOLS_DIR) clean
$(MAKE) -C $(TOOLS_DIR)/sm64tools clean
test: $(ROM)
$(EMULATOR) $(EMU_FLAGS) $<
@ -430,13 +495,13 @@ load: $(ROM)
libultra: $(BUILD_DIR)/libultra.a
# Extra object file dependencies
$(BUILD_DIR)/asm/boot.o: $(IPL3_RAW_FILES)
$(BUILD_DIR)/asm/ipl3_font.o: $(IPL3_RAW_FILES)
$(BUILD_DIR)/src/game/crash_screen.o: $(CRASH_TEXTURE_C_FILES)
$(BUILD_DIR)/lib/rsp.o: $(BUILD_DIR)/rsp/rspboot.bin $(BUILD_DIR)/rsp/fast3d.bin $(BUILD_DIR)/rsp/audio.bin
$(SOUND_BIN_DIR)/sound_data.o: $(SOUND_BIN_DIR)/sound_data.ctl.inc.c $(SOUND_BIN_DIR)/sound_data.tbl.inc.c $(SOUND_BIN_DIR)/sequences.bin.inc.c $(SOUND_BIN_DIR)/bank_sets.inc.c
$(BUILD_DIR)/levels/scripts.o: $(BUILD_DIR)/include/level_headers.h
ifeq ($(VERSION),sh)
ifeq ($(VERSION_SH_CN),true)
$(BUILD_DIR)/src/audio/load_sh.o: $(SOUND_BIN_DIR)/bank_sets.inc.c $(SOUND_BIN_DIR)/sequences_header.inc.c $(SOUND_BIN_DIR)/ctl_header.inc.c $(SOUND_BIN_DIR)/tbl_header.inc.c
endif
@ -468,8 +533,9 @@ else
$(BUILD_DIR)/bin/segment2.o: $(BUILD_DIR)/text/$(VERSION)/define_text.inc.c
endif
endif
$(BUILD_DIR)/bin/segment2.o: $(BUILD_DIR)/text/debug_text.raw.inc.c
ALL_DIRS := $(BUILD_DIR) $(addprefix $(BUILD_DIR)/,$(SRC_DIRS) $(GODDARD_SRC_DIRS) $(ULTRA_SRC_DIRS) $(ULTRA_BIN_DIRS) $(BIN_DIRS) $(TEXTURE_DIRS) $(TEXT_DIRS) $(SOUND_SAMPLE_DIRS) $(addprefix levels/,$(LEVEL_DIRS)) rsp include) $(MIO0_DIR) $(addprefix $(MIO0_DIR)/,$(VERSION)) $(SOUND_BIN_DIR) $(SOUND_BIN_DIR)/sequences/$(VERSION)
ALL_DIRS := $(BUILD_DIR) $(addprefix $(BUILD_DIR)/,$(SRC_DIRS) $(GODDARD_SRC_DIRS) $(ULTRA_SRC_DIRS) $(ULTRA_BIN_DIRS) $(LIBGCC_SRC_DIRS) $(BIN_DIRS) $(TEXTURE_DIRS) $(TEXT_DIRS) $(SOUND_SAMPLE_DIRS) $(addprefix levels/,$(LEVEL_DIRS)) rsp 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)
@ -608,18 +674,27 @@ $(BUILD_DIR)/assets/demo_data.c: assets/demo_data.json $(wildcard assets/demos/*
$(V)$(PYTHON) $(TOOLS_DIR)/demo_data_converter.py assets/demo_data.json $(DEF_INC_CFLAGS) > $@
# Encode in-game text strings
$(BUILD_DIR)/include/text_strings.h: include/text_strings.h.in
$(BUILD_DIR)/$(CHARMAP): $(CHARMAP)
$(call print,Preprocessing charmap:,$<,$@)
$(V)$(CPP) $(CPPFLAGS) -DBUILD_DIR=$(BUILD_DIR) -MMD -MP -MT $@ -MF $@.d -o $@ $<
$(BUILD_DIR)/$(CHARMAP_DEBUG): $(CHARMAP)
$(call print,Preprocessing charmap:,$<,$@)
$(V)$(CPP) $(CPPFLAGS) -DCHARMAP_DEBUG -DBUILD_DIR=$(BUILD_DIR) -MMD -MP -MT $@ -MF $@.d -o $@ $<
$(BUILD_DIR)/include/text_strings.h: include/text_strings.h.in $(BUILD_DIR)/$(CHARMAP)
$(call print,Encoding:,$<,$@)
$(V)$(TEXTCONV) charmap.txt $< $@
$(V)$(TEXTCONV) $(BUILD_DIR)/$(CHARMAP) $< $@
$(BUILD_DIR)/include/text_menu_strings.h: include/text_menu_strings.h.in
$(call print,Encoding:,$<,$@)
$(V)$(TEXTCONV) charmap_menu.txt $< $@
$(BUILD_DIR)/text/%/define_courses.inc.c: text/define_courses.inc.c text/%/courses.h
@$(PRINT) "$(GREEN)Preprocessing: $(BLUE)$@ $(NO_COL)\n"
$(V)$(CPP) $(CPPFLAGS) $< -o - -I text/$*/ | $(TEXTCONV) charmap.txt - $@
$(V)$(CPP) $(CPPFLAGS) $< -o - -I text/$*/ | $(TEXTCONV) $(BUILD_DIR)/$(CHARMAP) - $@
$(BUILD_DIR)/text/%/define_text.inc.c: text/define_text.inc.c text/%/courses.h text/%/dialogs.h
@$(PRINT) "$(GREEN)Preprocessing: $(BLUE)$@ $(NO_COL)\n"
$(V)$(CPP) $(CPPFLAGS) $< -o - -I text/$*/ | $(TEXTCONV) charmap.txt - $@
$(V)$(CPP) $(CPPFLAGS) $< -o - -I text/$*/ | $(TEXTCONV) $(BUILD_DIR)/$(CHARMAP) - $@
$(BUILD_DIR)/text/debug_text.raw.inc.c: text/debug_text.inc.c $(BUILD_DIR)/$(CHARMAP_DEBUG)
@$(PRINT) "$(GREEN)Preprocessing: $(BLUE)$@ $(NO_COL)\n"
$(V)$(CPP) $(CPPFLAGS) $< -o - -I text/$*/ | $(TEXTCONV) $(BUILD_DIR)/$(CHARMAP_DEBUG) - $@
# Level headers
$(BUILD_DIR)/include/level_headers.h: levels/level_headers.h.in
@ -645,12 +720,18 @@ $(GLOBAL_ASM_DEP).$(NON_MATCHING):
# Compile C code
$(BUILD_DIR)/%.o: %.c
$(call print,Compiling:,$<,$@)
@$(CC_CHECK) $(CC_CHECK_CFLAGS) -MMD -MP -MT $@ -MF $(BUILD_DIR)/$*.d $<
$(V)$(CC_CHECK) $(CC_CHECK_CFLAGS) -MMD -MP -MT $@ -MF $(BUILD_DIR)/$*.d $<
$(V)$(CC) -c $(CFLAGS) -o $@ $<
ifeq ($(VERSION),cn)
$(V)$(TOOLS_DIR)/patch_elf_32bit $@
endif
$(BUILD_DIR)/%.o: $(BUILD_DIR)/%.c
$(call print,Compiling:,$<,$@)
@$(CC_CHECK) $(CC_CHECK_CFLAGS) -MMD -MP -MT $@ -MF $(BUILD_DIR)/$*.d $<
$(V)$(CC_CHECK) $(CC_CHECK_CFLAGS) -MMD -MP -MT $@ -MF $(BUILD_DIR)/$*.d $<
$(V)$(CC) -c $(CFLAGS) -o $@ $<
ifeq ($(VERSION),cn)
$(V)$(TOOLS_DIR)/patch_elf_32bit $@
endif
# Alternate compiler flags needed for matching
ifeq ($(COMPILER),ido)
@ -659,6 +740,8 @@ ifeq ($(COMPILER),ido)
$(BUILD_DIR)/bin/%.o: OPT_FLAGS := -g
$(BUILD_DIR)/src/goddard/%.o: OPT_FLAGS := -g
$(BUILD_DIR)/src/goddard/%.o: MIPSISET := -mips1
$(BUILD_DIR)/lib/asm/__osDisableInt.o: MIPSISET := -mips2
$(BUILD_DIR)/lib/asm/bcopy.o: MIPSISET := -mips2
$(BUILD_DIR)/lib/src/%.o: OPT_FLAGS :=
$(BUILD_DIR)/lib/src/math/%.o: OPT_FLAGS := -O2
$(BUILD_DIR)/lib/src/math/ll%.o: OPT_FLAGS :=
@ -667,14 +750,97 @@ ifeq ($(COMPILER),ido)
$(BUILD_DIR)/lib/src/string.o: OPT_FLAGS := -O2
$(BUILD_DIR)/lib/src/gu%.o: OPT_FLAGS := -O3
$(BUILD_DIR)/lib/src/al%.o: OPT_FLAGS := -O3
ifeq ($(VERSION),sh)
ifeq ($(VERSION_SH_CN),true)
$(BUILD_DIR)/lib/src/_Ldtob.o: OPT_FLAGS := -O3
$(BUILD_DIR)/lib/src/_Litob.o: OPT_FLAGS := -O3
$(BUILD_DIR)/lib/src/_Printf.o: OPT_FLAGS := -O3
$(BUILD_DIR)/lib/src/sprintf.o: OPT_FLAGS := -O3
$(BUILD_DIR)/lib/src/osDriveRomInit.o: OPT_FLAGS := -g
endif
ifeq ($(VERSION),cn)
$(BUILD_DIR)/lib/src/osAiSetFrequency.o: MIPSISET := -mips2
$(BUILD_DIR)/lib/src/osVirtualToPhysical.o: OPT_FLAGS := -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/osInitializeIQueWrapper.o: OPT_FLAGS := -O2
$(BUILD_DIR)/lib/src/osAiGetLength.o: OPT_FLAGS := -O2
$(BUILD_DIR)/lib/src/osAiSetFrequency.o: OPT_FLAGS := -O2
$(BUILD_DIR)/lib/src/math/cosf.o: OPT_FLAGS := -O2 -mips2
$(BUILD_DIR)/lib/src/guOrthoF.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/guPerspectiveF.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/osAiSetNextBuffer.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/osContStartReadData.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/osContInit.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/math/sinf.o: OPT_FLAGS := -O2 -mips2
$(BUILD_DIR)/lib/src/math/ll%.o: OPT_FLAGS := -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/string.o: OPT_FLAGS := -O2 -mips2
$(BUILD_DIR)/lib/src/sprintf.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/osSyncPrintf.o: OPT_FLAGS := -O2
$(BUILD_DIR)/lib/src/_Printf.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/osCreateMesgQueue.o: OPT_FLAGS := -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/osRecvMesg.o: OPT_FLAGS := -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/osSendMesg.o: OPT_FLAGS := -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/osSetEventMesg.o: OPT_FLAGS := -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/osSpTaskLoadGo.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/osSpTaskYield.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/osSpTaskYielded.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/__osSiRawStartDma.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/__osSiCreateAccessQueue.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/osCreateThread.o: OPT_FLAGS := -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/osSetThreadPri.o: OPT_FLAGS := -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/osStartThread.o: OPT_FLAGS := -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/__osDequeueThread.o: OPT_FLAGS := -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/__osGetCurrFaultedThread.o: OPT_FLAGS := -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/osGetTime.o: OPT_FLAGS := -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/osSetTime.o: OPT_FLAGS := -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/osSetTimer.o: OPT_FLAGS := -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/osTimer.o: OPT_FLAGS := -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/osCreateViManager.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/osViSetEvent.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/osViSetMode.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/osViSetSpecialFeatures.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/osViSwapBuffer.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/__osViSwapContext.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/osViBlack.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/guRotateF.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/osEepromProbe.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/osEepromLongWrite.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/osEepromLongRead.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/osCreatePiManager.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/osEPiRawStartDma.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/epidma.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/osCartRomInit.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/__osDevMgrMain.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/__osPiCreateAccessQueue.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/osPiStartDma.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/motor.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/osInitialize.o: OPT_FLAGS := -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/__osAiDeviceBusy.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/_Litob.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/_Ldtob.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/osJamMesg.o: OPT_FLAGS := -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/__osSpDeviceBusy.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/__osSpGetStatus.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/__osSpSetStatus.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/__osSpSetPc.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/__osSpRawStartDma.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/__osSiRawReadIo.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/__osSiRawWriteIo.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/osDestroyThread.o: OPT_FLAGS := -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/osGetThreadPri.o: OPT_FLAGS := -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/osYieldThread.o: OPT_FLAGS := -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/__osViInit.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/__osViGetCurrentContext.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/osEepromRead.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/osEepromWrite.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/__osSetGlobalIntMask.o: OPT_FLAGS := -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/__osResetGlobalIntMask.o: OPT_FLAGS := -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/osPiRawStartDma.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/osPiGetCmdQueue.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/osEPiRawReadIo.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/osEPiRawWriteIo.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/ldiv.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/__osSiDeviceBusy.o: OPT_FLAGS := -O2 -mno-abicalls -mips2
$(BUILD_DIR)/lib/src/libgcc/%.o: OPT_FLAGS := -O2 -g -mips2
endif
ifeq ($(VERSION),eu)
$(BUILD_DIR)/lib/src/_Ldtob.o: OPT_FLAGS := -O3
$(BUILD_DIR)/lib/src/_Litob.o: OPT_FLAGS := -O3
@ -733,16 +899,31 @@ $(BUILD_DIR)/libgoddard.a: $(GODDARD_O_FILES)
@$(PRINT) "$(GREEN)Linking libgoddard: $(BLUE)$@ $(NO_COL)\n"
$(V)$(AR) rcs -o $@ $(GODDARD_O_FILES)
# Link libgcc
$(BUILD_DIR)/libgcc.a: $(LIBGCC_O_FILES)
@$(PRINT) "$(GREEN)Linking libgcc: $(BLUE)$@ $(NO_COL)\n"
$(V)$(AR) rcs -o $@ $(LIBGCC_O_FILES)
# Link SM64 ELF file
$(ELF): $(O_FILES) $(MIO0_OBJ_FILES) $(SEG_FILES) $(BUILD_DIR)/$(LD_SCRIPT) undefined_syms.txt $(BUILD_DIR)/libultra.a $(BUILD_DIR)/libgoddard.a
$(ELF): $(O_FILES) $(MIO0_OBJ_FILES) $(SEG_FILES) $(BUILD_DIR)/$(LD_SCRIPT) undefined_syms.txt $(BUILD_DIR)/libultra.a $(BUILD_DIR)/libgoddard.a $(BUILD_DIR)/libgcc.a
@$(PRINT) "$(GREEN)Linking ELF file: $(BLUE)$@ $(NO_COL)\n"
$(V)$(LD) -L $(BUILD_DIR) -T undefined_syms.txt -T $(BUILD_DIR)/$(LD_SCRIPT) -Map $(BUILD_DIR)/sm64.$(VERSION).map --no-check-sections $(addprefix -R ,$(SEG_FILES)) -o $@ $(O_FILES) -lultra -lgoddard
$(V)$(LD) -L $(BUILD_DIR) -T undefined_syms.txt -T $(BUILD_DIR)/$(LD_SCRIPT) -Map $(BUILD_DIR)/sm64.$(VERSION).map --no-check-sections $(addprefix -R ,$(SEG_FILES)) -o $@ $(O_FILES) -lultra -lgoddard -lgcc
# Build ROM
ifeq ($(VERSION),cn)
PAD_TO_GAP_FILL := --pad-to=0x7B0000 --gap-fill=0x00
else
PAD_TO_GAP_FILL := --pad-to=0x800000 --gap-fill=0xFF
endif
$(ROM): $(ELF)
$(call print,Building ROM:,$<,$@)
$(V)$(OBJCOPY) --pad-to=0x800000 --gap-fill=0xFF $< $(@:.z64=.bin) -O binary
ifeq ($(VERSION),cn) # cn has no checksums
$(V)$(OBJCOPY) $(PAD_TO_GAP_FILL) $< $(@) -O binary
else
$(V)$(OBJCOPY) $(PAD_TO_GAP_FILL) $< $(@:.z64=.bin) -O binary
$(V)$(N64CKSUM) $(@:.z64=.bin) $@
endif
$(BUILD_DIR)/$(TARGET).objdump: $(ELF)
$(OBJDUMP) -D $< > $@

View file

@ -178,6 +178,9 @@ $(eval $(call level_rules,menu,generic)) # Menu (File Select)
# --------------------------------------
# Ending cake textures are generated in a special way
$(BUILD_DIR)/levels/ending/cake_cn.inc.c: levels/ending/cake_cn.png
$(call print,Splitting:,$<,$@)
$(V)$(SKYCONV) --type cake-cn --split $^ $(BUILD_DIR)/levels/ending
$(BUILD_DIR)/levels/ending/cake_eu.inc.c: levels/ending/cake_eu.png
$(call print,Splitting:,$<,$@)
$(V)$(SKYCONV) --type cake-eu --split $^ $(BUILD_DIR)/levels/ending

View file

@ -1,6 +1,6 @@
# Super Mario 64
- This repo contains a full decompilation of Super Mario 64 (J), (U), (E), and (SH).
- This repo contains a full decompilation of Super Mario 64 of the following releases: Japan (jp), North America (us), Europe (eu), Shindou (sh) and iQue Player (cn).
- Naming and documentation of the source code and data structures are in progress.
It builds the following ROMs:
@ -9,16 +9,17 @@ It builds the following ROMs:
* sm64.us.z64 `sha1: 9bef1128717f958171a4afac3ed78ee2bb4e86ce`
* sm64.eu.z64 `sha1: 4ac5721683d0e0b6bbb561b58a71740845dceea9`
* sm64.sh.z64 `sha1: 3f319ae697533a255a1003d09202379d78d5a2e0`
* sm64.cn.z64 `sha1: 2e1db2780985a1f068077dc0444b685f39cd90ec`
This repo does not include all assets necessary for compiling the ROMs.
A prior copy of the game is required to extract the assets.
## Quick Start (for Ubuntu)
1. Install prerequisites: `sudo apt install -y build-essential git binutils-mips-linux-gnu python3`
1. Install prerequisites: `sudo apt install -y binutils-mips-linux-gnu build-essential git pkgconf python3`
2. Clone the repo from within Linux: `git clone https://github.com/n64decomp/sm64.git`
3. Place a Super Mario 64 ROM called `baserom.<VERSION>.z64` into the project folder for asset extraction, where `VERSION` can be `us`, `jp`, `eu`, or `sh`.
4. Run `make` to build. Qualify the version through `make VERSION=<VERSION>`. Add `-j4` to improve build speed (hardware dependent).
3. Place a Super Mario 64 ROM called `baserom.<VERSION>.z64` into the project folder for asset extraction, where `VERSION` can be `jp`, `us`, `eu`, `sh`, or `cn`.
4. Run `make` to build. Specify the version through `make VERSION=<VERSION>`. Add `-j4` to improve build speed (hardware dependent).
Ensure the repo path length does not exceed 255 characters. Long path names result in build errors.
@ -44,7 +45,6 @@ There are 3 steps to set up a working build.
The build system has the following package requirements:
* binutils-mips
* capstone
* pkgconf
* python3 >= 3.6
@ -53,18 +53,17 @@ Dependency installation instructions for common Linux distros are provided below
##### Debian / Ubuntu
To install build dependencies:
```
sudo apt install -y binutils-mips-linux-gnu build-essential git libcapstone-dev pkgconf python3
sudo apt install -y binutils-mips-linux-gnu build-essential git pkgconf python3
```
##### Arch Linux
To install build dependencies:
```
sudo pacman -S base-devel capstone python
sudo pacman -S base-devel python
```
Install the following AUR packages:
* [mips64-elf-binutils](https://aur.archlinux.org/packages/mips64-elf-binutils) (AUR)
##### Other Linux distributions
Most modern Linux distributions should have equivalent packages to the other two listed above.
@ -79,7 +78,7 @@ You may also use [Docker](#docker-installation) to handle installing an image wi
#### Step 2: Copy baserom(s) for asset extraction
For each version (jp/us/eu/sh) for which you want to build a ROM, put an existing ROM at
For each version (jp/us/eu/sh/cn) for which you want to build a ROM, put an existing ROM at
`./baserom.<VERSION>.z64` for asset extraction.
##### Step 3: Build the ROM
@ -95,10 +94,10 @@ Resulting artifacts can be found in the `build` directory.
The full list of configurable variables are listed below, with the default being the first listed:
* ``VERSION``: ``us``, ``jp``, ``eu``, ``sh``
* ``VERSION``: ``jp``, ``us``, ``eu``, ``sh``, ``cn``
* ``GRUCODE``: ``f3d_old``, ``f3d_new``, ``f3dex``, ``f3dex2``, ``f3dzex``
* ``COMPARE``: ``1`` (compare ROM hash), ``0`` (do not compare ROM hash)
* ``NON_MATCHING``: Use functionally equivalent C implementations for non-matchings (Currently there aren't any non-matchings, but this will apply to iQue). Also will avoid instances of undefined behavior.
* ``NON_MATCHING``: Use functionally equivalent C implementations for non-matchings. Also will avoid instances of undefined behavior.
* ``CROSS``: Cross-compiler tool prefix (Example: ``mips64-elf-``).
### macOS
@ -111,12 +110,12 @@ With macOS, you may either use Homebrew or [Docker](#docker-installation).
Install [Homebrew](https://brew.sh) and the following dependencies:
```
brew update
brew install capstone coreutils make pkg-config tehzz/n64-dev/mips64-elf-binutils
brew install coreutils make pkg-config tehzz/n64-dev/mips64-elf-binutils
```
#### Step 2: Copy baserom(s) for asset extraction
For each version (jp/us/eu/sh) for which you want to build a ROM, put an existing ROM at
For each version (jp/us/eu/sh/cn) for which you want to build a ROM, put an existing ROM at
`./baserom.<VERSION>.z64` for asset extraction.
##### Step 3: Build the ROM

View file

@ -1,6 +1,6 @@
// 0x0C000104
const GeoLayout penguin_geo[] = {
#if defined(VERSION_EU) || defined(VERSION_SH)
#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)
GEO_SHADOW(SHADOW_CIRCLE_9_VERTS, 0x96, 60),
#else
GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x96, 100),

View file

@ -2,6 +2,15 @@
UNUSED static const u64 power_meter_unused_1 = 0;
#if defined(VERSION_CN)
ALIGNED8 static const Texture texture_power_meter_left_side[] = {
#include "actors/power_meter/power_meter_left_side_cn.rgba16.inc.c"
};
ALIGNED8 static const Texture texture_power_meter_right_side[] = {
#include "actors/power_meter/power_meter_right_side_cn.rgba16.inc.c"
};
#else
// 0x030233E0
ALIGNED8 static const Texture texture_power_meter_left_side[] = {
#include "actors/power_meter/power_meter_left_side.rgba16.inc.c"
@ -11,6 +20,7 @@ ALIGNED8 static const Texture texture_power_meter_left_side[] = {
ALIGNED8 static const Texture texture_power_meter_right_side[] = {
#include "actors/power_meter/power_meter_right_side.rgba16.inc.c"
};
#endif
// 0x030253E0
ALIGNED8 static const Texture texture_power_meter_full[] = {
@ -102,10 +112,17 @@ const Gfx dl_power_meter_base[] = {
// 0x03029530
static const Vtx vertex_power_meter_health_segments[] = {
#if defined(VERSION_CN)
{{{ -16, -20, 0}, 0, { 0, 992}, {0xff, 0xff, 0xff, 0xff}}},
{{{ 15, -20, 0}, 0, { 992, 992}, {0xff, 0xff, 0xff, 0xff}}},
{{{ 15, 12, 0}, 0, { 992, 0}, {0xff, 0xff, 0xff, 0xff}}},
{{{ -16, 12, 0}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}},
#else
{{{ -16, -16, 0}, 0, { 0, 992}, {0xff, 0xff, 0xff, 0xff}}},
{{{ 15, -16, 0}, 0, { 992, 992}, {0xff, 0xff, 0xff, 0xff}}},
{{{ 15, 16, 0}, 0, { 992, 0}, {0xff, 0xff, 0xff, 0xff}}},
{{{ -16, 16, 0}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}},
#endif
};
// 0x03029570 - 0x030295A0

View file

@ -1,10 +1,26 @@
// assembler directives
.set noat // allow manual use of $at
.set noreorder // don't insert nops after branches
.set gp=64
#include "macros.inc"
.equ EXCEPTION_TLB_MISS, 0x80000000
.equ SP_DMEM, 0xA4000000
.equ SP_IMEM, 0xA4001000
.equ MI_MODE_REG, 0xA4300000
.equ RI_MODE_REG, 0xA4700000
#ifdef VERSION_CN
.macro cn_li a b
li \a, \b
.endm
#else
.macro cn_li a b
lui \a, %hi(\b)
addiu \a, \a, %lo(\b)
.endm
#endif
// 0xA0000000-0xBFFFFFFF: KSEG1 direct map non-cache mirror of 0x00000000
// 0xA4000000-0xA4000FFF: RSP DMEM
@ -19,8 +35,7 @@ glabel ipl3_entry // 0xA4000040
mtc0 $zero, $13
mtc0 $zero, $9
mtc0 $zero, $11
lui $t0, %hi(RI_MODE_REG)
addiu $t0, %lo(RI_MODE_REG)
cn_li $t0, RI_MODE_REG
lw $t1, 0xc($t0)
bnez $t1, .LA4000410
nop
@ -30,12 +45,10 @@ glabel ipl3_entry // 0xA4000040
sw $s5, 8($sp)
sw $s6, 0xc($sp)
sw $s7, 0x10($sp)
lui $t0, %hi(RI_MODE_REG)
addiu $t0, %lo(RI_MODE_REG)
cn_li $t0, RI_MODE_REG
lui $t2, (0xa3f80000 >> 16)
lui $t3, (0xa3f00000 >> 16)
lui $t4, %hi(MI_MODE_REG)
addiu $t4, %lo(MI_MODE_REG)
cn_li $t4, MI_MODE_REG
ori $t1, $zero, 64
sw $t1, 4($t0)
li $s1, 8000
@ -83,8 +96,7 @@ glabel ipl3_entry // 0xA4000040
move $fp, $sp
lui $s0, %hi(MI_VERSION_REG)
lw $s0, %lo(MI_VERSION_REG)($s0)
lui $s1, (0x01010101 >> 16)
addiu $s1, (0x01010101 & 0xFFFF)
cn_li $s1, 0x01010101
bne $s0, $s1, .LA4000160
nop
li $s0, 512
@ -161,7 +173,11 @@ glabel ipl3_entry // 0xA4000040
bnez $t0, .LA4000168
nop
.LA400025C:
#ifdef VERSION_CN
li $t0, 0xc0000000
#else
li $t0, 0xc4000000
#endif
sw $t0, 0xc($t2)
li $t0, 0x80000000
sw $t0, 0x4($t2)
@ -253,8 +269,7 @@ glabel ipl3_entry // 0xA4000040
lw $s6, 0xc($sp)
lw $s7, 0x10($sp)
addiu $sp, $sp, 0x18
lui $t0, %hi(EXCEPTION_TLB_MISS)
addiu $t0, $t0, %lo(EXCEPTION_TLB_MISS)
cn_li $t0, EXCEPTION_TLB_MISS
addiu $t1, $t0, 0x4000
addiu $t1, $t1, -0x20
mtc0 $zero, $28
@ -264,8 +279,7 @@ glabel ipl3_entry // 0xA4000040
sltu $at, $t0, $t1
bnez $at, .LA40003D8
addiu $t0, $t0, 0x20
lui $t0, %hi(EXCEPTION_TLB_MISS)
addiu $t0, %lo(EXCEPTION_TLB_MISS)
cn_li $t0, EXCEPTION_TLB_MISS
addiu $t1, $t0, 0x2000
addiu $t1, $t1, -0x10
.LA40003F8:
@ -276,8 +290,7 @@ glabel ipl3_entry // 0xA4000040
b .LA4000458
nop
.LA4000410:
lui $t0, %hi(EXCEPTION_TLB_MISS)
addiu $t0, %lo(EXCEPTION_TLB_MISS)
cn_li $t0, EXCEPTION_TLB_MISS
addiu $t1, $t0, 0x4000
addiu $t1, $t1, -0x20
mtc0 $zero, $28
@ -287,8 +300,7 @@ glabel ipl3_entry // 0xA4000040
sltu $at, $t0, $t1
bnez $at, .LA4000428
addiu $t0, $t0, 0x20
lui $t0, %hi(EXCEPTION_TLB_MISS)
addiu $t0, %lo(EXCEPTION_TLB_MISS)
cn_li $t0, EXCEPTION_TLB_MISS
addiu $t1, $t0, 0x2000
addiu $t1, $t1, -0x10
.LA4000448:
@ -297,8 +309,45 @@ glabel ipl3_entry // 0xA4000040
bnez $at, .LA4000448
addiu $t0, $t0, 0x10
.LA4000458:
lui $t2, %hi(SP_DMEM)
addiu $t2, $t2, %lo(SP_DMEM)
#ifdef VERSION_CN
la $t0, D_CN_0400049C
lui $t1, 0xf
ori $t1, $t1, 0xffff
and $t0, $t0, $t1
lui $t2, 0xa400
lui $t3, 0xfff0
and $t2, $t2, $t3
or $t0, $t0, $t2
la $t3, D_CN_0400074C
and $t3, $t3, $t1
or $t3, $t3, $t2
lui $t1, 0xa000
.LA4000474:
lw $t5, ($t0)
sw $t5, ($t1)
addiu $t0, $t0, 4
addiu $t1, $t1, 4
sltu $at, $t0, $t3
bnez $at, .LA4000474
nop
lui $t4, 0x8000
jr $t4
nop
lui $t3, 0xb000
lui $t2, 0x1fff
ori $t2, $t2, 0xffff
lw $t1, 8($t3)
and $t1, $t1, $t2
lui $at, 0xa460
sw $t1, ($at)
.LA40004B8:
lui $t0, 0xa460
lw $t0, 0x10($t0)
andi $t0, $t0, 2
bnez $t0, .LA40004B8
nop
#else
cn_li $t2, SP_DMEM
lui $t3, 0xfff0
lui $t1, 0x0010
and $t2, $t2, $t3
@ -320,8 +369,7 @@ glabel ipl3_entry // 0xA4000040
addiu $t1, $t1, 4
bnez $at, .LA4000498
sw $t5, -4($t1)
lui $t4, %hi(EXCEPTION_TLB_MISS)
addiu $t4, %lo(EXCEPTION_TLB_MISS)
cn_li $t4, EXCEPTION_TLB_MISS
jr $t4
nop
lui $t3, %hi(D_B0000008)
@ -337,13 +385,13 @@ glabel ipl3_entry // 0xA4000040
andi $t0, $t0, 2
bnezl $t0, .LA40004D0
lui $t0, %hi(PI_STATUS_REG)
#endif
li $t0, 0x1000
add $t0, $t0, $t3
and $t0, $t0, $t2
lui $at, %hi(PI_CART_ADDR_REG)
sw $t0, %lo(PI_CART_ADDR_REG)($at)
lui $t2, 0x0010
addiu $t2, 0xFFFF
cn_li $t2, 0x000FFFFF
lui $at, %hi(PI_WR_LEN_REG)
sw $t2, %lo(PI_WR_LEN_REG)($at)
@ -381,6 +429,104 @@ glabel ipl3_entry // 0xA4000040
andi $t3, $t3, 0x1
bnez $t3, .LA4000514
nop
#ifdef VERSION_CN
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
#endif
#ifdef VERSION_CN
lui $t1, %hi(SP_PC)
lw $t1, %lo(SP_PC)($t1)
beqz $t1, .LA4000698
nop
addiu $t2, $zero, 0x41
lui $at, %hi(SP_STATUS_REG)
sw $t2, %lo(SP_STATUS_REG)($at)
lui $at, %hi(SP_PC)
sw $zero, %lo(SP_PC)($at)
.LA4000698:
li $t3, 0x00AAAAAE
lui $at, %hi(SP_STATUS_REG)
sw $t3, %lo(SP_STATUS_REG)($at)
li $t0, 1365
lui $at, %hi(MI_INTR_MASK_REG)
sw $t0, %lo(MI_INTR_MASK_REG)($at)
lui $at, %hi(SI_STATUS_REG)
sw $zero, %lo(SI_STATUS_REG)($at)
lui $at, %hi(AI_STATUS_REG)
sw $zero, %lo(AI_STATUS_REG)($at)
li $t1, 2048
lui $at, %hi(MI_MODE_REG)
sw $t1, %lo(MI_MODE_REG)($at)
li $t1, 2
lui $at, %hi(PI_STATUS_REG)
sw $t1, %lo(PI_STATUS_REG)($at)
lui $t0, (0xA0000300 >> 16)
ori $t0, (0xA0000300 & 0xFFFF)
sw $s4, ($t0)
sw $s3, 4($t0)
#else
lui $t3, %hi(D_B0000008)
lw $a0, %lo(D_B0000008)($t3)
move $a1, $s6
@ -463,8 +609,7 @@ func_A4000690:
lui $at, %hi(SP_PC)
sw $zero, %lo(SP_PC)($at)
.LA40006BC:
lui $t3, (0x00AAAAAE >> 16)
ori $t3, (0x00AAAAAE & 0xFFFF)
li $t3, 0x00AAAAAE
lui $at, %hi(SP_STATUS_REG)
sw $t3, %lo(SP_STATUS_REG)($at)
lui $at, %hi(MI_INTR_MASK_REG)
@ -483,32 +628,53 @@ func_A4000690:
ori $t0, (0xA0000300 & 0xFFFF)
sw $t1, %lo(PI_STATUS_REG)($at)
sw $s7, 0x14($t0)
#endif
sw $s5, 0xc($t0)
#ifdef VERSION_CN
beqz $s3, .LA4000728
sw $s7, 0x14($t0)
b .LA4000730
lui $t1, 0xa600
#else
sw $s3, 0x4($t0)
beqz $s3, .LA4000728
sw $s4, ($t0)
lui $t1, 0xa600
b .LA4000730
addiu $t1, $t1, 0
#endif
.LA4000728:
lui $t1, 0xb000
addiu $t1, $t1, 0
cn_li $t1, 0xb0000000
.LA4000730:
sw $t1, 0x8($t0)
lui $t0, %hi(SP_DMEM)
addiu $t0, %lo(SP_DMEM)
cn_li $t0, SP_DMEM
addi $t1, $t0, 0x1000
#ifdef VERSION_CN
.LA4000710:
sw $zero, ($t0)
addiu $t0, $t0, 4
bne $t0, $t1, .LA4000710
nop
#else
.LA4000740:
addiu $t0, $t0, 4
bne $t0, $t1, .LA4000740
sw $zero, -4($t0)
lui $t0, %hi(SP_IMEM)
addiu $t0, %lo(SP_IMEM)
#endif
cn_li $t0, SP_IMEM
addi $t1, $t0, 0x1000
#ifdef VERSION_CN
.LA400072C:
sw $zero, ($t0)
addiu $t0, $t0, 4
bne $t0, $t1, .LA400072C
nop
#else
.LA4000758:
addiu $t0, $t0, 4
bne $t0, $t1, .LA4000758
sw $zero, -4($t0)
#endif
lui $t3, %hi(D_B0000008)
lw $t1, %lo(D_B0000008)($t3)
jr $t1
@ -517,10 +683,12 @@ func_A4000690:
func_A4000778:
addiu $sp, $sp, -0xa0
#ifndef VERSION_CN
sw $s0, 0x40($sp)
sw $s1, 0x44($sp)
move $s1, $zero
move $s0, $zero
#endif
sw $v0, ($sp)
sw $v1, 4($sp)
sw $a0, 8($sp)
@ -537,6 +705,10 @@ func_A4000778:
sw $t7, 0x34($sp)
sw $t8, 0x38($sp)
sw $t9, 0x3c($sp)
#ifdef VERSION_CN
sw $s0, 0x40($sp)
sw $s1, 0x44($sp)
#endif
sw $s2, 0x48($sp)
sw $s3, 0x4c($sp)
sw $s4, 0x50($sp)
@ -545,19 +717,34 @@ func_A4000778:
sw $s7, 0x5c($sp)
sw $fp, 0x60($sp)
sw $ra, 0x64($sp)
#ifdef VERSION_CN
move $s0, $zero
move $s1, $zero
#endif
.LA40007EC:
jal func_A4000880
nop
addiu $s0, $s0, 1
#ifdef VERSION_CN
addu $s1, $s1, $v0
#endif
slti $t1, $s0, 4
bnez $t1, .LA40007EC
#ifdef VERSION_CN
nop
#else
addu $s1, $s1, $v0
#endif
srl $a0, $s1, 2
jal func_A4000A40
li $a1, 1
#ifdef VERSION_CN
srl $v0, $s1, 2
#else
lw $ra, 0x64($sp)
srl $v0, $s1, 2
lw $s1, 0x44($sp)
#endif
lw $v1, 4($sp)
lw $a0, 8($sp)
lw $a1, 0xc($sp)
@ -574,6 +761,9 @@ func_A4000778:
lw $t8, 0x38($sp)
lw $t9, 0x3c($sp)
lw $s0, 0x40($sp)
#ifdef VERSION_CN
lw $s1, 0x44($sp)
#endif
lw $s2, 0x48($sp)
lw $s3, 0x4c($sp)
lw $s4, 0x50($sp)
@ -581,6 +771,9 @@ func_A4000778:
lw $s6, 0x58($sp)
lw $s7, 0x5c($sp)
lw $fp, 0x60($sp)
#ifdef VERSION_CN
lw $ra, 0x64($sp)
#endif
jr $ra
addiu $sp, $sp, 0xa0
@ -592,22 +785,46 @@ func_A4000880:
move $t4, $zero
.LA4000894:
slti $k0, $t4, 0x40
#ifdef VERSION_CN
beqz $k0, .LA40008D4
nop
#else
beql $k0, $zero, .LA40008FC
move $v0, $zero
#endif
jal func_A400090C
move $a0, $t4
#ifdef VERSION_CN
blez $v0, .LA40008CC
nop
#else
blezl $v0, .LA40008CC
slti $k0, $t1, 0x50
#endif
subu $k0, $v0, $t1
multu $k0, $t4
#ifndef VERSION_CN
move $t1, $v0
#endif
mflo $k0
addu $t3, $t3, $k0
#ifdef VERSION_CN
move $t1, $v0
#else
nop
slti $k0, $t1, 0x50
#endif
.LA40008CC:
bnez $k0, .LA4000894
#ifdef VERSION_CN
addiu $t4, $t4, 1
slti $k0, $t1, 0x50
#endif
bnez $k0, .LA4000894
#ifdef VERSION_CN
nop
#else
addiu $t4, $t4, 1
#endif
sll $a0, $t3, 2
subu $a0, $a0, $t3
sll $a0, $a0, 2
@ -615,15 +832,27 @@ func_A4000880:
sll $a0, $a0, 1
jal func_A4000980
addiu $a0, $a0, -0x370
#ifdef VERSION_CN
b .LA40008FC
nop
.LA40008D4:
move $v0, $zero
#else
b .LA4000900
lw $ra, 0x1c($sp)
move $v0, $zero
#endif
.LA40008FC:
lw $ra, 0x1c($sp)
.LA4000900:
#ifdef VERSION_CN
jr $ra
addiu $sp, $sp, 0x20
#else
addiu $sp, $sp, 0x20
jr $ra
nop
#endif
func_A400090C:
addiu $sp, $sp, -0x28
@ -632,7 +861,16 @@ func_A400090C:
jal func_A4000A40
li $a1, 2
move $fp, $zero
.LA40008FC_cn:
li $k0, -1
#ifdef VERSION_CN
sw $k0, ($s4)
sw $k0, ($s4)
sw $k0, 4($s4)
lw $v1, 4($s4)
srl $v1, $v1, 0x10
move $gp, $zero
#else
.LA4000928:
sw $k0, 4($s4)
lw $v1, 4($s4)
@ -640,42 +878,82 @@ func_A400090C:
sw $k0, ($s4)
move $gp, $zero
srl $v1, $v1, 0x10
#endif
.LA4000940:
andi $k0, $v1, 1
#ifdef VERSION_CN
beqz $k0, .LA4000928_cn
nop
#else
beql $k0, $zero, .LA4000954
addiu $gp, $gp, 1
#endif
addiu $v0, $v0, 1
#ifdef VERSION_CN
.LA4000928_cn:
srl $v1, $v1, 1
#endif
addiu $gp, $gp, 1
.LA4000954:
slti $k0, $gp, 8
bnez $k0, .LA4000940
#ifdef VERSION_CN
nop
#else
srl $v1, $v1, 1
#endif
addiu $fp, $fp, 1
slti $k0, $fp, 0xa
#ifdef VERSION_CN
bnez $k0, .LA40008FC_cn
nop
lw $ra, 0x1c($sp)
jr $ra
addiu $sp, $sp, 0x28
#else
bnezl $k0, .LA4000928
li $k0, -1
lw $ra, 0x1c($sp)
addiu $sp, $sp, 0x28
jr $ra
nop
#endif
func_A4000980:
addiu $sp, $sp, -0x28
sw $ra, 0x1c($sp)
sw $a0, 0x20($sp)
#ifndef VERSION_CN
sb $zero, 0x27($sp)
#endif
move $t0, $zero
move $t2, $zero
li $t5, 51200
#ifdef VERSION_CN
sb $zero, 0x27($sp)
#endif
move $t6, $zero
#ifdef VERSION_CN
.LA4000978:
#endif
slti $k0, $t6, 0x40
.LA40009A4:
#ifdef VERSION_CN
bnez $k0, .LA400098C_cn
nop
#else
bnezl $k0, .LA40009B8
move $a0, $t6
#endif
b .LA4000A30
move $v0, $zero
#ifdef VERSION_CN
.LA400098C_cn:
#endif
move $a0, $t6
#ifndef VERSION_CN
.LA40009B8:
#endif
jal func_A4000A40
li $a1, 1
jal func_A4000AD0
@ -684,6 +962,37 @@ func_A4000980:
addiu $a0, $sp, 0x27
lbu $k0, 0x27($sp)
li $k1, 800
#ifdef VERSION_CN
multu $k0, $k1
mflo $t0
lw $a0, 0x20($sp)
subu $k0, $t0, $a0
bgez $k0, .LA40009CC
nop
subu $k0, $a0, $t0
.LA40009CC:
slt $k1, $k0, $t5
beqz $k1, .LA40009E0
nop
move $t5, $k0
move $t2, $t6
.LA40009E0:
lw $a0, 0x20($sp)
slt $k1, $t0, $a0
beqz $k1, .LA4000A00
nop
addiu $t6, $t6, 1
slti $k1, $t6, 0x41
bnez $k1, .LA4000978
nop
.LA4000A00:
addu $v0, $t2, $t6
srl $v0, $v0, 1
.LA4000A30:
lw $ra, 0x1c($sp)
jr $ra
addiu $sp, $sp, 0x28
#else
lw $a0, 0x20($sp)
multu $k0, $k1
mflo $t0
@ -714,15 +1023,26 @@ func_A4000980:
addiu $sp, $sp, 0x28
jr $ra
nop
#endif
func_A4000A40:
addiu $sp, $sp, -0x28
#ifdef VERSION_CN
sw $ra, 0x1c($sp)
lui $t7, 0x4200
andi $a0, $a0, 0xff
xori $a0, $a0, 0x3f
li $k1, 1
bne $a1, $k1, .LA4000A64
nop
#else
andi $a0, $a0, 0xff
li $k1, 1
xori $a0, $a0, 0x3f
sw $ra, 0x1c($sp)
bne $a1, $k1, .LA4000A64
lui $t7, 0x4600
#endif
lui $k0, 0x8000
or $t7, $t7, $k0
.LA4000A64:
@ -744,31 +1064,53 @@ func_A4000A40:
andi $k0, $a0, 0x20
sll $k0, $k0, 0x12
or $t7, $t7, $k0
#ifdef VERSION_CN
sw $t7, ($s5)
li $k1, 1
bne $a1, $k1, .LA4000AC0
nop
#else
li $k1, 1
bne $a1, $k1, .LA4000AC0
sw $t7, ($s5)
#endif
lui $k0, %hi(MI_MODE_REG)
sw $zero, %lo(MI_MODE_REG)($k0)
.LA4000AC0:
lw $ra, 0x1c($sp)
#ifdef VERSION_CN
jr $ra
addiu $sp, $sp, 0x28
#else
addiu $sp, $sp, 0x28
jr $ra
nop
#endif
func_A4000AD0:
addiu $sp, $sp, -0x28
sw $ra, 0x1c($sp)
#ifdef VERSION_CN
move $fp, $zero
#endif
li $k0, 0x2000
lui $k1, %hi(MI_MODE_REG)
sw $k0, %lo(MI_MODE_REG)($k1)
#ifndef VERSION_CN
move $fp, $zero
#endif
lw $fp, ($s5)
li $k0, 0x1000
sw $k0, %lo(MI_MODE_REG)($k1)
#ifdef VERSION_CN
move $k0, $zero
#endif
li $k1, 0x40
and $k1, $k1, $fp
srl $k1, $k1, 6
#ifndef VERSION_CN
move $k0, $zero
#endif
or $k0, $k0, $k1
li $k1, 0x4000
and $k1, $k1, $fp
@ -792,61 +1134,13 @@ func_A4000AD0:
or $k0, $k0, $k1
sb $k0, ($a0)
lw $ra, 0x1c($sp)
#ifdef VERSION_CN
jr $ra
addiu $sp, $sp, 0x28
.fill 0x30
#else
addiu $sp, $sp, 0x28
jr $ra
nop
nop
// 0xA4000B70-0xA4000FFF: IPL3 Font
glabel ipl3_font
.incbin "textures/ipl3_raw/ipl3_font_00.ia1"
.incbin "textures/ipl3_raw/ipl3_font_01.ia1"
.incbin "textures/ipl3_raw/ipl3_font_02.ia1"
.incbin "textures/ipl3_raw/ipl3_font_03.ia1"
.incbin "textures/ipl3_raw/ipl3_font_04.ia1"
.incbin "textures/ipl3_raw/ipl3_font_05.ia1"
.incbin "textures/ipl3_raw/ipl3_font_06.ia1"
.incbin "textures/ipl3_raw/ipl3_font_07.ia1"
.incbin "textures/ipl3_raw/ipl3_font_08.ia1"
.incbin "textures/ipl3_raw/ipl3_font_09.ia1"
.incbin "textures/ipl3_raw/ipl3_font_10.ia1"
.incbin "textures/ipl3_raw/ipl3_font_11.ia1"
.incbin "textures/ipl3_raw/ipl3_font_12.ia1"
.incbin "textures/ipl3_raw/ipl3_font_13.ia1"
.incbin "textures/ipl3_raw/ipl3_font_14.ia1"
.incbin "textures/ipl3_raw/ipl3_font_15.ia1"
.incbin "textures/ipl3_raw/ipl3_font_16.ia1"
.incbin "textures/ipl3_raw/ipl3_font_17.ia1"
.incbin "textures/ipl3_raw/ipl3_font_18.ia1"
.incbin "textures/ipl3_raw/ipl3_font_19.ia1"
.incbin "textures/ipl3_raw/ipl3_font_20.ia1"
.incbin "textures/ipl3_raw/ipl3_font_21.ia1"
.incbin "textures/ipl3_raw/ipl3_font_22.ia1"
.incbin "textures/ipl3_raw/ipl3_font_23.ia1"
.incbin "textures/ipl3_raw/ipl3_font_24.ia1"
.incbin "textures/ipl3_raw/ipl3_font_25.ia1"
.incbin "textures/ipl3_raw/ipl3_font_26.ia1"
.incbin "textures/ipl3_raw/ipl3_font_27.ia1"
.incbin "textures/ipl3_raw/ipl3_font_28.ia1"
.incbin "textures/ipl3_raw/ipl3_font_29.ia1"
.incbin "textures/ipl3_raw/ipl3_font_30.ia1"
.incbin "textures/ipl3_raw/ipl3_font_31.ia1"
.incbin "textures/ipl3_raw/ipl3_font_32.ia1"
.incbin "textures/ipl3_raw/ipl3_font_33.ia1"
.incbin "textures/ipl3_raw/ipl3_font_34.ia1"
.incbin "textures/ipl3_raw/ipl3_font_35.ia1"
.incbin "textures/ipl3_raw/ipl3_font_36.ia1"
.incbin "textures/ipl3_raw/ipl3_font_37.ia1"
.incbin "textures/ipl3_raw/ipl3_font_38.ia1"
.incbin "textures/ipl3_raw/ipl3_font_39.ia1"
.incbin "textures/ipl3_raw/ipl3_font_40.ia1"
.incbin "textures/ipl3_raw/ipl3_font_41.ia1"
.incbin "textures/ipl3_raw/ipl3_font_42.ia1"
.incbin "textures/ipl3_raw/ipl3_font_43.ia1"
.incbin "textures/ipl3_raw/ipl3_font_44.ia1"
.incbin "textures/ipl3_raw/ipl3_font_45.ia1"
.incbin "textures/ipl3_raw/ipl3_font_46.ia1"
.incbin "textures/ipl3_raw/ipl3_font_47.ia1"
.incbin "textures/ipl3_raw/ipl3_font_48.ia1"
.incbin "textures/ipl3_raw/ipl3_font_49.ia1"
.fill 0x12
#endif

View file

@ -1,7 +1,6 @@
// assembler directives
.set noat // allow manual use of $at
.set noreorder // don't insert nops after branches
.set gp=64
#include "macros.inc"
@ -11,13 +10,13 @@
// This file is handwritten.
glabel decompress
#if defined(VERSION_EU) || defined(VERSION_SH)
#if !defined(VERSION_JP) && !defined(VERSION_US)
lw $a3, 8($a0)
lw $t9, 0xc($a0)
lw $t8, 4($a0)
add $a3, $a3, $a0
add $t9, $t9, $a0
move $a2, $zero
or $a2, $zero, $zero
addi $a0, $a0, 0x10
add $t8, $t8, $a1
.L8026ED80:

View file

@ -1,7 +1,6 @@
// assembler directives
.set noat // allow manual use of $at
.set noreorder // don't insert nops after branches
.set gp=64
#include "macros.inc"
@ -9,6 +8,25 @@
.section .text, "ax"
glabel entry_point
.if VERSION_CN == 1
lui $t0, %lo(_mainSegmentNoloadStartHi)
ori $t0, %lo(_mainSegmentNoloadStartLo)
lui $t1, %lo(_mainSegmentNoloadSizeHi)
ori $t1, %lo(_mainSegmentNoloadSizeLo)
.L80249010:
sw $zero, ($t0)
sw $zero, 4($t0)
addi $t0, $t0, 8
addi $t1, $t1, -8
bnez $t1, .L80249010
nop
lui $sp, %lo(gIdleThreadStackHi)
ori $sp, %lo(gIdleThreadStackLo)
lui $t2, %lo(main_funcHi)
ori $t2, %lo(main_funcLo)
jr $t2
nop
.else
lui $t0, %hi(_mainSegmentNoloadStart) // $t0, 0x8034
lui $t1, %lo(_mainSegmentNoloadSizeHi) // lui $t1, 2
addiu $t0, %lo(_mainSegmentNoloadStart) // addiu $t0, $t0, -0x6df0
@ -24,6 +42,7 @@ glabel entry_point
addiu $t2, %lo(main_func) // addiu $t2, $t2, 0x6dc4
jr $t2
addiu $sp, %lo(gIdleThreadStack) // addiu $sp, $sp, 0xa00
.endif
nop
nop
nop

56
asm/ipl3_font.s Normal file
View file

@ -0,0 +1,56 @@
#include "macros.inc"
// 0xA4000B70-0xA4000FFF: IPL3 Font
glabel ipl3_font
.incbin "textures/ipl3_raw/ipl3_font_00.ia1"
.incbin "textures/ipl3_raw/ipl3_font_01.ia1"
.incbin "textures/ipl3_raw/ipl3_font_02.ia1"
.incbin "textures/ipl3_raw/ipl3_font_03.ia1"
.incbin "textures/ipl3_raw/ipl3_font_04.ia1"
.incbin "textures/ipl3_raw/ipl3_font_05.ia1"
.incbin "textures/ipl3_raw/ipl3_font_06.ia1"
.incbin "textures/ipl3_raw/ipl3_font_07.ia1"
.incbin "textures/ipl3_raw/ipl3_font_08.ia1"
.incbin "textures/ipl3_raw/ipl3_font_09.ia1"
.incbin "textures/ipl3_raw/ipl3_font_10.ia1"
.incbin "textures/ipl3_raw/ipl3_font_11.ia1"
.incbin "textures/ipl3_raw/ipl3_font_12.ia1"
.incbin "textures/ipl3_raw/ipl3_font_13.ia1"
.incbin "textures/ipl3_raw/ipl3_font_14.ia1"
.incbin "textures/ipl3_raw/ipl3_font_15.ia1"
.incbin "textures/ipl3_raw/ipl3_font_16.ia1"
.incbin "textures/ipl3_raw/ipl3_font_17.ia1"
.incbin "textures/ipl3_raw/ipl3_font_18.ia1"
.incbin "textures/ipl3_raw/ipl3_font_19.ia1"
.incbin "textures/ipl3_raw/ipl3_font_20.ia1"
.incbin "textures/ipl3_raw/ipl3_font_21.ia1"
.incbin "textures/ipl3_raw/ipl3_font_22.ia1"
.incbin "textures/ipl3_raw/ipl3_font_23.ia1"
.incbin "textures/ipl3_raw/ipl3_font_24.ia1"
.incbin "textures/ipl3_raw/ipl3_font_25.ia1"
.incbin "textures/ipl3_raw/ipl3_font_26.ia1"
.incbin "textures/ipl3_raw/ipl3_font_27.ia1"
.incbin "textures/ipl3_raw/ipl3_font_28.ia1"
.incbin "textures/ipl3_raw/ipl3_font_29.ia1"
.incbin "textures/ipl3_raw/ipl3_font_30.ia1"
.incbin "textures/ipl3_raw/ipl3_font_31.ia1"
.incbin "textures/ipl3_raw/ipl3_font_32.ia1"
.incbin "textures/ipl3_raw/ipl3_font_33.ia1"
.incbin "textures/ipl3_raw/ipl3_font_34.ia1"
.incbin "textures/ipl3_raw/ipl3_font_35.ia1"
.incbin "textures/ipl3_raw/ipl3_font_36.ia1"
.incbin "textures/ipl3_raw/ipl3_font_37.ia1"
.incbin "textures/ipl3_raw/ipl3_font_38.ia1"
.incbin "textures/ipl3_raw/ipl3_font_39.ia1"
.incbin "textures/ipl3_raw/ipl3_font_40.ia1"
.incbin "textures/ipl3_raw/ipl3_font_41.ia1"
.incbin "textures/ipl3_raw/ipl3_font_42.ia1"
.incbin "textures/ipl3_raw/ipl3_font_43.ia1"
.incbin "textures/ipl3_raw/ipl3_font_44.ia1"
.incbin "textures/ipl3_raw/ipl3_font_45.ia1"
.incbin "textures/ipl3_raw/ipl3_font_46.ia1"
.incbin "textures/ipl3_raw/ipl3_font_47.ia1"
.incbin "textures/ipl3_raw/ipl3_font_48.ia1"
.incbin "textures/ipl3_raw/ipl3_font_49.ia1"
.fill 0x12

View file

@ -10,12 +10,18 @@
/* Revision */
#ifdef VERSION_SH
.word 0x00001448
#elif defined(VERSION_CN)
.word 0x0000144C
#elif defined(VERSION_EU)
.word 0x00001446
#else /* NTSC-U and NTSC-J 1.0 */
.word 0x00001444
#endif
#ifdef VERSION_CN
.fill 0x30
#else
.word 0x4EAA3D0E /* Checksum 1 */
.word 0x74757C24 /* Checksum 2 */
.word 0x00000000 /* Unknown */
@ -44,3 +50,5 @@
#else
.byte 0x00 /* Version */
#endif
#endif

File diff suppressed because it is too large Load diff

View file

@ -19,7 +19,7 @@
{
"table": [
{"demofile":"bitdw", "ifdef":["VERSION_US", "VERSION_SH"]},
{"demofile":"bitdw", "ifdef":["VERSION_US", "VERSION_SH", "VERSION_CN"]},
/* Whomp's Fortress has the wrong size.
The original entries probably manually input the sizes. */
@ -44,6 +44,6 @@
Mario runs into the sign and aligns himself as if it were a mistake. */
{"name":"unused"},
{"name":"bitdw", "ifdef":["VERSION_US", "VERSION_SH"]}
{"name":"bitdw", "ifdef":["VERSION_US", "VERSION_SH", "VERSION_CN"]}
]
}

File diff suppressed because it is too large Load diff

View file

@ -71,6 +71,50 @@ const Gfx title_screen_bg_dl_0A000190[] = {
gsSPEndDisplayList(),
};
#if defined(VERSION_CN)
// 0x0A0001C0
ALIGNED8 static const Texture title_texture_0A0001C0[] = {
#include "textures/title_screen_bg/title_screen_bg_ique.001C0.rgba16.inc.c"
};
// 0x0A000E40
ALIGNED8 static const Texture title_texture_0A000E40[] = {
#include "textures/title_screen_bg/title_screen_bg_ique.00E40.rgba16.inc.c"
};
// 0x0A001AC0
ALIGNED8 static const Texture title_texture_0A001AC0[] = {
#include "textures/title_screen_bg/title_screen_bg_ique.01AC0.rgba16.inc.c"
};
// 0x0A002740
ALIGNED8 static const Texture title_texture_0A002740[] = {
#include "textures/title_screen_bg/title_screen_bg_ique.02740.rgba16.inc.c"
};
// 0x0A0033C0
ALIGNED8 static const Texture title_texture_0A0033C0[] = {
#include "textures/title_screen_bg/title_screen_bg_ique.033C0.rgba16.inc.c"
};
// 0x0A004040
ALIGNED8 static const Texture title_texture_0A004040[] = {
#include "textures/title_screen_bg/title_screen_bg_ique.04040.rgba16.inc.c"
};
// 0x0A004CC0
ALIGNED8 static const Texture title_texture_0A004CC0[] = {
#include "textures/title_screen_bg/title_screen_bg_ique.04CC0.rgba16.inc.c"
};
// 0x0A005940
ALIGNED8 static const Texture title_texture_0A005940[] = {
#include "textures/title_screen_bg/title_screen_bg_ique.05940.rgba16.inc.c"
};
#else
// 0x0A0001C0
ALIGNED8 static const Texture title_texture_0A0001C0[] = {
#include "textures/title_screen_bg/title_screen_bg.001C0.rgba16.inc.c"
@ -111,6 +155,8 @@ ALIGNED8 static const Texture title_texture_0A005940[] = {
#include "textures/title_screen_bg/title_screen_bg.05940.rgba16.inc.c"
};
#endif
// 0x0A0065C0
const Texture *const mario_title_texture_table[] = {
title_texture_0A0001C0, title_texture_0A000E40, title_texture_0A001AC0, title_texture_0A002740,
@ -123,7 +169,7 @@ const Texture *const game_over_texture_table[] = {
UNUSED static const u64 title_screen_bg_unused_0 = 0;
#ifdef VERSION_SH
#if defined(VERSION_SH) || defined(VERSION_CN)
const Gfx title_screen_bg_dl_0A0065E8[] = {
gsDPPipeSync(),
gsDPSetCycleType(G_CYC_COPY),

File diff suppressed because it is too large Load diff

View file

@ -1,5 +1,5 @@
# Menu HUD chars, only used in JP
# Char values used by text_menu_strings.h.in
// Menu HUD chars, only used in JP
// Char values used by text_menu_strings.h.in
'フ' = 0x00
'ァ' = 0x01
'イ' = 0x02

View file

@ -418,7 +418,7 @@ const BehaviorScript bhvPoleGrabbing[] = {
END_LOOP(),
};
const BehaviorScript bhvThiHugeIslandTop[] = {
const BehaviorScript bhvTHIHugeIslandTop[] = {
BEGIN(OBJ_LIST_SURFACE),
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
LOAD_COLLISION_DATA(thi_seg7_collision_top_trap),
@ -427,7 +427,7 @@ const BehaviorScript bhvThiHugeIslandTop[] = {
END_LOOP(),
};
const BehaviorScript bhvThiTinyIslandTop[] = {
const BehaviorScript bhvTHITinyIslandTop[] = {
BEGIN(OBJ_LIST_DEFAULT),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
BEGIN_LOOP(),
@ -724,13 +724,13 @@ const BehaviorScript bhvBulletBillCannon[] = {
END_LOOP(),
};
const BehaviorScript bhvWfBreakableWallRight[] = {
const BehaviorScript bhvWFBreakableWallRight[] = {
BEGIN(OBJ_LIST_SURFACE),
LOAD_COLLISION_DATA(wf_seg7_collision_breakable_wall),
GOTO(bhvWfBreakableWallLeft + 1 + 2),
GOTO(bhvWFBreakableWallLeft + 1 + 2),
};
const BehaviorScript bhvWfBreakableWallLeft[] = {
const BehaviorScript bhvWFBreakableWallLeft[] = {
BEGIN(OBJ_LIST_SURFACE),
LOAD_COLLISION_DATA(wf_seg7_collision_breakable_wall_2),
// WF breakable walls - common:
@ -773,7 +773,7 @@ const BehaviorScript bhvRotatingCounterClockwise[] = {
BREAK(),
};
const BehaviorScript bhvWfRotatingWoodenPlatform[] = {
const BehaviorScript bhvWFRotatingWoodenPlatform[] = {
BEGIN(OBJ_LIST_SURFACE),
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
LOAD_COLLISION_DATA(wf_seg7_collision_clocklike_rotation),
@ -853,7 +853,7 @@ const BehaviorScript bhvWhitePuffExplosion[] = {
const BehaviorScript bhvSpawnedStar[] = {
BEGIN(OBJ_LIST_LEVEL),
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
SET_INT(oBehParams2ndByte, 1),
SET_INT(oBhvParams2ndByte, 1),
GOTO(bhvSpawnedStarNoLevelExit + 1 + 1),
};
@ -868,20 +868,20 @@ const BehaviorScript bhvSpawnedStarNoLevelExit[] = {
END_LOOP(),
};
const BehaviorScript bhvMrIBlueCoin[] = {
const BehaviorScript bhvSpawnedBlueCoin[] = {
BEGIN(OBJ_LIST_LEVEL),
SET_INT(oInteractType, INTERACT_COIN),
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
BILLBOARD(),
SET_INT(oIntangibleTimer, 0),
SET_FLOAT(oCoinUnk110, 20),
SET_FLOAT(oCoinBaseVelY, 20),
SET_INT(oAnimState, -1),
SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 30, /*Gravity*/ -400, /*Bounciness*/ -70, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),
CALL_NATIVE(bhv_coin_init),
CALL_NATIVE(bhv_spawned_coin_init),
SET_INT(oDamageOrCoinValue, 5),
SET_HITBOX(/*Radius*/ 120, /*Height*/ 64),
BEGIN_LOOP(),
CALL_NATIVE(bhv_coin_loop),
CALL_NATIVE(bhv_spawned_coin_loop),
ADD_INT(oAnimState, 1),
END_LOOP(),
};
@ -920,7 +920,7 @@ const BehaviorScript bhvCoinFormation[] = {
const BehaviorScript bhvOneCoin[] = {
BEGIN(OBJ_LIST_LEVEL),
SET_INT(oBehParams2ndByte, 1),
SET_INT(oBhvParams2ndByte, 1),
GOTO(bhvYellowCoin + 1),
};
@ -967,10 +967,10 @@ const BehaviorScript bhvSingleCoinGetsSpawned[] = {
BEGIN(OBJ_LIST_LEVEL),
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
BILLBOARD(),
CALL_NATIVE(bhv_coin_init),
CALL_NATIVE(bhv_spawned_coin_init),
SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 30, /*Gravity*/ -400, /*Bounciness*/ -70, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),
BEGIN_LOOP(),
CALL_NATIVE(bhv_coin_loop),
CALL_NATIVE(bhv_spawned_coin_loop),
ADD_INT(oAnimState, 1),
END_LOOP(),
};
@ -1096,7 +1096,7 @@ const BehaviorScript bhvGrindel[] = {
END_LOOP(),
};
const BehaviorScript bhvThwomp2[] = {
const BehaviorScript bhvThwomp[] = {
BEGIN(OBJ_LIST_SURFACE),
LOAD_COLLISION_DATA(thwomp_seg5_collision_0500B92C),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
@ -1111,7 +1111,7 @@ const BehaviorScript bhvThwomp2[] = {
END_LOOP(),
};
const BehaviorScript bhvThwomp[] = {
const BehaviorScript bhvThwomp2[] = {
BEGIN(OBJ_LIST_SURFACE),
LOAD_COLLISION_DATA(thwomp_seg5_collision_0500B7D0),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
@ -1136,7 +1136,7 @@ const BehaviorScript bhvTumblingBridgePlatform[] = {
END_LOOP(),
};
const BehaviorScript bhvWfTumblingBridge[] = {
const BehaviorScript bhvTumblingBridge[] = {
BEGIN(OBJ_LIST_SPAWNER),
OR_INT(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
SET_HOME(),
@ -1145,21 +1145,21 @@ const BehaviorScript bhvWfTumblingBridge[] = {
END_LOOP(),
};
const BehaviorScript bhvBbhTumblingBridge[] = {
const BehaviorScript bhvBBHTumblingBridge[] = {
BEGIN(OBJ_LIST_SPAWNER),
OR_INT(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
SET_HOME(),
SET_INT(oBehParams2ndByte, 1),
SET_INT(oBhvParams2ndByte, TUMBLING_BRIDGE_BP_BBH),
BEGIN_LOOP(),
CALL_NATIVE(bhv_tumbling_bridge_loop),
END_LOOP(),
};
const BehaviorScript bhvLllTumblingBridge[] = {
const BehaviorScript bhvLLLTumblingBridge[] = {
BEGIN(OBJ_LIST_SPAWNER),
OR_INT(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
SET_HOME(),
SET_INT(oBehParams2ndByte, 2),
SET_INT(oBhvParams2ndByte, TUMBLING_BRIDGE_BP_LLL),
BEGIN_LOOP(),
CALL_NATIVE(bhv_tumbling_bridge_loop),
END_LOOP(),
@ -1193,7 +1193,7 @@ const BehaviorScript bhvAnotherElavator[] = {
END_LOOP(),
};
const BehaviorScript bhvRrElevatorPlatform[] = {
const BehaviorScript bhvRRElevatorPlatform[] = {
BEGIN(OBJ_LIST_SURFACE),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_COLLISION_DATA(rr_seg7_collision_elevator_platform),
@ -1205,7 +1205,7 @@ const BehaviorScript bhvRrElevatorPlatform[] = {
END_LOOP(),
};
const BehaviorScript bhvHmcElevatorPlatform[] = {
const BehaviorScript bhvHMCElevatorPlatform[] = {
BEGIN(OBJ_LIST_SURFACE),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_COLLISION_DATA(hmc_seg7_collision_elevator),
@ -1375,7 +1375,7 @@ const BehaviorScript bhvUkikiCage[] = {
END_LOOP(),
};
const BehaviorScript bhvBitfsSinkingPlatforms[] = {
const BehaviorScript bhvBitFSSinkingPlatforms[] = {
BEGIN(OBJ_LIST_SURFACE),
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
LOAD_COLLISION_DATA(bitfs_seg7_collision_sinking_platform),
@ -1386,19 +1386,19 @@ const BehaviorScript bhvBitfsSinkingPlatforms[] = {
END_LOOP(),
};
const BehaviorScript bhvBitfsSinkingCagePlatform[] = {
const BehaviorScript bhvBitFSSinkingCagePlatform[] = {
BEGIN(OBJ_LIST_SURFACE),
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
LOAD_COLLISION_DATA(bitfs_seg7_collision_sinking_cage_platform),
SET_HOME(),
SPAWN_CHILD(/*Model*/ MODEL_BITFS_BLUE_POLE, /*Behavior*/ bhvDddMovingPole),
SPAWN_CHILD(/*Model*/ MODEL_BITFS_BLUE_POLE, /*Behavior*/ bhvDDDMovingPole),
BEGIN_LOOP(),
CALL_NATIVE(bhv_bitfs_sinking_cage_platform_loop),
CALL_NATIVE(load_object_collision_model),
END_LOOP(),
};
const BehaviorScript bhvDddMovingPole[] = {
const BehaviorScript bhvDDDMovingPole[] = {
BEGIN(OBJ_LIST_POLELIKE),
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
SET_INT(oInteractType, INTERACT_POLE),
@ -1410,7 +1410,7 @@ const BehaviorScript bhvDddMovingPole[] = {
END_LOOP(),
};
const BehaviorScript bhvBitfsTiltingInvertedPyramid[] = {
const BehaviorScript bhvBitFSTiltingInvertedPyramid[] = {
BEGIN(OBJ_LIST_SURFACE),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_COLLISION_DATA(bitfs_seg7_collision_inverted_pyramid),
@ -1457,7 +1457,7 @@ const BehaviorScript bhvBetaMovingFlames[] = {
END_LOOP(),
};
const BehaviorScript bhvRrRotatingBridgePlatform[] = {
const BehaviorScript bhvRRRotatingBridgePlatform[] = {
BEGIN(OBJ_LIST_SURFACE),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_COLLISION_DATA(rr_seg7_collision_rotating_platform_with_fire),
@ -1607,7 +1607,7 @@ const BehaviorScript bhvTowerPlatformGroup[] = {
END_LOOP(),
};
const BehaviorScript bhvWfSlidingTowerPlatform[] = {
const BehaviorScript bhvWFSlidingTowerPlatform[] = {
BEGIN(OBJ_LIST_SURFACE),
OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_COLLISION_DATA(wf_seg7_collision_platform),
@ -1617,7 +1617,7 @@ const BehaviorScript bhvWfSlidingTowerPlatform[] = {
END_LOOP(),
};
const BehaviorScript bhvWfElevatorTowerPlatform[] = {
const BehaviorScript bhvWFElevatorTowerPlatform[] = {
BEGIN(OBJ_LIST_SURFACE),
OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_COLLISION_DATA(wf_seg7_collision_platform),
@ -1627,7 +1627,7 @@ const BehaviorScript bhvWfElevatorTowerPlatform[] = {
END_LOOP(),
};
const BehaviorScript bhvWfSolidTowerPlatform[] = {
const BehaviorScript bhvWFSolidTowerPlatform[] = {
BEGIN(OBJ_LIST_SURFACE),
OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_COLLISION_DATA(wf_seg7_collision_platform),
@ -1704,7 +1704,7 @@ const BehaviorScript bhvPiranhaPlantWakingBubbles[] = {
const BehaviorScript bhvFloorSwitchAnimatesObject[] = {
BEGIN(OBJ_LIST_SURFACE),
SET_INT(oBehParams2ndByte, 1),
SET_INT(oBhvParams2ndByte, 1),
GOTO(bhvFloorSwitchHardcodedModel + 1),
};
@ -1726,7 +1726,7 @@ const BehaviorScript bhvFloorSwitchHardcodedModel[] = {
const BehaviorScript bhvFloorSwitchHiddenObjects[] = {
BEGIN(OBJ_LIST_SURFACE),
SET_INT(oBehParams2ndByte, 2),
SET_INT(oBhvParams2ndByte, 2),
GOTO(bhvFloorSwitchHardcodedModel + 1),
};
@ -1791,7 +1791,7 @@ const BehaviorScript bhvHeaveHoThrowMario[] = {
END_LOOP(),
};
const BehaviorScript bhvCcmTouchedStarSpawn[] = {
const BehaviorScript bhvCCMTouchedStarSpawn[] = {
BEGIN(OBJ_LIST_LEVEL),
OR_INT(oFlags, (OBJ_FLAG_PERSISTENT_RESPAWN | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
SET_HITBOX(/*Radius*/ 500, /*Height*/ 500),
@ -2185,7 +2185,7 @@ const BehaviorScript bhvWaterLevelPillar[] = {
END_LOOP(),
};
const BehaviorScript bhvDddWarp[] = {
const BehaviorScript bhvDDDWarp[] = {
BEGIN(OBJ_LIST_SURFACE),
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
SET_FLOAT(oCollisionDistance, 30000),
@ -2246,7 +2246,7 @@ const BehaviorScript bhvStub1D0C[] = {
DEACTIVATE(),
};
const BehaviorScript bhvLllRotatingHexagonalPlatform[] = {
const BehaviorScript bhvLLLRotatingHexagonalPlatform[] = {
BEGIN(OBJ_LIST_SURFACE),
OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_COLLISION_DATA(lll_seg7_collision_hexagonal_platform),
@ -2258,7 +2258,7 @@ const BehaviorScript bhvLllRotatingHexagonalPlatform[] = {
END_LOOP(),
};
const BehaviorScript bhvLllSinkingRockBlock[] = {
const BehaviorScript bhvLLLSinkingRockBlock[] = {
BEGIN(OBJ_LIST_SURFACE),
OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_COLLISION_DATA(lll_seg7_collision_floating_block),
@ -2275,7 +2275,7 @@ const BehaviorScript bhvStub1D70[] = {
BREAK(),
};
const BehaviorScript bhvLllMovingOctagonalMeshPlatform[] = {
const BehaviorScript bhvLLLMovingOctagonalMeshPlatform[] = {
BEGIN(OBJ_LIST_SURFACE),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
ADD_FLOAT(oPosY, -50),
@ -2290,7 +2290,7 @@ const BehaviorScript bhvSnowBall[] = {
BREAK(),
};
const BehaviorScript bhvLllRotatingBlockWithFireBars[] = {
const BehaviorScript bhvLLLRotatingBlockWithFireBars[] = {
BEGIN(OBJ_LIST_SURFACE),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_COLLISION_DATA(lll_seg7_collision_rotating_fire_bars),
@ -2300,7 +2300,7 @@ const BehaviorScript bhvLllRotatingBlockWithFireBars[] = {
END_LOOP(),
};
const BehaviorScript bhvLllRotatingHexFlame[] = {
const BehaviorScript bhvLLLRotatingHexFlame[] = {
BEGIN(OBJ_LIST_LEVEL),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
SET_INTERACT_TYPE(INTERACT_FLAME),
@ -2313,7 +2313,7 @@ const BehaviorScript bhvLllRotatingHexFlame[] = {
END_LOOP(),
};
const BehaviorScript bhvLllWoodPiece[] = {
const BehaviorScript bhvLLLWoodPiece[] = {
BEGIN(OBJ_LIST_SURFACE),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_COLLISION_DATA(lll_seg7_collision_wood_piece),
@ -2324,7 +2324,7 @@ const BehaviorScript bhvLllWoodPiece[] = {
END_LOOP(),
};
const BehaviorScript bhvLllFloatingWoodBridge[] = {
const BehaviorScript bhvLLLFloatingWoodBridge[] = {
BEGIN(OBJ_LIST_DEFAULT),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
SET_MODEL(MODEL_NONE),
@ -2343,7 +2343,7 @@ const BehaviorScript bhvVolcanoFlames[] = {
END_LOOP(),
};
const BehaviorScript bhvLllRotatingHexagonalRing[] = {
const BehaviorScript bhvLLLRotatingHexagonalRing[] = {
BEGIN(OBJ_LIST_SURFACE),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_COLLISION_DATA(lll_seg7_collision_rotating_platform),
@ -2353,7 +2353,7 @@ const BehaviorScript bhvLllRotatingHexagonalRing[] = {
END_LOOP(),
};
const BehaviorScript bhvLllSinkingRectangularPlatform[] = {
const BehaviorScript bhvLLLSinkingRectangularPlatform[] = {
BEGIN(OBJ_LIST_SURFACE),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_COLLISION_DATA(lll_seg7_collision_slow_tilting_platform),
@ -2365,7 +2365,7 @@ const BehaviorScript bhvLllSinkingRectangularPlatform[] = {
END_LOOP(),
};
const BehaviorScript bhvLllSinkingSquarePlatforms[] = {
const BehaviorScript bhvLLLSinkingSquarePlatforms[] = {
BEGIN(OBJ_LIST_SURFACE),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_COLLISION_DATA(lll_seg7_collision_sinking_pyramids),
@ -2378,7 +2378,7 @@ const BehaviorScript bhvLllSinkingSquarePlatforms[] = {
END_LOOP(),
};
const BehaviorScript bhvLllTiltingInvertedPyramid[] = {
const BehaviorScript bhvLLLTiltingInvertedPyramid[] = {
BEGIN(OBJ_LIST_SURFACE),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_COLLISION_DATA(lll_seg7_collision_inverted_pyramid),
@ -2448,7 +2448,7 @@ const BehaviorScript bhvPiranhaPlant[] = {
END_LOOP(),
};
const BehaviorScript bhvLllHexagonalMesh[] = {
const BehaviorScript bhvLLLHexagonalMesh[] = {
BEGIN(OBJ_LIST_SURFACE),
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
LOAD_COLLISION_DATA(lll_hexagonal_mesh_seg3_collision_0301CECC),
@ -2457,7 +2457,7 @@ const BehaviorScript bhvLllHexagonalMesh[] = {
END_LOOP(),
};
const BehaviorScript bhvLllBowserPuzzlePiece[] = {
const BehaviorScript bhvLLLBowserPuzzlePiece[] = {
BEGIN(OBJ_LIST_SURFACE),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_COLLISION_DATA(lll_seg7_collision_puzzle_piece),
@ -2469,7 +2469,7 @@ const BehaviorScript bhvLllBowserPuzzlePiece[] = {
END_LOOP(),
};
const BehaviorScript bhvLllBowserPuzzle[] = {
const BehaviorScript bhvLLLBowserPuzzle[] = {
BEGIN(OBJ_LIST_SPAWNER),
DISABLE_RENDERING(),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
@ -2523,13 +2523,13 @@ const BehaviorScript bhvSmallPenguin[] = {
const BehaviorScript bhvManyBlueFishSpawner[] = {
BEGIN(OBJ_LIST_DEFAULT),
SET_INT(oBehParams2ndByte, 0),
SET_INT(oBhvParams2ndByte, FISH_SPAWNER_BP_MANY_BLUE),
GOTO(bhvFishSpawner + 1),
};
const BehaviorScript bhvFewBlueFishSpawner[] = {
BEGIN(OBJ_LIST_DEFAULT),
SET_INT(oBehParams2ndByte, 1),
SET_INT(oBhvParams2ndByte, FISH_SPAWNER_BP_FEW_BLUE),
GOTO(bhvFishSpawner + 1),
};
@ -2552,7 +2552,7 @@ const BehaviorScript bhvFish[] = {
END_LOOP(),
};
const BehaviorScript bhvWdwExpressElevator[] = {
const BehaviorScript bhvWDWExpressElevator[] = {
BEGIN(OBJ_LIST_SURFACE),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_COLLISION_DATA(wdw_seg7_collision_express_elevator_platform),
@ -2563,7 +2563,7 @@ const BehaviorScript bhvWdwExpressElevator[] = {
END_LOOP(),
};
const BehaviorScript bhvWdwExpressElevatorPlatform[] = {
const BehaviorScript bhvWDWExpressElevatorPlatform[] = {
BEGIN(OBJ_LIST_SURFACE),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_COLLISION_DATA(wdw_seg7_collision_express_elevator_platform),
@ -2691,7 +2691,7 @@ const BehaviorScript bhvSushiSharkCollisionChild[] = {
END_LOOP(),
};
const BehaviorScript bhvJrbSlidingBox[] = {
const BehaviorScript bhvJRBSlidingBox[] = {
BEGIN(OBJ_LIST_SURFACE),
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
LOAD_COLLISION_DATA(jrb_seg7_collision_floating_box),
@ -2815,7 +2815,7 @@ const BehaviorScript bhvWhitePuffSmoke2[] = {
const BehaviorScript bhvPurpleSwitchHiddenBoxes[] = {
BEGIN(OBJ_LIST_SURFACE),
SET_INT(oBehParams2ndByte, 2),
SET_INT(oBhvParams2ndByte, 2),
GOTO(bhvFloorSwitchHardcodedModel + 1),
};
@ -2948,14 +2948,14 @@ const BehaviorScript bhvBooWithCage[] = {
const BehaviorScript bhvBalconyBigBoo[] = {
BEGIN(OBJ_LIST_GENACTOR),
SET_INT(oBehParams2ndByte, 2),
SET_INT(oBhvParams2ndByte, BIG_BOO_BP_BALCONY),
SET_INT(oBigBooNumMinionBoosKilled, 10),
GOTO(bhvGhostHuntBigBoo + 1),
};
const BehaviorScript bhvMerryGoRoundBigBoo[] = {
BEGIN(OBJ_LIST_GENACTOR),
SET_INT(oBehParams2ndByte, 1),
SET_INT(oBhvParams2ndByte, BIG_BOO_BP_MERRY_GO_ROUND),
// Set number of minion boos killed to 10, which is greater than 5 so that the boo always loads without needing to kill any boos.
SET_INT(oBigBooNumMinionBoosKilled, 10),
GOTO(bhvGhostHuntBigBoo + 1),
@ -2983,13 +2983,13 @@ const BehaviorScript bhvCourtyardBooTriplet[] = {
const BehaviorScript bhvBoo[] = {
BEGIN(OBJ_LIST_GENACTOR),
SET_INT(oBehParams2ndByte, 1),
SET_INT(oBhvParams2ndByte, BOO_BP_GENERIC),
GOTO(bhvGhostHuntBoo + 1),
};
const BehaviorScript bhvMerryGoRoundBoo[] = {
BEGIN(OBJ_LIST_GENACTOR),
SET_INT(oBehParams2ndByte, 2),
SET_INT(oBhvParams2ndByte, BOO_BP_MERRY_GO_ROUND),
GOTO(bhvGhostHuntBoo + 1),
};
@ -3037,7 +3037,7 @@ const BehaviorScript bhvBooStaircase[] = {
END_LOOP(),
};
const BehaviorScript bhvBbhTiltingTrapPlatform[] = {
const BehaviorScript bhvBBHTiltingTrapPlatform[] = {
BEGIN(OBJ_LIST_SURFACE),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_COLLISION_DATA(bbh_seg7_collision_tilt_floor_platform),
@ -3067,7 +3067,7 @@ const BehaviorScript bhvMeshElevator[] = {
LOAD_COLLISION_DATA(bbh_seg7_collision_mesh_elevator),
SET_HOME(),
SET_INT(oRoom, 12),
SET_INT(oBehParams2ndByte, 4),
SET_INT(oBhvParams2ndByte, 4),
CALL_NATIVE(bhv_elevator_init),
BEGIN_LOOP(),
CALL_NATIVE(bhv_elevator_loop),
@ -3253,7 +3253,7 @@ const BehaviorScript bhvScuttlebugSpawn[] = {
const BehaviorScript bhvWhompKingBoss[] = {
BEGIN(OBJ_LIST_SURFACE),
SET_INT(oBehParams2ndByte, 1),
SET_INT(oBhvParams2ndByte, WHOMP_BP_KING),
SET_INT(oHealth, 3),
GOTO(bhvSmallWhomp + 1 + 1),
};
@ -3764,7 +3764,7 @@ const BehaviorScript bhvBobombBuddy[] = {
DROP_TO_FLOOR(),
SET_HITBOX(/*Radius*/ 100, /*Height*/ 60),
ANIMATE(0),
SET_INT(oBobombBuddyRole, 0),
SET_INT(oBobombBuddyRole, BOBOMB_BUDDY_ROLE_ADVICE),
SET_HOME(),
CALL_NATIVE(bhv_bobomb_buddy_init),
BEGIN_LOOP(),
@ -3782,7 +3782,7 @@ const BehaviorScript bhvBobombBuddyOpensCannon[] = {
DROP_TO_FLOOR(),
SET_HITBOX(/*Radius*/ 100, /*Height*/ 60),
ANIMATE(0),
SET_INT(oBobombBuddyRole, 1),
SET_INT(oBobombBuddyRole, BOBOMB_BUDDY_ROLE_CANNON),
SET_HOME(),
CALL_NATIVE(bhv_bobomb_buddy_init),
BEGIN_LOOP(),
@ -4091,7 +4091,7 @@ const BehaviorScript bhvSmallChillBully[] = {
LOAD_ANIMATIONS(oAnimations, chilly_chief_seg6_anims_06003994),
DROP_TO_FLOOR(),
SET_HOME(),
SET_INT(oBullySubtype, 0x0010),
SET_INT(oBullySubtype, BULLY_STYPE_CHILL),
CALL_NATIVE(bhv_small_bully_init),
BEGIN_LOOP(),
SET_INT(oIntangibleTimer, 0),
@ -4105,7 +4105,7 @@ const BehaviorScript bhvBigChillBully[] = {
LOAD_ANIMATIONS(oAnimations, chilly_chief_seg6_anims_06003994),
DROP_TO_FLOOR(),
SET_HOME(),
SET_INT(oBullySubtype, 0x0010),
SET_INT(oBullySubtype, BULLY_STYPE_CHILL),
CALL_NATIVE(bhv_big_bully_init),
BEGIN_LOOP(),
SET_INT(oIntangibleTimer, 0),
@ -4223,7 +4223,7 @@ const BehaviorScript bhvStarKeyCollectionPuffSpawner[] = {
END_LOOP(),
};
const BehaviorScript bhvLllDrawbridgeSpawner[] = {
const BehaviorScript bhvLLLDrawbridgeSpawner[] = {
BEGIN(OBJ_LIST_DEFAULT),
HIDE(),
BEGIN_LOOP(),
@ -4231,7 +4231,7 @@ const BehaviorScript bhvLllDrawbridgeSpawner[] = {
END_LOOP(),
};
const BehaviorScript bhvLllDrawbridge[] = {
const BehaviorScript bhvLLLDrawbridge[] = {
BEGIN(OBJ_LIST_SURFACE),
OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_COLLISION_DATA(lll_seg7_collision_drawbridge),
@ -4263,7 +4263,7 @@ const BehaviorScript bhvLargeBomp[] = {
END_LOOP(),
};
const BehaviorScript bhvWfSlidingPlatform[] = {
const BehaviorScript bhvWFSlidingPlatform[] = {
BEGIN(OBJ_LIST_SURFACE),
OR_INT(oFlags, (OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_COLLISION_DATA(wf_seg7_collision_sliding_brick_platform),
@ -4334,7 +4334,7 @@ const BehaviorScript bhvBowlingBall[] = {
END_LOOP(),
};
const BehaviorScript bhvTtmBowlingBallSpawner[] = {
const BehaviorScript bhvTTMBowlingBallSpawner[] = {
BEGIN(OBJ_LIST_GENACTOR),
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
SET_INT(oBBallSpawnerPeriodMinus1, 63),
@ -4344,7 +4344,7 @@ const BehaviorScript bhvTtmBowlingBallSpawner[] = {
END_LOOP(),
};
const BehaviorScript bhvBobBowlingBallSpawner[] = {
const BehaviorScript bhvBoBBowlingBallSpawner[] = {
BEGIN(OBJ_LIST_GENACTOR),
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
SET_INT(oBBallSpawnerPeriodMinus1, 127),
@ -4354,7 +4354,7 @@ const BehaviorScript bhvBobBowlingBallSpawner[] = {
END_LOOP(),
};
const BehaviorScript bhvThiBowlingBallSpawner[] = {
const BehaviorScript bhvTHIBowlingBallSpawner[] = {
BEGIN(OBJ_LIST_GENACTOR),
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
BEGIN_LOOP(),
@ -4362,7 +4362,7 @@ const BehaviorScript bhvThiBowlingBallSpawner[] = {
END_LOOP(),
};
const BehaviorScript bhvRrCruiserWing[] = {
const BehaviorScript bhvRRCruiserWing[] = {
BEGIN(OBJ_LIST_DEFAULT),
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
CALL_NATIVE(bhv_rr_cruiser_wing_init),
@ -4382,7 +4382,7 @@ const BehaviorScript bhvSpindel[] = {
END_LOOP(),
};
const BehaviorScript bhvSslMovingPyramidWall[] = {
const BehaviorScript bhvSSLMovingPyramidWall[] = {
BEGIN(OBJ_LIST_SURFACE),
OR_INT(oFlags, (OBJ_FLAG_SET_FACE_ANGLE_TO_MOVE_ANGLE | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_COLLISION_DATA(ssl_seg7_collision_0702808C),
@ -4671,7 +4671,7 @@ const BehaviorScript bhvHiddenStarTrigger[] = {
END_LOOP(),
};
const BehaviorScript bhvTtmRollingLog[] = {
const BehaviorScript bhvTTMRollingLog[] = {
BEGIN(OBJ_LIST_SURFACE),
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
LOAD_COLLISION_DATA(ttm_seg7_collision_pitoune_2),
@ -4684,7 +4684,7 @@ const BehaviorScript bhvTtmRollingLog[] = {
END_LOOP(),
};
const BehaviorScript bhvLllVolcanoFallingTrap[] = {
const BehaviorScript bhvLLLVolcanoFallingTrap[] = {
BEGIN(OBJ_LIST_SURFACE),
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
LOAD_COLLISION_DATA(lll_seg7_collision_falling_wall),
@ -4695,7 +4695,7 @@ const BehaviorScript bhvLllVolcanoFallingTrap[] = {
END_LOOP(),
};
const BehaviorScript bhvLllRollingLog[] = {
const BehaviorScript bhvLLLRollingLog[] = {
BEGIN(OBJ_LIST_SURFACE),
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
LOAD_COLLISION_DATA(lll_seg7_collision_pitoune),
@ -4708,7 +4708,7 @@ const BehaviorScript bhvLllRollingLog[] = {
END_LOOP(),
};
const BehaviorScript bhv1upWalking[] = {
const BehaviorScript bhv1UpWalking[] = {
BEGIN(OBJ_LIST_LEVEL),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
BILLBOARD(),
@ -4720,7 +4720,7 @@ const BehaviorScript bhv1upWalking[] = {
END_LOOP(),
};
const BehaviorScript bhv1upRunningAway[] = {
const BehaviorScript bhv1UpRunningAway[] = {
BEGIN(OBJ_LIST_LEVEL),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
BILLBOARD(),
@ -4732,7 +4732,7 @@ const BehaviorScript bhv1upRunningAway[] = {
END_LOOP(),
};
const BehaviorScript bhv1upSliding[] = {
const BehaviorScript bhv1UpSliding[] = {
BEGIN(OBJ_LIST_LEVEL),
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
BILLBOARD(),
@ -4758,7 +4758,7 @@ const BehaviorScript bhv1Up[] = {
END_LOOP(),
};
const BehaviorScript bhv1upJumpOnApproach[] = {
const BehaviorScript bhv1UpJumpOnApproach[] = {
BEGIN(OBJ_LIST_LEVEL),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
BILLBOARD(),
@ -4771,7 +4771,7 @@ const BehaviorScript bhv1upJumpOnApproach[] = {
END_LOOP(),
};
const BehaviorScript bhvHidden1up[] = {
const BehaviorScript bhvHidden1Up[] = {
BEGIN(OBJ_LIST_LEVEL),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
BILLBOARD(),
@ -4784,7 +4784,7 @@ const BehaviorScript bhvHidden1up[] = {
END_LOOP(),
};
const BehaviorScript bhvHidden1upTrigger[] = {
const BehaviorScript bhvHidden1UpTrigger[] = {
BEGIN(OBJ_LIST_LEVEL),
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
SET_HITBOX(/*Radius*/ 100, /*Height*/ 100),
@ -4794,7 +4794,7 @@ const BehaviorScript bhvHidden1upTrigger[] = {
END_LOOP(),
};
const BehaviorScript bhvHidden1upInPole[] = {
const BehaviorScript bhvHidden1UpInPole[] = {
BEGIN(OBJ_LIST_LEVEL),
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
BILLBOARD(),
@ -4807,7 +4807,7 @@ const BehaviorScript bhvHidden1upInPole[] = {
END_LOOP(),
};
const BehaviorScript bhvHidden1upInPoleTrigger[] = {
const BehaviorScript bhvHidden1UpInPoleTrigger[] = {
BEGIN(OBJ_LIST_LEVEL),
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
SET_HITBOX(/*Radius*/ 100, /*Height*/ 100),
@ -4817,7 +4817,7 @@ const BehaviorScript bhvHidden1upInPoleTrigger[] = {
END_LOOP(),
};
const BehaviorScript bhvHidden1upInPoleSpawner[] = {
const BehaviorScript bhvHidden1UpInPoleSpawner[] = {
BEGIN(OBJ_LIST_LEVEL),
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
BEGIN_LOOP(),
@ -4877,7 +4877,7 @@ const BehaviorScript bhvSnowMoundSpawn[] = {
END_LOOP(),
};
const BehaviorScript bhvWdwSquareFloatingPlatform[] = {
const BehaviorScript bhvWDWSquareFloatingPlatform[] = {
BEGIN(OBJ_LIST_SURFACE),
OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_COLLISION_DATA(wdw_seg7_collision_square_floating_platform),
@ -4889,7 +4889,7 @@ const BehaviorScript bhvWdwSquareFloatingPlatform[] = {
END_LOOP(),
};
const BehaviorScript bhvWdwRectangularFloatingPlatform[] = {
const BehaviorScript bhvWDWRectangularFloatingPlatform[] = {
BEGIN(OBJ_LIST_SURFACE),
OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_COLLISION_DATA(wdw_seg7_collision_rect_floating_platform),
@ -4901,7 +4901,7 @@ const BehaviorScript bhvWdwRectangularFloatingPlatform[] = {
END_LOOP(),
};
const BehaviorScript bhvJrbFloatingPlatform[] = {
const BehaviorScript bhvJRBFloatingPlatform[] = {
BEGIN(OBJ_LIST_SURFACE),
OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_COLLISION_DATA(jrb_seg7_collision_floating_platform),
@ -4976,7 +4976,7 @@ const BehaviorScript bhvPillarBase[] = {
END_LOOP(),
};
const BehaviorScript bhvJrbFloatingBox[] = {
const BehaviorScript bhvJRBFloatingBox[] = {
BEGIN(OBJ_LIST_SURFACE),
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
LOAD_COLLISION_DATA(jrb_seg7_collision_floating_box),
@ -5006,7 +5006,7 @@ const BehaviorScript bhvTreasureChestsShip[] = {
END_LOOP(),
};
const BehaviorScript bhvTreasureChestsJrb[] = {
const BehaviorScript bhvTreasureChestsJRB[] = {
BEGIN(OBJ_LIST_DEFAULT),
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
DROP_TO_FLOOR(),
@ -5016,13 +5016,13 @@ const BehaviorScript bhvTreasureChestsJrb[] = {
END_LOOP(),
};
const BehaviorScript bhvTreasureChests[] = {
const BehaviorScript bhvTreasureChestsDDD[] = {
BEGIN(OBJ_LIST_DEFAULT),
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
DROP_TO_FLOOR(),
CALL_NATIVE(bhv_treasure_chest_init),
CALL_NATIVE(bhv_treasure_chest_ddd_init),
BEGIN_LOOP(),
CALL_NATIVE(bhv_treasure_chest_loop),
CALL_NATIVE(bhv_treasure_chest_ddd_loop),
END_LOOP(),
};

View file

@ -10,6 +10,8 @@ def add_custom_arguments(parser):
help="Set version to EU.")
group.add_argument('-s', dest='lang', action='store_const', const='sh',
help="Set version to SH.")
group.add_argument('-c', dest='lang', action='store_const', const='cn',
help="Set version to CN.")
def apply(config, args):
lang = args.lang or 'us'

View file

@ -158,7 +158,7 @@ index 00000000..033bf952
+ jr $k0 // run the original handler
+ nop
diff --git a/lib/asm/__osExceptionPreamble.s b/lib/asm/__osExceptionPreamble.s
index c3b97993..c552a485 100644
index 4e841ea0..ab0c7d13 100644
--- a/lib/asm/__osExceptionPreamble.s
+++ b/lib/asm/__osExceptionPreamble.s
@@ -11,8 +11,8 @@
@ -173,7 +173,7 @@ index c3b97993..c552a485 100644
nop
diff --git a/sm64.ld b/sm64.ld
index 7d9b5b4a..c7bb81b9 100755
index da9bc4dd..25ac57e8 100755
--- a/sm64.ld
+++ b/sm64.ld
@@ -117,6 +117,7 @@ SECTIONS

View file

@ -1,312 +0,0 @@
diff --git a/include/PR/console_type.h b/include/PR/console_type.h
new file mode 100644
index 00000000..e60550ab
--- /dev/null
+++ b/include/PR/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/lib/asm/skGetId.s b/lib/asm/skGetId.s
new file mode 100644
index 00000000..58e7d4f9
--- /dev/null
+++ b/lib/asm/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/lib/src/__osViSwapContext.c b/lib/src/__osViSwapContext.c
index 990cb11f..22756e91 100644
--- a/lib/src/__osViSwapContext.c
+++ b/lib/src/__osViSwapContext.c
@@ -54,7 +54,9 @@ void __osViSwapContext() {
HW_REG(VI_INTR_REG, u32) = s0->fldRegs[field].vIntr;
HW_REG(VI_X_SCALE_REG, u32) = s1->unk20;
HW_REG(VI_Y_SCALE_REG, u32) = s1->unk2c;
- HW_REG(VI_CONTROL_REG, u32) = s1->features;
+ /* Make sure bit 13 is cleared. Otherwise, graphics will be corrupted on
+ * iQue Player. This has no effect on N64. */
+ HW_REG(VI_CONTROL_REG, u32) = s1->features & ~(1 << 13);
__osViNext = __osViCurr;
__osViCurr = s1;
*__osViNext = *__osViCurr;
diff --git a/lib/src/consoleType.c b/lib/src/consoleType.c
new file mode 100644
index 00000000..ef08d1ef
--- /dev/null
+++ b/lib/src/consoleType.c
@@ -0,0 +1,12 @@
+#include "libultra_internal.h"
+#include <PR/console_type.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/lib/src/osEepromProbe.c b/lib/src/osEepromProbe.c
index d550b846..bbaf2bcc 100644
--- a/lib/src/osEepromProbe.c
+++ b/lib/src/osEepromProbe.c
@@ -1,4 +1,5 @@
#include "libultra_internal.h"
+#include <PR/console_type.h>
// TODO: merge with osEepromWrite
typedef struct {
@@ -13,11 +14,23 @@ s32 osEepromProbe(OSMesgQueue *mq) {
unkStruct sp18;
__osSiGetAccess();
- status = __osEepStatus(mq, &sp18);
- if (status == 0 && (sp18.unk00 & 0x8000) != 0) {
- status = 1;
- } else {
- status = 0;
+ if (gConsoleType == CONSOLE_N64) {
+ status = __osEepStatus(mq, &sp18);
+ if (status == 0 && (sp18.unk00 & 0x8000) != 0) {
+ status = 1;
+ } else {
+ status = 0;
+ }
+ } else if (gConsoleType == CONSOLE_IQUE) {
+ s32 __osBbEepromSize = * (s32*) 0x80000360;
+
+ if (__osBbEepromSize == 0x200) {
+ status = 1;
+ }
+
+ if (__osBbEepromSize == 0x800) {
+ status = 2;
+ }
}
__osSiRelAccess();
return status;
diff --git a/lib/src/osEepromRead.c b/lib/src/osEepromRead.c
index ea784b2c..116dae2d 100644
--- a/lib/src/osEepromRead.c
+++ b/lib/src/osEepromRead.c
@@ -1,4 +1,5 @@
#include "libultra_internal.h"
+#include <PR/console_type.h>
extern u8 _osLastSentSiCmd;
@@ -42,33 +43,44 @@ s32 osEepromRead(OSMesgQueue *mq, u8 address, u8 *buffer) {
return -1;
}
__osSiGetAccess();
- sp34 = __osEepStatus(mq, &sp28);
- if (sp34 != 0 || sp28.unk00 != 0x8000) {
+ if (gConsoleType == CONSOLE_N64) {
+ sp34 = __osEepStatus(mq, &sp28);
+ if (sp34 != 0 || sp28.unk00 != 0x8000) {
- return 8;
- }
- while (sp28.unk02 & 0x80) {
- __osEepStatus(mq, &sp28);
- }
- __osPackEepReadData(address);
- sp34 = __osSiRawStartDma(OS_WRITE, &D_80365E00);
- osRecvMesg(mq, NULL, OS_MESG_BLOCK);
- for (sp30 = 0; sp30 < 0x10; sp30++) {
- (D_80365E00)[sp30] = 255;
- }
- D_80365E3C = 0;
- sp34 = __osSiRawStartDma(OS_READ, D_80365E00);
- _osLastSentSiCmd = 4;
- osRecvMesg(mq, NULL, OS_MESG_BLOCK);
- for (sp30 = 0; sp30 < 4; sp30++) {
- sp2c++;
- }
- sp20 = *(unkStruct2 *) sp2c;
- sp34 = (sp20.unk01 & 0xc0) >> 4;
- if (sp34 == 0) {
- for (sp30 = 0; sp30 < 8; sp30++) {
- *buffer++ = ((u8 *) &sp20.unk04)[sp30];
+ return 8;
+ }
+ while (sp28.unk02 & 0x80) {
+ __osEepStatus(mq, &sp28);
+ }
+ __osPackEepReadData(address);
+ sp34 = __osSiRawStartDma(OS_WRITE, &D_80365E00);
+ osRecvMesg(mq, NULL, OS_MESG_BLOCK);
+ for (sp30 = 0; sp30 < 0x10; sp30++) {
+ (D_80365E00)[sp30] = 255;
}
+ D_80365E3C = 0;
+ sp34 = __osSiRawStartDma(OS_READ, D_80365E00);
+ _osLastSentSiCmd = 4;
+ osRecvMesg(mq, NULL, OS_MESG_BLOCK);
+ for (sp30 = 0; sp30 < 4; sp30++) {
+ sp2c++;
+ }
+ sp20 = *(unkStruct2 *) sp2c;
+ sp34 = (sp20.unk01 & 0xc0) >> 4;
+ if (sp34 == 0) {
+ for (sp30 = 0; sp30 < 8; sp30++) {
+ *buffer++ = ((u8 *) &sp20.unk04)[sp30];
+ }
+ }
+ } else if (gConsoleType == CONSOLE_IQUE) {
+ u8 *__osBbEepromAddress = * (u8**) 0x8000035C;
+ s32 i;
+
+ for (i = 0; i < 8; i++) {
+ buffer[i] = __osBbEepromAddress[(address << 3) + i];
+ }
+
+ sp34 = 0;
}
__osSiRelAccess();
return sp34;
diff --git a/lib/src/osEepromWrite.c b/lib/src/osEepromWrite.c
index 1a86477b..a94f8721 100644
--- a/lib/src/osEepromWrite.c
+++ b/lib/src/osEepromWrite.c
@@ -1,5 +1,6 @@
#include "libultra_internal.h"
#include "osContInternal.h"
+#include <PR/console_type.h>
#ifndef AVOID_UB
ALIGNED8 u32 D_80365E00[15];
@@ -52,36 +53,47 @@ s32 osEepromWrite(OSMesgQueue *mq, u8 address, u8 *buffer) {
}
__osSiGetAccess();
- sp34 = __osEepStatus(mq, &sp1c);
+ if (gConsoleType == CONSOLE_N64) {
+ sp34 = __osEepStatus(mq, &sp1c);
- if (sp34 != 0 || sp1c.unk00 != 0x8000) {
- return 8;
- }
+ if (sp34 != 0 || sp1c.unk00 != 0x8000) {
+ return 8;
+ }
- while (sp1c.unk02 & 0x80) {
- __osEepStatus(mq, &sp1c);
- }
+ while (sp1c.unk02 & 0x80) {
+ __osEepStatus(mq, &sp1c);
+ }
- __osPackEepWriteData(address, buffer);
+ __osPackEepWriteData(address, buffer);
- sp34 = __osSiRawStartDma(OS_WRITE, &D_80365E00);
- osRecvMesg(mq, NULL, OS_MESG_BLOCK);
+ sp34 = __osSiRawStartDma(OS_WRITE, &D_80365E00);
+ osRecvMesg(mq, NULL, OS_MESG_BLOCK);
- for (sp30 = 0; sp30 < 0x10; sp30++) {
- (D_80365E00)[sp30] = 255;
- }
+ for (sp30 = 0; sp30 < 0x10; sp30++) {
+ (D_80365E00)[sp30] = 255;
+ }
- D_80365E3C = 0;
- sp34 = __osSiRawStartDma(OS_READ, D_80365E00);
- _osLastSentSiCmd = 5;
- osRecvMesg(mq, NULL, OS_MESG_BLOCK);
+ D_80365E3C = 0;
+ sp34 = __osSiRawStartDma(OS_READ, D_80365E00);
+ _osLastSentSiCmd = 5;
+ osRecvMesg(mq, NULL, OS_MESG_BLOCK);
- for (sp30 = 0; sp30 < 4; sp30++) {
- sp2c++;
- }
+ for (sp30 = 0; sp30 < 4; sp30++) {
+ sp2c++;
+ }
+
+ sp20 = *(unkStruct2 *) sp2c;
+ sp34 = (sp20.unk01 & 0xc0) >> 4;
+ } else if (gConsoleType == CONSOLE_IQUE) {
+ u8 *__osBbEepromAddress = * (u8**) 0x8000035C;
+ s32 i;
- sp20 = *(unkStruct2 *) sp2c;
- sp34 = (sp20.unk01 & 0xc0) >> 4;
+ for (i = 0; i < 8; i++) {
+ __osBbEepromAddress[(address << 3) + i] = buffer[i];
+ }
+
+ sp34 = 0;
+ }
__osSiRelAccess();
return sp34;
}
diff --git a/lib/src/osInitialize.c b/lib/src/osInitialize.c
index ba73024b..6deaf407 100644
--- a/lib/src/osInitialize.c
+++ b/lib/src/osInitialize.c
@@ -1,6 +1,7 @@
#include "libultra_internal.h"
#include "hardware.h"
#include <macros.h>
+#include <PR/console_type.h>
#define PIF_ADDR_START (void *) 0x1FC007FC
@@ -51,6 +52,7 @@ void osInitialize(void) {
UNUSED u32 eu_sp30;
#endif
UNUSED u32 sp2c;
+ gConsoleType = get_console_type();
D_80365CD0 = TRUE;
__osSetSR(__osGetSR() | 0x20000000);
__osSetFpcCsr(0x01000800);
diff --git a/sm64.ld b/sm64.ld
index 7d9b5b4a..be853a3b 100755
--- a/sm64.ld
+++ b/sm64.ld
@@ -306,6 +306,8 @@ SECTIONS
#if ENABLE_RUMBLE
BUILD_DIR/libultra.a:unk_shindou_file_3.o(.text);
#endif
+ BUILD_DIR/libultra.a:consoleType.o(.text)
+ BUILD_DIR/libultra.a:skGetId.o(.text)
BUILD_DIR/lib/rsp.o(.text);
#else
BUILD_DIR/src/game*.o(.text);
@@ -428,6 +430,8 @@ SECTIONS
#if ENABLE_RUMBLE
BUILD_DIR/libultra.a:unk_shindou_file_3.o(.text);
#endif
+ BUILD_DIR/libultra.a:consoleType.o(.text)
+ BUILD_DIR/libultra.a:skGetId.o(.text)
BUILD_DIR/lib/rsp.o(.text);
#endif

View file

@ -37,7 +37,7 @@ index 749179b1..2f6f7a3c 100644
+#define TEXT_PJ64 _("If you are using PJ64 1.6, go to:\nOptions > Settings > Rom Settings Tab > Memory Size\nthen select 8 MB from the drop-down box.")
+#define TEXT_PJ64_2 _("If you are using PJ64 2.X, go to:\nOptions > Settings > Config: > Memory Size, select 8 MB")
+
#if defined(VERSION_JP) || defined(VERSION_SH)
#if defined(VERSION_JP) || defined(VERSION_SH) || defined(VERSION_CN)
/**
diff --git a/levels/entry.c b/levels/entry.c

View file

@ -76,7 +76,7 @@ def main():
clean_assets(local_asset_file)
sys.exit(0)
all_langs = ["jp", "us", "eu", "sh"]
all_langs = ["jp", "us", "eu", "sh", "cn"]
if not langs or not all(a in all_langs for a in langs):
langs_str = " ".join("[" + lang + "]" for lang in all_langs)
print("Usage: " + sys.argv[0] + " " + langs_str)
@ -156,7 +156,11 @@ def main():
# Make sure tools exist
subprocess.check_call(
["make", "-s", "-C", "tools/", "n64graphics", "skyconv", "mio0", "aifc_decode"]
["make", "-s", "-C", "tools/sm64tools/", "n64graphics", "mio0"]
)
subprocess.check_call(
["make", "-s", "-C", "tools/", "skyconv", "aifc_decode"]
)
# Go through the assets in roughly alphabetical order (but assets in the same
@ -175,13 +179,14 @@ def main():
"baserom." + lang + ".z64",
]
def append_args(key):
size, locs = asset_map["@sound " + key + " " + lang]
sound_ver = "sh" if lang == "cn" else lang
size, locs = asset_map["@sound " + key + " " + sound_ver]
offset = locs[lang][0]
args.append(str(offset))
args.append(str(size))
append_args("ctl")
append_args("tbl")
if lang == "sh":
if lang in ("sh", "cn"):
args.append("--shindou-headers")
append_args("ctl header")
append_args("tbl header")
@ -195,7 +200,7 @@ def main():
if mio0 is not None:
image = subprocess.run(
[
"./tools/mio0",
"./tools/sm64tools/mio0",
"-d",
"-o",
str(mio0),
@ -222,7 +227,8 @@ def main():
if asset.startswith("textures/skyboxes/"):
imagetype = "sky"
else:
imagetype = "cake" + ("-eu" if "eu" in asset else "")
imagetype = "cake" + ("-cn" if "cn" in asset else "-eu" if "eu" in asset else "")
print(imagetype, png_file.name, asset)
subprocess.run(
[
"./tools/skyconv",
@ -239,7 +245,7 @@ def main():
fmt = asset.split(".")[-2]
subprocess.run(
[
"./tools/n64graphics",
"./tools/sm64tools/n64graphics",
"-e",
png_file.name,
"-g",

View file

@ -41,11 +41,18 @@ versionGroup.add_argument(
const="sh",
dest="version",
)
versionGroup.add_argument(
"-c",
"--cn",
help="use iQue (Chinese) version",
action="store_const",
const="cn",
dest="version",
)
parser.add_argument(
"-m", "--make", help="run make before finding difference(s)", action="store_true"
)
parser.add_argument(
"-c",
"--count",
type=int,
default=1,

View file

@ -42,7 +42,7 @@
#define A_INTERLEAVE 13
#define A_SETLOOP 15
#ifndef VERSION_SH
#if !defined(VERSION_SH) && !defined(VERSION_CN)
#define A_ENVMIXER 3
#define A_LOADBUFF 4
@ -642,7 +642,7 @@ typedef short ENVMIX_STATE[40];
_a->words.w1 = (uintptr_t)(tr); \
}
#ifdef VERSION_SH
#if defined(VERSION_SH) || defined(VERSION_CN)
#undef aLoadBuffer
#undef aSaveBuffer
#undef aMix

37
include/PR/ique.h Normal file
View file

@ -0,0 +1,37 @@
#ifndef IQUE_H
#define IQUE_H
#include "rcp.h"
#define MI_SK_EXCEPTION_REG (MI_BASE_REG+0x14)
#define MI_SK_WATCHDOG_TIMER (MI_BASE_REG+0x18)
// Hardware interrupts
// 0x40 = NAND DMA, 0x80 = MD, 0x100 = RDB, 0x200 = AES,
// 0x400 = PI_ERR, 0x800 = USB0, 0x1000 = USB1, 0x2000 = NAND
#define MI_HW_INTR_REG (MI_BASE_REG+0x38)
#define MI_HW_INTR_MASK_REG (MI_BASE_REG+0x3C)
#define PI_CARD_ADDR_REG (PI_BASE_REG+0x48)
#define PI_EX_RD_LEN_REG (PI_BASE_REG+0x58)
#define PI_EX_WR_LEN_REG (PI_BASE_REG+0x5C)
#define PI_MISC_REG (PI_BASE_REG+0x60)
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
extern u8 *__osBbEepromAddress;
extern u32 __osBbEepromSize;
extern u32 __osBbFlashAddress;
extern u32 __osBbFlashSize;
extern u32 __osBbSramAddress;
extern u32 __osBbSramSize;
extern u32 *__osBbPakAddress[];
extern u32 __osBbPakSize;
extern u32 __osBbIsBb;
extern u32 __osBbHackFlags;
void skKeepAlive(void);
#endif
#endif

View file

@ -7,7 +7,7 @@ typedef struct
{
u8 *offset;
s32 len;
#ifdef VERSION_SH
#if defined(VERSION_SH) || defined(VERSION_CN)
s8 medium;
s8 magic; // tbl: 0x04, otherwise: 0x03
@ -32,11 +32,11 @@ typedef struct
typedef struct
{
#ifndef VERSION_SH
#if !defined(VERSION_SH) && !defined(VERSION_CN)
s16 revision;
#endif
s16 seqCount;
#ifdef VERSION_SH
#if defined(VERSION_SH) || defined(VERSION_CN)
s16 unk2;
u8 *data;
#if !IS_64_BIT

View file

@ -60,37 +60,6 @@ typedef struct {
s32 (*edma)(OSPiHandle *, s32, u32, void *, u32);
} OSDevMgr;
/*
* Structure for file system
*/
typedef struct {
int status;
OSMesgQueue *queue;
int channel;
u8 id[32];
u8 label[32];
int version;
int dir_size;
int inode_table; /* block location */
int minode_table; /* mirrioring inode_table */
int dir_table; /* block location */
int inode_start_page; /* page # */
u8 banks;
u8 activebank;
} OSPfs;
typedef struct {
u32 file_size; /* bytes */
u32 game_code;
u16 company_code;
char ext_name[4];
char game_name[16];
} OSPfsState;
/*
* Structure for Profiler
*/
@ -116,39 +85,6 @@ typedef struct {
#define OS_STATE_RUNNING 4
#define OS_STATE_WAITING 8
/* Events */
#ifdef _FINALROM
#define OS_NUM_EVENTS 15
#else
#define OS_NUM_EVENTS 23
#endif
#define OS_EVENT_SW1 0 /* CPU SW1 interrupt */
#define OS_EVENT_SW2 1 /* CPU SW2 interrupt */
#define OS_EVENT_CART 2 /* Cartridge interrupt: used by rmon */
#define OS_EVENT_COUNTER 3 /* Counter int: used by VI/Timer Mgr */
#define OS_EVENT_SP 4 /* SP task done interrupt */
#define OS_EVENT_SI 5 /* SI (controller) interrupt */
#define OS_EVENT_AI 6 /* AI interrupt */
#define OS_EVENT_VI 7 /* VI interrupt: used by VI/Timer Mgr */
#define OS_EVENT_PI 8 /* PI interrupt: used by PI Manager */
#define OS_EVENT_DP 9 /* DP full sync interrupt */
#define OS_EVENT_CPU_BREAK 10 /* CPU breakpoint: used by rmon */
#define OS_EVENT_SP_BREAK 11 /* SP breakpoint: used by rmon */
#define OS_EVENT_FAULT 12 /* CPU fault event: used by rmon */
#define OS_EVENT_THREADSTATUS 13 /* CPU thread status: used by rmon */
#define OS_EVENT_PRENMI 14 /* Pre NMI interrupt */
#ifndef _FINALROM
#define OS_EVENT_RDB_READ_DONE 15 /* RDB read ok event: used by rmon */
#define OS_EVENT_RDB_LOG_DONE 16 /* read of log data complete */
#define OS_EVENT_RDB_DATA_DONE 17 /* read of hostio data complete */
#define OS_EVENT_RDB_REQ_RAMROM 18 /* host needs ramrom access */
#define OS_EVENT_RDB_FREE_RAMROM 19 /* host is done with ramrom access */
#define OS_EVENT_RDB_DBG_DONE 20
#define OS_EVENT_RDB_FLUSH_PROF 21
#define OS_EVENT_RDB_ACK_PROF 22
#endif
/* Flags for debugging purpose */
#define OS_FLAG_CPU_BREAK 1 /* Break exception has occurred */
@ -186,12 +122,6 @@ typedef struct {
#define OS_PRIORITY_APPMAX 127
#define OS_PRIORITY_IDLE 0 /* Must be 0 */
/* Flags to turn blocking on/off when sending/receiving message */
#define OS_MESG_NOBLOCK 0
#define OS_MESG_BLOCK 1
/* Flags to indicate direction of data transfer */
#define OS_READ 0 /* device -> RDRAM */
@ -406,42 +336,6 @@ typedef struct {
#define R_CBUTTONS CONT_F
#define D_CBUTTONS CONT_D
/* File System size */
#define OS_PFS_VERSION 0x0200
#define OS_PFS_VERSION_HI (OS_PFS_VERSION >> 8)
#define OS_PFS_VERSION_LO (OS_PFS_VERSION & 255)
#define PFS_FILE_NAME_LEN 16
#define PFS_FILE_EXT_LEN 4
#define BLOCKSIZE 32 /* bytes */
#define PFS_ONE_PAGE 8 /* blocks */
#define PFS_MAX_BANKS 62
/* File System flag */
#define PFS_READ 0
#define PFS_WRITE 1
#define PFS_CREATE 2
/* File System status */
#define PFS_INITIALIZED 0x1
#define PFS_CORRUPTED 0x2 /* File system was corrupted */
/* File System error number */
#define PFS_ERR_NOPACK 1 /* no memory card is plugged or */
#define PFS_ERR_NEW_PACK 2 /* ram pack has been changed to a */
/* different one */
#define PFS_ERR_INCONSISTENT 3 /* need to run Pfschecker */
#define PFS_ERR_CONTRFAIL CONT_OVERRUN_ERROR
#define PFS_ERR_INVALID 5 /* invalid parameter or file not exist*/
#define PFS_ERR_BAD_DATA 6 /* the data read from pack are bad*/
#define PFS_DATA_FULL 7 /* no free pages on ram pack */
#define PFS_DIR_FULL 8 /* no free directories on ram pack*/
#define PFS_ERR_EXIST 9 /* file exists */
#define PFS_ERR_ID_FATAL 10 /* dead ram pack */
#define PFS_ERR_DEVICE 11 /* wrong device type*/
/* definition for EEPROM */
#define EEPROM_MAXBLOCKS 64
@ -739,6 +633,12 @@ extern s32 osMotorInit(OSMesgQueue *, OSPfs *, int);
extern s32 osMotorStop(OSPfs *);
extern s32 osMotorStart(OSPfs *);
#ifdef VERSION_CN
#define MOTOR_START 1
#define MOTOR_STOP 0
extern s32 __osMotorAccess(OSPfs *, s32);
#endif
/* Enhanced PI interface */
extern OSPiHandle *osCartRomInit(void);

View file

@ -7,4 +7,12 @@
extern void bcopy(const void *, void *, size_t);
extern void bzero(void *, size_t);
/* Printf */
extern int sprintf(char *s, const char *fmt, ...);
extern void osSyncPrintf(const char *fmt, ...);
extern void osAsyncPrintf(const char *fmt, ...);
extern int osSyncGetChars(char *buf);
extern int osAsyncGetChars(char *buf);
#endif /* !_OS_LIBC_H_ */

View file

@ -76,7 +76,10 @@ typedef struct OSMesgQueue_s {
*/
/* Events */
#ifdef _FINALROM
#ifdef BBPLAYER
#define OS_NUM_EVENTS 31
#elif defined(_FINALROM)
#define OS_NUM_EVENTS 15
#else
#define OS_NUM_EVENTS 23
@ -107,6 +110,16 @@ typedef struct OSMesgQueue_s {
#define OS_EVENT_RDB_FLUSH_PROF 21
#define OS_EVENT_RDB_ACK_PROF 22
#endif
#ifdef BBPLAYER
#define OS_EVENT_FLASH 23 /* NAND flash operation complete */
#define OS_EVENT_AES 24 /* AES */
#define OS_EVENT_IDE 25 /* IDE? */
#define OS_EVENT_PI_ERR 26 /* PI Error? */
#define OS_EVENT_USB0 27 /* USB Controller 0 */
#define OS_EVENT_USB1 28 /* USB Controller 1 */
#define OS_EVENT_UNK_29 29 /* TODO does this exist at all */
#define OS_EVENT_MD 30 /* Related to card */
#endif
/* Flags to turn blocking on/off when sending/receiving message */

75
include/PR/os_motor.h Normal file
View file

@ -0,0 +1,75 @@
/*---------------------------------------------------------------------*
Copyright (C) 1998 Nintendo.
$RCSfile: os_motor.h,v $
$Revision: 1.1 $
$Date: 1998/10/09 08:01:15 $
*---------------------------------------------------------------------*/
#ifndef _OS_MOTOR_H_
#define _OS_MOTOR_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/ultratypes.h>
#include "os_message.h"
#include "os_pfs.h"
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Type definitions
*
*/
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
/**************************************************************************
*
* Global definitions
*
*/
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Macro definitions
*
*/
/**************************************************************************
*
* Extern variables
*
*/
/**************************************************************************
*
* Function prototypes
*
*/
/* Rumble PAK interface */
extern s32 osMotorInit(OSMesgQueue *, OSPfs *, int);
extern s32 osMotorStop(OSPfs *);
extern s32 osMotorStart(OSPfs *);
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_OS_MOTOR_H_ */

123
include/PR/os_pfs.h Normal file
View file

@ -0,0 +1,123 @@
/*====================================================================
* os_pfs.h
*
* Copyright 1995, Silicon Graphics, Inc.
* All Rights Reserved.
*
* This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,
* Inc.; the contents of this file may not be disclosed to third
* parties, copied or duplicated in any form, in whole or in part,
* without the prior written permission of Silicon Graphics, Inc.
*
* RESTRICTED RIGHTS LEGEND:
* Use, duplication or disclosure by the Government is subject to
* restrictions as set forth in subdivision (c)(1)(ii) of the Rights
* in Technical Data and Computer Software clause at DFARS
* 252.227-7013, and/or in similar or successor clauses in the FAR,
* DOD or NASA FAR Supplement. Unpublished - rights reserved under the
* Copyright Laws of the United States.
*====================================================================*/
/*---------------------------------------------------------------------*
Copyright (C) 1998 Nintendo. (Originated by SGI)
$RCSfile: os_pfs.h,v $
$Revision: 1.1 $
$Date: 1998/10/09 08:01:16 $
*---------------------------------------------------------------------*/
#ifndef _OS_PFS_H_
#define _OS_PFS_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/ultratypes.h>
#include "os_message.h"
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Type definitions
*
*/
/*
* Structure for file system
*/
typedef struct {
int status;
OSMesgQueue *queue;
int channel;
u8 id[32];
u8 label[32];
int version;
int dir_size;
int inode_table; /* block location */
int minode_table; /* mirrioring inode_table */
int dir_table; /* block location */
int inode_start_page; /* page # */
u8 banks;
u8 activebank;
} OSPfs;
typedef struct {
u32 file_size; /* bytes */
u32 game_code;
u16 company_code;
char ext_name[4];
char game_name[16];
} OSPfsState;
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
/**************************************************************************
*
* Global definitions
*
*/
/* File System size */
#define OS_PFS_VERSION 0x0200
#define OS_PFS_VERSION_HI (OS_PFS_VERSION >> 8)
#define OS_PFS_VERSION_LO (OS_PFS_VERSION & 255)
#define PFS_FILE_NAME_LEN 16
#define PFS_FILE_EXT_LEN 4
#define BLOCKSIZE 32 /* bytes */
#define PFS_ONE_PAGE 8 /* blocks */
#define PFS_MAX_BANKS 62
/* File System flag */
#define PFS_READ 0
#define PFS_WRITE 1
#define PFS_CREATE 2
/* File System status */
#define PFS_INITIALIZED 0x1
#define PFS_CORRUPTED 0x2 /* File system was corrupted */
/* File System error number */
#define PFS_ERR_NOPACK 1 /* no memory card is plugged or */
#define PFS_ERR_NEW_PACK 2 /* ram pack has been changed to a */
#define PFS_ERR_INCONSISTENT 3 /* need to run Pfschecker */
#define PFS_ERR_CONTRFAIL CONT_OVERRUN_ERROR
#define PFS_ERR_INVALID 5 /* invalid parameter or file not exist*/
#define PFS_ERR_BAD_DATA 6 /* the data read from pack are bad*/
#define PFS_DATA_FULL 7 /* no free pages on ram pack */
#define PFS_DIR_FULL 8 /* no free directories on ram pack*/
#define PFS_ERR_EXIST 9 /* file exists*/
#define PFS_ERR_ID_FATAL 10 /* dead ram pack */
#define PFS_ERR_DEVICE 11 /* wrong device type*/
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif

View file

@ -61,7 +61,7 @@ typedef struct {
/*0x08*/ void *dramAddr;
/*0x0C*/ uintptr_t devAddr;
/*0x10*/ size_t size;
#if defined(VERSION_EU) || defined(VERSION_SH)
#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)
OSPiHandle *piHandle; // from the official definition
#endif
} OSIoMesg;

View file

@ -16,6 +16,8 @@
#define OS_STATE_RUNNING 4
#define OS_STATE_WAITING 8
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/* Types */
typedef s32 OSPri;
@ -73,3 +75,5 @@ void osStartThread(OSThread *thread);
void osStopThread(OSThread *thread);
#endif
#endif

View file

@ -13,7 +13,7 @@ typedef struct OSTimer_str
u64 interval;
u64 remaining;
OSMesgQueue *mq;
OSMesg *msg;
OSMesg msg;
} OSTimer;
typedef u64 OSTime;

View file

@ -4,6 +4,16 @@
#include <PR/ultratypes.h>
#include <PR/os_message.h>
//TODO: figure out what this is
#define VI_STATE_01 0x01
#define VI_STATE_XSCALE_UPDATED 0x02
#define VI_STATE_YSCALE_UPDATED 0x04
#define VI_STATE_08 0x08 //related to control regs changing
#define VI_STATE_10 0x10 //swap buffer
#define VI_STATE_BLACK 0x20 //probably related to a black screen
#define VI_STATE_REPEATLINE 0x40 //repeat line?
#define VI_STATE_FADE 0x80 //fade
/* Ultra64 Video Interface */
@ -27,8 +37,7 @@
/* Types */
typedef struct
{
typedef struct {
u32 ctrl;
u32 width;
u32 burst;
@ -40,8 +49,7 @@ typedef struct
u32 vCurrent;
} OSViCommonRegs;
typedef struct
{
typedef struct {
u32 origin;
u32 yScale;
u32 vStart;
@ -49,15 +57,13 @@ typedef struct
u32 vIntr;
} OSViFieldRegs;
typedef struct
{
typedef struct {
u8 type;
OSViCommonRegs comRegs;
OSViFieldRegs fldRegs[2];
} OSViMode;
typedef struct
{
typedef struct {
/* 0x00 */ u16 unk00; //some kind of flags. swap buffer sets to 0x10
/* 0x02 */ u16 retraceCount;
/* 0x04 */ void* buffer;

View file

@ -161,6 +161,7 @@ The Indy development board use cartridge domain 1:
#define DEVICE_TYPE_BULK 1 /* ROM bulk */
#define DEVICE_TYPE_64DD 2 /* 64 Disk Drive */
#define DEVICE_TYPE_SRAM 3 /* SRAM */
#define DEVICE_TYPE_INIT 7 /* initial value */
/*************************************************************************
* SP Memory

94
include/PR/rdb.h Normal file
View file

@ -0,0 +1,94 @@
/**************************************************************************
*
* $Revision: 1.6 $
* $Date: 1997/02/11 08:29:31 $
* $Source: /disk6/Master/cvsmdev2/PR/include/rdb.h,v $
*
**************************************************************************/
#ifndef _RDB_H
#define _RDB_H
/* U64 side address */
#define RDB_BASE_REG 0xc0000000
#define RDB_WRITE_INTR_REG (RDB_BASE_REG + 0x8)
#define RDB_READ_INTR_REG (RDB_BASE_REG + 0xc)
#define RDB_BASE_VIRTUAL_ADDR 0x80000000
/* packet type Have six bits, so can have up to 63 types */
#define RDB_TYPE_INVALID 0
#define RDB_TYPE_GtoH_PRINT 1
#define RDB_TYPE_GtoH_FAULT 2
#define RDB_TYPE_GtoH_LOG_CT 3
#define RDB_TYPE_GtoH_LOG 4
#define RDB_TYPE_GtoH_READY_FOR_DATA 5
#define RDB_TYPE_GtoH_DATA_CT 6
#define RDB_TYPE_GtoH_DATA 7
#define RDB_TYPE_GtoH_DEBUG 8
#define RDB_TYPE_GtoH_RAMROM 9
#define RDB_TYPE_GtoH_DEBUG_DONE 10
#define RDB_TYPE_GtoH_DEBUG_READY 11
#define RDB_TYPE_GtoH_KDEBUG 12
#define RDB_TYPE_GtoH_PROF_DATA 22
#define RDB_TYPE_HtoG_LOG_DONE 13
#define RDB_TYPE_HtoG_DEBUG 14
#define RDB_TYPE_HtoG_DEBUG_CT 15
#define RDB_TYPE_HtoG_DATA 16
#define RDB_TYPE_HtoG_DATA_DONE 17
#define RDB_TYPE_HtoG_REQ_RAMROM 18
#define RDB_TYPE_HtoG_FREE_RAMROM 19
#define RDB_TYPE_HtoG_KDEBUG 20
#define RDB_TYPE_HtoG_PROF_SIGNAL 21
#define RDB_PROF_ACK_SIG 1
#define RDB_PROF_FLUSH_SIG 2
#define PROF_BLOCK_SIZE 2048
#define RDB_LOG_MAX_BLOCK_SIZE 0x8000
#define RDB_DATA_MAX_BLOCK_SIZE 0x8000
/* GIO side address */
#define GIO_RDB_BASE_REG 0xbf480000
#define GIO_RDB_WRITE_INTR_REG (GIO_RDB_BASE_REG + 0x8)
#define GIO_RDB_READ_INTR_REG (GIO_RDB_BASE_REG + 0xc)
/* minor device number */
#define GIO_RDB_PRINT_MINOR 1
#define GIO_RDB_DEBUG_MINOR 2
/* interrupt bit */
#define GIO_RDB_WRITE_INTR_BIT 0x80000000
#define GIO_RDB_READ_INTR_BIT 0x40000000
/* debug command */
#define DEBUG_COMMAND_NULL 0
#define DEBUG_COMMAND_MEMORY 1
#define DEBUG_COMMAND_REGISTER 2
#define DEBUG_COMMAND_INVALID 255
/* debug state */
#define DEBUG_STATE_NULL 0
#define DEBUG_STATE_RECEIVE 1
#define DEBUG_STATE_INVALID 255
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/* Structure for debug port */
typedef struct {
unsigned type : 2; /* 0: invalid, 1: print, 2: debug */
unsigned pad : 4; // CHANGED FROM THE ORIGINAL LIBULTRA HEADER
unsigned length : 2; /* 1, 2, or 3 */
unsigned char buf[3]; /* character buffer */
} rdbPacket;
extern unsigned int __osRdbWriteOK;
extern unsigned int __osRdbSendMessage;
#endif /* _LANGUAGE_C */
#endif /* !_RDB_H */

View file

@ -18,7 +18,7 @@
/* Flags */
#define M_TASK_FLAG0 1
#define M_TASK_FLAG1 2
#ifdef VERSION_SH
#if defined(VERSION_SH) || defined(VERSION_CN)
#define M_TASK_FLAG2 4
#endif

View file

@ -1,6 +1,8 @@
#ifndef _ULTRA64_TYPES_H_
#define _ULTRA64_TYPES_H_
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
#ifndef NULL
#define NULL (void *)0
#endif
@ -42,3 +44,5 @@ typedef ptrdiff_t ssize_t;
#endif
#endif
#endif

View file

@ -3,6 +3,11 @@
#include "types.h"
#define BPARAM1(param) (((param) & 0xFF) << 24)
#define BPARAM2(param) (((param) & 0xFF) << 16)
#define BPARAM3(param) (((param) & 0xFF) << 8)
#define BPARAM4(param) (((param) & 0xFF) << 0)
extern const BehaviorScript bhvStarDoor[];
extern const BehaviorScript bhvMrI[];
extern const BehaviorScript bhvMrIBody[];
@ -10,8 +15,8 @@ extern const BehaviorScript bhvMrIParticle[];
extern const BehaviorScript bhvPurpleParticle[];
extern const BehaviorScript bhvGiantPole[];
extern const BehaviorScript bhvPoleGrabbing[];
extern const BehaviorScript bhvThiHugeIslandTop[];
extern const BehaviorScript bhvThiTinyIslandTop[];
extern const BehaviorScript bhvTHIHugeIslandTop[];
extern const BehaviorScript bhvTHITinyIslandTop[];
extern const BehaviorScript bhvCapSwitchBase[];
extern const BehaviorScript bhvCapSwitch[];
extern const BehaviorScript bhvKingBobomb[];
@ -37,12 +42,12 @@ extern const BehaviorScript bhvUnused05A8[];
extern const BehaviorScript bhvRotatingPlatform[];
extern const BehaviorScript bhvTower[];
extern const BehaviorScript bhvBulletBillCannon[];
extern const BehaviorScript bhvWfBreakableWallRight[];
extern const BehaviorScript bhvWfBreakableWallLeft[];
extern const BehaviorScript bhvWFBreakableWallRight[];
extern const BehaviorScript bhvWFBreakableWallLeft[];
extern const BehaviorScript bhvKickableBoard[];
extern const BehaviorScript bhvTowerDoor[];
extern const BehaviorScript bhvRotatingCounterClockwise[];
extern const BehaviorScript bhvWfRotatingWoodenPlatform[];
extern const BehaviorScript bhvWFRotatingWoodenPlatform[];
extern const BehaviorScript bhvKoopaShellUnderwater[];
extern const BehaviorScript bhvExitPodiumWarp[];
extern const BehaviorScript bhvFadingWarp[];
@ -51,7 +56,7 @@ extern const BehaviorScript bhvWarpPipe[];
extern const BehaviorScript bhvWhitePuffExplosion[];
extern const BehaviorScript bhvSpawnedStar[];
extern const BehaviorScript bhvSpawnedStarNoLevelExit[];
extern const BehaviorScript bhvMrIBlueCoin[];
extern const BehaviorScript bhvSpawnedBlueCoin[];
extern const BehaviorScript bhvCoinInsideBoo[];
extern const BehaviorScript bhvCoinFormationSpawn[];
extern const BehaviorScript bhvCoinFormation[];
@ -72,16 +77,16 @@ extern const BehaviorScript bhvTriangleParticleSpawner[];
extern const BehaviorScript bhvDoorWarp[];
extern const BehaviorScript bhvDoor[];
extern const BehaviorScript bhvGrindel[];
extern const BehaviorScript bhvThwomp2[];
extern const BehaviorScript bhvThwomp[];
extern const BehaviorScript bhvThwomp2[];
extern const BehaviorScript bhvTumblingBridgePlatform[];
extern const BehaviorScript bhvWfTumblingBridge[];
extern const BehaviorScript bhvBbhTumblingBridge[];
extern const BehaviorScript bhvLllTumblingBridge[];
extern const BehaviorScript bhvTumblingBridge[];
extern const BehaviorScript bhvBBHTumblingBridge[];
extern const BehaviorScript bhvLLLTumblingBridge[];
extern const BehaviorScript bhvFlame[];
extern const BehaviorScript bhvAnotherElavator[];
extern const BehaviorScript bhvRrElevatorPlatform[];
extern const BehaviorScript bhvHmcElevatorPlatform[];
extern const BehaviorScript bhvRRElevatorPlatform[];
extern const BehaviorScript bhvHMCElevatorPlatform[];
extern const BehaviorScript bhvWaterMist[];
extern const BehaviorScript bhvBreathParticleSpawner[];
extern const BehaviorScript bhvBreakBoxTriangle[];
@ -99,15 +104,15 @@ extern const BehaviorScript bhvUkiki[];
extern const BehaviorScript bhvUkikiCageChild[];
extern const BehaviorScript bhvUkikiCageStar[];
extern const BehaviorScript bhvUkikiCage[];
extern const BehaviorScript bhvBitfsSinkingPlatforms[];
extern const BehaviorScript bhvBitfsSinkingCagePlatform[];
extern const BehaviorScript bhvDddMovingPole[];
extern const BehaviorScript bhvBitfsTiltingInvertedPyramid[];
extern const BehaviorScript bhvBitFSSinkingPlatforms[];
extern const BehaviorScript bhvBitFSSinkingCagePlatform[];
extern const BehaviorScript bhvDDDMovingPole[];
extern const BehaviorScript bhvBitFSTiltingInvertedPyramid[];
extern const BehaviorScript bhvSquishablePlatform[];
extern const BehaviorScript bhvCutOutObject[];
extern const BehaviorScript bhvBetaMovingFlamesSpawn[];
extern const BehaviorScript bhvBetaMovingFlames[];
extern const BehaviorScript bhvRrRotatingBridgePlatform[];
extern const BehaviorScript bhvRRRotatingBridgePlatform[];
extern const BehaviorScript bhvFlamethrower[];
extern const BehaviorScript bhvFlamethrowerFlame[];
extern const BehaviorScript bhvBouncingFireball[];
@ -120,9 +125,9 @@ extern const BehaviorScript bhvBlackSmokeUpward[];
extern const BehaviorScript bhvBetaFishSplashSpawner[];
extern const BehaviorScript bhvSpindrift[];
extern const BehaviorScript bhvTowerPlatformGroup[];
extern const BehaviorScript bhvWfSlidingTowerPlatform[];
extern const BehaviorScript bhvWfElevatorTowerPlatform[];
extern const BehaviorScript bhvWfSolidTowerPlatform[];
extern const BehaviorScript bhvWFSlidingTowerPlatform[];
extern const BehaviorScript bhvWFElevatorTowerPlatform[];
extern const BehaviorScript bhvWFSolidTowerPlatform[];
extern const BehaviorScript bhvLeafParticleSpawner[];
extern const BehaviorScript bhvTreeSnow[];
extern const BehaviorScript bhvTreeLeaf[];
@ -139,7 +144,7 @@ extern const BehaviorScript bhvBreakableBox[];
extern const BehaviorScript bhvPushableMetalBox[];
extern const BehaviorScript bhvHeaveHo[];
extern const BehaviorScript bhvHeaveHoThrowMario[];
extern const BehaviorScript bhvCcmTouchedStarSpawn[];
extern const BehaviorScript bhvCCMTouchedStarSpawn[];
extern const BehaviorScript bhvUnusedPoundablePlatform[];
extern const BehaviorScript bhvBetaTrampolineTop[];
extern const BehaviorScript bhvBetaTrampolineSpring[];
@ -175,34 +180,34 @@ extern const BehaviorScript bhvBowserKeyUnlockDoor[];
extern const BehaviorScript bhvBowserKeyCourseExit[];
extern const BehaviorScript bhvInvisibleObjectsUnderBridge[];
extern const BehaviorScript bhvWaterLevelPillar[];
extern const BehaviorScript bhvDddWarp[];
extern const BehaviorScript bhvDDDWarp[];
extern const BehaviorScript bhvMoatGrills[];
extern const BehaviorScript bhvClockMinuteHand[];
extern const BehaviorScript bhvClockHourHand[];
extern const BehaviorScript bhvMacroUkiki[];
extern const BehaviorScript bhvStub1D0C[];
extern const BehaviorScript bhvLllRotatingHexagonalPlatform[];
extern const BehaviorScript bhvLllSinkingRockBlock[];
extern const BehaviorScript bhvLLLRotatingHexagonalPlatform[];
extern const BehaviorScript bhvLLLSinkingRockBlock[];
extern const BehaviorScript bhvStub1D70[];
extern const BehaviorScript bhvLllMovingOctagonalMeshPlatform[];
extern const BehaviorScript bhvLLLMovingOctagonalMeshPlatform[];
extern const BehaviorScript bhvSnowBall[];
extern const BehaviorScript bhvLllRotatingBlockWithFireBars[];
extern const BehaviorScript bhvLllRotatingHexFlame[];
extern const BehaviorScript bhvLllWoodPiece[];
extern const BehaviorScript bhvLllFloatingWoodBridge[];
extern const BehaviorScript bhvLLLRotatingBlockWithFireBars[];
extern const BehaviorScript bhvLLLRotatingHexFlame[];
extern const BehaviorScript bhvLLLWoodPiece[];
extern const BehaviorScript bhvLLLFloatingWoodBridge[];
extern const BehaviorScript bhvVolcanoFlames[];
extern const BehaviorScript bhvLllRotatingHexagonalRing[];
extern const BehaviorScript bhvLllSinkingRectangularPlatform[];
extern const BehaviorScript bhvLllSinkingSquarePlatforms[];
extern const BehaviorScript bhvLllTiltingInvertedPyramid[];
extern const BehaviorScript bhvLLLRotatingHexagonalRing[];
extern const BehaviorScript bhvLLLSinkingRectangularPlatform[];
extern const BehaviorScript bhvLLLSinkingSquarePlatforms[];
extern const BehaviorScript bhvLLLTiltingInvertedPyramid[];
extern const BehaviorScript bhvUnused1F30[];
extern const BehaviorScript bhvKoopaShell[];
extern const BehaviorScript bhvKoopaShellFlame[];
extern const BehaviorScript bhvToxBox[];
extern const BehaviorScript bhvPiranhaPlant[];
extern const BehaviorScript bhvLllHexagonalMesh[];
extern const BehaviorScript bhvLllBowserPuzzlePiece[];
extern const BehaviorScript bhvLllBowserPuzzle[];
extern const BehaviorScript bhvLLLHexagonalMesh[];
extern const BehaviorScript bhvLLLBowserPuzzlePiece[];
extern const BehaviorScript bhvLLLBowserPuzzle[];
extern const BehaviorScript bhvTuxiesMother[];
extern const BehaviorScript bhvPenguinBaby[];
extern const BehaviorScript bhvUnused20E0[];
@ -212,8 +217,8 @@ extern const BehaviorScript bhvFewBlueFishSpawner[];
extern const BehaviorScript bhvFishSpawner[];
extern const BehaviorScript bhvFishCommon[];
extern const BehaviorScript bhvFish[];
extern const BehaviorScript bhvWdwExpressElevator[];
extern const BehaviorScript bhvWdwExpressElevatorPlatform[];
extern const BehaviorScript bhvWDWExpressElevator[];
extern const BehaviorScript bhvWDWExpressElevatorPlatform[];
extern const BehaviorScript bhvChirpChirp[];
extern const BehaviorScript bhvChirpChirpUnused[];
extern const BehaviorScript bhvBub[];
@ -227,7 +232,7 @@ extern const BehaviorScript bhvBowserSubDoor[];
extern const BehaviorScript bhvBowsersSub[];
extern const BehaviorScript bhvSushiShark[];
extern const BehaviorScript bhvSushiSharkCollisionChild[];
extern const BehaviorScript bhvJrbSlidingBox[];
extern const BehaviorScript bhvJRBSlidingBox[];
extern const BehaviorScript bhvShipPart3[];
extern const BehaviorScript bhvInSunkenShip3[];
extern const BehaviorScript bhvSunkenShipPart[];
@ -262,7 +267,7 @@ extern const BehaviorScript bhvMerryGoRoundBoo[];
extern const BehaviorScript bhvGhostHuntBoo[];
extern const BehaviorScript bhvHiddenStaircaseStep[];
extern const BehaviorScript bhvBooStaircase[];
extern const BehaviorScript bhvBbhTiltingTrapPlatform[];
extern const BehaviorScript bhvBBHTiltingTrapPlatform[];
extern const BehaviorScript bhvHauntedBookshelf[];
extern const BehaviorScript bhvMeshElevator[];
extern const BehaviorScript bhvMerryGoRound[];
@ -371,22 +376,22 @@ extern const BehaviorScript bhvBowserBombSmoke[];
extern const BehaviorScript bhvCelebrationStar[];
extern const BehaviorScript bhvCelebrationStarSparkle[];
extern const BehaviorScript bhvStarKeyCollectionPuffSpawner[];
extern const BehaviorScript bhvLllDrawbridgeSpawner[];
extern const BehaviorScript bhvLllDrawbridge[];
extern const BehaviorScript bhvLLLDrawbridgeSpawner[];
extern const BehaviorScript bhvLLLDrawbridge[];
extern const BehaviorScript bhvSmallBomp[];
extern const BehaviorScript bhvLargeBomp[];
extern const BehaviorScript bhvWfSlidingPlatform[];
extern const BehaviorScript bhvWFSlidingPlatform[];
extern const BehaviorScript bhvMoneybag[];
extern const BehaviorScript bhvMoneybagHidden[];
extern const BehaviorScript bhvPitBowlingBall[];
extern const BehaviorScript bhvFreeBowlingBall[];
extern const BehaviorScript bhvBowlingBall[];
extern const BehaviorScript bhvTtmBowlingBallSpawner[];
extern const BehaviorScript bhvBobBowlingBallSpawner[];
extern const BehaviorScript bhvThiBowlingBallSpawner[];
extern const BehaviorScript bhvRrCruiserWing[];
extern const BehaviorScript bhvTTMBowlingBallSpawner[];
extern const BehaviorScript bhvBoBBowlingBallSpawner[];
extern const BehaviorScript bhvTHIBowlingBallSpawner[];
extern const BehaviorScript bhvRRCruiserWing[];
extern const BehaviorScript bhvSpindel[];
extern const BehaviorScript bhvSslMovingPyramidWall[];
extern const BehaviorScript bhvSSLMovingPyramidWall[];
extern const BehaviorScript bhvPyramidElevator[];
extern const BehaviorScript bhvPyramidElevatorTrajectoryMarkerBall[];
extern const BehaviorScript bhvPyramidTop[];
@ -416,38 +421,38 @@ extern const BehaviorScript bhvRedCoin[];
extern const BehaviorScript bhvBowserCourseRedCoinStar[];
extern const BehaviorScript bhvHiddenStar[];
extern const BehaviorScript bhvHiddenStarTrigger[];
extern const BehaviorScript bhvTtmRollingLog[];
extern const BehaviorScript bhvLllVolcanoFallingTrap[];
extern const BehaviorScript bhvLllRollingLog[];
extern const BehaviorScript bhv1upWalking[];
extern const BehaviorScript bhv1upRunningAway[];
extern const BehaviorScript bhv1upSliding[];
extern const BehaviorScript bhvTTMRollingLog[];
extern const BehaviorScript bhvLLLVolcanoFallingTrap[];
extern const BehaviorScript bhvLLLRollingLog[];
extern const BehaviorScript bhv1UpWalking[];
extern const BehaviorScript bhv1UpRunningAway[];
extern const BehaviorScript bhv1UpSliding[];
extern const BehaviorScript bhv1Up[];
extern const BehaviorScript bhv1upJumpOnApproach[];
extern const BehaviorScript bhvHidden1up[];
extern const BehaviorScript bhvHidden1upTrigger[];
extern const BehaviorScript bhvHidden1upInPole[];
extern const BehaviorScript bhvHidden1upInPoleTrigger[];
extern const BehaviorScript bhvHidden1upInPoleSpawner[];
extern const BehaviorScript bhv1UpJumpOnApproach[];
extern const BehaviorScript bhvHidden1Up[];
extern const BehaviorScript bhvHidden1UpTrigger[];
extern const BehaviorScript bhvHidden1UpInPole[];
extern const BehaviorScript bhvHidden1UpInPoleTrigger[];
extern const BehaviorScript bhvHidden1UpInPoleSpawner[];
extern const BehaviorScript bhvControllablePlatform[];
extern const BehaviorScript bhvControllablePlatformSub[];
extern const BehaviorScript bhvBreakableBoxSmall[];
extern const BehaviorScript bhvSlidingSnowMound[];
extern const BehaviorScript bhvSnowMoundSpawn[];
extern const BehaviorScript bhvWdwSquareFloatingPlatform[];
extern const BehaviorScript bhvWdwRectangularFloatingPlatform[];
extern const BehaviorScript bhvJrbFloatingPlatform[];
extern const BehaviorScript bhvWDWSquareFloatingPlatform[];
extern const BehaviorScript bhvWDWRectangularFloatingPlatform[];
extern const BehaviorScript bhvJRBFloatingPlatform[];
extern const BehaviorScript bhvArrowLift[];
extern const BehaviorScript bhvOrangeNumber[];
extern const BehaviorScript bhvMantaRay[];
extern const BehaviorScript bhvFallingPillar[];
extern const BehaviorScript bhvFallingPillarHitbox[];
extern const BehaviorScript bhvPillarBase[];
extern const BehaviorScript bhvJrbFloatingBox[];
extern const BehaviorScript bhvJRBFloatingBox[];
extern const BehaviorScript bhvDecorativePendulum[];
extern const BehaviorScript bhvTreasureChestsShip[];
extern const BehaviorScript bhvTreasureChestsJrb[];
extern const BehaviorScript bhvTreasureChests[];
extern const BehaviorScript bhvTreasureChestsJRB[];
extern const BehaviorScript bhvTreasureChestsDDD[];
extern const BehaviorScript bhvTreasureChestBottom[];
extern const BehaviorScript bhvTreasureChestTop[];
extern const BehaviorScript bhvMips[];

View file

@ -10,34 +10,39 @@
// Bug Fixes
// --| Post-JP 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 || VERSION_SH)
#define BUGFIX_MAX_LIVES (0 || VERSION_US || VERSION_EU || VERSION_SH || VERSION_CN)
/// Fixes bug where the Boss music won't fade out after defeating King Bob-omb
#define BUGFIX_KING_BOB_OMB_FADE_MUSIC (0 || VERSION_US || VERSION_EU || VERSION_SH)
/// Fixes bug in Bob-Omb Battlefield where entering a warp stops the Koopa race music
#define BUGFIX_KOOPA_RACE_MUSIC (0 || VERSION_US || VERSION_EU || VERSION_SH)
#define BUGFIX_KING_BOB_OMB_FADE_MUSIC (0 || VERSION_US || VERSION_EU || VERSION_SH || VERSION_CN)
/// Fixes bug in Bob-omb Battlefield where entering a warp stops the Koopa race music
#define BUGFIX_KOOPA_RACE_MUSIC (0 || VERSION_US || VERSION_EU || VERSION_SH || VERSION_CN)
/// Fixes bug where Piranha Plants do not reset their action state when the
/// player exits their activation radius.
#define BUGFIX_PIRANHA_PLANT_STATE_RESET (0 || VERSION_US || VERSION_EU || VERSION_SH)
#define BUGFIX_PIRANHA_PLANT_STATE_RESET (0 || VERSION_US || VERSION_EU || VERSION_SH || VERSION_CN)
/// Fixes bug where sleeping Piranha Plants damage players that bump into them
#define BUGFIX_PIRANHA_PLANT_SLEEP_DAMAGE (0 || VERSION_US || VERSION_SH)
#define BUGFIX_PIRANHA_PLANT_SLEEP_DAMAGE (0 || VERSION_US || VERSION_SH || VERSION_CN)
/// 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 || VERSION_SH)
#define BUGFIX_STAR_BOWSER_KEY (0 || VERSION_US || VERSION_EU || VERSION_SH || VERSION_CN)
/// Fixes bug that enables Mario in time stop even if is not ready to speak
#define BUGFIX_DIALOG_TIME_STOP (0 || VERSION_US || VERSION_EU || VERSION_SH)
#define BUGFIX_DIALOG_TIME_STOP (0 || VERSION_US || VERSION_EU || VERSION_SH || VERSION_CN)
/// Fixes bug that causes Mario to still collide with Bowser in BitS after his defeat
#define BUGFIX_BOWSER_COLLIDE_BITS_DEAD (0 || VERSION_US || VERSION_EU || VERSION_SH)
#define BUGFIX_BOWSER_COLLIDE_BITS_DEAD (0 || VERSION_US || VERSION_EU || VERSION_SH || VERSION_CN)
/// Fixes bug where Bowser wouldn't reset his speed when fallen off (and adds missing checks)
#define BUGFIX_BOWSER_FALLEN_OFF_STAGE (0 || VERSION_US || VERSION_EU || VERSION_SH)
#define BUGFIX_BOWSER_FALLEN_OFF_STAGE (0 || VERSION_US || VERSION_EU || VERSION_SH || VERSION_CN)
/// Fixes bug where Bowser would look weird while fading out
#define BUGFIX_BOWSER_FADING_OUT (0 || VERSION_US || VERSION_EU || VERSION_SH)
#define BUGFIX_BOWSER_FADING_OUT (0 || VERSION_US || VERSION_EU || VERSION_SH || VERSION_CN)
// Support Rumble Pak
#define ENABLE_RUMBLE (0 || VERSION_SH)
#define ENABLE_RUMBLE (0 || VERSION_SH || VERSION_CN)
// Screen Size Defines
#define SCREEN_WIDTH 320
#define SCREEN_HEIGHT 240
// Stack Size Defines
#define IDLE_STACKSIZE 0x800
#define STACKSIZE 0x2000
#define UNUSED_STACKSIZE 0x1400
// Border Height Define for NTSC Versions
#ifdef TARGET_N64
#ifndef VERSION_EU

View file

@ -1,7 +1,7 @@
#ifndef DIALOG_IDS_H
#define DIALOG_IDS_H
enum DialogId {
enum DialogID {
DIALOG_NONE = -1,
DIALOG_000,
DIALOG_001,

View file

@ -214,19 +214,19 @@
CMD_PTR(unk4), \
CMD_W(unk8)
#define OBJECT_WITH_ACTS(model, posX, posY, posZ, angleX, angleY, angleZ, behParam, beh, acts) \
#define OBJECT_WITH_ACTS(model, posX, posY, posZ, angleX, angleY, angleZ, bhvParam, bhv, acts) \
CMD_BBBB(0x24, 0x18, acts, model), \
CMD_HHHHHH(posX, posY, posZ, angleX, angleY, angleZ), \
CMD_W(behParam), \
CMD_PTR(beh)
CMD_W(bhvParam), \
CMD_PTR(bhv)
#define OBJECT(model, posX, posY, posZ, angleX, angleY, angleZ, behParam, beh) \
OBJECT_WITH_ACTS(model, posX, posY, posZ, angleX, angleY, angleZ, behParam, beh, 0x1F)
#define OBJECT(model, posX, posY, posZ, angleX, angleY, angleZ, bhvParam, bhv) \
OBJECT_WITH_ACTS(model, posX, posY, posZ, angleX, angleY, angleZ, bhvParam, bhv, 0x1F)
#define MARIO(unk3, behArg, beh) \
CMD_BBBB(0x25, 0x0C, 0x00, unk3), \
CMD_W(behArg), \
CMD_PTR(beh)
#define MARIO(model, bhvArg, bhv) \
CMD_BBBB(0x25, 0x0C, 0x00, model), \
CMD_W(bhvArg), \
CMD_PTR(bhv)
#define WARP_NODE(id, destLevel, destArea, destNode, flags) \
CMD_BBBB(0x26, 0x08, id, destLevel), \
@ -268,8 +268,8 @@
CMD_BBH(0x2F, 0x08, 0x0000), \
CMD_PTR(surfaceRooms)
#define SHOW_DIALOG(index, dialogId) \
CMD_BBBB(0x30, 0x04, index, dialogId)
#define SHOW_DIALOG(index, dialogID) \
CMD_BBBB(0x30, 0x04, index, dialogID)
#define TERRAIN_TYPE(terrainType) \
CMD_BBH(0x31, 0x04, terrainType)

View file

@ -1,11 +1,11 @@
#ifndef LEVEL_MISC_MACROS_H
#define LEVEL_MISC_MACROS_H
#define MACRO_OBJECT_WITH_BEH_PARAM(preset, yaw, posX, posY, posZ, behParam) \
((s16)((yaw * 0x10 / 45) << 9) | (preset + 0x1F)), posX, posY, posZ, behParam
#define MACRO_OBJECT_WITH_BHV_PARAM(preset, yaw, posX, posY, posZ, bhvParam) \
((s16)((yaw * 0x10 / 45) << 9) | (preset + 0x1F)), posX, posY, posZ, bhvParam
#define MACRO_OBJECT(preset, yaw, posX, posY, posZ) \
MACRO_OBJECT_WITH_BEH_PARAM(preset, yaw, posX, posY, posZ, 0)
MACRO_OBJECT_WITH_BHV_PARAM(preset, yaw, posX, posY, posZ, 0)
#define MACRO_OBJECT_END() \
0x001E

View file

@ -2,11 +2,256 @@
#define STDARG_H
// When not building with IDO, use the builtin vaarg macros for portability.
#ifndef __sgi
#if !defined(__sgi) && (__GNUC__ > 2)
#define va_list __builtin_va_list
#define va_start __builtin_va_start
#define va_arg __builtin_va_arg
#define va_end __builtin_va_end
#elif (__GNUC__ == 2)
typedef void *__gnuc_va_list;
typedef __gnuc_va_list va_list;
#ifndef _VA_MIPS_H_ENUM
#define _VA_MIPS_H_ENUM
enum {
__no_type_class = -1,
__void_type_class,
__integer_type_class,
__char_type_class,
__enumeral_type_class,
__boolean_type_class,
__pointer_type_class,
__reference_type_class,
__offset_type_class,
__real_type_class,
__complex_type_class,
__function_type_class,
__method_type_class,
__record_type_class,
__union_type_class,
__array_type_class,
__string_type_class,
__set_type_class,
__file_type_class,
__lang_type_class
};
#endif
/* In GCC version 2, we want an ellipsis at the end of the declaration
of the argument list. GCC version 1 can't parse it. */
#if __GNUC__ > 1
#define __va_ellipsis ...
#else
#define __va_ellipsis
#endif
#ifdef __mips64
#define __va_rounded_size(__TYPE) \
(((sizeof (__TYPE) + 8 - 1) / 8) * 8)
#else
#define __va_rounded_size(__TYPE) \
(((sizeof (__TYPE) + sizeof (int) - 1) / sizeof (int)) * sizeof (int))
#endif
#ifdef __mips64
#define __va_reg_size 8
#else
#define __va_reg_size 4
#endif
/* Get definitions for _MIPS_SIM_ABI64 etc. */
#ifdef _MIPS_SIM
//#include <sgidefs.h>
#endif
#ifdef STDARG_H
#if defined (__mips_eabi)
#if ! defined (__mips_soft_float) && ! defined (__mips_single_float)
#ifdef __mips64
#define va_start(__AP, __LASTARG) \
(__AP.__gp_regs = ((char *) __builtin_next_arg (__LASTARG) \
- (__builtin_args_info (2) < 8 \
? (8 - __builtin_args_info (2)) * __va_reg_size \
: 0)), \
__AP.__fp_left = 8 - __builtin_args_info (3), \
__AP.__fp_regs = __AP.__gp_regs - __AP.__fp_left * __va_reg_size)
#else /* ! defined (__mips64) */
#define va_start(__AP, __LASTARG) \
(__AP.__gp_regs = ((char *) __builtin_next_arg (__LASTARG) \
- (__builtin_args_info (2) < 8 \
? (8 - __builtin_args_info (2)) * __va_reg_size \
: 0)), \
__AP.__fp_left = (8 - __builtin_args_info (3)) / 2, \
__AP.__fp_regs = __AP.__gp_regs - __AP.__fp_left * 8, \
__AP.__fp_regs = (char *) ((int) __AP.__fp_regs & -8))
#endif /* ! defined (__mips64) */
#else /* ! (! defined (__mips_soft_float) && ! defined (__mips_single_float) ) */
#define va_start(__AP, __LASTARG) \
(__AP = ((__gnuc_va_list) __builtin_next_arg (__LASTARG) \
- (__builtin_args_info (2) >= 8 ? 0 \
: (8 - __builtin_args_info (2)) * __va_reg_size)))
#endif /* ! (! defined (__mips_soft_float) && ! defined (__mips_single_float) ) */
#else /* ! defined (__mips_eabi) */
#define va_start(__AP, __LASTARG) \
(__AP = (__gnuc_va_list) __builtin_next_arg (__LASTARG))
#endif /* ! (defined (__mips_eabi) && ! defined (__mips_soft_float) && ! defined (__mips_single_float)) */
#else /* ! _STDARG_H */
#define va_alist __builtin_va_alist
#ifdef __mips64
/* This assumes that `long long int' is always a 64 bit type. */
#define va_dcl long long int __builtin_va_alist; __va_ellipsis
#else
#define va_dcl int __builtin_va_alist; __va_ellipsis
#endif
#if defined (__mips_eabi)
#if ! defined (__mips_soft_float) && ! defined (__mips_single_float)
#ifdef __mips64
#define va_start(__AP) \
(__AP.__gp_regs = ((char *) __builtin_next_arg () \
- (__builtin_args_info (2) < 8 \
? (8 - __builtin_args_info (2)) * __va_reg_size \
: __va_reg_size)), \
__AP.__fp_left = 8 - __builtin_args_info (3), \
__AP.__fp_regs = __AP.__gp_regs - __AP.__fp_left * __va_reg_size)
#else /* ! defined (__mips64) */
#define va_start(__AP) \
(__AP.__gp_regs = ((char *) __builtin_next_arg () \
- (__builtin_args_info (2) < 8 \
? (8 - __builtin_args_info (2)) * __va_reg_size \
: __va_reg_size)), \
__AP.__fp_left = (8 - __builtin_args_info (3)) / 2, \
__AP.__fp_regs = __AP.__gp_regs - __AP.__fp_left * 8, \
__AP.__fp_regs = (char *) ((int) __AP.__fp_regs & -8))
#endif /* ! defined (__mips64) */
#else /* ! (! defined (__mips_soft_float) && ! defined (__mips_single_float)) */
#define va_start(__AP) \
(__AP = ((__gnuc_va_list) __builtin_next_arg () \
- (__builtin_args_info (2) >= 8 ? __va_reg_size \
: (8 - __builtin_args_info (2)) * __va_reg_size)))
#endif /* ! (! defined (__mips_soft_float) && ! defined (__mips_single_float)) */
/* Need alternate code for _MIPS_SIM_ABI64. */
#elif defined(_MIPS_SIM) && (_MIPS_SIM == _MIPS_SIM_ABI64 || _MIPS_SIM == _MIPS_SIM_NABI32)
#define va_start(__AP) \
(__AP = (__gnuc_va_list) __builtin_next_arg () \
+ (__builtin_args_info (2) >= 8 ? -8 : 0))
#else
#define va_start(__AP) __AP = (char *) &__builtin_va_alist
#endif
#endif /* ! _STDARG_H */
#ifndef va_end
void va_end (__gnuc_va_list); /* Defined in libgcc.a */
#endif
#define va_end(__AP) ((void)0)
#if defined (__mips_eabi)
#if ! defined (__mips_soft_float) && ! defined (__mips_single_float)
#ifdef __mips64
#define __va_next_addr(__AP, __type) \
((__builtin_classify_type (*(__type *) 0) == __real_type_class \
&& __AP.__fp_left > 0) \
? (--__AP.__fp_left, (__AP.__fp_regs += 8) - 8) \
: (__AP.__gp_regs += __va_reg_size) - __va_reg_size)
#else
#define __va_next_addr(__AP, __type) \
((__builtin_classify_type (*(__type *) 0) == __real_type_class \
&& __AP.__fp_left > 0) \
? (--__AP.__fp_left, (__AP.__fp_regs += 8) - 8) \
: (((__builtin_classify_type (* (__type *) 0) < __record_type_class \
&& __alignof__ (__type) > 4) \
? __AP.__gp_regs = (char *) (((int) __AP.__gp_regs + 8 - 1) & -8) \
: (char *) 0), \
(__builtin_classify_type (* (__type *) 0) >= __record_type_class \
? (__AP.__gp_regs += __va_reg_size) - __va_reg_size \
: ((__AP.__gp_regs += __va_rounded_size (__type)) \
- __va_rounded_size (__type)))))
#endif
#else /* ! (! defined (__mips_soft_float) && ! defined (__mips_single_float)) */
#ifdef __mips64
#define __va_next_addr(__AP, __type) \
((__AP += __va_reg_size) - __va_reg_size)
#else
#define __va_next_addr(__AP, __type) \
(((__builtin_classify_type (* (__type *) 0) < __record_type_class \
&& __alignof__ (__type) > 4) \
? __AP = (char *) (((__PTRDIFF_TYPE__) __AP + 8 - 1) & -8) \
: (char *) 0), \
(__builtin_classify_type (* (__type *) 0) >= __record_type_class \
? (__AP += __va_reg_size) - __va_reg_size \
: ((__AP += __va_rounded_size (__type)) \
- __va_rounded_size (__type))))
#endif
#endif /* ! (! defined (__mips_soft_float) && ! defined (__mips_single_float)) */
#ifdef __MIPSEB__
#define va_arg(__AP, __type) \
((__va_rounded_size (__type) <= __va_reg_size) \
? *(__type *) (void *) (__va_next_addr (__AP, __type) \
+ __va_reg_size \
- sizeof (__type)) \
: (__builtin_classify_type (*(__type *) 0) >= __record_type_class \
? **(__type **) (void *) (__va_next_addr (__AP, __type) \
+ __va_reg_size \
- sizeof (char *)) \
: *(__type *) (void *) __va_next_addr (__AP, __type)))
#else
#define va_arg(__AP, __type) \
((__va_rounded_size (__type) <= __va_reg_size) \
? *(__type *) (void *) __va_next_addr (__AP, __type) \
: (__builtin_classify_type (* (__type *) 0) >= __record_type_class \
? **(__type **) (void *) __va_next_addr (__AP, __type) \
: *(__type *) (void *) __va_next_addr (__AP, __type)))
#endif
#else /* ! defined (__mips_eabi) */
/* We cast to void * and then to TYPE * because this avoids
a warning about increasing the alignment requirement. */
/* The __mips64 cases are reversed from the 32 bit cases, because the standard
32 bit calling convention left-aligns all parameters smaller than a word,
whereas the __mips64 calling convention does not (and hence they are
right aligned). */
#ifdef __mips64
#ifdef __MIPSEB__
#define va_arg(__AP, __type) \
((__type *) (void *) (__AP = (char *) \
((((__PTRDIFF_TYPE__)__AP + 8 - 1) & -8) \
+ __va_rounded_size (__type))))[-1]
#else
#define va_arg(__AP, __type) \
((__AP = (char *) ((((__PTRDIFF_TYPE__)__AP + 8 - 1) & -8) \
+ __va_rounded_size (__type))), \
*(__type *) (void *) (__AP - __va_rounded_size (__type)))
#endif
#else /* not __mips64 */
#ifdef __MIPSEB__
/* For big-endian machines. */
#define va_arg(__AP, __type) \
((__AP = (char *) ((__alignof__ (__type) > 4 \
? ((__PTRDIFF_TYPE__)__AP + 8 - 1) & -8 \
: ((__PTRDIFF_TYPE__)__AP + 4 - 1) & -4) \
+ __va_rounded_size (__type))), \
*(__type *) (void *) (__AP - __va_rounded_size (__type)))
#else
/* For little-endian machines. */
#define va_arg(__AP, __type) \
((__type *) (void *) (__AP = (char *) ((__alignof__(__type) > 4 \
? ((__PTRDIFF_TYPE__)__AP + 8 - 1) & -8 \
: ((__PTRDIFF_TYPE__)__AP + 4 - 1) & -4) \
+ __va_rounded_size(__type))))[-1]
#endif
#endif
#endif /* ! defined (__mips_eabi) */
/* Copy __gnuc_va_list into another variable of this type. */
#define __va_copy(dest, src) (dest) = (src)
#else
typedef char *va_list;

View file

@ -1,373 +0,0 @@
#ifndef MACRO_PRESET_NAMES_H
#define MACRO_PRESET_NAMES_H
enum MacroPresets {
macro_yellow_coin,
macro_yellow_coin_2,
macro_moving_blue_coin,
macro_sliding_blue_coin,
macro_red_coin,
macro_empty_5,
macro_coin_line_horizontal,
macro_coin_ring_horizontal,
macro_coin_arrow,
macro_coin_line_horizontal_flying,
macro_coin_line_vertical,
macro_coin_ring_horizontal_flying,
macro_coin_ring_vertical,
macro_coin_arrow_flying,
macro_hidden_star_trigger,
macro_empty_15,
macro_empty_16,
macro_empty_17,
macro_empty_18,
macro_empty_19,
macro_fake_star,
macro_wooden_signpost,
macro_cannon_closed,
macro_bobomb_buddy_opens_cannon,
macro_butterfly,
macro_bouncing_fireball_copy,
macro_fish_group_3,
macro_fish_group,
macro_unknown_28,
macro_hidden_1up_in_pole,
macro_huge_goomba,
macro_tiny_goomba,
macro_goomba_triplet_spawner,
macro_goomba_quintuplet_spawner,
macro_sign_on_wall,
macro_chuckya,
macro_cannon_open,
macro_goomba,
macro_homing_amp,
macro_circling_amp,
macro_unknown_40,
macro_unknown_41,
macro_free_bowling_ball,
macro_snufit,
macro_recovery_heart,
macro_1up_sliding,
macro_1up,
macro_1up_jump_on_approach,
macro_hidden_1up,
macro_hidden_1up_trigger,
macro_1up_2,
macro_1up_3,
macro_empty_52,
macro_blue_coin_switch,
macro_hidden_blue_coin,
macro_wing_cap_switch,
macro_metal_cap_switch,
macro_vanish_cap_switch,
macro_yellow_cap_switch,
macro_unknown_59,
macro_box_wing_cap,
macro_box_metal_cap,
macro_box_vanish_cap,
macro_box_koopa_shell,
macro_box_one_coin,
macro_box_three_coins,
macro_box_ten_coins,
macro_box_1up,
macro_box_star_1,
macro_breakable_box_no_coins,
macro_breakable_box_three_coins,
macro_pushable_metal_box,
macro_breakable_box_small,
macro_floor_switch_hidden_objects,
macro_hidden_box,
macro_hidden_object_2,
macro_hidden_object_3,
macro_breakable_box_giant,
macro_koopa_shell_underwater,
macro_box_1up_running_away,
macro_empty_80,
macro_bullet_bill_cannon,
macro_heave_ho,
macro_empty_83,
macro_thwomp,
macro_fire_spitter,
macro_fire_fly_guy,
macro_jumping_box,
macro_butterfly_triplet,
macro_butterfly_triplet_2,
macro_empty_90,
macro_empty_91,
macro_empty_92,
macro_bully,
macro_bully_2,
macro_empty_95,
macro_unknown_96,
macro_bouncing_fireball,
macro_flamethrower,
macro_empty_99,
macro_empty_100,
macro_empty_101,
macro_empty_102,
macro_empty_103,
macro_empty_104,
macro_empty_105,
macro_wooden_post,
macro_water_bomb_spawner,
macro_enemy_lakitu,
macro_bob_koopa_the_quick,
macro_koopa_race_endpoint,
macro_bobomb,
macro_water_bomb_cannon_copy,
macro_bobomb_buddy_opens_cannon_copy,
macro_water_bomb_cannon,
macro_bobomb_still,
macro_empty_116,
macro_empty_117,
macro_empty_118,
macro_empty_119,
macro_empty_120,
macro_empty_121,
macro_empty_122,
macro_unknown_123,
macro_empty_124,
macro_unagi,
macro_sushi,
macro_empty_127,
macro_empty_128,
macro_empty_129,
macro_empty_130,
macro_empty_131,
macro_empty_132,
macro_empty_133,
macro_empty_134,
macro_empty_135,
macro_empty_136,
macro_unknown_137,
macro_tornado,
macro_pokey,
macro_pokey_copy,
macro_tox_box,
macro_empty_142,
macro_empty_143,
macro_empty_144,
macro_empty_145,
macro_empty_146,
macro_empty_147,
macro_empty_148,
macro_empty_149,
macro_empty_150,
macro_monty_mole_2,
macro_monty_mole,
macro_monty_mole_hole,
macro_fly_guy,
macro_empty_155,
macro_wiggler,
macro_empty_157,
macro_empty_158,
macro_empty_159,
macro_empty_160,
macro_empty_161,
macro_empty_162,
macro_empty_163,
macro_empty_164,
macro_spindrift,
macro_mr_blizzard,
macro_mr_blizzard_copy,
macro_empty_168,
macro_small_penguin,
macro_tuxies_mother,
macro_tuxies_mother_copy,
macro_mr_blizzard_2,
macro_empty_173,
macro_empty_174,
macro_empty_175,
macro_empty_176,
macro_empty_177,
macro_empty_178,
macro_empty_179,
macro_empty_180,
macro_empty_181,
macro_empty_182,
macro_empty_183,
macro_empty_184,
macro_empty_185,
macro_empty_186,
macro_empty_187,
macro_empty_188,
macro_haunted_chair_copy,
macro_haunted_chair,
macro_haunted_chair_copy2,
macro_boo,
macro_boo_copy,
macro_boo_group,
macro_boo_with_cage,
macro_beta_key,
macro_empty_197,
macro_empty_198,
macro_empty_199,
macro_empty_200,
macro_empty_201,
macro_empty_202,
macro_empty_203,
macro_empty_204,
macro_empty_205,
macro_empty_206,
macro_empty_207,
macro_empty_208,
macro_empty_209,
macro_empty_210,
macro_empty_211,
macro_empty_212,
macro_empty_213,
macro_empty_214,
macro_empty_215,
macro_empty_216,
macro_empty_217,
macro_empty_218,
macro_empty_219,
macro_empty_220,
macro_empty_221,
macro_empty_222,
macro_empty_223,
macro_empty_224,
macro_empty_225,
macro_empty_226,
macro_empty_227,
macro_empty_228,
macro_empty_229,
macro_empty_230,
macro_empty_231,
macro_empty_232,
macro_empty_233,
macro_chirp_chirp,
macro_seaweed_bundle,
macro_beta_chest,
macro_water_mine,
macro_fish_group_4,
macro_fish_group_2,
macro_jet_stream_ring_spawner,
macro_jet_stream_ring_spawner_copy,
macro_skeeter,
macro_clam_shell,
macro_empty_244,
macro_empty_245,
macro_empty_246,
macro_empty_247,
macro_empty_248,
macro_empty_249,
macro_empty_250,
macro_ukiki,
macro_ukiki_2,
macro_piranha_plant,
macro_empty_254,
macro_whomp,
macro_chain_chomp,
macro_empty_257,
macro_koopa,
macro_koopa_shellless,
macro_wooden_post_copy,
macro_fire_piranha_plant,
macro_fire_piranha_plant_2,
macro_thi_koopa_the_quick,
macro_empty_264,
macro_empty_265,
macro_empty_266,
macro_empty_267,
macro_empty_268,
macro_empty_269,
macro_empty_270,
macro_empty_271,
macro_empty_272,
macro_empty_273,
macro_empty_274,
macro_empty_275,
macro_empty_276,
macro_empty_277,
macro_empty_278,
macro_empty_279,
macro_empty_280,
macro_moneybag,
macro_empty_282,
macro_empty_283,
macro_empty_284,
macro_empty_285,
macro_empty_286,
macro_empty_287,
macro_empty_288,
macro_swoop,
macro_swoop_2,
macro_mr_i,
macro_scuttlebug_spawner,
macro_scuttlebug,
macro_empty_294,
macro_empty_295,
macro_empty_296,
macro_empty_297,
macro_empty_298,
macro_empty_299,
macro_empty_300,
macro_empty_301,
macro_empty_302,
macro_unknown_303,
macro_empty_304,
macro_empty_305,
macro_empty_306,
macro_empty_307,
macro_empty_308,
macro_empty_309,
macro_empty_310,
macro_empty_311,
macro_empty_312,
macro_ttc_rotating_cube,
macro_ttc_rotating_prism,
macro_ttc_pendulum,
macro_ttc_large_treadmill,
macro_ttc_small_treadmill,
macro_ttc_push_block,
macro_ttc_rotating_hexagon,
macro_ttc_rotating_triangle,
macro_ttc_pit_block,
macro_ttc_pit_block_2,
macro_ttc_elevator_platform,
macro_ttc_clock_hand,
macro_ttc_spinner,
macro_ttc_small_gear,
macro_ttc_large_gear,
macro_ttc_large_treadmill_2,
macro_ttc_small_treadmill_2,
macro_empty_330,
macro_empty_331,
macro_empty_332,
macro_empty_333,
macro_empty_334,
macro_empty_335,
macro_empty_336,
macro_empty_337,
macro_empty_338,
macro_box_star_2,
macro_box_star_3,
macro_box_star_4,
macro_box_star_5,
macro_box_star_6,
macro_empty_344,
macro_empty_345,
macro_empty_346,
macro_empty_347,
macro_empty_348,
macro_empty_349,
macro_bits_sliding_platform,
macro_bits_twin_sliding_platforms,
macro_bits_unknown_352,
macro_bits_octagonal_platform,
macro_bits_staircase,
macro_empty_355,
macro_empty_356,
macro_bits_ferris_wheel_axle,
macro_bits_arrow_platform,
macro_bits_seesaw_platform,
macro_bits_tilting_w_platform,
macro_empty_361,
macro_empty_362,
macro_empty_363,
macro_empty_364,
macro_empty_365
};
#endif // MACRO_PRESET_NAMES_H

View file

@ -1,383 +1,375 @@
#ifndef MACRO_PRESETS_H
#define MACRO_PRESETS_H
#include "macro_preset_names.h"
#include "behavior_data.h"
#include "model_ids.h"
enum MacroPresets {
macro_yellow_coin_1,
macro_yellow_coin_2,
macro_moving_blue_coin,
macro_sliding_blue_coin,
macro_red_coin,
macro_empty_5,
macro_coin_line_horizontal,
macro_coin_ring_horizontal,
macro_coin_arrow,
macro_coin_line_horizontal_flying,
macro_coin_line_vertical_flying,
macro_coin_ring_horizontal_flying,
macro_coin_ring_vertical_flying,
macro_coin_arrow_flying,
macro_hidden_star_trigger,
macro_empty_15,
macro_empty_16,
macro_empty_17,
macro_empty_18,
macro_empty_19,
macro_fake_star,
macro_wooden_signpost,
macro_cannon_closed,
macro_bobomb_buddy_opens_cannon_1,
macro_butterfly,
macro_bouncing_fireball_1,
macro_fish_spawner_many_blue,
macro_fish_spawner_few_blue,
macro_unknown_28,
macro_hidden_1up_in_pole,
macro_huge_goomba,
macro_tiny_goomba,
macro_goomba_triplet_spawner,
macro_goomba_quintuplet_spawner,
macro_sign_on_wall,
macro_chuckya,
macro_cannon_open,
macro_goomba,
macro_homing_amp,
macro_circling_amp,
macro_unknown_40,
macro_unknown_41,
macro_free_bowling_ball,
macro_snufit,
macro_recovery_heart,
macro_1up_sliding,
macro_1up,
macro_1up_jump_on_approach,
macro_hidden_1up,
macro_hidden_1up_trigger,
macro_1up_beat_bitdw_bowser,
macro_1up_beat_bitfs_bowser,
macro_empty_52,
macro_blue_coin_switch,
macro_hidden_blue_coin,
macro_wing_cap_switch,
macro_metal_cap_switch,
macro_vanish_cap_switch,
macro_yellow_cap_switch,
macro_unknown_59,
macro_box_wing_cap,
macro_box_metal_cap,
macro_box_vanish_cap,
macro_box_koopa_shell,
macro_box_one_coin,
macro_box_three_coins,
macro_box_ten_coins,
macro_box_1up,
macro_box_star_act_1,
macro_breakable_box_no_coins,
macro_breakable_box_three_coins,
macro_pushable_metal_box,
macro_breakable_box_small,
macro_floor_switch_hidden_objects,
macro_hidden_breakable_box,
macro_hidden_unbreakable_box_1,
macro_hidden_unbreakable_box_2,
macro_breakable_box_giant,
macro_koopa_shell_underwater,
macro_box_1up_running_away,
macro_empty_80,
macro_bullet_bill_cannon,
macro_heave_ho,
macro_empty_83,
macro_thwomp,
macro_fire_spitter,
macro_fire_fly_guy,
macro_jumping_box,
macro_butterfly_triplet,
macro_butterfly_triplet_no_bombs,
macro_empty_90,
macro_empty_91,
macro_empty_92,
macro_small_bully,
macro_big_bully,
macro_empty_95,
macro_unknown_96,
macro_bouncing_fireball_2,
macro_flamethrower,
macro_empty_99,
macro_empty_100,
macro_empty_101,
macro_empty_102,
macro_empty_103,
macro_empty_104,
macro_empty_105,
macro_wooden_post_1,
macro_water_bomb_spawner,
macro_enemy_lakitu,
macro_bob_koopa_the_quick,
macro_koopa_race_endpoint,
macro_bobomb,
macro_water_bomb_cannon_1,
macro_bobomb_buddy_opens_cannon_2,
macro_water_bomb_cannon_2,
macro_bobomb_stationary,
macro_empty_116,
macro_empty_117,
macro_empty_118,
macro_empty_119,
macro_empty_120,
macro_empty_121,
macro_empty_122,
macro_unknown_123,
macro_empty_124,
macro_unagi,
macro_sushi,
macro_empty_127,
macro_empty_128,
macro_empty_129,
macro_empty_130,
macro_empty_131,
macro_empty_132,
macro_empty_133,
macro_empty_134,
macro_empty_135,
macro_empty_136,
macro_unknown_137,
macro_tornado,
macro_pokey_1,
macro_pokey_2,
macro_tox_box,
macro_empty_142,
macro_empty_143,
macro_empty_144,
macro_empty_145,
macro_empty_146,
macro_empty_147,
macro_empty_148,
macro_empty_149,
macro_empty_150,
macro_monty_mole_no_rock,
macro_monty_mole,
macro_monty_mole_hole,
macro_fly_guy,
macro_empty_155,
macro_wiggler,
macro_empty_157,
macro_empty_158,
macro_empty_159,
macro_empty_160,
macro_empty_161,
macro_empty_162,
macro_empty_163,
macro_empty_164,
macro_spindrift,
macro_mr_blizzard_1,
macro_mr_blizzard_2,
macro_empty_168,
macro_small_penguin,
macro_tuxies_mother_1,
macro_tuxies_mother_2,
macro_mr_blizzard_jumping,
macro_empty_173,
macro_empty_174,
macro_empty_175,
macro_empty_176,
macro_empty_177,
macro_empty_178,
macro_empty_179,
macro_empty_180,
macro_empty_181,
macro_empty_182,
macro_empty_183,
macro_empty_184,
macro_empty_185,
macro_empty_186,
macro_empty_187,
macro_empty_188,
macro_haunted_chair_1,
macro_haunted_chair_2,
macro_haunted_chair_3,
macro_boo_1,
macro_boo_2,
macro_boo_group,
macro_boo_with_cage,
macro_beta_key,
macro_empty_197,
macro_empty_198,
macro_empty_199,
macro_empty_200,
macro_empty_201,
macro_empty_202,
macro_empty_203,
macro_empty_204,
macro_empty_205,
macro_empty_206,
macro_empty_207,
macro_empty_208,
macro_empty_209,
macro_empty_210,
macro_empty_211,
macro_empty_212,
macro_empty_213,
macro_empty_214,
macro_empty_215,
macro_empty_216,
macro_empty_217,
macro_empty_218,
macro_empty_219,
macro_empty_220,
macro_empty_221,
macro_empty_222,
macro_empty_223,
macro_empty_224,
macro_empty_225,
macro_empty_226,
macro_empty_227,
macro_empty_228,
macro_empty_229,
macro_empty_230,
macro_empty_231,
macro_empty_232,
macro_empty_233,
macro_chirp_chirp,
macro_seaweed_bundle,
macro_beta_chest,
macro_water_mine,
macro_fish_spawner_many_cyan,
macro_fish_spawner_few_cyan,
macro_jet_stream_ring_spawner_1,
macro_jet_stream_ring_spawner_2,
macro_skeeter,
macro_clam_shell,
macro_empty_244,
macro_empty_245,
macro_empty_246,
macro_empty_247,
macro_empty_248,
macro_empty_249,
macro_empty_250,
macro_cage_ukiki,
macro_cap_ukiki,
macro_piranha_plant,
macro_empty_254,
macro_whomp,
macro_chain_chomp,
macro_empty_257,
macro_koopa,
macro_koopa_shellless,
macro_wooden_post_2,
macro_fire_piranha_plant_1,
macro_fire_piranha_plant_2,
macro_koopa_tiny,
macro_empty_264,
macro_empty_265,
macro_empty_266,
macro_empty_267,
macro_empty_268,
macro_empty_269,
macro_empty_270,
macro_empty_271,
macro_empty_272,
macro_empty_273,
macro_empty_274,
macro_empty_275,
macro_empty_276,
macro_empty_277,
macro_empty_278,
macro_empty_279,
macro_empty_280,
macro_moneybag,
macro_empty_282,
macro_empty_283,
macro_empty_284,
macro_empty_285,
macro_empty_286,
macro_empty_287,
macro_empty_288,
macro_swoop_1,
macro_swoop_2,
macro_mr_i,
macro_scuttlebug_spawner,
macro_scuttlebug,
macro_empty_294,
macro_empty_295,
macro_empty_296,
macro_empty_297,
macro_empty_298,
macro_empty_299,
macro_empty_300,
macro_empty_301,
macro_empty_302,
macro_unknown_303,
macro_empty_304,
macro_empty_305,
macro_empty_306,
macro_empty_307,
macro_empty_308,
macro_empty_309,
macro_empty_310,
macro_empty_311,
macro_empty_312,
macro_ttc_rotating_cube,
macro_ttc_rotating_prism,
macro_ttc_pendulum,
macro_ttc_large_treadmill_1,
macro_ttc_small_treadmill_1,
macro_ttc_push_block,
macro_ttc_rotating_hexagon,
macro_ttc_rotating_triangle,
macro_ttc_pit_block_1,
macro_ttc_pit_block_2,
macro_ttc_elevator_platform,
macro_ttc_clock_hand,
macro_ttc_spinner,
macro_ttc_small_gear,
macro_ttc_large_gear,
macro_ttc_large_treadmill_2,
macro_ttc_small_treadmill_2,
macro_empty_330,
macro_empty_331,
macro_empty_332,
macro_empty_333,
macro_empty_334,
macro_empty_335,
macro_empty_336,
macro_empty_337,
macro_empty_338,
macro_box_star_act_2,
macro_box_star_act_3,
macro_box_star_act_4,
macro_box_star_act_5,
macro_box_star_act_6,
macro_empty_344,
macro_empty_345,
macro_empty_346,
macro_empty_347,
macro_empty_348,
macro_empty_349,
macro_bits_sliding_platform,
macro_bits_twin_sliding_platforms,
macro_bits_unknown_352,
macro_bits_octagonal_platform,
macro_bits_staircase,
macro_empty_355,
macro_empty_356,
macro_bits_ferris_wheel_axle,
macro_bits_arrow_platform,
macro_bits_seesaw_platform,
macro_bits_tilting_w_platform,
macro_empty_361,
macro_empty_362,
macro_empty_363,
macro_empty_364,
macro_empty_365,
struct MacroPreset {
/*0x00*/ const BehaviorScript *behavior;
/*0x04*/ s16 model;
/*0x06*/ s16 param;
};
struct MacroPreset MacroObjectPresets[] = {
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvOneCoin, MODEL_YELLOW_COIN, 0},
{bhvMovingBlueCoin, MODEL_BLUE_COIN, 0},
{bhvBlueCoinSliding, MODEL_BLUE_COIN, 0}, // unused
{bhvRedCoin, MODEL_RED_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvCoinFormation, MODEL_NONE, 0},
{bhvCoinFormation, MODEL_NONE, COIN_FORMATION_FLAG_RING},
{bhvCoinFormation, MODEL_NONE, COIN_FORMATION_FLAG_ARROW},
{bhvCoinFormation, MODEL_NONE, COIN_FORMATION_FLAG_FLYING},
{bhvCoinFormation, MODEL_NONE, COIN_FORMATION_FLAG_FLYING | COIN_FORMATION_FLAG_VERTICAL},
{bhvCoinFormation, MODEL_NONE, COIN_FORMATION_FLAG_FLYING | COIN_FORMATION_FLAG_RING},
{bhvCoinFormation, MODEL_NONE, COIN_FORMATION_FLAG_FLYING | COIN_FORMATION_FLAG_RING | COIN_FORMATION_FLAG_VERTICAL},
{bhvCoinFormation, MODEL_NONE, COIN_FORMATION_FLAG_FLYING | COIN_FORMATION_FLAG_ARROW}, // unused
{bhvHiddenStarTrigger, MODEL_NONE, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvUnusedFakeStar, MODEL_STAR, 0}, // unused
{bhvMessagePanel, MODEL_WOODEN_SIGNPOST, 0},
{bhvCannonClosed, MODEL_DL_CANNON_LID, 0},
{bhvBobombBuddyOpensCannon, MODEL_BOBOMB_BUDDY, 0},
{bhvButterfly, MODEL_BUTTERFLY, 0}, // unused
{bhvBouncingFireball, MODEL_NONE, 0}, // unused
{bhvFishSpawner, MODEL_NONE, 0}, // unused
{bhvFishSpawner, MODEL_NONE, 1},
{bhvBetaFishSplashSpawner, MODEL_NONE, 0},
{bhvHidden1upInPoleSpawner, MODEL_NONE, 0},
{bhvGoomba, MODEL_GOOMBA, 1},
{bhvGoomba, MODEL_GOOMBA, 2},
{bhvGoombaTripletSpawner, MODEL_NONE, 0},
{bhvGoombaTripletSpawner, MODEL_NONE, 8}, // unused
{bhvSignOnWall, MODEL_NONE, 0},
{bhvChuckya, MODEL_CHUCKYA, 0},
{bhvCannon, MODEL_CANNON_BASE, 0},
{bhvGoomba, MODEL_GOOMBA, 0},
{bhvHomingAmp, MODEL_AMP, 0},
{bhvCirclingAmp, MODEL_AMP, 0},
{bhvCarrySomething1, MODEL_UNKNOWN_7D, 0}, // unused
{bhvBetaTrampolineTop, MODEL_TRAMPOLINE, 0}, // unused
{bhvFreeBowlingBall, MODEL_BOWLING_BALL, 0}, // unused
{bhvSnufit, MODEL_SNUFIT, 0},
{bhvRecoveryHeart, MODEL_HEART, 0},
{bhv1upSliding, MODEL_1UP, 0},
{bhv1Up, MODEL_1UP, 0},
{bhv1upJumpOnApproach, MODEL_1UP, 0}, // unused
{bhvHidden1up, MODEL_1UP, 0},
{bhvHidden1upTrigger, MODEL_NONE, 0},
{bhv1Up, MODEL_1UP, 1},
{bhv1Up, MODEL_1UP, 2},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvBlueCoinSwitch, MODEL_BLUE_COIN_SWITCH, 0},
{bhvHiddenBlueCoin, MODEL_BLUE_COIN, 0},
{bhvCapSwitch, MODEL_CAP_SWITCH, 0}, // unused
{bhvCapSwitch, MODEL_CAP_SWITCH, 1}, // unused
{bhvCapSwitch, MODEL_CAP_SWITCH, 2}, // unused
{bhvCapSwitch, MODEL_CAP_SWITCH, 3}, // unused
{bhvWaterLevelDiamond, MODEL_BREAKABLE_BOX, 0}, // unused
{bhvExclamationBox, MODEL_EXCLAMATION_BOX, 0},
{bhvExclamationBox, MODEL_EXCLAMATION_BOX, 1},
{bhvExclamationBox, MODEL_EXCLAMATION_BOX, 2},
{bhvExclamationBox, MODEL_EXCLAMATION_BOX, 3},
{bhvExclamationBox, MODEL_EXCLAMATION_BOX, 4}, // unused
{bhvExclamationBox, MODEL_EXCLAMATION_BOX, 5},
{bhvExclamationBox, MODEL_EXCLAMATION_BOX, 6},
{bhvExclamationBox, MODEL_EXCLAMATION_BOX, 7},
{bhvExclamationBox, MODEL_EXCLAMATION_BOX, 8},
{bhvBreakableBox, MODEL_BREAKABLE_BOX, 0},
{bhvBreakableBox, MODEL_BREAKABLE_BOX, 1},
{bhvPushableMetalBox, MODEL_METAL_BOX, 0},
{bhvBreakableBoxSmall, MODEL_BREAKABLE_BOX_SMALL, 0},
{bhvFloorSwitchHiddenObjects, MODEL_PURPLE_SWITCH, 0},
{bhvHiddenObject, MODEL_BREAKABLE_BOX, 0},
{bhvHiddenObject, MODEL_BREAKABLE_BOX, 1}, // unused
{bhvHiddenObject, MODEL_BREAKABLE_BOX, 2}, // unused
{bhvBreakableBox, MODEL_BREAKABLE_BOX, 3},
{bhvKoopaShellUnderwater, MODEL_KOOPA_SHELL, 0},
{bhvExclamationBox, MODEL_EXCLAMATION_BOX, 9},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvBulletBill, MODEL_BULLET_BILL, 0}, // unused
{bhvHeaveHo, MODEL_HEAVE_HO, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvThwomp2, MODEL_THWOMP, 0}, // unused
{bhvFireSpitter, MODEL_BOWLING_BALL, 0},
{bhvFlyGuy, MODEL_FLYGUY, 1},
{bhvJumpingBox, MODEL_BREAKABLE_BOX, 0},
{bhvTripletButterfly, MODEL_BUTTERFLY, 0},
{bhvTripletButterfly, MODEL_BUTTERFLY, 4},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvSmallBully, MODEL_BULLY, 0},
{bhvSmallBully, MODEL_BULLY_BOSS, 0}, // unused
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvStub1D0C, MODEL_UNKNOWN_58, 0}, // unused
{bhvBouncingFireball, MODEL_NONE, 0},
{bhvFlamethrower, MODEL_NONE, 4},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvWoodenPost, MODEL_WOODEN_POST, 0},
{bhvWaterBombSpawner, MODEL_NONE, 0},
{bhvEnemyLakitu, MODEL_ENEMY_LAKITU, 0},
{bhvKoopa, MODEL_KOOPA_WITH_SHELL, 2}, // unused
{bhvKoopaRaceEndpoint, MODEL_NONE, 0}, // unused
{bhvBobomb, MODEL_BLACK_BOBOMB, 0},
{bhvWaterBombCannon, MODEL_CANNON_BASE, 0}, // unused
{bhvBobombBuddyOpensCannon, MODEL_BOBOMB_BUDDY, 0}, // unused
{bhvWaterBombCannon, MODEL_CANNON_BASE, 0},
{bhvBobomb, MODEL_BLACK_BOBOMB, 1},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvUnusedFakeStar, MODEL_UNKNOWN_54, 0}, // unused
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvUnagi, MODEL_UNAGI, 0}, // unused
{bhvSushiShark, MODEL_SUSHI, 0}, // unused
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvStaticObject, MODEL_KLEPTO, 0}, // unused
{bhvTweester, MODEL_TWEESTER, 0}, // unused
{bhvPokey, MODEL_NONE, 0},
{bhvPokey, MODEL_NONE, 0}, // unused
{bhvToxBox, MODEL_SSL_TOX_BOX, 0}, // unused
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvMontyMole, MODEL_MONTY_MOLE, 0}, // unused
{bhvMontyMole, MODEL_MONTY_MOLE, 1},
{bhvMontyMoleHole, MODEL_DL_MONTY_MOLE_HOLE, 0},
{bhvFlyGuy, MODEL_FLYGUY, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvWigglerHead, MODEL_WIGGLER_HEAD, 0}, // unused
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvSpindrift, MODEL_SPINDRIFT, 0},
{bhvMrBlizzard, MODEL_MR_BLIZZARD_HIDDEN, 0},
{bhvMrBlizzard, MODEL_MR_BLIZZARD_HIDDEN, 0}, // unused
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvSmallPenguin, MODEL_PENGUIN, 0}, // unused
{bhvTuxiesMother, MODEL_PENGUIN, 0}, // unused
{bhvTuxiesMother, MODEL_PENGUIN, 0}, // unused
{bhvMrBlizzard, MODEL_MR_BLIZZARD_HIDDEN, 1}, // unused
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvHauntedChair, MODEL_HAUNTED_CHAIR, 0}, // unused
{bhvHauntedChair, MODEL_HAUNTED_CHAIR, 0},
{bhvHauntedChair, MODEL_HAUNTED_CHAIR, 0}, // unused
{bhvGhostHuntBoo, MODEL_BOO, 0}, // unused
{bhvGhostHuntBoo, MODEL_BOO, 0}, // unused
{bhvCourtyardBooTriplet, MODEL_BOO, 0}, // unused
{bhvBooWithCage, MODEL_BOO, 0}, // unused
{bhvAlphaBooKey, MODEL_BETA_BOO_KEY, 0}, // unused
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvChirpChirp, MODEL_NONE, 0},
{bhvSeaweedBundle, MODEL_NONE, 0},
{bhvBetaChestBottom, MODEL_TREASURE_CHEST_BASE, 0}, // unused
{bhvBowserBomb, MODEL_WATER_MINE, 0}, // unused
{bhvFishSpawner, MODEL_NONE, 2}, // unused
{bhvFishSpawner, MODEL_NONE, 3},
{bhvJetStreamRingSpawner, MODEL_WATER_RING, 0}, // unused
{bhvJetStreamRingSpawner, MODEL_WATER_RING, 0}, // unused
{bhvSkeeter, MODEL_SKEETER, 0},
{bhvClamShell, MODEL_CLAM_SHELL, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvMacroUkiki, MODEL_UKIKI, 0}, // unused
{bhvMacroUkiki, MODEL_UKIKI, 1}, // unused
{bhvPiranhaPlant, MODEL_PIRANHA_PLANT, 0}, // unused
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvSmallWhomp, MODEL_WHOMP, 0},
{bhvChainChomp, MODEL_CHAIN_CHOMP, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvKoopa, MODEL_KOOPA_WITH_SHELL, 1},
{bhvKoopa, MODEL_KOOPA_WITHOUT_SHELL, 0}, // unused
{bhvWoodenPost, MODEL_WOODEN_POST, 0}, // unused
{bhvFirePiranhaPlant, MODEL_PIRANHA_PLANT, 0},
{bhvFirePiranhaPlant, MODEL_PIRANHA_PLANT, 1}, // unused
{bhvKoopa, MODEL_KOOPA_WITH_SHELL, 4},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvMoneybagHidden, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvSwoop, MODEL_SWOOP, 0},
{bhvSwoop, MODEL_SWOOP, 1},
{bhvMrI, MODEL_NONE, 0},
{bhvScuttlebugSpawn, MODEL_NONE, 0},
{bhvScuttlebug, MODEL_SCUTTLEBUG, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_UNKNOWN_54, 0}, // unused
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvTTCRotatingSolid, MODEL_TTC_ROTATING_CUBE, 0},
{bhvTTCRotatingSolid, MODEL_TTC_ROTATING_PRISM, 1},
{bhvTTCPendulum, MODEL_TTC_PENDULUM, 0},
{bhvTTCTreadmill, MODEL_TTC_LARGE_TREADMILL, 0},
{bhvTTCTreadmill, MODEL_TTC_SMALL_TREADMILL, 1},
{bhvTTCMovingBar, MODEL_TTC_PUSH_BLOCK, 0},
{bhvTTCCog, MODEL_TTC_ROTATING_HEXAGON, 0},
{bhvTTCCog, MODEL_TTC_ROTATING_TRIANGLE, 2},
{bhvTTCPitBlock, MODEL_TTC_PIT_BLOCK, 0},
{bhvTTCPitBlock, MODEL_TTC_PIT_BLOCK_UNUSED, 1}, // unused
{bhvTTCElevator, MODEL_TTC_ELEVATOR_PLATFORM, 0},
{bhvTTC2DRotator, MODEL_TTC_CLOCK_HAND, 0},
{bhvTTCSpinner, MODEL_TTC_SPINNER, 0},
{bhvTTC2DRotator, MODEL_TTC_SMALL_GEAR, 1},
{bhvTTC2DRotator, MODEL_TTC_LARGE_GEAR, 1},
{bhvTTCTreadmill, MODEL_TTC_LARGE_TREADMILL, 2},
{bhvTTCTreadmill, MODEL_TTC_SMALL_TREADMILL, 3},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvExclamationBox, MODEL_EXCLAMATION_BOX, 10},
{bhvExclamationBox, MODEL_EXCLAMATION_BOX, 11},
{bhvExclamationBox, MODEL_EXCLAMATION_BOX, 12},
{bhvExclamationBox, MODEL_EXCLAMATION_BOX, 13}, // unused
{bhvExclamationBox, MODEL_EXCLAMATION_BOX, 14},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvSlidingPlatform2, MODEL_BITS_SLIDING_PLATFORM, 0}, // unused
{bhvSlidingPlatform2, MODEL_BITS_TWIN_SLIDING_PLATFORMS, 0}, // unused
{bhvAnotherTiltingPlatform, MODEL_BITDW_SLIDING_PLATFORM, 0}, // unused
{bhvOctagonalPlatformRotating, MODEL_BITS_OCTAGONAL_PLATFORM, 0}, // unused
{bhvAnimatesOnFloorSwitchPress, MODEL_BITS_STAIRCASE, 0}, // unused
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvFerrisWheelAxle, MODEL_BITS_FERRIS_WHEEL_AXLE, 0}, // unused
{bhvActivatedBackAndForthPlatform, MODEL_BITS_ARROW_PLATFORM, 0}, // unused
{bhvSeesawPlatform, MODEL_BITS_SEESAW_PLATFORM, 0}, // unused
{bhvSeesawPlatform, MODEL_BITS_TILTING_W_PLATFORM, 0}, // unused
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0},
{bhvYellowCoin, MODEL_YELLOW_COIN, 0}
macro_count
};
#endif // MACRO_PRESETS_H

379
include/macro_presets.inc.c Normal file
View file

@ -0,0 +1,379 @@
#include "macro_presets.h"
struct MacroPreset {
/* 0x00 */ const BehaviorScript *behavior;
/* 0x04 */ s16 model;
/* 0x06 */ s16 param;
};
static struct MacroPreset sMacroObjectPresets[] = {
/* macro_yellow_coin_1 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_yellow_coin_2 */ { bhvOneCoin, MODEL_YELLOW_COIN, 0 },
/* macro_moving_blue_coin */ { bhvMovingBlueCoin, MODEL_BLUE_COIN, 0 },
/* macro_sliding_blue_coin */ { bhvBlueCoinSliding, MODEL_BLUE_COIN, 0 }, // unused
/* macro_red_coin */ { bhvRedCoin, MODEL_RED_COIN, 0 },
/* macro_empty_5 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_coin_line_horizontal */ { bhvCoinFormation, MODEL_NONE, COIN_FORMATION_BP_LINE_HORIZONTAL },
/* macro_coin_ring_horizontal */ { bhvCoinFormation, MODEL_NONE, COIN_FORMATION_BP_RING_HORIZONTAL },
/* macro_coin_arrow */ { bhvCoinFormation, MODEL_NONE, COIN_FORMATION_BP_ARROW },
/* macro_coin_line_horizontal_flying */ { bhvCoinFormation, MODEL_NONE, COIN_FORMATION_BP_LINE_HORIZONTAL | COIN_FORMATION_BP_FLAG_FLYING },
/* macro_coin_line_vertical_flying */ { bhvCoinFormation, MODEL_NONE, COIN_FORMATION_BP_LINE_VERTICAL | COIN_FORMATION_BP_FLAG_FLYING },
/* macro_coin_ring_horizontal_flying */ { bhvCoinFormation, MODEL_NONE, COIN_FORMATION_BP_RING_HORIZONTAL | COIN_FORMATION_BP_FLAG_FLYING },
/* macro_coin_ring_vertical_flying */ { bhvCoinFormation, MODEL_NONE, COIN_FORMATION_BP_RING_VERTICAL | COIN_FORMATION_BP_FLAG_FLYING },
/* macro_coin_arrow_flying */ { bhvCoinFormation, MODEL_NONE, COIN_FORMATION_BP_ARROW | COIN_FORMATION_BP_FLAG_FLYING }, // unused
/* macro_hidden_star_trigger */ { bhvHiddenStarTrigger, MODEL_NONE, 0 },
/* macro_empty_15 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_16 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_17 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_18 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_19 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_fake_star */ { bhvUnusedFakeStar, MODEL_STAR, 0 }, // unused
/* macro_wooden_signpost */ { bhvMessagePanel, MODEL_WOODEN_SIGNPOST, 0 },
/* macro_cannon_closed */ { bhvCannonClosed, MODEL_DL_CANNON_LID, 0 },
/* macro_bobomb_buddy_opens_cannon_1 */ { bhvBobombBuddyOpensCannon, MODEL_BOBOMB_BUDDY, 0 },
/* macro_butterfly */ { bhvButterfly, MODEL_BUTTERFLY, 0 }, // unused
/* macro_bouncing_fireball_1 */ { bhvBouncingFireball, MODEL_NONE, 0 }, // unused
/* macro_fish_spawner_many_blue */ { bhvFishSpawner, MODEL_NONE, FISH_SPAWNER_BP_MANY_BLUE }, // unused
/* macro_fish_spawner_few_blue */ { bhvFishSpawner, MODEL_NONE, FISH_SPAWNER_BP_FEW_BLUE },
/* macro_unknown_28 */ { bhvBetaFishSplashSpawner, MODEL_NONE, 0 },
/* macro_hidden_1up_in_pole */ { bhvHidden1UpInPoleSpawner, MODEL_NONE, 0 },
/* macro_huge_goomba */ { bhvGoomba, MODEL_GOOMBA, GOOMBA_SIZE_HUGE },
/* macro_tiny_goomba */ { bhvGoomba, MODEL_GOOMBA, GOOMBA_SIZE_TINY },
/* macro_goomba_triplet_spawner */ { bhvGoombaTripletSpawner, MODEL_NONE, GOOMBA_TRIPLET_SPAWNER_BP_EXTRA_GOOMBAS(0) | GOOMBA_SIZE_REGULAR },
/* macro_goomba_quintuplet_spawner */ { bhvGoombaTripletSpawner, MODEL_NONE, GOOMBA_TRIPLET_SPAWNER_BP_EXTRA_GOOMBAS(2) | GOOMBA_SIZE_REGULAR }, // unused
/* macro_sign_on_wall */ { bhvSignOnWall, MODEL_NONE, 0 },
/* macro_chuckya */ { bhvChuckya, MODEL_CHUCKYA, 0 },
/* macro_cannon_open */ { bhvCannon, MODEL_CANNON_BASE, 0 },
/* macro_goomba */ { bhvGoomba, MODEL_GOOMBA, 0 },
/* macro_homing_amp */ { bhvHomingAmp, MODEL_AMP, 0 },
/* macro_circling_amp */ { bhvCirclingAmp, MODEL_AMP, AMP_BP_ROT_RADIUS_200 },
/* macro_unknown_40 */ { bhvCarrySomething1, MODEL_UNKNOWN_7D, 0 }, // unused
/* macro_unknown_41 */ { bhvBetaTrampolineTop, MODEL_TRAMPOLINE, 0 }, // unused
/* macro_free_bowling_ball */ { bhvFreeBowlingBall, MODEL_BOWLING_BALL, 0 }, // unused
/* macro_snufit */ { bhvSnufit, MODEL_SNUFIT, 0 },
/* macro_recovery_heart */ { bhvRecoveryHeart, MODEL_HEART, 0 },
/* macro_1up_sliding */ { bhv1UpSliding, MODEL_1UP, 0 },
/* macro_1up */ { bhv1Up, MODEL_1UP, 0 },
/* macro_1up_jump_on_approach */ { bhv1UpJumpOnApproach, MODEL_1UP, 0 }, // unused
/* macro_hidden_1up */ { bhvHidden1Up, MODEL_1UP, 0 },
/* macro_hidden_1up_trigger */ { bhvHidden1UpTrigger, MODEL_NONE, 0 },
/* macro_1up_beat_bitdw_bowser */ { bhv1Up, MODEL_1UP, ONE_UP_BP_BEAT_BITDW_BOWSER },
/* macro_1up_beat_bitfs_bowser */ { bhv1Up, MODEL_1UP, ONE_UP_BP_BEAT_BITFS_BOWSER },
/* macro_empty_52 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_blue_coin_switch */ { bhvBlueCoinSwitch, MODEL_BLUE_COIN_SWITCH, 0 },
/* macro_hidden_blue_coin */ { bhvHiddenBlueCoin, MODEL_BLUE_COIN, 0 },
/* macro_wing_cap_switch */ { bhvCapSwitch, MODEL_CAP_SWITCH, CAP_SWITCH_BP_RED }, // unused
/* macro_metal_cap_switch */ { bhvCapSwitch, MODEL_CAP_SWITCH, CAP_SWITCH_BP_GREEN }, // unused
/* macro_vanish_cap_switch */ { bhvCapSwitch, MODEL_CAP_SWITCH, CAP_SWITCH_BP_BLUE }, // unused
/* macro_yellow_cap_switch */ { bhvCapSwitch, MODEL_CAP_SWITCH, CAP_SWITCH_BP_YELLOW }, // unused
/* macro_unknown_59 */ { bhvWaterLevelDiamond, MODEL_BREAKABLE_BOX, 0 }, // unused
/* macro_box_wing_cap */ { bhvExclamationBox, MODEL_EXCLAMATION_BOX, EXCLAMATION_BOX_BP_WING_CAP },
/* macro_box_metal_cap */ { bhvExclamationBox, MODEL_EXCLAMATION_BOX, EXCLAMATION_BOX_BP_METAL_CAP },
/* macro_box_vanish_cap */ { bhvExclamationBox, MODEL_EXCLAMATION_BOX, EXCLAMATION_BOX_BP_VANISH_CAP },
/* macro_box_koopa_shell */ { bhvExclamationBox, MODEL_EXCLAMATION_BOX, EXCLAMATION_BOX_BP_KOOPA_SHELL },
/* macro_box_one_coin */ { bhvExclamationBox, MODEL_EXCLAMATION_BOX, EXCLAMATION_BOX_BP_ONE_COIN }, // unused
/* macro_box_three_coins */ { bhvExclamationBox, MODEL_EXCLAMATION_BOX, EXCLAMATION_BOX_BP_THREE_COINS },
/* macro_box_ten_coins */ { bhvExclamationBox, MODEL_EXCLAMATION_BOX, EXCLAMATION_BOX_BP_TEN_COINS },
/* macro_box_1up */ { bhvExclamationBox, MODEL_EXCLAMATION_BOX, EXCLAMATION_BOX_BP_1UP_WALKING },
/* macro_box_star_act_1 */ { bhvExclamationBox, MODEL_EXCLAMATION_BOX, EXCLAMATION_BOX_BP_STAR_ACT_1 },
/* macro_breakable_box_no_coins */ { bhvBreakableBox, MODEL_BREAKABLE_BOX, BREAKABLE_BOX_BP_NO_COINS },
/* macro_breakable_box_three_coins */ { bhvBreakableBox, MODEL_BREAKABLE_BOX, BREAKABLE_BOX_BP_3_COINS },
/* macro_pushable_metal_box */ { bhvPushableMetalBox, MODEL_METAL_BOX, 0 },
/* macro_breakable_box_small */ { bhvBreakableBoxSmall, MODEL_BREAKABLE_BOX_SMALL, 0 },
/* macro_floor_switch_hidden_objects */ { bhvFloorSwitchHiddenObjects, MODEL_PURPLE_SWITCH, 0 },
/* macro_hidden_breakable_box */ { bhvHiddenObject, MODEL_BREAKABLE_BOX, HIDDEN_OBJECT_BP_BREAKABLE_BOX },
/* macro_hidden_unbreakable_box_1 */ { bhvHiddenObject, MODEL_BREAKABLE_BOX, HIDDEN_OBJECT_BP_UNBREAKABLE_BOX_UNUSED_1 }, // unused
/* macro_hidden_unbreakable_box_2 */ { bhvHiddenObject, MODEL_BREAKABLE_BOX, HIDDEN_OBJECT_BP_UNBREAKABLE_BOX_UNUSED_2 }, // unused
/* macro_breakable_box_giant */ { bhvBreakableBox, MODEL_BREAKABLE_BOX, BREAKABLE_BOX_BP_GIANT },
/* macro_koopa_shell_underwater */ { bhvKoopaShellUnderwater, MODEL_KOOPA_SHELL, 0 },
/* macro_box_1up_running_away */ { bhvExclamationBox, MODEL_EXCLAMATION_BOX, EXCLAMATION_BOX_BP_1UP_RUNNING_AWAY },
/* macro_empty_80 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_bullet_bill_cannon */ { bhvBulletBill, MODEL_BULLET_BILL, 0 }, // unused
/* macro_heave_ho */ { bhvHeaveHo, MODEL_HEAVE_HO, 0 },
/* macro_empty_83 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_thwomp */ { bhvThwomp, MODEL_THWOMP, 0 }, // unused
/* macro_fire_spitter */ { bhvFireSpitter, MODEL_BOWLING_BALL, 0 },
/* macro_fire_fly_guy */ { bhvFlyGuy, MODEL_FLYGUY, FLY_GUY_BP_FIRE },
/* macro_jumping_box */ { bhvJumpingBox, MODEL_BREAKABLE_BOX, 0 },
/* macro_butterfly_triplet */ { bhvTripletButterfly, MODEL_BUTTERFLY, 0 },
/* macro_butterfly_triplet_no_bombs */ { bhvTripletButterfly, MODEL_BUTTERFLY, TRIPLET_BUTTERFLY_BP_NO_BOMBS },
/* macro_empty_90 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_91 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_92 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_small_bully */ { bhvSmallBully, MODEL_BULLY, 0 },
/* macro_big_bully */ { bhvSmallBully, MODEL_BULLY_BOSS, 0 }, // unused
/* macro_empty_95 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_unknown_96 */ { bhvStub1D0C, MODEL_UNKNOWN_58, 0 }, // unused
/* macro_bouncing_fireball_2 */ { bhvBouncingFireball, MODEL_NONE, 0 },
/* macro_flamethrower */ { bhvFlamethrower, MODEL_NONE, 4 },
/* macro_empty_99 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_100 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_101 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_102 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_103 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_104 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_105 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_wooden_post_1 */ { bhvWoodenPost, MODEL_WOODEN_POST, 0 },
/* macro_water_bomb_spawner */ { bhvWaterBombSpawner, MODEL_NONE, 0 },
/* macro_enemy_lakitu */ { bhvEnemyLakitu, MODEL_ENEMY_LAKITU, 0 },
/* macro_bob_koopa_the_quick */ { bhvKoopa, MODEL_KOOPA_WITH_SHELL, KOOPA_BP_KOOPA_THE_QUICK_BOB }, // unused
/* macro_koopa_race_endpoint */ { bhvKoopaRaceEndpoint, MODEL_NONE, 0 }, // unused
/* macro_bobomb */ { bhvBobomb, MODEL_BLACK_BOBOMB, BOBOMB_BP_STYPE_GENERIC },
/* macro_water_bomb_cannon_1 */ { bhvWaterBombCannon, MODEL_CANNON_BASE, 0 }, // unused
/* macro_bobomb_buddy_opens_cannon_2 */ { bhvBobombBuddyOpensCannon, MODEL_BOBOMB_BUDDY, 0 }, // unused
/* macro_water_bomb_cannon_2 */ { bhvWaterBombCannon, MODEL_CANNON_BASE, 0 },
/* macro_bobomb_stationary */ { bhvBobomb, MODEL_BLACK_BOBOMB, BOBOMB_BP_STYPE_STATIONARY },
/* macro_empty_116 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_117 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_118 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_119 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_120 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_121 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_122 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_unknown_123 */ { bhvUnusedFakeStar, MODEL_UNKNOWN_54, 0 }, // unused
/* macro_empty_124 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_unagi */ { bhvUnagi, MODEL_UNAGI, 0 }, // unused
/* macro_sushi */ { bhvSushiShark, MODEL_SUSHI, 0 }, // unused
/* macro_empty_127 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_128 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_129 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_130 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_131 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_132 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_133 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_134 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_135 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_136 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_unknown_137 */ { bhvStaticObject, MODEL_KLEPTO, 0 }, // unused
/* macro_tornado */ { bhvTweester, MODEL_TWEESTER, 0 }, // unused
/* macro_pokey_1 */ { bhvPokey, MODEL_NONE, 0 },
/* macro_pokey_2 */ { bhvPokey, MODEL_NONE, 0 }, // unused
/* macro_tox_box */ { bhvToxBox, MODEL_SSL_TOX_BOX, TOX_BOX_BP_MOVEMENT_PATTERN_1 }, // unused
/* macro_empty_142 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_143 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_144 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_145 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_146 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_147 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_148 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_149 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_150 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_monty_mole_no_rock */ { bhvMontyMole, MODEL_MONTY_MOLE, MONTY_MOLE_BP_NO_ROCK }, // unused
/* macro_monty_mole */ { bhvMontyMole, MODEL_MONTY_MOLE, MONTY_MOLE_BP_GENERIC },
/* macro_monty_mole_hole */ { bhvMontyMoleHole, MODEL_DL_MONTY_MOLE_HOLE, 0 },
/* macro_fly_guy */ { bhvFlyGuy, MODEL_FLYGUY, FLY_GUY_BP_GENERIC },
/* macro_empty_155 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_wiggler */ { bhvWigglerHead, MODEL_WIGGLER_HEAD, 0 }, // unused
/* macro_empty_157 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_158 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_159 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_160 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_161 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_162 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_163 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_164 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_spindrift */ { bhvSpindrift, MODEL_SPINDRIFT, 0 },
/* macro_mr_blizzard_1 */ { bhvMrBlizzard, MODEL_MR_BLIZZARD_HIDDEN, MR_BLIZZARD_STYPE_GENERIC },
/* macro_mr_blizzard_2 */ { bhvMrBlizzard, MODEL_MR_BLIZZARD_HIDDEN, MR_BLIZZARD_STYPE_GENERIC }, // unused
/* macro_empty_168 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_small_penguin */ { bhvSmallPenguin, MODEL_PENGUIN, 0 }, // unused
/* macro_tuxies_mother_1 */ { bhvTuxiesMother, MODEL_PENGUIN, 0 }, // unused
/* macro_tuxies_mother_2 */ { bhvTuxiesMother, MODEL_PENGUIN, 0 }, // unused
/* macro_mr_blizzard_jumping */ { bhvMrBlizzard, MODEL_MR_BLIZZARD_HIDDEN, MR_BLIZZARD_STYPE_JUMPING }, // unused
/* macro_empty_173 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_174 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_175 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_176 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_177 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_178 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_179 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_180 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_181 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_182 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_183 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_184 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_185 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_186 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_187 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_188 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_haunted_chair_1 */ { bhvHauntedChair, MODEL_HAUNTED_CHAIR, 0 }, // unused
/* macro_haunted_chair_2 */ { bhvHauntedChair, MODEL_HAUNTED_CHAIR, 0 },
/* macro_haunted_chair_3 */ { bhvHauntedChair, MODEL_HAUNTED_CHAIR, 0 }, // unused
/* macro_boo_1 */ { bhvGhostHuntBoo, MODEL_BOO, BOO_BP_GHOST_HUNT }, // unused
/* macro_boo_2 */ { bhvGhostHuntBoo, MODEL_BOO, BOO_BP_GHOST_HUNT }, // unused
/* macro_boo_group */ { bhvCourtyardBooTriplet, MODEL_BOO, 0 }, // unused
/* macro_boo_with_cage */ { bhvBooWithCage, MODEL_BOO, 0 }, // unused
/* macro_beta_key */ { bhvAlphaBooKey, MODEL_BETA_BOO_KEY, 0 }, // unused
/* macro_empty_197 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_198 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_199 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_200 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_201 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_202 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_203 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_204 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_205 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_206 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_207 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_208 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_209 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_210 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_211 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_212 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_213 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_214 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_215 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_216 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_217 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_218 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_219 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_220 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_221 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_222 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_223 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_224 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_225 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_226 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_227 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_228 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_229 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_230 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_231 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_232 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_233 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_chirp_chirp */ { bhvChirpChirp, MODEL_NONE, 0 },
/* macro_seaweed_bundle */ { bhvSeaweedBundle, MODEL_NONE, 0 },
/* macro_beta_chest */ { bhvBetaChestBottom, MODEL_TREASURE_CHEST_BASE, 0 }, // unused
/* macro_water_mine */ { bhvBowserBomb, MODEL_WATER_MINE, 0 }, // unused
/* macro_fish_spawner_many_cyan */ { bhvFishSpawner, MODEL_NONE, FISH_SPAWNER_BP_MANY_CYAN }, // unused
/* macro_fish_spawner_few_cyan */ { bhvFishSpawner, MODEL_NONE, FISH_SPAWNER_BP_FEW_CYAN },
/* macro_jet_stream_ring_spawner_1 */ { bhvJetStreamRingSpawner, MODEL_WATER_RING, 0 }, // unused
/* macro_jet_stream_ring_spawner_2 */ { bhvJetStreamRingSpawner, MODEL_WATER_RING, 0 }, // unused
/* macro_skeeter */ { bhvSkeeter, MODEL_SKEETER, 0 },
/* macro_clam_shell */ { bhvClamShell, MODEL_CLAM_SHELL, 0 },
/* macro_empty_244 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_245 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_246 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_247 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_248 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_249 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_250 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_cage_ukiki */ { bhvMacroUkiki, MODEL_UKIKI, UKIKI_BP_CAGE }, // unused
/* macro_cap_ukiki */ { bhvMacroUkiki, MODEL_UKIKI, UKIKI_BP_CAP }, // unused
/* macro_piranha_plant */ { bhvPiranhaPlant, MODEL_PIRANHA_PLANT, 0 }, // unused
/* macro_empty_254 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_whomp */ { bhvSmallWhomp, MODEL_WHOMP, 0 },
/* macro_chain_chomp */ { bhvChainChomp, MODEL_CHAIN_CHOMP, 0 },
/* macro_empty_257 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_koopa */ { bhvKoopa, MODEL_KOOPA_WITH_SHELL, KOOPA_BP_NORMAL },
/* macro_koopa_shellless */ { bhvKoopa, MODEL_KOOPA_WITHOUT_SHELL, KOOPA_BP_UNSHELLED }, // unused
/* macro_wooden_post_2 */ { bhvWoodenPost, MODEL_WOODEN_POST, 0 }, // unused
/* macro_fire_piranha_plant_1 */ { bhvFirePiranhaPlant, MODEL_PIRANHA_PLANT, 0 },
/* macro_fire_piranha_plant_2 */ { bhvFirePiranhaPlant, MODEL_PIRANHA_PLANT, 1 }, // unused
/* macro_koopa_tiny */ { bhvKoopa, MODEL_KOOPA_WITH_SHELL, KOOPA_BP_TINY },
/* macro_empty_264 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_265 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_266 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_267 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_268 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_269 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_270 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_271 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_272 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_273 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_274 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_275 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_276 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_277 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_278 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_279 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_280 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_moneybag */ { bhvMoneybagHidden, MODEL_YELLOW_COIN, 0 },
/* macro_empty_282 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_283 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_284 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_285 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_286 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_287 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_288 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_swoop_1 */ { bhvSwoop, MODEL_SWOOP, 0 },
/* macro_swoop_2 */ { bhvSwoop, MODEL_SWOOP, 1 },
/* macro_mr_i */ { bhvMrI, MODEL_NONE, 0 },
/* macro_scuttlebug_spawner */ { bhvScuttlebugSpawn, MODEL_NONE, 0 },
/* macro_scuttlebug */ { bhvScuttlebug, MODEL_SCUTTLEBUG, 0 },
/* macro_empty_294 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_295 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_296 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_297 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_298 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_299 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_300 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_301 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_302 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_unknown_303 */ { bhvYellowCoin, MODEL_UNKNOWN_54, 0 }, // unused
/* macro_empty_304 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_305 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_306 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_307 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_308 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_309 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_310 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_311 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_312 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_ttc_rotating_cube */ { bhvTTCRotatingSolid, MODEL_TTC_ROTATING_CUBE, TTC_ROTATING_SOLID_BP_CUBE },
/* macro_ttc_rotating_prism */ { bhvTTCRotatingSolid, MODEL_TTC_ROTATING_PRISM, TTC_ROTATING_SOLID_BP_TRIANGULAR_PRISM },
/* macro_ttc_pendulum */ { bhvTTCPendulum, MODEL_TTC_PENDULUM, 0 },
/* macro_ttc_large_treadmill_1 */ { bhvTTCTreadmill, MODEL_TTC_LARGE_TREADMILL, TTC_TREADMILL_BP_LARGE_1 },
/* macro_ttc_small_treadmill_1 */ { bhvTTCTreadmill, MODEL_TTC_SMALL_TREADMILL, TTC_TREADMILL_BP_SMALL_1 },
/* macro_ttc_push_block */ { bhvTTCMovingBar, MODEL_TTC_PUSH_BLOCK, 0 },
/* macro_ttc_rotating_hexagon */ { bhvTTCCog, MODEL_TTC_ROTATING_HEXAGON, TTC_COG_BP_SHAPE_HEXAGON | TTC_COG_BP_DIR_CCW },
/* macro_ttc_rotating_triangle */ { bhvTTCCog, MODEL_TTC_ROTATING_TRIANGLE, TTC_COG_BP_SHAPE_TRIANGLE | TTC_COG_BP_DIR_CCW },
/* macro_ttc_pit_block_1 */ { bhvTTCPitBlock, MODEL_TTC_PIT_BLOCK, 0 },
/* macro_ttc_pit_block_2 */ { bhvTTCPitBlock, MODEL_TTC_PIT_BLOCK_UNUSED, 1 }, // unused
/* macro_ttc_elevator_platform */ { bhvTTCElevator, MODEL_TTC_ELEVATOR_PLATFORM, 0 },
/* macro_ttc_clock_hand */ { bhvTTC2DRotator, MODEL_TTC_CLOCK_HAND, 0 },
/* macro_ttc_spinner */ { bhvTTCSpinner, MODEL_TTC_SPINNER, 0 },
/* macro_ttc_small_gear */ { bhvTTC2DRotator, MODEL_TTC_SMALL_GEAR, 1 },
/* macro_ttc_large_gear */ { bhvTTC2DRotator, MODEL_TTC_LARGE_GEAR, 1 },
/* macro_ttc_large_treadmill_2 */ { bhvTTCTreadmill, MODEL_TTC_LARGE_TREADMILL, TTC_TREADMILL_BP_LARGE_2 },
/* macro_ttc_small_treadmill_2 */ { bhvTTCTreadmill, MODEL_TTC_SMALL_TREADMILL, TTC_TREADMILL_BP_SMALL_2 },
/* macro_empty_330 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_331 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_332 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_333 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_334 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_335 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_336 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_337 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_338 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_box_star_act_2 */ { bhvExclamationBox, MODEL_EXCLAMATION_BOX, EXCLAMATION_BOX_BP_STAR_ACT_2 },
/* macro_box_star_act_3 */ { bhvExclamationBox, MODEL_EXCLAMATION_BOX, EXCLAMATION_BOX_BP_STAR_ACT_3 },
/* macro_box_star_act_4 */ { bhvExclamationBox, MODEL_EXCLAMATION_BOX, EXCLAMATION_BOX_BP_STAR_ACT_4 },
/* macro_box_star_act_5 */ { bhvExclamationBox, MODEL_EXCLAMATION_BOX, EXCLAMATION_BOX_BP_STAR_ACT_5 }, // unused
/* macro_box_star_act_6 */ { bhvExclamationBox, MODEL_EXCLAMATION_BOX, EXCLAMATION_BOX_BP_STAR_ACT_6 },
/* macro_empty_344 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_345 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_346 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_347 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_348 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_349 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_bits_sliding_platform */ { bhvSlidingPlatform2, MODEL_BITS_SLIDING_PLATFORM, 0 }, // unused
/* macro_bits_twin_sliding_platforms */ { bhvSlidingPlatform2, MODEL_BITS_TWIN_SLIDING_PLATFORMS, 0 }, // unused
/* macro_bits_unknown_352 */ { bhvAnotherTiltingPlatform, MODEL_BITDW_SLIDING_PLATFORM, 0 }, // unused
/* macro_bits_octagonal_platform */ { bhvOctagonalPlatformRotating, MODEL_BITS_OCTAGONAL_PLATFORM, 0 }, // unused
/* macro_bits_staircase */ { bhvAnimatesOnFloorSwitchPress, MODEL_BITS_STAIRCASE, 0 }, // unused
/* macro_empty_355 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_356 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_bits_ferris_wheel_axle */ { bhvFerrisWheelAxle, MODEL_BITS_FERRIS_WHEEL_AXLE, 0 }, // unused
/* macro_bits_arrow_platform */ { bhvActivatedBackAndForthPlatform, MODEL_BITS_ARROW_PLATFORM, 0 }, // unused
/* macro_bits_seesaw_platform */ { bhvSeesawPlatform, MODEL_BITS_SEESAW_PLATFORM, 0 }, // unused
/* macro_bits_tilting_w_platform */ { bhvSeesawPlatform, MODEL_BITS_TILTING_W_PLATFORM, 0 }, // unused
/* macro_empty_361 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_362 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_363 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_364 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
/* macro_empty_365 */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },
};
STATIC_ASSERT(ARRAY_COUNT(sMacroObjectPresets) == macro_count,
"change this array if you are adding macro objects");

View file

@ -25,6 +25,12 @@
#define UNUSED
#endif
#ifdef VERSION_CN
#define UNUSED_CN UNUSED
#else
#define UNUSED_CN
#endif
// Avoid undefined behaviour for non-returning functions
#ifdef __GNUC__
#define NORETURN __attribute__((noreturn))
@ -69,4 +75,17 @@
#define VIRTUAL_TO_PHYSICAL2(addr) ((void *)(addr))
#endif
// Stubbed CN debug prints
#ifdef VERSION_CN
#define CN_DEBUG_PRINTF(args) osSyncPrintf args
#else
#define CN_DEBUG_PRINTF(args)
#endif
#ifdef VERSION_CN
#define FORCE_BSS __attribute__((nocommon)) __attribute__((section (".bss_cn")))
#else
#define FORCE_BSS
#endif
#endif // MACROS_H

View file

@ -1,8 +1,10 @@
// Assembly Macros
#ifndef VERSION_CN
.set gp=64
#endif
.set K0BASE, 0x80000000
.set K1BASE, 0xA0000000
.set K2BASE, 0xC0000000
.equ K0BASE, 0x80000000
.equ K1BASE, 0xA0000000
.equ K2BASE, 0xC0000000
.macro glabel label
.global \label

View file

@ -14,11 +14,6 @@
#define ALL_ACTS_MACRO ACT_1 | ACT_2 | ACT_3 | ACT_4 | ACT_5
#define ALL_ACTS ACT_1 | ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6
#define COIN_FORMATION_FLAG_VERTICAL (1 << 0)
#define COIN_FORMATION_FLAG_RING (1 << 1)
#define COIN_FORMATION_FLAG_ARROW (1 << 2)
#define COIN_FORMATION_FLAG_FLYING (1 << 4)
#define MODEL_NONE 0x00
/* Global models that are loaded for every level */

View file

@ -18,7 +18,6 @@
#define ACTIVE_FLAG_UNK9 (1 << 9) // 0x0200
#define ACTIVE_FLAG_UNK10 (1 << 10) // 0x0400
/* respawnInfoType */
#define RESPAWN_INFO_TYPE_NULL 0
#define RESPAWN_INFO_TYPE_32 1
@ -122,6 +121,15 @@
#define OBJ_ACT_VERTICAL_KNOCKBACK 101
#define OBJ_ACT_SQUISHED 102
/* Star Index */
#define STAR_INDEX_ACT_1 0
#define STAR_INDEX_ACT_2 1
#define STAR_INDEX_ACT_3 2
#define STAR_INDEX_ACT_4 3
#define STAR_INDEX_ACT_5 4
#define STAR_INDEX_ACT_6 5
#define STAR_INDEX_100_COINS 6
/* gTTCSpeedSetting */
#define TTC_SPEED_SLOW 0
#define TTC_SPEED_FAST 1
@ -129,7 +137,7 @@
#define TTC_SPEED_STOPPED 3
/* Bob-omb */
/* oBehParams2ndByte */
/* oBhvParams2ndByte */
#define BOBOMB_BP_STYPE_GENERIC 0
#define BOBOMB_BP_STYPE_STATIONARY 1
@ -141,6 +149,29 @@
#define BOBOMB_ACT_LAVA_DEATH 100
#define BOBOMB_ACT_DEATH_PLANE_DEATH 101
/* Coin Formation */
/* oAction */
#define COIN_FORMATION_ACT_SPAWN_COINS 0
#define COIN_FORMATION_ACT_IDLE 1
#define COIN_FORMATION_ACT_RESPAWN_COINS 2
/* oBhvParams2ndByte */
#define COIN_FORMATION_BP_FLAG_HORIZONTAL (0 << 0)
#define COIN_FORMATION_BP_FLAG_VERTICAL (1 << 0)
#define COIN_FORMATION_BP_FLAG_RING (1 << 1)
#define COIN_FORMATION_BP_FLAG_ARROW (1 << 2)
#define COIN_FORMATION_BP_FLAG_FLYING (1 << 4)
#define COIN_FORMATION_BP_FLAG_MASK (COIN_FORMATION_BP_FLAG_HORIZONTAL | \
COIN_FORMATION_BP_FLAG_VERTICAL | \
COIN_FORMATION_BP_FLAG_RING | \
COIN_FORMATION_BP_FLAG_ARROW)
#define COIN_FORMATION_BP_LINE_HORIZONTAL (COIN_FORMATION_BP_FLAG_HORIZONTAL)
#define COIN_FORMATION_BP_LINE_VERTICAL (COIN_FORMATION_BP_FLAG_VERTICAL)
#define COIN_FORMATION_BP_RING_HORIZONTAL (COIN_FORMATION_BP_FLAG_HORIZONTAL | COIN_FORMATION_BP_FLAG_RING)
#define COIN_FORMATION_BP_RING_VERTICAL (COIN_FORMATION_BP_FLAG_VERTICAL | COIN_FORMATION_BP_FLAG_RING)
#define COIN_FORMATION_BP_ARROW (COIN_FORMATION_BP_FLAG_ARROW)
/* Hidden Blue Coin */
/* oAction */
#define HIDDEN_BLUE_COIN_ACT_INACTIVE 0
@ -166,7 +197,7 @@
#define MOV_YCOIN_ACT_DEATH_PLANE_DEATH 101
/* Bob-omb Buddy */
/* oBehParams2ndByte */
/* oBhvParams2ndByte */
#define BOBOMB_BUDDY_BP_STYPE_GENERIC 0
#define BOBOMB_BUDDY_BP_STYPE_BOB_GRASS_KBB 1
#define BOBOMB_BUDDY_BP_STYPE_BOB_CANNON_KBB 2
@ -248,7 +279,7 @@
#define BOWSER_ANIM_FLIP 25
#define BOWSER_ANIM_STAND_UP_FROM_FLIP 26
/* oBehParams2ndByte */
/* oBhvParams2ndByte */
#define BOWSER_BP_BITDW 0
#define BOWSER_BP_BITFS 1
#define BOWSER_BP_BITS 2
@ -298,7 +329,7 @@
#define BOWSER_SUB_ACT_JUMP_ON_STAGE_LAND 2
#define BOWSER_SUB_ACT_JUMP_ON_STAGE_STOP 3
/* Bowser Bits Platform*/
/* Bowser BitS Platform */
/* oAction */
#define BOWSER_BITS_PLAT_ACT_START 0
#define BOWSER_BITS_PLAT_ACT_CHECK 1
@ -310,7 +341,7 @@
#define FISH_SPAWNER_ACT_IDLE 1
#define FISH_SPAWNER_ACT_RESPAWN 2
/* oBehParams2ndByte */
/* oBhvParams2ndByte */
#define FISH_SPAWNER_BP_MANY_BLUE 0
#define FISH_SPAWNER_BP_FEW_BLUE 1
#define FISH_SPAWNER_BP_MANY_CYAN 2
@ -322,7 +353,7 @@
#define FISH_ACT_ROAM 1
#define FISH_ACT_FLEE 2
/* Blue_Fish */
/* Blue Fish */
/* oAction */
#define BLUE_FISH_ACT_DIVE 0
#define BLUE_FISH_ACT_TURN 1
@ -350,7 +381,7 @@
#define HOMING_AMP_ACT_ATTACK_COOLDOWN 4
/* Amp */
/* oBehParams2ndByte */
/* oBhvParams2ndByte */
#define AMP_BP_ROT_RADIUS_200 0
#define AMP_BP_ROT_RADIUS_300 1
#define AMP_BP_ROT_RADIUS_400 2
@ -377,8 +408,8 @@
#define HOOT_ACT_CARRY 1
#define HOOT_ACT_TIRED 2
/* Bully (all variants) */
/* oBehParams2ndByte */
/* Bully (All variants) */
/* oBhvParams2ndByte */
#define BULLY_BP_SIZE_SMALL 0
#define BULLY_BP_SIZE_BIG 1
@ -397,7 +428,7 @@
#define BULLY_STYPE_MINION 1
#define BULLY_STYPE_CHILL 16
/* Water Ring (all variants) */
/* Water Ring (All variants) */
/* oAction */
#define WATER_RING_ACT_NOT_COLLECTED 0
#define WATER_RING_ACT_COLLECTED 1
@ -417,7 +448,7 @@
#define LLL_DRAWBRIDGE_ACT_LOWER 0
#define LLL_DRAWBRIDGE_ACT_RAISE 1
/* Bomp (both variants) */
/* Bomp (Both variants) */
/* oAction */
#define BOMP_ACT_WAIT 0
#define BOMP_ACT_POKE_OUT 1
@ -425,7 +456,7 @@
#define BOMP_ACT_RETRACT 3
/* WF Sliding Brick Platform */
/* oBehParams2ndByte */
/* oBhvParams2ndByte */
#define WF_SLID_BRICK_PTFM_BP_MOV_VEL_10 1
#define WF_SLID_BRICK_PTFM_BP_MOV_VEL_15 2
#define WF_SLID_BRICK_PTFM_BP_MOV_VEL_20 3
@ -462,8 +493,8 @@
#define BBALL_ACT_INITIALIZE 0
#define BBALL_ACT_ROLL 1
/* Bowling Ball + Bowling Ball Spawner (all variants) */
/* oBehParams2ndByte */
/* Bowling Ball + Bowling Ball Spawner (All variants) */
/* oBhvParams2ndByte */
#define BBALL_BP_STYPE_BOB_UPPER 0
#define BBALL_BP_STYPE_TTM 1
#define BBALL_BP_STYPE_BOB_LOWER 2
@ -499,6 +530,17 @@
#define BOO_ATTACKED 1
#define BOO_BOUNCED_ON -1
/* oBhvParams2ndByte */
#define BOO_BP_GHOST_HUNT 0
#define BOO_BP_GENERIC 1
#define BOO_BP_MERRY_GO_ROUND 2
/* Big Boo */
/* oBhvParams2ndByte */
#define BIG_BOO_BP_GHOST_HUNT 0
#define BIG_BOO_BP_MERRY_GO_ROUND 1
#define BIG_BOO_BP_BALCONY 2
/* Beta Boo Key */
/* oAction */
#define BETA_BOO_KEY_ACT_IN_BOO 0
@ -533,7 +575,7 @@
#define COFFIN_ACT_IDLE 0
#define COFFIN_ACT_STAND_UP 1
/* oBehParams2ndByte */
/* oBhvParams2ndByte */
#define COFFIN_BP_STATIC 0
/* WDW Arrow Lift */
@ -590,7 +632,7 @@
#define KOOPA_THE_QUICK_BOB_INDEX 0
#define KOOPA_THE_QUICK_THI_INDEX 1
/* oBehParams2ndByte */
/* oBhvParams2ndByte */
#define KOOPA_BP_UNSHELLED 0
#define KOOPA_BP_NORMAL 1
#define KOOPA_BP_KOOPA_THE_QUICK_BASE 2
@ -609,35 +651,40 @@
#define SWOOP_ACT_IDLE 0
#define SWOOP_ACT_MOVE 1
/* Fly guy */
/* Fly Guy */
/* oAction */
#define FLY_GUY_ACT_IDLE 0
#define FLY_GUY_ACT_APPROACH_MARIO 1
#define FLY_GUY_ACT_LUNGE 2
#define FLY_GUY_ACT_SHOOT_FIRE 3
/* Goomba triplet spawner */
/* oBehParams2ndByte */
#define GOOMBA_TRIPLET_SPAWNER_BP_SIZE_MASK 0x00000003
#define GOOMBA_TRIPLET_SPAWNER_BP_EXTRA_GOOMBAS_MASK 0x000000FC
/* oAction */
#define GOOMBA_TRIPLET_SPAWNER_ACT_UNLOADED 0
#define GOOMBA_TRIPLET_SPAWNER_ACT_LOADED 1
/* oBhvParams2ndByte */
#define FLY_GUY_BP_GENERIC 0
#define FLY_GUY_BP_FIRE 1
/* Goomba */
/* oBehParams2ndByte */
#define GOOMBA_BP_SIZE_MASK 0x00000003
#define GOOMBA_SIZE_REGULAR 0
#define GOOMBA_SIZE_HUGE 1
#define GOOMBA_SIZE_TINY 2
#define GOOMBA_BP_TRIPLET_FLAG_MASK 0x000000FC
/* oAction */
#define GOOMBA_ACT_WALK 0
#define GOOMBA_ACT_ATTACKED_MARIO 1
#define GOOMBA_ACT_JUMP 2
/* Chain chomp */
/* oBhvParams2ndByte */
#define GOOMBA_SIZE_REGULAR 0
#define GOOMBA_SIZE_HUGE 1
#define GOOMBA_SIZE_TINY 2
#define GOOMBA_BP_SIZE_MASK (GOOMBA_SIZE_REGULAR | GOOMBA_SIZE_HUGE | GOOMBA_SIZE_TINY)
#define GOOMBA_BP_TRIPLET_RESPAWN_FLAG_MASK (0x000000FF & ~GOOMBA_BP_SIZE_MASK)
/* Goomba Triplet Spawner */
/* oAction */
#define GOOMBA_TRIPLET_SPAWNER_ACT_UNLOADED 0
#define GOOMBA_TRIPLET_SPAWNER_ACT_LOADED 1
/* oBhvParams2ndByte */
#define GOOMBA_TRIPLET_SPAWNER_BP_EXTRA_GOOMBAS_MASK (0x000000FF & ~GOOMBA_BP_SIZE_MASK)
#define GOOMBA_TRIPLET_SPAWNER_BP_EXTRA_GOOMBAS(num) ((num) << 2)
/* Chain Chomp */
/* oAction */
#define CHAIN_CHOMP_ACT_UNINITIALIZED 0
#define CHAIN_CHOMP_ACT_MOVE 1
@ -655,12 +702,12 @@
#define CHAIN_CHOMP_RELEASED_JUMP_AWAY 4
#define CHAIN_CHOMP_RELEASED_END_CUTSCENE 5
/* Chain chomp chain part */
/* oBehParams2ndByte */
/* Chain Chomp Chain Part */
/* oBhvParams2ndByte */
#define CHAIN_CHOMP_CHAIN_PART_BP_PIVOT 0
/* Wooden post */
/* oBehParams */
/* Wooden Post */
/* oBhvParams */
#define WOODEN_POST_BP_NO_COINS_MASK 0x0000FF00
/* Wiggler */
@ -684,7 +731,7 @@
#define SPINY_ACT_THROWN_BY_LAKITU 2
#define SPINY_ACT_ATTACKED_MARIO 3
/* Evil lakitu */
/* Evil Lakitu */
/* oAction */
#define ENEMY_LAKITU_ACT_UNINITIALIZED 0
#define ENEMY_LAKITU_ACT_MAIN 1
@ -701,17 +748,17 @@
#define CLOUD_ACT_UNLOAD 2
#define CLOUD_ACT_FWOOSH_HIDDEN 3
/* oBehParams2ndByte */
/* oBhvParams2ndByte */
#define CLOUD_BP_FWOOSH 0
#define CLOUD_BP_LAKITU_CLOUD 1
/* Camera lakitu */
/* Camera Lakitu */
/* oAction */
#define CAMERA_LAKITU_INTRO_ACT_TRIGGER_CUTSCENE 0
#define CAMERA_LAKITU_INTRO_ACT_SPAWN_CLOUD 1
#define CAMERA_LAKITU_INTRO_ACT_UNK2 2
/* oBehParams2ndByte */
/* oBhvParams2ndByte */
#define CAMERA_LAKITU_BP_FOLLOW_CAMERA 0
#define CAMERA_LAKITU_BP_INTRO 1
@ -720,7 +767,7 @@
#define MANTA_ACT_SPAWN_RINGS 0
#define MANTA_ACT_NO_RINGS 1
/* Monty mole */
/* Monty Mole */
/* oAction */
#define MONTY_MOLE_ACT_SELECT_HOLE 0
#define MONTY_MOLE_ACT_RISE_FROM_HOLE 1
@ -731,10 +778,11 @@
#define MONTY_MOLE_ACT_HIDE 6
#define MONTY_MOLE_ACT_JUMP_OUT_OF_HOLE 7
/* oBehParams2ndByte */
/* oBhvParams2ndByte */
#define MONTY_MOLE_BP_NO_ROCK 0
#define MONTY_MOLE_BP_GENERIC 1
/* Monty mole rock */
/* Monty Mole Rock */
/* oAction */
#define MONTY_MOLE_ROCK_ACT_HELD 0
#define MONTY_MOLE_ROCK_ACT_MOVE 1
@ -776,9 +824,9 @@
#define UKIKI_TEXT_DO_NOT_LET_GO 6
#define UKIKI_TEXT_STEAL_CAP 7
/* oBehParams2ndByte */
#define UKIKI_CAGE 0
#define UKIKI_CAP 1
/* oBhvParams2ndByte */
#define UKIKI_BP_CAGE 0
#define UKIKI_BP_CAP 1
/* Animations */
#define UKIKI_ANIM_RUN 0
@ -830,12 +878,13 @@
/* oPiranhaPlantSleepMusicState */
#define PIRANHA_PLANT_SLEEP_MUSIC_PLAYING 0
/* Piranha Plant bubble */
/* Piranha Plant Bubble */
/* oAction */
#define PIRANHA_PLANT_BUBBLE_ACT_IDLE 0
#define PIRANHA_PLANT_BUBBLE_ACT_GROW_SHRINK_LOOP 1
#define PIRANHA_PLANT_BUBBLE_ACT_BURST 2
/* Platform on track */
/* Platform on Track */
/* oAction */
#define PLATFORM_ON_TRACK_ACT_INIT 0
#define PLATFORM_ON_TRACK_ACT_WAIT_FOR_MARIO 1
@ -843,9 +892,9 @@
#define PLATFORM_ON_TRACK_ACT_PAUSE_BRIEFLY 3
#define PLATFORM_ON_TRACK_ACT_FALL 4
/* oBehParams >> 16 */
#define PLATFORM_ON_TRACK_BP_MASK_PATH 0xF
#define PLATFORM_ON_TRACK_BP_MASK_TYPE (0x7 << 4)
/* oBhvParams >> 16 */
#define PLATFORM_ON_TRACK_BP_MASK_PATH 0x000F
#define PLATFORM_ON_TRACK_BP_MASK_TYPE 0x0070
#define PLATFORM_ON_TRACK_BP_RETURN_TO_START (1 << 8)
#define PLATFORM_ON_TRACK_BP_DONT_DISAPPEAR (1 << 9)
#define PLATFORM_ON_TRACK_BP_DONT_TURN_YAW (1 << 10)
@ -856,35 +905,38 @@
#define PLATFORM_ON_TRACK_TYPE_CHECKERED 2
#define PLATFORM_ON_TRACK_TYPE_GRATE 3
/* Purple switch */
#define PURPLE_SWITCH_IDLE 0
#define PURPLE_SWITCH_PRESSED 1
#define PURPLE_SWITCH_TICKING 2
#define PURPLE_SWITCH_UNPRESSED 3
#define PURPLE_SWITCH_WAIT_FOR_MARIO_TO_GET_OFF 4
/* Purple Switch */
/* oAction */
#define PURPLE_SWITCH_ACT_IDLE 0
#define PURPLE_SWITCH_ACT_PRESSED 1
#define PURPLE_SWITCH_ACT_TICKING 2
#define PURPLE_SWITCH_ACT_UNPRESSED 3
#define PURPLE_SWITCH_ACT_WAIT_FOR_MARIO_TO_GET_OFF 4
/* Pyramid elevator */
#define PYRAMID_ELEVATOR_IDLE 0
#define PYRAMID_ELEVATOR_START_MOVING 1
#define PYRAMID_ELEVATOR_CONSTANT_VELOCITY 2
#define PYRAMID_ELEVATOR_AT_BOTTOM 3
/* Pyramid Elevator */
/* oAction */
#define PYRAMID_ELEVATOR_ACT_IDLE 0
#define PYRAMID_ELEVATOR_ACT_START_MOVING 1
#define PYRAMID_ELEVATOR_ACT_CONSTANT_VELOCITY 2
#define PYRAMID_ELEVATOR_ACT_AT_BOTTOM 3
/* Pyramid top */
/* Pyramid Top */
/* oAction */
#define PYRAMID_TOP_ACT_CHECK_IF_SOLVED 0
#define PYRAMID_TOP_ACT_SPINNING 1
#define PYRAMID_TOP_ACT_EXPLODE 2
/* Pyramid wall */
/* Pyramid Wall */
/* oAction */
#define PYRAMID_WALL_ACT_MOVING_DOWN 0
#define PYRAMID_WALL_ACT_MOVING_UP 1
/* oBehParams2ndByte */
/* oBhvParams2ndByte */
#define PYRAMID_WALL_BP_POSITION_HIGH 0
#define PYRAMID_WALL_BP_POSITION_MIDDLE 1
#define PYRAMID_WALL_BP_POSITION_LOW 2
/* Penguins (general) */
/* Penguins (General) */
/* Walking sounds */
#define PENGUIN_WALK_BABY 0
#define PENGUIN_WALK_BIG 1
@ -893,7 +945,7 @@
#define PENGUIN_ANIM_WALK 0
#define PENGUIN_ANIM_IDLE 3
/* Racing penguin */
/* Racing Penguin */
/* oAction */
#define RACING_PENGUIN_ACT_WAIT_FOR_MARIO 0
#define RACING_PENGUIN_ACT_SHOW_INIT_TEXT 1
@ -902,80 +954,98 @@
#define RACING_PENGUIN_ACT_FINISH_RACE 4
#define RACING_PENGUIN_ACT_SHOW_FINAL_TEXT 5
/* SL walking penguin */
/* oBhvParams2ndByte */
#define RACING_PENGUIN_BP_THIN 0
#define RACING_PENGUIN_BP_FAT 1
/* SL Walking Penguin */
/* oAction */
#define SL_WALKING_PENGUIN_ACT_MOVING_FORWARDS 0
#define SL_WALKING_PENGUIN_ACT_TURNING_BACK 1
#define SL_WALKING_PENGUIN_ACT_RETURNING 2
#define SL_WALKING_PENGUIN_ACT_TURNING_FORWARDS 3
/* Snowman wind */
/* Snowman Wind */
/* oSubAction */
#define SL_SNOWMAN_WIND_ACT_IDLE 0
#define SL_SNOWMAN_WIND_ACT_TALKING 1
#define SL_SNOWMAN_WIND_ACT_BLOWING 2
/* Water bomb */
/* Water Bomb */
/* oAction */
#define WATER_BOMB_ACT_SHOT_FROM_CANNON 0
#define WATER_BOMB_ACT_INIT 1
#define WATER_BOMB_ACT_DROP 2
#define WATER_BOMB_ACT_EXPLODE 3
/* TTC rotating solid */
/* oBehParams2ndByte */
/* TTC Rotating Solid */
/* oBhvParams2ndByte */
#define TTC_ROTATING_SOLID_BP_CUBE 0
#define TTC_ROTATING_SOLID_BP_TRIANGULAR_PRISM 1
/* TTC moving bar */
/* TTC Treadmill */
/* oBhvParams2ndByte */
#define TTC_TREADMILL_BP_FLAG_LARGE (0 << 0)
#define TTC_TREADMILL_BP_FLAG_SMALL (1 << 0)
#define TTC_TREADMILL_BP_FLAG_MASK (TTC_TREADMILL_BP_FLAG_LARGE | TTC_TREADMILL_BP_FLAG_SMALL)
#define TTC_TREADMILL_BP_LARGE_1 ((0 << 1) | TTC_TREADMILL_BP_FLAG_LARGE)
#define TTC_TREADMILL_BP_SMALL_1 ((0 << 1) | TTC_TREADMILL_BP_FLAG_SMALL)
#define TTC_TREADMILL_BP_LARGE_2 ((1 << 1) | TTC_TREADMILL_BP_FLAG_LARGE)
#define TTC_TREADMILL_BP_SMALL_2 ((1 << 1) | TTC_TREADMILL_BP_FLAG_SMALL)
/* TTC Moving Bar */
/* oAction */
#define TTC_MOVING_BAR_ACT_WAIT 0
#define TTC_MOVING_BAR_ACT_PULL_BACK 1
#define TTC_MOVING_BAR_ACT_EXTEND 2
#define TTC_MOVING_BAR_ACT_RETRACT 3
/* TTC cog */
/* oBehParams2ndByte */
#define TTC_COG_BP_SHAPE_MASK 0x00000002
/* TTC Cog */
/* oBhvParams2ndByte */
#define TTC_COG_BP_SHAPE_HEXAGON (0 << 1)
#define TTC_COG_BP_SHAPE_TRIANGLE (1 << 1)
#define TTC_COG_BP_DIR_MASK 0x00000001
#define TTC_COG_BP_SHAPE_MASK (TTC_COG_BP_SHAPE_HEXAGON | TTC_COG_BP_SHAPE_TRIANGLE)
#define TTC_COG_BP_DIR_CCW (0 << 0) // TODO: Check these
#define TTC_COG_BP_DIR_CW (1 << 0)
#define TTC_COG_BP_DIR_MASK (TTC_COG_BP_DIR_CCW | TTC_COG_BP_DIR_CW)
/* TTC 2D Rotator */
/* oBehParams2ndByte */
/* oBhvParams2ndByte */
#define TTC_2D_ROTATOR_BP_HAND 0
#define TTC_2D_ROTATOR_BP_2D_COG 1
/* Activated Back-and-Forth Platform */
/* ((u16)(o->oBehParams >> 16) & 0x0300) >> 8 aka platform type */
#define ACTIVATED_BF_PLAT_TYPE_BITS_ARROW_PLAT 0
#define ACTIVATED_BF_PLAT_TYPE_BITFS_MESH_PLAT 1
#define ACTIVATED_BF_PLAT_TYPE_BITFS_ELEVATOR 2
/* oBhvParams >> 16 */
#define ACTIVATED_BF_PLAT_BP_MASK_TYPE ((ACTIVATED_BF_PLAT_TYPE_BITS_ARROW_PLAT | \
ACTIVATED_BF_PLAT_TYPE_BITFS_MESH_PLAT | \
ACTIVATED_BF_PLAT_TYPE_BITFS_ELEVATOR) << 8)
/* Dorrie */
/* oAction */
#define DORRIE_ACT_MOVE 0
#define DORRIE_ACT_LOWER_HEAD 1
#define DORRIE_ACT_RAISE_HEAD 2
/* Mad piano */
/* Mad Piano */
/* oAction */
#define MAD_PIANO_ACT_WAIT 0
#define MAD_PIANO_ACT_ATTACK 1
/* Fire piranha plant */
/* Fire Piranha Plant */
/* oAction */
#define FIRE_PIRANHA_PLANT_ACT_HIDE 0
#define FIRE_PIRANHA_PLANT_ACT_GROW 1
/* Fire spitter */
/* Fire Spitter */
/* oAction */
#define FIRE_SPITTER_ACT_IDLE 0
#define FIRE_SPITTER_ACT_SPIT_FIRE 1
/* Eyerok boss */
/* Eyerok Boss */
/* oAction */
#define EYEROK_BOSS_ACT_SLEEP 0
#define EYEROK_BOSS_ACT_WAKE_UP 1
@ -983,7 +1053,7 @@
#define EYEROK_BOSS_ACT_FIGHT 3
#define EYEROK_BOSS_ACT_DIE 4
/* Eyerok hand */
/* Eyerok Hand */
/* oAction */
#define EYEROK_HAND_ACT_SLEEP 0
#define EYEROK_HAND_ACT_IDLE 1
@ -1023,7 +1093,7 @@
#define BIRD_ACT_INACTIVE 0
#define BIRD_ACT_FLY 1
/* oBehParams2ndByte */
/* oBhvParams2ndByte */
#define BIRD_BP_SPAWNED 0
#define BIRD_BP_SPAWNER 1
@ -1049,23 +1119,28 @@
#define TWEESTER_SUB_ACT_CHASE 0
/* Triplet butterfly */
/* Triplet Butterfly */
/* oAction */
#define TRIPLET_BUTTERFLY_ACT_INIT 0
#define TRIPLET_BUTTERFLY_ACT_WANDER 1
#define TRIPLET_BUTTERFLY_ACT_ACTIVATE 2
#define TRIPLET_BUTTERFLY_ACT_EXPLODE 3
/* oBehParams2ndByte */
#define TRIPLET_BUTTERFLY_BP_BUTTERFLY_NUM 0x00000003
#define TRIPLET_BUTTERFLY_BP_NO_BOMBS 0x00000004
/* oBhvParams2ndByte */
#define TRIPLET_BUTTERFLY_BP_SPAWN_TYPE_SPAWNER (0 << 0)
#define TRIPLET_BUTTERFLY_BP_SPAWN_TYPE_SPAWNED_1 (1 << 0)
#define TRIPLET_BUTTERFLY_BP_SPAWN_TYPE_SPAWNED_2 (1 << 1)
#define TRIPLET_BUTTERFLY_BP_SPAWN_TYPE_MASK (TRIPLET_BUTTERFLY_BP_SPAWN_TYPE_SPAWNER | \
TRIPLET_BUTTERFLY_BP_SPAWN_TYPE_SPAWNED_1 | \
TRIPLET_BUTTERFLY_BP_SPAWN_TYPE_SPAWNED_2)
#define TRIPLET_BUTTERFLY_BP_NO_BOMBS (1 << 2)
/* oTripletButterflyType */
#define TRIPLET_BUTTERFLY_TYPE_NORMAL -1
#define TRIPLET_BUTTERFLY_TYPE_EXPLODES 0
#define TRIPLET_BUTTERFLY_TYPE_SPAWN_1UP 1
/* Water level diamond */
/* Water Level Diamond */
/* oAction */
// Loading
#define WATER_LEVEL_DIAMOND_ACT_INIT 0
@ -1089,6 +1164,10 @@
#define MIPS_STAR_STATUS_SHOULD_SPAWN_STAR 1
#define MIPS_STAR_STATUS_ALREADY_SPAWNED_STAR 2
/* oBhvParams2ndByte */
#define MIPS_BP_15_STARS 0
#define MIPS_BP_50_STARS 1
/* Falling Pillar */
/* oAction */
#define FALLING_PILLAR_ACT_IDLE 0
@ -1112,8 +1191,119 @@
#define MR_BLIZZARD_ACT_DEATH 6
#define MR_BLIZZARD_ACT_JUMP 7
/* oBehParams2ndByte */
#define MR_BLIZZARD_STYPE_NO_CAP 0
/* oBhvParams2ndByte */
#define MR_BLIZZARD_STYPE_GENERIC 0
#define MR_BLIZZARD_STYPE_JUMPING 1
#define MR_BLIZZARD_STYPE_CAP 2
/* Whomp */
/* oBhvParams2ndByte */
#define WHOMP_BP_SMALL 0
#define WHOMP_BP_KING 1
/* 1-Up Mushroom */
/* oBhvParams2ndByte */
#define ONE_UP_BP_GENERIC 0
#define ONE_UP_BP_BEAT_BITDW_BOWSER 1
#define ONE_UP_BP_BEAT_BITFS_BOWSER 2
/* Breakable Box */
/* oBhvParams2ndByte */
#define BREAKABLE_BOX_BP_NO_COINS 0
#define BREAKABLE_BOX_BP_3_COINS 1
#define BREAKABLE_BOX_BP_5_COINS 2
#define BREAKABLE_BOX_BP_GIANT 3
/* Hidden Object */
/* oAction */
#define HIDDEN_OBJECT_ACT_INACTIVE 0
#define HIDDEN_OBJECT_ACT_ACTIVE 1
#define HIDDEN_OBJECT_ACT_BROKEN 2
/* oBhvParams2ndByte */
#define HIDDEN_OBJECT_BP_BREAKABLE_BOX 0
#define HIDDEN_OBJECT_BP_WDW_PLATFORM 1
#define HIDDEN_OBJECT_BP_UNBREAKABLE_BOX_UNUSED_1 1
#define HIDDEN_OBJECT_BP_UNBREAKABLE_BOX_UNUSED_2 2
/* Exclamation Box */
/* oAnimState */
#define EXCLAMATION_BOX_ANIM_STATE_WING_CAP 0
#define EXCLAMATION_BOX_ANIM_STATE_METAL_CAP 1
#define EXCLAMATION_BOX_ANIM_STATE_VANISH_CAP 2
#define EXCLAMATION_BOX_ANIM_STATE_DEFAULT 3
/* oBhvParams2ndByte */
#define EXCLAMATION_BOX_BP_WING_CAP 0
#define EXCLAMATION_BOX_BP_METAL_CAP 1
#define EXCLAMATION_BOX_BP_VANISH_CAP 2
#define EXCLAMATION_BOX_BP_SPECIAL_CAP_END 2
#define EXCLAMATION_BOX_BP_KOOPA_SHELL 3
#define EXCLAMATION_BOX_BP_ONE_COIN 4
#define EXCLAMATION_BOX_BP_THREE_COINS 5
#define EXCLAMATION_BOX_BP_TEN_COINS 6
#define EXCLAMATION_BOX_BP_1UP_WALKING 7
#define EXCLAMATION_BOX_BP_STAR_ACT_1 8
#define EXCLAMATION_BOX_BP_1UP_RUNNING_AWAY 9
#define EXCLAMATION_BOX_BP_STAR_ACT_2 10
#define EXCLAMATION_BOX_BP_STAR_ACT_3 11
#define EXCLAMATION_BOX_BP_STAR_ACT_4 12
#define EXCLAMATION_BOX_BP_STAR_ACT_5 13
#define EXCLAMATION_BOX_BP_STAR_ACT_6 14
#define EXCLAMATION_BOX_BP_END 99
/* Cap Switch */
/* oBhvParams2ndByte */
#define CAP_SWITCH_BP_RED 0
#define CAP_SWITCH_BP_GREEN 1
#define CAP_SWITCH_BP_BLUE 2
#define CAP_SWITCH_BP_YELLOW 3
/* Openable Grill */
/* oBhvParams2ndByte */
#define OPENABLE_GRILL_BP_BOB 0
#define OPENABLE_GRILL_BP_HMC 1
/* WF Rotating Wooden Platform */
/* oAction */
#define WF_ROTATING_WOODEN_PLATFORM_ACT_IDLE 0
#define WF_ROTATING_WOODEN_PLATFORM_ACT_ROTATING 1
/* Rotating Platform */
/* oBhvParams2ndByte */
#define ROTATING_PLATFORM_BP_WF 0
#define ROTATING_PLATFORM_BP_WDW 1
/* Tumbling Bridge */
/* oBhvParams2ndByte */
#define TUMBLING_BRIDGE_BP_WF 0
#define TUMBLING_BRIDGE_BP_BBH 1
#define TUMBLING_BRIDGE_BP_LLL 2
#define TUMBLING_BRIDGE_BP_BITFS 3
/* Grindel or Thwomp */
/* oAction */
#define GRINDEL_THWOMP_ACT_RAISE 0
#define GRINDEL_THWOMP_ACT_IDLE_AT_TOP 1
#define GRINDEL_THWOMP_ACT_LOWER 2
#define GRINDEL_THWOMP_ACT_LAND 3
#define GRINDEL_THWOMP_ACT_IDLE_AT_BOTTOM 4
/* Tox Box */
/* oAction */
#define TOX_BOX_ACT_INIT 0
#define TOX_BOX_ACT_ROLL_LAND 1
#define TOX_BOX_ACT_IDLE 2
#define TOX_BOX_ACT_UNUSED_IDLE 3
#define TOX_BOX_ACT_ROLL_FORWARD 4
#define TOX_BOX_ACT_ROLL_BACKWARD 5
#define TOX_BOX_ACT_ROLL_RIGHT 6
#define TOX_BOX_ACT_ROLL_LEFT 7
#define TOX_BOX_ACT_TABLE_END -1
/* oBhvParams2ndByte */
#define TOX_BOX_BP_MOVEMENT_PATTERN_1 0
#define TOX_BOX_BP_MOVEMENT_PATTERN_2 1
#define TOX_BOX_BP_MOVEMENT_PATTERN_3 2
#endif // OBJECT_CONSTANTS_H

View file

@ -101,7 +101,7 @@
#define /*0x138*/ oParentRelativePosX OBJECT_FIELD_F32(O_PARENT_RELATIVE_POS_INDEX + 0)
#define /*0x13C*/ oParentRelativePosY OBJECT_FIELD_F32(O_PARENT_RELATIVE_POS_INDEX + 1)
#define /*0x140*/ oParentRelativePosZ OBJECT_FIELD_F32(O_PARENT_RELATIVE_POS_INDEX + 2)
#define /*0x144*/ oBehParams2ndByte OBJECT_FIELD_S32(0x2F)
#define /*0x144*/ oBhvParams2ndByte OBJECT_FIELD_S32(0x2F)
// 0x148 unused, possibly a third param byte.
#define /*0x14C*/ oAction OBJECT_FIELD_S32(0x31)
#define /*0x150*/ oSubAction OBJECT_FIELD_S32(0x32)
@ -118,7 +118,7 @@
#define /*0x17C*/ oOpacity OBJECT_FIELD_S32(0x3D)
#define /*0x180*/ oDamageOrCoinValue OBJECT_FIELD_S32(0x3E)
#define /*0x184*/ oHealth OBJECT_FIELD_S32(0x3F)
#define /*0x188*/ oBehParams OBJECT_FIELD_S32(0x40)
#define /*0x188*/ oBhvParams OBJECT_FIELD_S32(0x40)
#define /*0x18C*/ oPrevAction OBJECT_FIELD_S32(0x41)
#define /*0x190*/ oInteractionSubtype OBJECT_FIELD_U32(0x42)
#define /*0x194*/ oCollisionDistance OBJECT_FIELD_F32(0x43)
@ -126,7 +126,7 @@
#define /*0x19C*/ oDrawingDistance OBJECT_FIELD_F32(0x45)
#define /*0x1A0*/ oRoom OBJECT_FIELD_S32(0x46)
// 0x1A4 is unused, possibly related to 0x1A8 in removed macro purposes.
#define /*0x1A8*/ oUnk1A8 OBJECT_FIELD_U32(0x48)
#define /*0x1A8*/ oUnusedBhvParams OBJECT_FIELD_U32(0x48)
// 0x1AC-0x1B2 (0x48-0x4A) are object specific and defined below the common fields.
#define /*0x1B4*/ oWallAngle OBJECT_FIELD_S32(0x4B)
#define /*0x1B8*/ oFloorType OBJECT_FIELD_S16(0x4C, 0)
@ -165,8 +165,8 @@
#define /*0x110*/ oMarioSteepJumpYaw OBJECT_FIELD_S32(0x22)
#define /*0x110*/ oMarioWalkingPitch OBJECT_FIELD_S32(0x22)
/* 1-Up Hidden */
#define /*0x0F4*/ o1UpHiddenUnkF4 OBJECT_FIELD_S32(0x1B)
/* Hidden 1-Up */
#define /*0x0F4*/ oHidden1UpNumTouchedTriggers OBJECT_FIELD_S32(0x1B)
/* Activated Back and Forth Platform */
#define /*0x0F4*/ oActivatedBackAndForthPlatformMaxOffset OBJECT_FIELD_F32(0x1B)
@ -278,7 +278,7 @@
#define /*0x0F4*/ oBowserStatus OBJECT_FIELD_S32(0x1B)
#define /*0x0F8*/ oBowserTimer OBJECT_FIELD_S32(0x1C)
#define /*0x0FC*/ oBowserDistToCenter OBJECT_FIELD_F32(0x1D)
#define /*0x106*/ oBowserBitsJustJump OBJECT_FIELD_S16(0x1F, 1)
#define /*0x106*/ oBowserBitSJustJump OBJECT_FIELD_S16(0x1F, 1)
#define /*0x108*/ oBowserRandSplitFloor OBJECT_FIELD_S16(0x20, 0)
#define /*0x10A*/ oBowserHeldAnglePitch OBJECT_FIELD_S16(0x20, 1)
#define /*0x10D*/ oBowserHeldAngleVelYaw OBJECT_FIELD_S16(0x21, 0)
@ -398,11 +398,11 @@
#define /*0x1AC*/ oCloudFwooshMovementRadius OBJECT_FIELD_S16(0x49, 0)
/* Coin */
#define /*0x0F4*/ oCoinUnkF4 OBJECT_FIELD_S32(0x1B)
#define /*0x0F8*/ oCoinUnkF8 OBJECT_FIELD_S32(0x1C)
#define /*0x110*/ oCoinUnk110 OBJECT_FIELD_F32(0x22)
#define /*0x0F4*/ oCoinCollectedFlags OBJECT_FIELD_S32(0x1B)
#define /*0x0F8*/ oCoinOnGround OBJECT_FIELD_S32(0x1C)
#define /*0x110*/ oCoinBaseVelY OBJECT_FIELD_F32(0x22)
#ifndef VERSION_JP
#define /*0x1B0*/ oCoinUnk1B0 OBJECT_FIELD_S32(0x4A)
#define /*0x1B0*/ oCoinNumBounceSoundPlayed OBJECT_FIELD_S32(0x4A)
#endif
/* Collision Particle */
@ -569,7 +569,7 @@
#define /*0x0F4*/ oHeaveHoUnkF4 OBJECT_FIELD_F32(0x1B)
/* Hidden Object */
#define /*0x0F4*/ oHiddenObjectUnkF4 OBJECT_FIELD_OBJ(0x1B)
#define /*0x0F4*/ oHiddenObjectPurpleSwitch OBJECT_FIELD_OBJ(0x1B)
/* Hoot */
#define /*0x0F4*/ oHootAvailability OBJECT_FIELD_S32(0x1B)
@ -725,7 +725,7 @@
/* Openable Grill */
#define /*0x088*/ oOpenableGrillUnk88 OBJECT_FIELD_S32(0x00)
#define /*0x0F4*/ oOpenableGrillUnkF4 OBJECT_FIELD_OBJ(0x1B)
#define /*0x0F4*/ oOpenableGrillPurpleSwitch OBJECT_FIELD_OBJ(0x1B)
/* Intro Cutscene Peach */
#define /*0x108*/ oIntroPeachYawFromFocus OBJECT_FIELD_F32(0x20)
@ -770,12 +770,12 @@
#define /*0x0F8*/ oPitouneUnkF8 OBJECT_FIELD_F32(0x1C)
#define /*0x0FC*/ oPitouneUnkFC OBJECT_FIELD_F32(0x1D)
/* Falling Rising Bitfs Platform */
#define /*0x0F4*/ oBitfsPlatformTimer OBJECT_FIELD_S32(0x1B)
/* Falling Rising BitFS Platform */
#define /*0x0F4*/ oBitFSPlatformTimer OBJECT_FIELD_S32(0x1B)
/* Falling Bowser Bits Platform */
#define /*0x0F8*/ oBitsPlatformBowser OBJECT_FIELD_OBJ(0x1C)
#define /*0x0FC*/ oBitsPlatformTimer OBJECT_FIELD_S32(0x1D)
/* Falling Bowser BitS Platform */
#define /*0x0F8*/ oBitSPlatformBowser OBJECT_FIELD_OBJ(0x1C)
#define /*0x0FC*/ oBitSPlatformTimer OBJECT_FIELD_S32(0x1D)
/* WF Platform */
#define /*0x10C*/ oPlatformUnk10C OBJECT_FIELD_F32(0x21)
@ -831,10 +831,10 @@
/* Rolling Log */
#define /*0x0F4*/ oRollingLogUnkF4 OBJECT_FIELD_F32(0x1B)
/* Lll Rotating Hex Flame */
#define /*0x0F4*/ oLllRotatingHexFlameUnkF4 OBJECT_FIELD_F32(0x1B)
#define /*0x0F8*/ oLllRotatingHexFlameUnkF8 OBJECT_FIELD_F32(0x1C)
#define /*0x0FC*/ oLllRotatingHexFlameUnkFC OBJECT_FIELD_F32(0x1D)
/* LLL Rotating Hex Flame */
#define /*0x0F4*/ oLLLRotatingHexFlameUnkF4 OBJECT_FIELD_F32(0x1B)
#define /*0x0F8*/ oLLLRotatingHexFlameUnkF8 OBJECT_FIELD_F32(0x1C)
#define /*0x0FC*/ oLLLRotatingHexFlameUnkFC OBJECT_FIELD_F32(0x1D)
/* Scuttlebug */
#define /*0x0F4*/ oScuttlebugUnkF4 OBJECT_FIELD_S32(0x1B)
@ -863,10 +863,10 @@
#define /*0x100*/ oSkeeterWaitTime OBJECT_FIELD_S32(0x1E)
#define /*0x1AC*/ oSkeeterUnk1AC OBJECT_FIELD_S16(0x49, 0)
/* Jrb Sliding Box */
#define /*0x0F4*/ oJrbSlidingBoxUnkF4 OBJECT_FIELD_OBJ(0x1B)
#define /*0x0F8*/ oJrbSlidingBoxUnkF8 OBJECT_FIELD_S32(0x1C)
#define /*0x0FC*/ oJrbSlidingBoxUnkFC OBJECT_FIELD_F32(0x1D)
/* JRB Sliding Box */
#define /*0x0F4*/ oJRBSlidingBoxUnkF4 OBJECT_FIELD_OBJ(0x1B)
#define /*0x0F8*/ oJRBSlidingBoxUnkF8 OBJECT_FIELD_S32(0x1C)
#define /*0x0FC*/ oJRBSlidingBoxUnkFC OBJECT_FIELD_F32(0x1D)
/* WF Sliding Brick Platform */
#define /*0x0F4*/ oWFSlidBrickPtfmMovVel OBJECT_FIELD_F32(0x1B)
@ -952,8 +952,8 @@
#define /*0x0F8*/ oSwoopTargetPitch OBJECT_FIELD_S32(0x1C)
#define /*0x0FC*/ oSwoopTargetYaw OBJECT_FIELD_S32(0x1D)
/* Thwomp */
#define /*0x0F4*/ oThwompRandomTimer OBJECT_FIELD_S32(0x1B)
/* Grindel or Thwomp */
#define /*0x0F4*/ oGrindelThwompRandomTimer OBJECT_FIELD_S32(0x1B)
/* Tilting Platform */
#define /*0x0F4*/ oTiltingPyramidNormalX OBJECT_FIELD_F32(0x1B)
@ -962,13 +962,13 @@
#define /*0x10C*/ oTiltingPyramidMarioOnPlatform OBJECT_FIELD_S32(0x21)
/* Toad Message */
#define /*0x108*/ oToadMessageDialogId 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)
/* Tox Box */
#define /*0x1AC*/ oToxBoxMovementPattern OBJECT_FIELD_VPTR(0x49)
#define /*0x1B0*/ oToxBoxMovementStep OBJECT_FIELD_S32(0x4A)
#define /*0x1AC*/ oToxBoxActionTable OBJECT_FIELD_VPTR(0x49)
#define /*0x1B0*/ oToxBoxActionStep OBJECT_FIELD_S32(0x4A)
/* TTC Rotating Solid */
#define /*0x0F4*/ oTTCRotatingSolidNumTurns OBJECT_FIELD_S32(0x1B)
@ -1033,7 +1033,7 @@
#define /*0x0F8*/ oTreasureChestUnkF8 OBJECT_FIELD_S32(0x1C)
#define /*0x0FC*/ oTreasureChestUnkFC OBJECT_FIELD_S32(0x1D)
/* Tree Snow Or Leaf */
/* Tree Snow or Leaf */
#define /*0x0F4*/ oTreeSnowOrLeafUnkF4 OBJECT_FIELD_S32(0x1B)
#define /*0x0F8*/ oTreeSnowOrLeafUnkF8 OBJECT_FIELD_S32(0x1C)
#define /*0x0FC*/ oTreeSnowOrLeafUnkFC OBJECT_FIELD_S32(0x1D)
@ -1146,8 +1146,8 @@
#define /*0x1AC*/ oWigglerUnused OBJECT_FIELD_S16(0x49, 0)
#define /*0x1AE*/ oWigglerTextStatus OBJECT_FIELD_S16(0x49, 1)
/* Lll Wood Piece */
#define /*0x0F4*/ oLllWoodPieceOscillationTimer OBJECT_FIELD_S32(0x1B)
/* LLL Wood Piece */
#define /*0x0F4*/ oLLLWoodPieceOscillationTimer OBJECT_FIELD_S32(0x1B)
/* Wooden Post */
#define /*0x0F4*/ oWoodenPostTotalMarioAngle OBJECT_FIELD_S32(0x1B)

View file

@ -40,8 +40,15 @@ DECLARE_SEGMENT(engine)
DECLARE_SEGMENT(behavior)
DECLARE_SEGMENT(scripts)
DECLARE_SEGMENT(goddard)
extern u8 _goddardSegmentStart[];
#ifdef USE_EXT_RAM
extern u8 _engineSegmentStart[];
extern u8 _framebuffersSegmentNoloadStart[];
extern u8 _framebuffersSegmentNoloadEnd[];
#endif
DECLARE_LEVEL_SEGMENT(menu)
DECLARE_LEVEL_SEGMENT(intro)
DECLARE_LEVEL_SEGMENT(ending)

View file

@ -13,22 +13,21 @@
* linker script syntax.
*/
#define SEG_START 0x8005C000
#define SEG_FRAMEBUFFERS_SIZE (2 * SCREEN_WIDTH * SCREEN_HEIGHT * 3)
#define SEG_GODDARD_POOL_OFFSET 0x52000 // Offset from right side of pool
#define SEG_GODDARD (SEG_POOL_END - SEG_GODDARD_POOL_OFFSET)
#ifndef USE_EXT_RAM /* Default: Runs out of memory quickly when importing custom assets. */
#define SEG_POOL_START 0x8005C000
#define SEG_POOL_END SEG_BUFFERS
#define RDRAM_END 0x80400000
#define SEG_GODDARD 0x8016F000
#define SEG_POOL_START SEG_START
#define SEG_POOL_SIZE 0x165000
#define SEG_POOL_END (SEG_POOL_START + SEG_POOL_SIZE)
#define SEG_BUFFERS 0x801C1000
#if defined(VERSION_SH) || ENABLE_RUMBLE
#define SEG_MAIN 0x80249000
#elif defined(VERSION_EU)
#define SEG_MAIN 0x80241800 // TODO: Investigate why it's different?
#else
#define SEG_MAIN 0x80246000
#endif
#define SEG_BUFFERS SEG_POOL_END
#ifdef VERSION_EU
#define SEG_ENGINE 0x8036FF00
@ -36,7 +35,7 @@
#define SEG_ENGINE 0x80378800
#endif
#define SEG_FRAMEBUFFERS 0x8038F800
#define SEG_FRAMEBUFFERS (RDRAM_END - SEG_FRAMEBUFFERS_SIZE)
#else /* Use Expansion Pak space for pool. */
@ -45,14 +44,19 @@
* importing large custom content.
*/
#define SEG_BUFFERS 0x8005C000 // 0x0085000 in size
#define SEG_MAIN 0x800E1000 // 0x0132800 in size
#define SEG_ENGINE 0x80213800 // 0x0017000 in size
#define SEG_FRAMEBUFFERS 0x8022A800 // 0x0070800 in size
#define SEG_POOL_START 0x8029B000 // 0x0165000 in size
#define SEG_POOL_END 0x80800000
#ifdef VERSION_CN
#define RDRAM_END 0x807C0000 // iQue has stuff like EEPROM mapped at 807C0000 onwards. TODO: Code this using osMemSize
#else
#define RDRAM_END 0x80800000
#endif
#define SEG_BUFFERS SEG_START
#define SEG_ENGINE ((u32) &_engineSegmentStart)
#define SEG_FRAMEBUFFERS ((u32) &_framebuffersSegmentNoloadStart)
#define SEG_POOL_START ((u32) &_framebuffersSegmentNoloadEnd)
#define SEG_POOL_END RDRAM_END
#define SEG_POOL_END_4MB 0x80400000 // For the error message screen enhancement.
#define SEG_GODDARD SEG_POOL_START + 0x113000
#endif
#endif // SEGMENTS_H

View file

@ -155,7 +155,7 @@
.byte 0xff
.endm
#ifdef VERSION_SH
#if defined(VERSION_SH) || defined(VERSION_CN)
.macro seq_unreservenotes
.byte 0xf0
@ -462,7 +462,7 @@
var_long \a
.endm
#ifdef VERSION_SH
#if defined(VERSION_SH) || defined(VERSION_CN)
.macro chan_setnotepriority a
.byte 0xe9

View file

@ -98,7 +98,7 @@
/**
* The table below defines all sounds that exist in the game, and which flags
* they are used with. If a sound is used with multiple sets of flags (e.g.
* different priorities), they are gives distinguishing suffixes.
* different priorities), they are given distinguishing suffixes.
* A _2 suffix means the sound is the same despite a different sound ID.
*/

View file

@ -1,93 +0,0 @@
#ifndef SPECIAL_PRESET_NAMES_H
#define SPECIAL_PRESET_NAMES_H
enum SpecialPresets {
special_null_start,
special_yellow_coin,
special_yellow_coin_2,
special_unknown_3,
special_boo,
special_unknown_5,
special_lll_moving_octagonal_mesh_platform,
special_snow_ball,
special_lll_drawbridge_spawner,
special_empty_9,
special_lll_rotating_block_with_fire_bars,
special_lll_floating_wood_bridge,
special_tumbling_platform,
special_lll_rotating_hexagonal_ring,
special_lll_sinking_rectangular_platform,
special_lll_sinking_square_platforms,
special_lll_tilting_square_platform,
special_lll_bowser_puzzle,
special_mr_i,
special_small_bully,
special_big_bully,
special_empty_21,
special_empty_22,
special_empty_23,
special_empty_24,
special_empty_25,
special_moving_blue_coin,
special_jrb_chest,
special_water_ring,
special_mine,
special_empty_30,
special_empty_31,
special_butterfly,
special_bowser,
special_wf_rotating_wooden_platform,
special_small_bomp,
special_wf_sliding_platform,
special_tower_platform_group,
special_rotating_counter_clockwise,
special_wf_tumbling_bridge,
special_large_bomp,
special_level_geo_03 = 0x65,
special_level_geo_04,
special_level_geo_05,
special_level_geo_06,
special_level_geo_07,
special_level_geo_08,
special_level_geo_09,
special_level_geo_0A,
special_level_geo_0B,
special_level_geo_0C,
special_level_geo_0D,
special_level_geo_0E,
special_level_geo_0F,
special_level_geo_10,
special_level_geo_11,
special_level_geo_12,
special_level_geo_13,
special_level_geo_14,
special_level_geo_15,
special_level_geo_16,
special_bubble_tree,
special_spiky_tree,
special_snow_tree,
special_unknown_tree,
special_palm_tree,
special_wooden_door,
special_haunted_door = special_wooden_door,
special_unknown_door,
special_metal_door,
special_hmc_door,
special_unknown2_door,
special_wooden_door_warp,
special_unknown1_door_warp,
special_metal_door_warp,
special_unknown2_door_warp,
special_unknown3_door_warp,
special_castle_door_warp,
special_castle_door,
special_0stars_door,
special_1star_door,
special_3star_door,
special_key_door,
special_null_end = 0xFF
};
#endif // SPECIAL_PRESET_NAMES_H

View file

@ -1,111 +1,93 @@
#ifndef SPECIAL_PRESETS_H
#define SPECIAL_PRESETS_H
#include "special_preset_names.h"
#include "behavior_data.h"
#include "model_ids.h"
enum SpecialPresets {
special_null_start,
special_yellow_coin,
special_yellow_coin_2,
special_unknown_3,
special_boo,
special_unknown_5,
special_lll_moving_octagonal_mesh_platform,
special_snow_ball,
special_lll_drawbridge_spawner,
special_empty_9,
special_lll_rotating_block_with_fire_bars,
special_lll_floating_wood_bridge,
special_tumbling_platform,
special_lll_rotating_hexagonal_ring,
special_lll_sinking_rectangular_platform,
special_lll_sinking_square_platforms,
special_lll_tilting_square_platform,
special_lll_bowser_puzzle,
special_mr_i,
special_small_bully,
special_big_bully,
special_empty_21,
special_empty_22,
special_empty_23,
special_empty_24,
special_empty_25,
special_moving_blue_coin,
special_jrb_chest,
special_water_ring,
special_mine,
special_empty_30,
special_empty_31,
special_butterfly,
special_bowser,
special_wf_rotating_wooden_platform,
special_small_bomp,
special_wf_sliding_platform,
special_tower_platform_group,
special_rotating_counter_clockwise,
special_wf_tumbling_bridge,
special_large_bomp,
// Special Preset types
#define SPTYPE_NO_YROT_OR_PARAMS 0 // object is 8-bytes long, no y-rotation or any behavior params
#define SPTYPE_YROT_NO_PARAMS 1 // object is 10-bytes long, has y-rotation but no params
#define SPTYPE_PARAMS_AND_YROT 2 // object is 12-bytes long, has y-rotation and params
#define SPTYPE_UNKNOWN 3 // object is 14-bytes long, has 3 extra shorts that get converted to floats.
#define SPTYPE_DEF_PARAM_AND_YROT 4 // object is 10-bytes long, has y-rotation and uses the default param
special_level_geo_03 = 0x65,
special_level_geo_04,
special_level_geo_05,
special_level_geo_06,
special_level_geo_07,
special_level_geo_08,
special_level_geo_09,
special_level_geo_0A,
special_level_geo_0B,
special_level_geo_0C,
special_level_geo_0D,
special_level_geo_0E,
special_level_geo_0F,
special_level_geo_10,
special_level_geo_11,
special_level_geo_12,
special_level_geo_13,
special_level_geo_14,
special_level_geo_15,
special_level_geo_16,
special_bubble_tree,
special_spiky_tree,
special_snow_tree,
special_unknown_tree,
special_palm_tree,
special_wooden_door,
special_haunted_door = special_wooden_door,
special_unknown_door,
special_metal_door,
special_hmc_door,
special_unknown2_door,
special_wooden_door_warp,
special_unknown1_door_warp,
special_metal_door_warp,
special_unknown2_door_warp,
special_unknown3_door_warp,
special_castle_door_warp,
special_castle_door,
special_0stars_door,
special_1star_door,
special_3star_door,
special_key_door,
struct SpecialPreset {
/*00*/ u8 preset_id;
/*01*/ u8 type; // Determines whether object is 8, 10, 12 or 14 bytes long.
/*02*/ u8 defParam; // Default parameter, only used when type is SPTYPE_DEF_PARAM_AND_YROT
/*03*/ u8 model;
/*04*/ const BehaviorScript *behavior;
};
// Some Models ID's are missing their names because they are probably unused
static struct SpecialPreset SpecialObjectPresets[] = {
{0x00, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_NONE, NULL},
{0x01, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_YELLOW_COIN, bhvYellowCoin},
{0x02, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_YELLOW_COIN, bhvYellowCoin},
{0x03, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_UNKNOWN_B8, bhvStaticObject},
{0x04, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_BOO, bhvCourtyardBooTriplet},
{0x05, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_UNKNOWN_AC, bhvCastleFloorTrap},
{0x06, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_LLL_MOVING_OCTAGONAL_MESH_PLATFORM, bhvLllMovingOctagonalMeshPlatform},
{0x07, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_CCM_SNOWMAN_HEAD, bhvSnowBall},
{0x08, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_LLL_DRAWBRIDGE_PART, bhvLllDrawbridgeSpawner},
{0x09, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_NONE, bhvStaticObject},
{0x0A, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_LLL_ROTATING_BLOCK_FIRE_BARS, bhvLllRotatingBlockWithFireBars},
{0x0B, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_NONE, bhvLllFloatingWoodBridge},
{0x0C, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_NONE, bhvLllTumblingBridge},
{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, 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},
{0x14, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_BULLY_BOSS, bhvBigBully},
{0x15, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_NONE, bhvStaticObject},
{0x16, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_NONE, bhvStaticObject},
{0x17, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_NONE, bhvStaticObject},
{0x18, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_NONE, bhvStaticObject},
{0x19, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_NONE, bhvStaticObject},
{0x1A, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_YELLOW_COIN, bhvMovingBlueCoin},
{0x1B, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_TREASURE_CHEST_BASE, bhvBetaChestBottom},
{0x1C, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_WATER_RING, bhvJetStreamRingSpawner},
{0x1D, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_WATER_MINE, bhvBowserBomb},
{0x1E, SPTYPE_UNKNOWN , 0x00, MODEL_NONE, bhvStaticObject},
{0x1F, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_NONE, bhvStaticObject},
{0x20, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_BUTTERFLY, bhvButterfly},
{0x21, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_BOWSER, bhvBowser},
{0x22, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_WF_ROTATING_WOODEN_PLATFORM, bhvWfRotatingWoodenPlatform},
{0x23, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_WF_SMALL_BOMP, bhvSmallBomp},
{0x24, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_WF_SLIDING_PLATFORM, bhvWfSlidingPlatform},
{0x25, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_NONE, bhvTowerPlatformGroup},
{0x26, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_NONE, bhvRotatingCounterClockwise},
{0x27, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_WF_TUMBLING_BRIDGE, bhvWfTumblingBridge},
{0x28, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_WF_LARGE_BOMP, bhvLargeBomp},
{0x65, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_LEVEL_GEOMETRY_03, bhvStaticObject},
{0x66, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_LEVEL_GEOMETRY_04, bhvStaticObject},
{0x67, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_LEVEL_GEOMETRY_05, bhvStaticObject},
{0x68, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_LEVEL_GEOMETRY_06, bhvStaticObject},
{0x69, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_LEVEL_GEOMETRY_07, bhvStaticObject},
{0x6A, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_LEVEL_GEOMETRY_08, bhvStaticObject},
{0x6B, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_LEVEL_GEOMETRY_09, bhvStaticObject},
{0x6C, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_LEVEL_GEOMETRY_0A, bhvStaticObject},
{0x6D, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_LEVEL_GEOMETRY_0B, bhvStaticObject},
{0x6E, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_LEVEL_GEOMETRY_0C, bhvStaticObject},
{0x6F, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_LEVEL_GEOMETRY_0D, bhvStaticObject},
{0x70, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_LEVEL_GEOMETRY_0E, bhvStaticObject},
{0x71, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_LEVEL_GEOMETRY_0F, bhvStaticObject},
{0x72, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_LEVEL_GEOMETRY_10, bhvStaticObject},
{0x73, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_LEVEL_GEOMETRY_11, bhvStaticObject},
{0x74, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_LEVEL_GEOMETRY_12, bhvStaticObject},
{0x75, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_LEVEL_GEOMETRY_13, bhvStaticObject},
{0x76, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_LEVEL_GEOMETRY_14, bhvStaticObject},
{0x77, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_LEVEL_GEOMETRY_15, bhvStaticObject},
{0x78, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_LEVEL_GEOMETRY_16, bhvStaticObject},
{0x79, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_BOB_BUBBLY_TREE, bhvTree},
{0x7A, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_COURTYARD_SPIKY_TREE, bhvTree},
{0x7B, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_CCM_SNOW_TREE, bhvTree},
{0x7C, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_UNKNOWN_TREE_1A, bhvTree},
{0x7D, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_SSL_PALM_TREE, bhvTree},
{0x89, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_CASTLE_CASTLE_DOOR_UNUSED, bhvDoor},
{0x7E, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_CASTLE_WOODEN_DOOR_UNUSED, bhvDoor},
{0x7F, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_UNKNOWN_DOOR_1E, bhvDoor},
{0x80, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_HMC_METAL_DOOR, bhvDoor},
{0x81, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_HMC_HAZY_MAZE_DOOR, bhvDoor},
{0x82, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_UNKNOWN_DOOR_21, bhvDoor},
{0x8A, SPTYPE_DEF_PARAM_AND_YROT, 0x00, MODEL_CASTLE_DOOR_0_STARS, bhvDoor},
{0x8B, SPTYPE_DEF_PARAM_AND_YROT, 0x01, MODEL_CASTLE_DOOR_1_STAR, bhvDoor},
{0x8C, SPTYPE_DEF_PARAM_AND_YROT, 0x03, MODEL_CASTLE_DOOR_3_STARS, bhvDoor},
{0x8D, SPTYPE_DEF_PARAM_AND_YROT, 0x00, MODEL_CASTLE_KEY_DOOR, bhvDoor},
{0x88, SPTYPE_PARAMS_AND_YROT , 0x00, MODEL_CASTLE_CASTLE_DOOR, bhvDoorWarp},
{0x83, SPTYPE_PARAMS_AND_YROT , 0x00, MODEL_CASTLE_WOODEN_DOOR, bhvDoorWarp},
{0x84, SPTYPE_PARAMS_AND_YROT , 0x00, MODEL_UNKNOWN_DOOR_28, bhvDoorWarp},
{0x85, SPTYPE_PARAMS_AND_YROT , 0x00, MODEL_CASTLE_METAL_DOOR, bhvDoorWarp},
{0x86, SPTYPE_PARAMS_AND_YROT , 0x00, MODEL_UNKNOWN_DOOR_2A, bhvDoorWarp},
{0x87, SPTYPE_PARAMS_AND_YROT , 0x00, MODEL_UNKNOWN_DOOR_2B, bhvDoorWarp},
{0xFF, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_NONE, NULL}
special_null_end = 0xFF
};
#endif // SPECIAL_PRESETS_H

View file

@ -0,0 +1,104 @@
#include "special_presets.h"
// Special Preset types
#define SPTYPE_NO_YROT_OR_PARAMS 0 // object is 8-bytes long, no y-rotation or any behavior params
#define SPTYPE_YROT_NO_PARAMS 1 // object is 10-bytes long, has y-rotation but no params
#define SPTYPE_PARAMS_AND_YROT 2 // object is 12-bytes long, has y-rotation and params
#define SPTYPE_UNKNOWN 3 // object is 14-bytes long, has 3 extra shorts that get converted to floats.
#define SPTYPE_DEF_PARAM_AND_YROT 4 // object is 10-bytes long, has y-rotation and uses the default param
struct SpecialPreset {
/* 0x00 */ u8 presetID;
/* 0x01 */ u8 type; // Determines whether object is 8, 10, 12 or 14 bytes long.
/* 0x02 */ u8 defParam; // Default parameter, only used when type is SPTYPE_DEF_PARAM_AND_YROT
/* 0x03 */ u8 model;
/* 0x04 */ const BehaviorScript *behavior;
};
// Some Models ID's are missing their names because they are probably unused
static struct SpecialPreset sSpecialObjectPresets[] = {
{ special_null_start, SPTYPE_YROT_NO_PARAMS, 0x00, MODEL_NONE, NULL },
{ special_yellow_coin, SPTYPE_NO_YROT_OR_PARAMS, 0x00, MODEL_YELLOW_COIN, bhvYellowCoin },
{ special_yellow_coin_2, SPTYPE_NO_YROT_OR_PARAMS, 0x00, MODEL_YELLOW_COIN, bhvYellowCoin },
{ special_unknown_3, SPTYPE_NO_YROT_OR_PARAMS, 0x00, MODEL_UNKNOWN_B8, bhvStaticObject },
{ special_boo, SPTYPE_NO_YROT_OR_PARAMS, 0x00, MODEL_BOO, bhvCourtyardBooTriplet },
{ special_unknown_5, SPTYPE_NO_YROT_OR_PARAMS, 0x00, MODEL_UNKNOWN_AC, bhvCastleFloorTrap },
{ special_lll_moving_octagonal_mesh_platform, SPTYPE_NO_YROT_OR_PARAMS, 0x00, MODEL_LLL_MOVING_OCTAGONAL_MESH_PLATFORM, bhvLLLMovingOctagonalMeshPlatform },
{ special_snow_ball, SPTYPE_NO_YROT_OR_PARAMS, 0x00, MODEL_CCM_SNOWMAN_HEAD, bhvSnowBall },
{ special_lll_drawbridge_spawner, SPTYPE_YROT_NO_PARAMS, 0x00, MODEL_LLL_DRAWBRIDGE_PART, bhvLLLDrawbridgeSpawner },
{ special_empty_9, SPTYPE_NO_YROT_OR_PARAMS, 0x00, MODEL_NONE, bhvStaticObject },
{ special_lll_rotating_block_with_fire_bars, SPTYPE_NO_YROT_OR_PARAMS, 0x00, MODEL_LLL_ROTATING_BLOCK_FIRE_BARS, bhvLLLRotatingBlockWithFireBars },
{ special_lll_floating_wood_bridge, SPTYPE_NO_YROT_OR_PARAMS, 0x00, MODEL_NONE, bhvLLLFloatingWoodBridge },
{ special_tumbling_platform, SPTYPE_NO_YROT_OR_PARAMS, 0x00, MODEL_NONE, bhvLLLTumblingBridge },
{ special_lll_rotating_hexagonal_ring, SPTYPE_NO_YROT_OR_PARAMS, 0x00, MODEL_LLL_ROTATING_HEXAGONAL_RING , bhvLLLRotatingHexagonalRing },
{ special_lll_sinking_rectangular_platform, SPTYPE_YROT_NO_PARAMS, 0x00, MODEL_LLL_SINKING_RECTANGULAR_PLATFORM, bhvLLLSinkingRectangularPlatform },
{ special_lll_sinking_square_platforms, SPTYPE_NO_YROT_OR_PARAMS, 0x00, MODEL_LLL_SINKING_SQUARE_PLATFORMS, bhvLLLSinkingSquarePlatforms },
{ special_lll_tilting_square_platform, SPTYPE_NO_YROT_OR_PARAMS, 0x00, MODEL_LLL_TILTING_SQUARE_PLATFORM, bhvLLLTiltingInvertedPyramid },
{ special_lll_bowser_puzzle, SPTYPE_NO_YROT_OR_PARAMS, 0x00, MODEL_NONE, bhvLLLBowserPuzzle },
{ special_mr_i, SPTYPE_NO_YROT_OR_PARAMS, 0x00, MODEL_NONE, bhvMrI },
{ special_small_bully, SPTYPE_NO_YROT_OR_PARAMS, 0x00, MODEL_BULLY, bhvSmallBully },
{ special_big_bully, SPTYPE_NO_YROT_OR_PARAMS, 0x00, MODEL_BULLY_BOSS, bhvBigBully },
{ special_empty_21, SPTYPE_NO_YROT_OR_PARAMS, 0x00, MODEL_NONE, bhvStaticObject },
{ special_empty_22, SPTYPE_NO_YROT_OR_PARAMS, 0x00, MODEL_NONE, bhvStaticObject },
{ special_empty_23, SPTYPE_NO_YROT_OR_PARAMS, 0x00, MODEL_NONE, bhvStaticObject },
{ special_empty_24, SPTYPE_NO_YROT_OR_PARAMS, 0x00, MODEL_NONE, bhvStaticObject },
{ special_empty_25, SPTYPE_NO_YROT_OR_PARAMS, 0x00, MODEL_NONE, bhvStaticObject },
{ special_moving_blue_coin, SPTYPE_NO_YROT_OR_PARAMS, 0x00, MODEL_YELLOW_COIN, bhvMovingBlueCoin },
{ special_jrb_chest, SPTYPE_NO_YROT_OR_PARAMS, 0x00, MODEL_TREASURE_CHEST_BASE, bhvBetaChestBottom },
{ special_water_ring, SPTYPE_NO_YROT_OR_PARAMS, 0x00, MODEL_WATER_RING, bhvJetStreamRingSpawner },
{ special_mine, SPTYPE_NO_YROT_OR_PARAMS, 0x00, MODEL_WATER_MINE, bhvBowserBomb },
{ special_empty_30, SPTYPE_UNKNOWN, 0x00, MODEL_NONE, bhvStaticObject },
{ special_empty_31, SPTYPE_NO_YROT_OR_PARAMS, 0x00, MODEL_NONE, bhvStaticObject },
{ special_butterfly, SPTYPE_NO_YROT_OR_PARAMS, 0x00, MODEL_BUTTERFLY, bhvButterfly },
{ special_bowser, SPTYPE_NO_YROT_OR_PARAMS, 0x00, MODEL_BOWSER, bhvBowser },
{ special_wf_rotating_wooden_platform, SPTYPE_NO_YROT_OR_PARAMS, 0x00, MODEL_WF_ROTATING_WOODEN_PLATFORM, bhvWFRotatingWoodenPlatform },
{ special_small_bomp, SPTYPE_YROT_NO_PARAMS, 0x00, MODEL_WF_SMALL_BOMP, bhvSmallBomp },
{ special_wf_sliding_platform, SPTYPE_YROT_NO_PARAMS, 0x00, MODEL_WF_SLIDING_PLATFORM, bhvWFSlidingPlatform },
{ special_tower_platform_group, SPTYPE_NO_YROT_OR_PARAMS, 0x00, MODEL_NONE, bhvTowerPlatformGroup },
{ special_rotating_counter_clockwise, SPTYPE_NO_YROT_OR_PARAMS, 0x00, MODEL_NONE, bhvRotatingCounterClockwise },
{ special_wf_tumbling_bridge, SPTYPE_NO_YROT_OR_PARAMS, 0x00, MODEL_WF_TUMBLING_BRIDGE, bhvTumblingBridge },
{ special_large_bomp, SPTYPE_NO_YROT_OR_PARAMS, 0x00, MODEL_WF_LARGE_BOMP, bhvLargeBomp },
{ special_level_geo_03, SPTYPE_YROT_NO_PARAMS, 0x00, MODEL_LEVEL_GEOMETRY_03, bhvStaticObject },
{ special_level_geo_04, SPTYPE_YROT_NO_PARAMS, 0x00, MODEL_LEVEL_GEOMETRY_04, bhvStaticObject },
{ special_level_geo_05, SPTYPE_YROT_NO_PARAMS, 0x00, MODEL_LEVEL_GEOMETRY_05, bhvStaticObject },
{ special_level_geo_06, SPTYPE_YROT_NO_PARAMS, 0x00, MODEL_LEVEL_GEOMETRY_06, bhvStaticObject },
{ special_level_geo_07, SPTYPE_YROT_NO_PARAMS, 0x00, MODEL_LEVEL_GEOMETRY_07, bhvStaticObject },
{ special_level_geo_08, SPTYPE_YROT_NO_PARAMS, 0x00, MODEL_LEVEL_GEOMETRY_08, bhvStaticObject },
{ special_level_geo_09, SPTYPE_YROT_NO_PARAMS, 0x00, MODEL_LEVEL_GEOMETRY_09, bhvStaticObject },
{ special_level_geo_0A, SPTYPE_YROT_NO_PARAMS, 0x00, MODEL_LEVEL_GEOMETRY_0A, bhvStaticObject },
{ special_level_geo_0B, SPTYPE_YROT_NO_PARAMS, 0x00, MODEL_LEVEL_GEOMETRY_0B, bhvStaticObject },
{ special_level_geo_0C, SPTYPE_YROT_NO_PARAMS, 0x00, MODEL_LEVEL_GEOMETRY_0C, bhvStaticObject },
{ special_level_geo_0D, SPTYPE_YROT_NO_PARAMS, 0x00, MODEL_LEVEL_GEOMETRY_0D, bhvStaticObject },
{ special_level_geo_0E, SPTYPE_YROT_NO_PARAMS, 0x00, MODEL_LEVEL_GEOMETRY_0E, bhvStaticObject },
{ special_level_geo_0F, SPTYPE_YROT_NO_PARAMS, 0x00, MODEL_LEVEL_GEOMETRY_0F, bhvStaticObject },
{ special_level_geo_10, SPTYPE_YROT_NO_PARAMS, 0x00, MODEL_LEVEL_GEOMETRY_10, bhvStaticObject },
{ special_level_geo_11, SPTYPE_YROT_NO_PARAMS, 0x00, MODEL_LEVEL_GEOMETRY_11, bhvStaticObject },
{ special_level_geo_12, SPTYPE_YROT_NO_PARAMS, 0x00, MODEL_LEVEL_GEOMETRY_12, bhvStaticObject },
{ special_level_geo_13, SPTYPE_YROT_NO_PARAMS, 0x00, MODEL_LEVEL_GEOMETRY_13, bhvStaticObject },
{ special_level_geo_14, SPTYPE_YROT_NO_PARAMS, 0x00, MODEL_LEVEL_GEOMETRY_14, bhvStaticObject },
{ special_level_geo_15, SPTYPE_YROT_NO_PARAMS, 0x00, MODEL_LEVEL_GEOMETRY_15, bhvStaticObject },
{ special_level_geo_16, SPTYPE_YROT_NO_PARAMS, 0x00, MODEL_LEVEL_GEOMETRY_16, bhvStaticObject },
{ special_bubble_tree, SPTYPE_NO_YROT_OR_PARAMS, 0x00, MODEL_BOB_BUBBLY_TREE, bhvTree },
{ special_spiky_tree, SPTYPE_NO_YROT_OR_PARAMS, 0x00, MODEL_COURTYARD_SPIKY_TREE, bhvTree },
{ special_snow_tree, SPTYPE_NO_YROT_OR_PARAMS, 0x00, MODEL_CCM_SNOW_TREE, bhvTree },
{ special_unknown_tree, SPTYPE_NO_YROT_OR_PARAMS, 0x00, MODEL_UNKNOWN_TREE_1A, bhvTree },
{ special_palm_tree, SPTYPE_NO_YROT_OR_PARAMS, 0x00, MODEL_SSL_PALM_TREE, bhvTree },
{ special_castle_door, SPTYPE_YROT_NO_PARAMS, 0x00, MODEL_CASTLE_CASTLE_DOOR_UNUSED, bhvDoor },
{ special_wooden_door, SPTYPE_YROT_NO_PARAMS, 0x00, MODEL_CASTLE_WOODEN_DOOR_UNUSED, bhvDoor },
{ special_unknown_door, SPTYPE_YROT_NO_PARAMS, 0x00, MODEL_UNKNOWN_DOOR_1E, bhvDoor },
{ special_metal_door, SPTYPE_YROT_NO_PARAMS, 0x00, MODEL_HMC_METAL_DOOR, bhvDoor },
{ special_hmc_door, SPTYPE_YROT_NO_PARAMS, 0x00, MODEL_HMC_HAZY_MAZE_DOOR, bhvDoor },
{ special_unknown2_door, SPTYPE_YROT_NO_PARAMS, 0x00, MODEL_UNKNOWN_DOOR_21, bhvDoor },
{ special_0stars_door, SPTYPE_DEF_PARAM_AND_YROT, 0x00, MODEL_CASTLE_DOOR_0_STARS, bhvDoor },
{ special_1star_door, SPTYPE_DEF_PARAM_AND_YROT, 0x01, MODEL_CASTLE_DOOR_1_STAR, bhvDoor },
{ special_3star_door, SPTYPE_DEF_PARAM_AND_YROT, 0x03, MODEL_CASTLE_DOOR_3_STARS, bhvDoor },
{ special_key_door, SPTYPE_DEF_PARAM_AND_YROT, 0x00, MODEL_CASTLE_KEY_DOOR, bhvDoor },
{ special_castle_door_warp, SPTYPE_PARAMS_AND_YROT, 0x00, MODEL_CASTLE_CASTLE_DOOR, bhvDoorWarp },
{ special_wooden_door_warp, SPTYPE_PARAMS_AND_YROT, 0x00, MODEL_CASTLE_WOODEN_DOOR, bhvDoorWarp },
{ special_unknown1_door_warp, SPTYPE_PARAMS_AND_YROT, 0x00, MODEL_UNKNOWN_DOOR_28, bhvDoorWarp },
{ special_metal_door_warp, SPTYPE_PARAMS_AND_YROT, 0x00, MODEL_CASTLE_METAL_DOOR, bhvDoorWarp },
{ special_unknown2_door_warp, SPTYPE_PARAMS_AND_YROT, 0x00, MODEL_UNKNOWN_DOOR_2A, bhvDoorWarp },
{ special_unknown3_door_warp, SPTYPE_PARAMS_AND_YROT, 0x00, MODEL_UNKNOWN_DOOR_2B, bhvDoorWarp },
{ special_null_end, SPTYPE_NO_YROT_OR_PARAMS, 0x00, MODEL_NONE, NULL },
};

View file

@ -102,9 +102,9 @@
#define SURFACE_PAINTING_WOBBLE_CD 0x00CD // Painting wobble (THI Huge - Left)
#define SURFACE_PAINTING_WOBBLE_CE 0x00CE // Painting wobble (THI Huge - Middle)
#define SURFACE_PAINTING_WOBBLE_CF 0x00CF // Painting wobble (THI Huge - Right)
#define SURFACE_PAINTING_WOBBLE_D0 0x00D0 // Painting wobble (HMC & COTMC - Left), makes the painting wobble if touched
#define SURFACE_PAINTING_WOBBLE_D1 0x00D1 // Painting wobble (Unused, HMC & COTMC - Middle)
#define SURFACE_PAINTING_WOBBLE_D2 0x00D2 // Painting wobble (Unused, HMC & COTMC - Right)
#define SURFACE_PAINTING_WOBBLE_D0 0x00D0 // Painting wobble (HMC & CotMC - Left), makes the painting wobble if touched
#define SURFACE_PAINTING_WOBBLE_D1 0x00D1 // Painting wobble (Unused, HMC & CotMC - Middle)
#define SURFACE_PAINTING_WOBBLE_D2 0x00D2 // Painting wobble (Unused, HMC & CotMC - Right)
#define SURFACE_PAINTING_WARP_D3 0x00D3 // Painting warp (BoB Left)
#define SURFACE_PAINTING_WARP_D4 0x00D4 // Painting warp (BoB Middle)
#define SURFACE_PAINTING_WARP_D5 0x00D5 // Painting warp (BoB Right)

View file

@ -8,11 +8,13 @@
/**
* File Select JP HUD Text
*/
#if defined(VERSION_JP) || defined(VERSION_SH)
#define TEXT_JPHUD_MARIO _("マリオ")
#define TEXT_JPHUD_SELECT_FILE _("ファイルセレクト")
#define TEXT_JPHUD_CHECK_FILE _("どのスコアをみる?")
#define TEXT_JPHUD_COPY_FILE _("ファイルコピーする")
#define TEXT_JPHUD_ERASE_FILE _("ファイルけす")
#define TEXT_JPHUD_SOUND_SELECT _("サウンドセレクト")
#endif
#endif // TEXT_MENU_STRINGS_H

View file

@ -6,30 +6,48 @@
/**
* Global Symbols
*/
#define TEXT_ZERO _("0")
#define TEXT_EMPTY_STRING _("")
#define TEXT_ZERO _%("0")
#define TEXT_COIN _("$")
#define TEXT_STAR _("★")
#define TEXT_COIN_X _("$×")
#define TEXT_STAR_X _("★×")
#define TEXT_VARIABLE_X _("×")
#ifdef VERSION_CN
#define TEXT_STAR_DIFF _("★ ")
#define TEXT_UNFILLED_STAR _("☆ ")
#else
#define TEXT_STAR_DIFF TEXT_STAR
#define TEXT_UNFILLED_STAR _("☆")
#endif
/**
* Global Text
*/
// File Select
#define TEXT_NEW _("NEW") // New File Text
#define TEXT_4DASHES _("----") // Used in Score File Menu
#ifdef VERSION_CN
#define TEXT_NEW 0x7E, 0x7F, 0x82, 0x83, 0xFE, 0x80, 0x81, 0x84, 0x85, 0xFF
#else
#define TEXT_NEW _("NEW") // New File Text
#endif
// Ingame Menu
#ifdef VERSION_CN
#define TEXT_PAUSE 0x86, 0x87, 0x8A, 0x8B, 0x8E, 0x8F, 0xFE, 0x88, 0x89, 0x8C, 0x8D, 0x90, 0x91, 0xFF
#define TEXT_HUD_CONGRATULATIONS 0x3A, 0x3B, 0x3E, 0x3F, 0x42, 0x43, 0xFE, 0x3C, 0x3D, 0x40, 0x41, 0x44, 0x45, 0xFF
#else
#define TEXT_PAUSE _("PAUSE") // Pause text, Castle Courses
#define TEXT_HUD_CONGRATULATIONS _("CONGRATULATIONS") // Course Complete Text, Bowser Courses
#endif
#if defined(VERSION_JP) || defined(VERSION_SH)
/**
* File Select Text
*/
// Main Screens
// JPHUD menu strings are defined in "text_menu_strings.h.in"
#define TEXT_MARIO TEXT_JPHUD_MARIO // View Score Menu
@ -129,6 +147,7 @@
/**
* File Select Text
*/
// Main Screens
#define TEXT_MARIO _("MARIO") // View Score Menu
#define TEXT_SELECT_FILE _("SELECT FILE")
@ -136,6 +155,7 @@
#define TEXT_COPY_FILE _("COPY FILE")
#define TEXT_ERASE_FILE _("ERASE FILE")
#define TEXT_SOUND_SELECT _("SOUND SELECT")
#define TEXT_FILE_MARIO_A _("MARIO A")
#define TEXT_FILE_MARIO_B _("MARIO B")
#define TEXT_FILE_MARIO_C _("MARIO C")
@ -472,4 +492,97 @@
#define TEXT_MENU_STARS_DE _(" GEHEIME STERNE")
#endif // VERSION_EU
#ifdef VERSION_CN
/**
* File Select Text
*/
// Main Screens
// JPHUD menu strings are defined in "text_menu_strings.h.in"
#define TEXT_MARIO 0x76, 0x77, 0x7A, 0x7B, 0xFE, 0x78, 0x79, 0x7C, 0x7D, 0xFF
#define TEXT_SELECT_FILE 0x96, 0x97, 0x9A, 0x9B, 0x9E, 0x9F, 0xFE, 0x98, 0x99, 0x9C, 0x9D, 0xA0, 0xA1, 0xFF
#define TEXT_CHECK_FILE 0x46, 0x47, 0x4A, 0x4B, 0x4E, 0x4F, 0xFE, 0x48, 0x49, 0x4C, 0x4D, 0x50, 0x51, 0xFF
#define TEXT_COPY_FILE 0x52, 0x53, 0x56, 0x57, 0x5A, 0x5B, 0xFE, 0x54, 0x55, 0x58, 0x59, 0x5C, 0x5D, 0xFF
#define TEXT_ERASE_FILE 0x5E, 0x5F, 0x62, 0x63, 0x66, 0x67, 0xFE, 0x60, 0x61, 0x64, 0x65, 0x68, 0x69, 0xFF
#define TEXT_SOUND_SELECT 0xA2, 0xA3, 0xA6, 0xA7, 0xAA, 0xAB, 0xFE, 0xA4, 0xA5, 0xA8, 0xA9, 0xAC, 0xAD, 0xFF
#define TEXT_FILE_MARIO_A _("马力欧 A")
#define TEXT_FILE_MARIO_B _("马力欧 B")
#define TEXT_FILE_MARIO_C _("马力欧 C")
#define TEXT_FILE_MARIO_D _("马力欧 D")
// Menu Options
#define TEXT_SCORE _("积分")
#define TEXT_COPY _("复制")
#define TEXT_ERASE _("删除")
// Sound Options
#define TEXT_STEREO _("立体声")
#define TEXT_MONO _("单声道")
#define TEXT_HEADSET _("耳机")
// Misc Menu Text
#define TEXT_SAVED_DATA_EXISTS _("有保存的数据")
#define TEXT_NO_SAVED_DATA_EXISTS _("没有保存的数据")
// Inside a Menu
#define TEXT_RETURN _("返回")
#define TEXT_CHECK_SCORE _("查看积分")
#define TEXT_COPY_FILE_BUTTON _("复制文件")
#define TEXT_ERASE_FILE_BUTTON _("删除文件")
// Score Menu
#define TEXT_HI_SCORE _("最高积分")
#define TEXT_MY_SCORE _("我的积分")
#define TEXT_SCORE_MARIO_A _("☺A")
#define TEXT_SCORE_MARIO_B _("☺B")
#define TEXT_SCORE_MARIO_C _("☺C")
#define TEXT_SCORE_MARIO_D _("☺D")
// Copy Menu
#define TEXT_COPY_IT_TO_WHERE _("复制到何处")
#define TEXT_COPYING_COMPLETED _("复制完毕")
#define TEXT_NO_FILE_TO_COPY_FROM _("没有空文件")
// Erase Menu
#define TEXT_SURE _("确定吗?")
#define TEXT_YES _("是")
#define TEXT_NO _("否")
#define TEXT_FILE_MARIO_A_JUST_ERASED _("文件已删除")
/**
* Menus Text (Pause, Course Completed)
*/
// Main Courses
#define TEXT_COURSE _("关卡")
#define TEXT_MYSCORE TEXT_MY_SCORE
#define TEXT_CONTINUE _("继续")
#define TEXT_EXIT_COURSE _("退出")
#define TEXT_CAMERA_ANGLE_R _("使用[R]键设定视角")
// Camera Options
#define TEXT_LAKITU_MARIO TEXT_EMPTY_STRING
#define TEXT_LAKITU_STOP TEXT_EMPTY_STRING
#define TEXT_NORMAL_UPCLOSE _("特写镜头")
#define TEXT_NORMAL_FIXED _("固定镜头")
// Course Completed Misc Text
#define TEXT_CATCH _("接住")
#define TEXT_CLEAR _("清除")
#define TEXT_HUD_HI_SCORE 0x6A, 0x6B, 0x6E, 0x6F, 0x72, 0x73, 0xFE, 0x6C, 0x6D, 0x70, 0x71, 0x74, 0x75, 0xFF
// Save Options
#define TEXT_SAVE_AND_CONTINUE _("保存并继续")
#define TEXT_SAVE_AND_QUIT _("保存并退出")
#define TEXT_CONTINUE_WITHOUT_SAVING _("不必保存")
// File Score Menu Icons
#define TEXT_ARROW_L _("◀ L")
#define TEXT_R_ARROW _("R ▶")
#endif // VERSION_CN
#endif // TEXT_STRINGS_H

View file

@ -48,11 +48,14 @@ typedef uintptr_t GeoLayout;
typedef uintptr_t LevelScript;
typedef s16 Movtex;
typedef s16 MacroObject;
typedef s16 Collision;
typedef s16 Collision; // Collision data is limited to -32768 to 32767. Change this if you want to increase it.
typedef s16 Trajectory;
typedef s16 PaintingData;
typedef uintptr_t BehaviorScript;
typedef u8 Texture;
typedef s8 RoomData; // Rooms are limited to -128 to 127. Change the type if you wish to have more rooms.
typedef Collision TerrainData;
typedef TerrainData Vec3Terrain[3];
enum SpTaskState {
SPTASK_STATE_NOT_STARTED,
@ -75,7 +78,7 @@ struct VblankHandler {
};
#define ANIM_FLAG_NOLOOP (1 << 0) // 0x01
#define ANIM_FLAG_FORWARD (1 << 1) // 0x02
#define ANIM_FLAG_BACKWARD (1 << 1) // 0x02
#define ANIM_FLAG_2 (1 << 2) // 0x04
#define ANIM_FLAG_HOR_TRANS (1 << 3) // 0x08
#define ANIM_FLAG_VERT_TRANS (1 << 4) // 0x10
@ -216,15 +219,15 @@ struct Waypoint {
};
struct Surface {
/*0x00*/ s16 type;
/*0x02*/ s16 force;
/*0x00*/ TerrainData type;
/*0x02*/ TerrainData force;
/*0x04*/ s8 flags;
/*0x05*/ s8 room;
/*0x06*/ s16 lowerY;
/*0x08*/ s16 upperY;
/*0x0A*/ Vec3s vertex1;
/*0x10*/ Vec3s vertex2;
/*0x16*/ Vec3s vertex3;
/*0x05*/ RoomData room;
/*0x06*/ TerrainData lowerY;
/*0x08*/ TerrainData upperY;
/*0x0A*/ Vec3Terrain vertex1;
/*0x10*/ Vec3Terrain vertex2;
/*0x16*/ Vec3Terrain vertex3;
/*0x1C*/ struct {
f32 x;
f32 y;
@ -309,7 +312,7 @@ struct MarioState {
/*0xB8*/ s16 prevNumStarsForDialog;
/*0xBC*/ f32 peakHeight;
/*0xC0*/ f32 quicksandDepth;
/*0xC4*/ f32 unkC4;
/*0xC4*/ f32 gettingBlownGravity;
};
#endif // TYPES_H

View file

@ -14,6 +14,7 @@
#include <PR/os_thread.h>
#include <PR/os_time.h>
#include <PR/os_message.h>
#include <PR/os_pfs.h>
#include <PR/os_cont.h>
#include <PR/os_tlb.h>
#include <PR/sptask.h>
@ -27,6 +28,7 @@
#include <PR/os_libc.h>
#include <PR/gu.h>
#include <PR/os_ai.h>
#include <PR/os_motor.h>
#include <PR/libaudio.h>
#include <PR/libultra.h>

View file

@ -1,9 +1,9 @@
// 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*/ 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_haunted_chair_2, /*yaw*/ 90, /*pos*/ -1960, -20, 340),
MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ -800, -204, 2915, /*bhvParam*/ DIALOG_063),
MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ 400, -204, 3057, /*bhvParam*/ DIALOG_085),
MACRO_OBJECT (/*preset*/ macro_haunted_chair_2, /*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),
MACRO_OBJECT (/*preset*/ macro_red_coin, /*yaw*/ 0, /*pos*/ 2540, 820, 2174),
@ -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*/ DIALOG_102),
MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ 2026, -204, 2966, /*bhvParam*/ 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*/ DIALOG_086),
MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 135, /*pos*/ -1546, -204, 4813, /*bhvParam*/ 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),

View file

@ -1,5 +1,5 @@
// 0x0702605C - 0x070268C2
const u8 bbh_seg7_rooms[] = {
const RoomData bbh_seg7_rooms[] = {
13, 13, 13, 13, 13, 13, 13, 13, // 0-7
13, 13, 13, 13, 13, 13, 13, 13, // 8-15
13, 13, 29, 29, 13, 13, 13, 13, // 16-23

View file

@ -96,7 +96,7 @@ extern const Gfx bbh_seg7_dl_0701FFE8[];
extern const Gfx bbh_seg7_dl_070202F0[];
extern const Gfx bbh_seg7_dl_070206F0[];
extern const Collision bbh_seg7_collision_level[];
extern const u8 bbh_seg7_rooms[];
extern const RoomData bbh_seg7_rooms[];
extern const MacroObject bbh_seg7_macro_objs[];
extern const Collision bbh_seg7_collision_staircase_step[];
extern const Collision bbh_seg7_collision_tilt_floor_platform[];

View file

@ -3,8 +3,8 @@
#include "surface_terrains.h"
#include "moving_texture_macros.h"
#include "level_misc_macros.h"
#include "macro_preset_names.h"
#include "special_preset_names.h"
#include "macro_presets.h"
#include "special_presets.h"
#include "textures.h"
#include "dialog_ids.h"

View file

@ -18,61 +18,61 @@
static const LevelScript script_func_local_1[] = {
OBJECT(/*model*/ MODEL_RED_FLAME, /*pos*/ 2089, 1331, -1125, /*angle*/ 0, 270, 0, /*behParam*/ 0x00000000, /*beh*/ bhvFlame),
OBJECT(/*model*/ MODEL_RED_FLAME, /*pos*/ 1331, 1075, -1330, /*angle*/ 0, 90, 0, /*behParam*/ 0x00000000, /*beh*/ bhvFlame),
OBJECT(/*model*/ MODEL_RED_FLAME, /*pos*/ 2089, 1331, -511, /*angle*/ 0, 270, 0, /*behParam*/ 0x00000000, /*beh*/ bhvFlame),
OBJECT(/*model*/ MODEL_RED_FLAME, /*pos*/ -511, 358, -1330, /*angle*/ 0, 90, 0, /*behParam*/ 0x00000000, /*beh*/ bhvFlame),
OBJECT(/*model*/ MODEL_RED_FLAME, /*pos*/ 1126, 358, 2212, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvFlame),
OBJECT(/*model*/ MODEL_RED_FLAME, /*pos*/ 205, 358, 2212, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvFlame),
OBJECT(/*model*/ MODEL_RED_FLAME, /*pos*/ 2089, 1331, -1125, /*angle*/ 0, 270, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlame),
OBJECT(/*model*/ MODEL_RED_FLAME, /*pos*/ 1331, 1075, -1330, /*angle*/ 0, 90, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlame),
OBJECT(/*model*/ MODEL_RED_FLAME, /*pos*/ 2089, 1331, -511, /*angle*/ 0, 270, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlame),
OBJECT(/*model*/ MODEL_RED_FLAME, /*pos*/ -511, 358, -1330, /*angle*/ 0, 90, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlame),
OBJECT(/*model*/ MODEL_RED_FLAME, /*pos*/ 1126, 358, 2212, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlame),
OBJECT(/*model*/ MODEL_RED_FLAME, /*pos*/ 205, 358, 2212, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlame),
RETURN(),
};
static const LevelScript script_func_local_2[] = {
OBJECT(/*model*/ MODEL_BBH_TILTING_FLOOR_PLATFORM, /*pos*/ 2866, 820, 1897, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvBbhTiltingTrapPlatform),
OBJECT(/*model*/ MODEL_BBH_TUMBLING_PLATFORM, /*pos*/ 2961, 0, -768, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvBbhTumblingBridge),
OBJECT(/*model*/ MODEL_BBH_MOVING_BOOKSHELF, /*pos*/ -1994, 819, 213, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvHauntedBookshelf),
OBJECT(/*model*/ MODEL_BBH_MESH_ELEVATOR, /*pos*/ -2985, -205, 5400, /*angle*/ 0, -45, 0, /*behParam*/ 0x00000000, /*beh*/ bhvMeshElevator),
OBJECT(/*model*/ MODEL_BBH_MERRY_GO_ROUND, /*pos*/ -205, -2560, 205, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvMerryGoRound),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 2200, 819, -800, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvCoffinSpawner),
OBJECT(/*model*/ MODEL_BBH_TILTING_FLOOR_PLATFORM, /*pos*/ 2866, 820, 1897, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvBBHTiltingTrapPlatform),
OBJECT(/*model*/ MODEL_BBH_TUMBLING_PLATFORM, /*pos*/ 2961, 0, -768, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvBBHTumblingBridge),
OBJECT(/*model*/ MODEL_BBH_MOVING_BOOKSHELF, /*pos*/ -1994, 819, 213, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvHauntedBookshelf),
OBJECT(/*model*/ MODEL_BBH_MESH_ELEVATOR, /*pos*/ -2985, -205, 5400, /*angle*/ 0, -45, 0, /*bhvParam*/ 0, /*bhv*/ bhvMeshElevator),
OBJECT(/*model*/ MODEL_BBH_MERRY_GO_ROUND, /*pos*/ -205, -2560, 205, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvMerryGoRound),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 2200, 819, -800, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvCoffinSpawner),
RETURN(),
};
static const LevelScript script_func_local_3[] = {
OBJECT_WITH_ACTS(/*model*/ MODEL_BOO, /*pos*/ 1000, 50, 1000, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvGhostHuntBigBoo, /*acts*/ ACT_1),
OBJECT_WITH_ACTS(/*model*/ MODEL_BOO, /*pos*/ 20, 100, -908, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvGhostHuntBoo, /*acts*/ ACT_1),
OBJECT_WITH_ACTS(/*model*/ MODEL_BOO, /*pos*/ 3150, 100, 398, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvGhostHuntBoo, /*acts*/ ACT_1),
OBJECT_WITH_ACTS(/*model*/ MODEL_BOO, /*pos*/ -2000, 150, -800, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvGhostHuntBoo, /*acts*/ ACT_1),
OBJECT_WITH_ACTS(/*model*/ MODEL_BOO, /*pos*/ 2851, 100, 2289, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvGhostHuntBoo, /*acts*/ ACT_1),
OBJECT_WITH_ACTS(/*model*/ MODEL_BOO, /*pos*/ -1551, 100, -1018, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvGhostHuntBoo, /*acts*/ ACT_1),
OBJECT_WITH_ACTS(/*model*/ MODEL_BBH_STAIRCASE_STEP, /*pos*/ 973, 0, 517, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvHiddenStaircaseStep, /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),
OBJECT_WITH_ACTS(/*model*/ MODEL_BBH_STAIRCASE_STEP, /*pos*/ 973, -206, 717, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvHiddenStaircaseStep, /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),
OBJECT_WITH_ACTS(/*model*/ MODEL_BBH_STAIRCASE_STEP, /*pos*/ 973, -412, 917, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvHiddenStaircaseStep, /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),
OBJECT_WITH_ACTS(/*model*/ MODEL_BOO, /*pos*/ 20, 100, -908, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvBoo, /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),
OBJECT_WITH_ACTS(/*model*/ MODEL_BOO, /*pos*/ 3150, 100, 398, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvBoo, /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),
OBJECT_WITH_ACTS(/*model*/ MODEL_BOO, /*pos*/ -2000, 150, -800, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvBoo, /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),
OBJECT_WITH_ACTS(/*model*/ MODEL_BOO, /*pos*/ 2851, 100, 2289, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvBoo, /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),
OBJECT_WITH_ACTS(/*model*/ MODEL_BOO, /*pos*/ -1551, 100, -1018, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvBoo, /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),
OBJECT_WITH_ACTS(/*model*/ MODEL_NONE, /*pos*/ 990, -2146, -908, /*angle*/ 0, -45, 0, /*behParam*/ 0x00030000, /*beh*/ bhvFlamethrower, /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),
OBJECT_WITH_ACTS(/*model*/ MODEL_NONE, /*pos*/ -1100, -2372, 1100, /*angle*/ 0, 135, 0, /*behParam*/ 0x01000000, /*beh*/ bhvMerryGoRoundBooManager, /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),
OBJECT_WITH_ACTS(/*model*/ MODEL_BOO, /*pos*/ 1030, 1922, 2546, /*angle*/ 0, -90, 0, /*behParam*/ 0x04000000, /*beh*/ bhvBalconyBigBoo, /*acts*/ ALL_ACTS),
OBJECT_WITH_ACTS(/*model*/ MODEL_BOO, /*pos*/ 581, 1850, -206, /*angle*/ 0, -90, 0, /*behParam*/ 0x00000000, /*beh*/ bhvBoo, /*acts*/ ALL_ACTS),
OBJECT(/*model*/ MODEL_MAD_PIANO, /*pos*/ -1300, 0, 2310, /*angle*/ 0, 243, 0, /*behParam*/ 0x00000000, /*beh*/ bhvMadPiano),
OBJECT(/*model*/ MODEL_HAUNTED_CHAIR, /*pos*/ -1530, 0, 2200, /*angle*/ 0, 66, 0, /*behParam*/ 0x00000000, /*beh*/ bhvHauntedChair),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -1330, 890, 200, /*angle*/ 0, 90, 0, /*behParam*/ 0x00000000, /*beh*/ bhvBookendSpawn),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -818, 890, -200, /*angle*/ 0, 270, 0, /*behParam*/ 0x00000000, /*beh*/ bhvBookendSpawn),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -1330, 890, -622, /*angle*/ 0, 90, 0, /*behParam*/ 0x00000000, /*beh*/ bhvBookendSpawn),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -818, 890, -686, /*angle*/ 0, 270, 0, /*behParam*/ 0x00000000, /*beh*/ bhvBookendSpawn),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -1950, 880, 8, /*angle*/ 0, 180, 0, /*behParam*/ 0x00000000, /*beh*/ bhvHauntedBookshelfManager),
OBJECT(/*model*/ MODEL_BOOKEND, /*pos*/ 2680, 1045, 876, /*angle*/ 0, 166, 0, /*behParam*/ 0x00000000, /*beh*/ bhvFlyingBookend),
OBJECT(/*model*/ MODEL_BOOKEND, /*pos*/ 3075, 1045, 995, /*angle*/ 0, 166, 0, /*behParam*/ 0x00000000, /*beh*/ bhvFlyingBookend),
OBJECT(/*model*/ MODEL_BOOKEND, /*pos*/ -1411, 218, 922, /*angle*/ 0, 180, 0, /*behParam*/ 0x00000000, /*beh*/ bhvFlyingBookend),
OBJECT_WITH_ACTS(/*model*/ MODEL_BOO, /*pos*/ 1000, 50, 1000, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_1) | BPARAM2(BIG_BOO_BP_GHOST_HUNT), /*bhv*/ bhvGhostHuntBigBoo, /*acts*/ ACT_1),
OBJECT_WITH_ACTS(/*model*/ MODEL_BOO, /*pos*/ 20, 100, -908, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(BOO_BP_GHOST_HUNT), /*bhv*/ bhvGhostHuntBoo, /*acts*/ ACT_1),
OBJECT_WITH_ACTS(/*model*/ MODEL_BOO, /*pos*/ 3150, 100, 398, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(BOO_BP_GHOST_HUNT), /*bhv*/ bhvGhostHuntBoo, /*acts*/ ACT_1),
OBJECT_WITH_ACTS(/*model*/ MODEL_BOO, /*pos*/ -2000, 150, -800, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(BOO_BP_GHOST_HUNT), /*bhv*/ bhvGhostHuntBoo, /*acts*/ ACT_1),
OBJECT_WITH_ACTS(/*model*/ MODEL_BOO, /*pos*/ 2851, 100, 2289, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(BOO_BP_GHOST_HUNT), /*bhv*/ bhvGhostHuntBoo, /*acts*/ ACT_1),
OBJECT_WITH_ACTS(/*model*/ MODEL_BOO, /*pos*/ -1551, 100, -1018, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(BOO_BP_GHOST_HUNT), /*bhv*/ bhvGhostHuntBoo, /*acts*/ ACT_1),
OBJECT_WITH_ACTS(/*model*/ MODEL_BBH_STAIRCASE_STEP, /*pos*/ 973, 0, 517, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvHiddenStaircaseStep, /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),
OBJECT_WITH_ACTS(/*model*/ MODEL_BBH_STAIRCASE_STEP, /*pos*/ 973, -206, 717, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvHiddenStaircaseStep, /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),
OBJECT_WITH_ACTS(/*model*/ MODEL_BBH_STAIRCASE_STEP, /*pos*/ 973, -412, 917, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvHiddenStaircaseStep, /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),
OBJECT_WITH_ACTS(/*model*/ MODEL_BOO, /*pos*/ 20, 100, -908, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvBoo, /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),
OBJECT_WITH_ACTS(/*model*/ MODEL_BOO, /*pos*/ 3150, 100, 398, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvBoo, /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),
OBJECT_WITH_ACTS(/*model*/ MODEL_BOO, /*pos*/ -2000, 150, -800, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvBoo, /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),
OBJECT_WITH_ACTS(/*model*/ MODEL_BOO, /*pos*/ 2851, 100, 2289, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvBoo, /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),
OBJECT_WITH_ACTS(/*model*/ MODEL_BOO, /*pos*/ -1551, 100, -1018, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvBoo, /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),
OBJECT_WITH_ACTS(/*model*/ MODEL_NONE, /*pos*/ 990, -2146, -908, /*angle*/ 0, -45, 0, /*bhvParam*/ BPARAM2(0x03), /*bhv*/ bhvFlamethrower, /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),
OBJECT_WITH_ACTS(/*model*/ MODEL_NONE, /*pos*/ -1100, -2372, 1100, /*angle*/ 0, 135, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_2), /*bhv*/ bhvMerryGoRoundBooManager, /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),
OBJECT_WITH_ACTS(/*model*/ MODEL_BOO, /*pos*/ 1030, 1922, 2546, /*angle*/ 0, -90, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_5), /*bhv*/ bhvBalconyBigBoo, /*acts*/ ALL_ACTS),
OBJECT_WITH_ACTS(/*model*/ MODEL_BOO, /*pos*/ 581, 1850, -206, /*angle*/ 0, -90, 0, /*bhvParam*/ 0, /*bhv*/ bhvBoo, /*acts*/ ALL_ACTS),
OBJECT (/*model*/ MODEL_MAD_PIANO, /*pos*/ -1300, 0, 2310, /*angle*/ 0, 243, 0, /*bhvParam*/ 0, /*bhv*/ bhvMadPiano),
OBJECT (/*model*/ MODEL_HAUNTED_CHAIR, /*pos*/ -1530, 0, 2200, /*angle*/ 0, 66, 0, /*bhvParam*/ 0, /*bhv*/ bhvHauntedChair),
OBJECT (/*model*/ MODEL_NONE, /*pos*/ -1330, 890, 200, /*angle*/ 0, 90, 0, /*bhvParam*/ 0, /*bhv*/ bhvBookendSpawn),
OBJECT (/*model*/ MODEL_NONE, /*pos*/ -818, 890, -200, /*angle*/ 0, 270, 0, /*bhvParam*/ 0, /*bhv*/ bhvBookendSpawn),
OBJECT (/*model*/ MODEL_NONE, /*pos*/ -1330, 890, -622, /*angle*/ 0, 90, 0, /*bhvParam*/ 0, /*bhv*/ bhvBookendSpawn),
OBJECT (/*model*/ MODEL_NONE, /*pos*/ -818, 890, -686, /*angle*/ 0, 270, 0, /*bhvParam*/ 0, /*bhv*/ bhvBookendSpawn),
OBJECT (/*model*/ MODEL_NONE, /*pos*/ -1950, 880, 8, /*angle*/ 0, 180, 0, /*bhvParam*/ 0, /*bhv*/ bhvHauntedBookshelfManager),
OBJECT (/*model*/ MODEL_BOOKEND, /*pos*/ 2680, 1045, 876, /*angle*/ 0, 166, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlyingBookend),
OBJECT (/*model*/ MODEL_BOOKEND, /*pos*/ 3075, 1045, 995, /*angle*/ 0, 166, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlyingBookend),
OBJECT (/*model*/ MODEL_BOOKEND, /*pos*/ -1411, 218, 922, /*angle*/ 0, 180, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlyingBookend),
RETURN(),
};
static const LevelScript script_func_local_4[] = {
OBJECT_WITH_ACTS(/*model*/ MODEL_STAR, /*pos*/ -2030, 1350, 1940, /*angle*/ 0, 0, 0, /*behParam*/ 0x02000000, /*beh*/ bhvStar, /*acts*/ ALL_ACTS),
OBJECT_WITH_ACTS(/*model*/ MODEL_NONE, /*pos*/ -204, 1100, 1576, /*angle*/ 0, 0, 0, /*behParam*/ 0x03000000, /*beh*/ bhvHiddenRedCoinStar, /*acts*/ ALL_ACTS),
OBJECT_WITH_ACTS(/*model*/ MODEL_NONE, /*pos*/ 923, 1741, -332, /*angle*/ 0, 18, 0, /*behParam*/ 0x05010000, /*beh*/ bhvMrI, /*acts*/ ALL_ACTS),
OBJECT_WITH_ACTS(/*model*/ MODEL_STAR, /*pos*/ -2030, 1350, 1940, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_3), /*bhv*/ bhvStar, /*acts*/ ALL_ACTS),
OBJECT_WITH_ACTS(/*model*/ MODEL_NONE, /*pos*/ -204, 1100, 1576, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_4), /*bhv*/ bhvHiddenRedCoinStar, /*acts*/ ALL_ACTS),
OBJECT_WITH_ACTS(/*model*/ MODEL_NONE, /*pos*/ 923, 1741, -332, /*angle*/ 0, 18, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_6) | BPARAM2(0x01), /*bhv*/ bhvMrI, /*acts*/ ALL_ACTS),
RETURN(),
};
@ -88,7 +88,7 @@ const LevelScript level_bbh_entry[] = {
LOAD_MIO0 (/*seg*/ 0x08, _common0_mio0SegmentRomStart, _common0_mio0SegmentRomEnd),
LOAD_RAW (/*seg*/ 0x0F, _common0_geoSegmentRomStart, _common0_geoSegmentRomEnd),
ALLOC_LEVEL_POOL(),
MARIO(/*model*/ MODEL_MARIO, /*behParam*/ 0x00000001, /*beh*/ bhvMario),
MARIO(/*model*/ MODEL_MARIO, /*bhvParam*/ BPARAM4(0x01), /*bhv*/ bhvMario),
JUMP_LINK(script_func_global_1),
JUMP_LINK(script_func_global_10),
JUMP_LINK(script_func_global_18),
@ -107,10 +107,10 @@ const LevelScript level_bbh_entry[] = {
JUMP_LINK(script_func_local_2),
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*/ bhvSpinAirborneWarp),
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),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 666, 796, 5350, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvSpinAirborneWarp),
WARP_NODE(/*id*/ WARP_NODE_0A, /*destLevel*/ LEVEL_BBH, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),
WARP_NODE(/*id*/ WARP_NODE_SUCCESS, /*destLevel*/ LEVEL_CASTLE_COURTYARD, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),
WARP_NODE(/*id*/ WARP_NODE_DEATH, /*destLevel*/ LEVEL_CASTLE_COURTYARD, /*destArea*/ 1, /*destNode*/ WARP_NODE_0B, /*flags*/ WARP_NO_CHECKPOINT),
TERRAIN(/*terrainData*/ bbh_seg7_collision_level),
MACRO_OBJECTS(/*objList*/ bbh_seg7_macro_objs),
ROOMS(/*surfaceRooms*/ bbh_seg7_rooms),

View file

@ -3,36 +3,36 @@ const MacroObject bitdw_seg7_macro_objs[] = {
MACRO_OBJECT (/*preset*/ macro_box_metal_cap, /*yaw*/ 0, /*pos*/ -6420, -2900, 3880),
MACRO_OBJECT (/*preset*/ macro_coin_ring_horizontal_flying, /*yaw*/ 0, /*pos*/ -1660, -3000, 3900),
MACRO_OBJECT (/*preset*/ macro_coin_line_horizontal, /*yaw*/ 0, /*pos*/ -2400, -800, 1900),
MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_circling_amp, /*yaw*/ 0, /*pos*/ -5300, 20, 1000, /*behParam*/ 0),
MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_circling_amp, /*yaw*/ 0, /*pos*/ -7140, 500, 380, /*behParam*/ 1),
MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_circling_amp, /*yaw*/ 0, /*pos*/ -7120, 1050, -2080, /*behParam*/ 1),
MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_circling_amp, /*yaw*/ 0, /*pos*/ -6480, 240, 1000, /*behParam*/ 0),
MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_circling_amp, /*yaw*/ 0, /*pos*/ -5300, 20, 1000, /*bhvParam*/ AMP_BP_ROT_RADIUS_200),
MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_circling_amp, /*yaw*/ 0, /*pos*/ -7140, 500, 380, /*bhvParam*/ AMP_BP_ROT_RADIUS_300),
MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_circling_amp, /*yaw*/ 0, /*pos*/ -7120, 1050, -2080, /*bhvParam*/ AMP_BP_ROT_RADIUS_300),
MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_circling_amp, /*yaw*/ 0, /*pos*/ -6480, 240, 1000, /*bhvParam*/ AMP_BP_ROT_RADIUS_200),
MACRO_OBJECT (/*preset*/ macro_coin_ring_horizontal_flying, /*yaw*/ 0, /*pos*/ -2060, 1200, -940),
MACRO_OBJECT(/*preset*/ macro_yellow_coin, /*yaw*/ 0, /*pos*/ -170, 1070, 300),
MACRO_OBJECT(/*preset*/ macro_yellow_coin, /*yaw*/ 0, /*pos*/ -170, 1070, 700),
MACRO_OBJECT(/*preset*/ macro_yellow_coin, /*yaw*/ 0, /*pos*/ 1450, 1400, 300),
MACRO_OBJECT(/*preset*/ macro_yellow_coin, /*yaw*/ 0, /*pos*/ 1450, 1400, 700),
MACRO_OBJECT (/*preset*/ macro_yellow_coin_1, /*yaw*/ 0, /*pos*/ -170, 1070, 300),
MACRO_OBJECT (/*preset*/ macro_yellow_coin_1, /*yaw*/ 0, /*pos*/ -170, 1070, 700),
MACRO_OBJECT (/*preset*/ macro_yellow_coin_1, /*yaw*/ 0, /*pos*/ 1450, 1400, 300),
MACRO_OBJECT (/*preset*/ macro_yellow_coin_1, /*yaw*/ 0, /*pos*/ 1450, 1400, 700),
MACRO_OBJECT (/*preset*/ macro_coin_line_horizontal, /*yaw*/ 90, /*pos*/ 1660, -1980, 3660),
MACRO_OBJECT (/*preset*/ macro_goomba, /*yaw*/ 0, /*pos*/ 3180, 1020, 240),
MACRO_OBJECT (/*preset*/ macro_goomba, /*yaw*/ 0, /*pos*/ 2860, 1020, 580),
MACRO_OBJECT(/*preset*/ macro_yellow_coin, /*yaw*/ 0, /*pos*/ 4640, 2360, 0),
MACRO_OBJECT(/*preset*/ macro_yellow_coin, /*yaw*/ 0, /*pos*/ 4900, 2600, 0),
MACRO_OBJECT(/*preset*/ macro_yellow_coin, /*yaw*/ 0, /*pos*/ 5180, 2820, 0),
MACRO_OBJECT(/*preset*/ macro_yellow_coin, /*yaw*/ 0, /*pos*/ 2760, 1940, 500),
MACRO_OBJECT(/*preset*/ macro_yellow_coin, /*yaw*/ 0, /*pos*/ 2760, 1940, 180),
MACRO_OBJECT (/*preset*/ macro_yellow_coin_1, /*yaw*/ 0, /*pos*/ 4640, 2360, 0),
MACRO_OBJECT (/*preset*/ macro_yellow_coin_1, /*yaw*/ 0, /*pos*/ 4900, 2600, 0),
MACRO_OBJECT (/*preset*/ macro_yellow_coin_1, /*yaw*/ 0, /*pos*/ 5180, 2820, 0),
MACRO_OBJECT (/*preset*/ macro_yellow_coin_1, /*yaw*/ 0, /*pos*/ 2760, 1940, 500),
MACRO_OBJECT (/*preset*/ macro_yellow_coin_1, /*yaw*/ 0, /*pos*/ 2760, 1940, 180),
MACRO_OBJECT (/*preset*/ macro_yellow_coin_2, /*yaw*/ 0, /*pos*/ -2460, 812, 800),
MACRO_OBJECT (/*preset*/ macro_yellow_coin_2, /*yaw*/ 0, /*pos*/ -3080, 813, 840),
MACRO_OBJECT (/*preset*/ macro_yellow_coin_2, /*yaw*/ 0, /*pos*/ -3660, 873, 620),
MACRO_OBJECT (/*preset*/ macro_yellow_coin_2, /*yaw*/ 0, /*pos*/ -4060, 1011, 240),
MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_circling_amp, /*yaw*/ 0, /*pos*/ -4620, 1220, -300, /*behParam*/ 2),
MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_circling_amp, /*yaw*/ 0, /*pos*/ -4620, 1220, -300, /*bhvParam*/ AMP_BP_ROT_RADIUS_400),
MACRO_OBJECT (/*preset*/ macro_coin_ring_horizontal, /*yaw*/ 0, /*pos*/ -4620, 1220, -300),
MACRO_OBJECT (/*preset*/ macro_box_1up, /*yaw*/ 0, /*pos*/ -4860, 1380, -300),
MACRO_OBJECT(/*preset*/ macro_yellow_coin, /*yaw*/ 0, /*pos*/ -150, -1200, 3660),
MACRO_OBJECT (/*preset*/ macro_yellow_coin_1, /*yaw*/ 0, /*pos*/ -150, -1200, 3660),
MACRO_OBJECT (/*preset*/ macro_box_three_coins, /*yaw*/ 0, /*pos*/ -5120, 1460, -2140),
MACRO_OBJECT(/*preset*/ macro_yellow_coin, /*yaw*/ 0, /*pos*/ 4380, 2120, 0),
MACRO_OBJECT(/*preset*/ macro_yellow_coin, /*yaw*/ 0, /*pos*/ 5420, 3000, 0),
MACRO_OBJECT(/*preset*/ macro_yellow_coin, /*yaw*/ 0, /*pos*/ -2357, 1200, -2454),
MACRO_OBJECT(/*preset*/ macro_yellow_coin, /*yaw*/ 0, /*pos*/ -2357, 1300, -2454),
MACRO_OBJECT (/*preset*/ macro_yellow_coin_1, /*yaw*/ 0, /*pos*/ 4380, 2120, 0),
MACRO_OBJECT (/*preset*/ macro_yellow_coin_1, /*yaw*/ 0, /*pos*/ 5420, 3000, 0),
MACRO_OBJECT (/*preset*/ macro_yellow_coin_1, /*yaw*/ 0, /*pos*/ -2357, 1200, -2454),
MACRO_OBJECT (/*preset*/ macro_yellow_coin_1, /*yaw*/ 0, /*pos*/ -2357, 1300, -2454),
MACRO_OBJECT (/*preset*/ macro_goomba, /*yaw*/ 0, /*pos*/ -2560, -1433, 3280),
MACRO_OBJECT (/*preset*/ macro_goomba, /*yaw*/ 0, /*pos*/ -2060, -1433, 3540),
MACRO_OBJECT (/*preset*/ macro_goomba, /*yaw*/ 0, /*pos*/ -2720, -1433, 3860),
@ -42,22 +42,22 @@ const MacroObject bitdw_seg7_macro_objs[] = {
MACRO_OBJECT (/*preset*/ macro_red_coin, /*yaw*/ 0, /*pos*/ -3120, 1160, -2570),
MACRO_OBJECT (/*preset*/ macro_red_coin, /*yaw*/ 0, /*pos*/ -4613, 1220, -427),
MACRO_OBJECT (/*preset*/ macro_red_coin, /*yaw*/ 0, /*pos*/ -1000, 1933, 466),
MACRO_OBJECT(/*preset*/ macro_1up_2, /*yaw*/ 0, /*pos*/ 33, 1900, 333),
MACRO_OBJECT (/*preset*/ macro_1up_beat_bitdw_bowser, /*yaw*/ 0, /*pos*/ 33, 1900, 333),
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*/ 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),
MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ 5940, 2765, -280, /*bhvParam*/ DIALOG_066),
MACRO_OBJECT (/*preset*/ macro_yellow_coin_1, /*yaw*/ 0, /*pos*/ -2357, 1400, -2454),
MACRO_OBJECT (/*preset*/ macro_yellow_coin_1, /*yaw*/ 0, /*pos*/ -170, 1070, 500),
MACRO_OBJECT (/*preset*/ macro_yellow_coin_1, /*yaw*/ 0, /*pos*/ 1450, 1400, 500),
MACRO_OBJECT (/*preset*/ macro_1up, /*yaw*/ 0, /*pos*/ 610, 1045, -167),
MACRO_OBJECT(/*preset*/ macro_1up_2, /*yaw*/ 0, /*pos*/ -485, 1054, -167),
MACRO_OBJECT(/*preset*/ macro_1up_3, /*yaw*/ 0, /*pos*/ 1100, 2080, 363),
MACRO_OBJECT (/*preset*/ macro_1up_beat_bitdw_bowser, /*yaw*/ 0, /*pos*/ -485, 1054, -167),
MACRO_OBJECT (/*preset*/ macro_1up_beat_bitfs_bowser, /*yaw*/ 0, /*pos*/ 1100, 2080, 363),
MACRO_OBJECT (/*preset*/ macro_floor_switch_hidden_objects, /*yaw*/ 0, /*pos*/ -3100, -2946, 3530),
MACRO_OBJECT(/*preset*/ macro_hidden_box, /*yaw*/ 0, /*pos*/ -7810, -3360, 4500),
MACRO_OBJECT(/*preset*/ macro_hidden_box, /*yaw*/ 0, /*pos*/ -7810, -3360, 4700),
MACRO_OBJECT(/*preset*/ macro_hidden_box, /*yaw*/ 0, /*pos*/ -7810, -3360, 4900),
MACRO_OBJECT(/*preset*/ macro_hidden_box, /*yaw*/ 0, /*pos*/ -3100, -3145, 4518),
MACRO_OBJECT (/*preset*/ macro_hidden_breakable_box, /*yaw*/ 0, /*pos*/ -7810, -3360, 4500),
MACRO_OBJECT (/*preset*/ macro_hidden_breakable_box, /*yaw*/ 0, /*pos*/ -7810, -3360, 4700),
MACRO_OBJECT (/*preset*/ macro_hidden_breakable_box, /*yaw*/ 0, /*pos*/ -7810, -3360, 4900),
MACRO_OBJECT (/*preset*/ macro_hidden_breakable_box, /*yaw*/ 0, /*pos*/ -3100, -3145, 4518),
MACRO_OBJECT (/*preset*/ macro_box_1up_running_away, /*yaw*/ 0, /*pos*/ -2420, -1140, 3700),
MACRO_OBJECT_END(),
};

View file

@ -3,8 +3,8 @@
#include "surface_terrains.h"
#include "moving_texture_macros.h"
#include "level_misc_macros.h"
#include "macro_preset_names.h"
#include "special_preset_names.h"
#include "macro_presets.h"
#include "special_presets.h"
#include "textures.h"
#include "dialog_ids.h"

View file

@ -17,29 +17,29 @@
#include "levels/bitdw/header.h"
static const LevelScript script_func_local_1[] = {
OBJECT(/*model*/ MODEL_BITDW_SQUARE_PLATFORM, /*pos*/ -1966, -3154, 3586, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvSquarishPathMoving),
OBJECT(/*model*/ MODEL_BITDW_SQUARE_PLATFORM, /*pos*/ -1352, -3154, 4200, /*angle*/ 0, 0, 0, /*behParam*/ 0x00020000, /*beh*/ bhvSquarishPathMoving),
OBJECT(/*model*/ MODEL_BITDW_SQUARE_PLATFORM, /*pos*/ -2963, 1017, -2464, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvSquarishPathMoving),
OBJECT(/*model*/ MODEL_BITDW_SQUARE_PLATFORM, /*pos*/ -2349, 1017, -1849, /*angle*/ 0, 0, 0, /*behParam*/ 0x00020000, /*beh*/ bhvSquarishPathMoving),
OBJECT(/*model*/ MODEL_BITDW_SQUARE_PLATFORM, /*pos*/ -2349, 1017, -1235, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvSquarishPathMoving),
OBJECT(/*model*/ MODEL_BITDW_SQUARE_PLATFORM, /*pos*/ -1735, 1017, -621, /*angle*/ 0, 0, 0, /*behParam*/ 0x00020000, /*beh*/ bhvSquarishPathMoving),
OBJECT(/*model*/ MODEL_BITDW_SEESAW_PLATFORM, /*pos*/ 1491, 1273, 512, /*angle*/ 0, 90, 0, /*behParam*/ 0x00000000, /*beh*/ bhvSeesawPlatform),
OBJECT(/*model*/ MODEL_BITDW_SEESAW_PLATFORM, /*pos*/ -147, 894, 512, /*angle*/ 0, 90, 0, /*behParam*/ 0x00000000, /*beh*/ bhvSeesawPlatform),
OBJECT(/*model*/ MODEL_BITDW_SLIDING_PLATFORM, /*pos*/ -5728, 819, -2151, /*angle*/ 0, 0, 0, /*behParam*/ 0x03CE0000, /*beh*/ bhvSlidingPlatform2),
OBJECT(/*model*/ MODEL_BITDW_FERRIS_WHEEL_AXLE, /*pos*/ -204, -1924, 3381, /*angle*/ 0, 0, 0, /*behParam*/ 0x00010000, /*beh*/ bhvFerrisWheelAxle),
OBJECT(/*model*/ MODEL_BITDW_STAIRCASE, /*pos*/ 5279, 1740, -6, /*angle*/ 0, 0, 0, /*behParam*/ 0x00010000, /*beh*/ bhvAnimatesOnFloorSwitchPress),
OBJECT(/*model*/ MODEL_PURPLE_SWITCH, /*pos*/ 3922, 1740, -7, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvFloorSwitchAnimatesObject),
OBJECT(/*model*/ MODEL_BITDW_SQUARE_PLATFORM, /*pos*/ -1966, -3154, 3586, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(0x00), /*bhv*/ bhvSquarishPathMoving),
OBJECT(/*model*/ MODEL_BITDW_SQUARE_PLATFORM, /*pos*/ -1352, -3154, 4200, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(0x02), /*bhv*/ bhvSquarishPathMoving),
OBJECT(/*model*/ MODEL_BITDW_SQUARE_PLATFORM, /*pos*/ -2963, 1017, -2464, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(0x00), /*bhv*/ bhvSquarishPathMoving),
OBJECT(/*model*/ MODEL_BITDW_SQUARE_PLATFORM, /*pos*/ -2349, 1017, -1849, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(0x02), /*bhv*/ bhvSquarishPathMoving),
OBJECT(/*model*/ MODEL_BITDW_SQUARE_PLATFORM, /*pos*/ -2349, 1017, -1235, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(0x00), /*bhv*/ bhvSquarishPathMoving),
OBJECT(/*model*/ MODEL_BITDW_SQUARE_PLATFORM, /*pos*/ -1735, 1017, -621, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(0x02), /*bhv*/ bhvSquarishPathMoving),
OBJECT(/*model*/ MODEL_BITDW_SEESAW_PLATFORM, /*pos*/ 1491, 1273, 512, /*angle*/ 0, 90, 0, /*bhvParam*/ 0, /*bhv*/ bhvSeesawPlatform),
OBJECT(/*model*/ MODEL_BITDW_SEESAW_PLATFORM, /*pos*/ -147, 894, 512, /*angle*/ 0, 90, 0, /*bhvParam*/ 0, /*bhv*/ bhvSeesawPlatform),
OBJECT(/*model*/ MODEL_BITDW_SLIDING_PLATFORM, /*pos*/ -5728, 819, -2151, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(0x03) | BPARAM2(0xCE), /*bhv*/ bhvSlidingPlatform2),
OBJECT(/*model*/ MODEL_BITDW_FERRIS_WHEEL_AXLE, /*pos*/ -204, -1924, 3381, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(0x01), /*bhv*/ bhvFerrisWheelAxle),
OBJECT(/*model*/ MODEL_BITDW_STAIRCASE, /*pos*/ 5279, 1740, -6, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(0x01), /*bhv*/ bhvAnimatesOnFloorSwitchPress),
OBJECT(/*model*/ MODEL_PURPLE_SWITCH, /*pos*/ 3922, 1740, -7, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFloorSwitchAnimatesObject),
RETURN(),
};
static const LevelScript script_func_local_2[] = {
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -3092, -2795, 2842, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvFlamethrower),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 2463, -2386, 2844, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvFlamethrower),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -3092, -2795, 2842, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlamethrower),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 2463, -2386, 2844, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlamethrower),
RETURN(),
};
static const LevelScript script_func_local_3[] = {
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 7180, 3000, 0, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvBowserCourseRedCoinStar),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 7180, 3000, 0, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_1), /*bhv*/ bhvBowserCourseRedCoinStar),
RETURN(),
};
@ -55,7 +55,7 @@ const LevelScript level_bitdw_entry[] = {
LOAD_MIO0 (/*seg*/ 0x08, _common0_mio0SegmentRomStart, _common0_mio0SegmentRomEnd),
LOAD_RAW (/*seg*/ 0x0F, _common0_geoSegmentRomStart, _common0_geoSegmentRomEnd),
ALLOC_LEVEL_POOL(),
MARIO(/*model*/ MODEL_MARIO, /*behParam*/ 0x00000001, /*beh*/ bhvMario),
MARIO(/*model*/ MODEL_MARIO, /*bhvParam*/ BPARAM4(0x01), /*bhv*/ bhvMario),
JUMP_LINK(script_func_global_12),
JUMP_LINK(script_func_global_18),
JUMP_LINK(script_func_global_1),
@ -87,13 +87,13 @@ const LevelScript level_bitdw_entry[] = {
LOAD_MODEL_FROM_GEO(MODEL_BITDW_STAIRCASE, geo_bitdw_000600),
AREA(/*index*/ 1, geo_bitdw_000618),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -7443, -2153, 3886, /*angle*/ 0, 90, 0, /*behParam*/ 0x000A0000, /*beh*/ bhvAirborneWarp),
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*/ bhvDeathWarp),
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),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -7443, -2153, 3886, /*angle*/ 0, 90, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvAirborneWarp),
OBJECT(/*model*/ MODEL_BITDW_WARP_PIPE, /*pos*/ 6816, 2860, -7, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0B), /*bhv*/ bhvWarpPipe),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 5910, 3500, -7, /*angle*/ 0, 90, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0C), /*bhv*/ bhvDeathWarp),
WARP_NODE(/*id*/ WARP_NODE_0A, /*destLevel*/ LEVEL_BITDW, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),
WARP_NODE(/*id*/ WARP_NODE_0B, /*destLevel*/ LEVEL_BOWSER_1, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),
WARP_NODE(/*id*/ WARP_NODE_0C, /*destLevel*/ LEVEL_BITDW, /*destArea*/ 1, /*destNode*/ WARP_NODE_0C, /*flags*/ WARP_NO_CHECKPOINT),
WARP_NODE(/*id*/ WARP_NODE_DEATH, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_25, /*flags*/ WARP_NO_CHECKPOINT),
JUMP_LINK(script_func_local_1),
JUMP_LINK(script_func_local_2),
JUMP_LINK(script_func_local_3),

View file

@ -1,32 +1,32 @@
// 0x07014F90 - 0x07015122
const MacroObject bitfs_seg7_macro_objs[] = {
MACRO_OBJECT(/*preset*/ macro_yellow_coin, /*yaw*/ 0, /*pos*/ -1990, -2780, -590),
MACRO_OBJECT(/*preset*/ macro_yellow_coin, /*yaw*/ 0, /*pos*/ -2860, -2780, -580),
MACRO_OBJECT (/*preset*/ macro_yellow_coin_1, /*yaw*/ 0, /*pos*/ -1990, -2780, -590),
MACRO_OBJECT (/*preset*/ macro_yellow_coin_1, /*yaw*/ 0, /*pos*/ -2860, -2780, -580),
MACRO_OBJECT (/*preset*/ macro_coin_line_horizontal_flying, /*yaw*/ 0, /*pos*/ 1130, -3000, 400),
MACRO_OBJECT (/*preset*/ macro_1up, /*yaw*/ 0, /*pos*/ -4320, -2640, -500),
MACRO_OBJECT(/*preset*/ macro_bully, /*yaw*/ 0, /*pos*/ 2340, -2764, 580),
MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_circling_amp, /*yaw*/ 0, /*pos*/ 6600, -2770, 280, /*behParam*/ 0),
MACRO_OBJECT (/*preset*/ macro_small_bully, /*yaw*/ 0, /*pos*/ 2340, -2764, 580),
MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_circling_amp, /*yaw*/ 0, /*pos*/ 6600, -2770, 280, /*bhvParam*/ AMP_BP_ROT_RADIUS_200),
MACRO_OBJECT (/*preset*/ macro_recovery_heart, /*yaw*/ 0, /*pos*/ 3660, -2700, 280),
MACRO_OBJECT (/*preset*/ macro_hidden_1up_in_pole, /*yaw*/ 0, /*pos*/ 3880, -1140, 260),
MACRO_OBJECT (/*preset*/ macro_coin_ring_horizontal_flying, /*yaw*/ 0, /*pos*/ -1900, 652, 320),
MACRO_OBJECT(/*preset*/ macro_bully, /*yaw*/ 0, /*pos*/ -1720, 1320, -340),
MACRO_OBJECT (/*preset*/ macro_small_bully, /*yaw*/ 0, /*pos*/ -1720, 1320, -340),
MACRO_OBJECT (/*preset*/ macro_coin_line_horizontal, /*yaw*/ 0, /*pos*/ -640, 800, 180),
MACRO_OBJECT(/*preset*/ macro_bully, /*yaw*/ 0, /*pos*/ -5340, 410, 20),
MACRO_OBJECT(/*preset*/ macro_bully, /*yaw*/ 0, /*pos*/ -5200, 410, 700),
MACRO_OBJECT (/*preset*/ macro_small_bully, /*yaw*/ 0, /*pos*/ -5340, 410, 20),
MACRO_OBJECT (/*preset*/ macro_small_bully, /*yaw*/ 0, /*pos*/ -5200, 410, 700),
MACRO_OBJECT (/*preset*/ macro_box_1up, /*yaw*/ 0, /*pos*/ -7400, 1500, 0),
MACRO_OBJECT (/*preset*/ macro_hidden_1up_trigger, /*yaw*/ 0, /*pos*/ -6150, 1480, 500),
MACRO_OBJECT (/*preset*/ macro_hidden_1up_trigger, /*yaw*/ 0, /*pos*/ -6150, 2600, 500),
MACRO_OBJECT (/*preset*/ macro_hidden_1up_trigger, /*yaw*/ 0, /*pos*/ -6150, 3080, 500),
MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_hidden_1up, /*yaw*/ 0, /*pos*/ -6460, 2760, 320, /*behParam*/ 3),
MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_hidden_1up, /*yaw*/ 0, /*pos*/ -6460, 2760, 320, /*bhvParam*/ 3),
MACRO_OBJECT (/*preset*/ macro_coin_line_horizontal, /*yaw*/ 90, /*pos*/ -6360, 3760, -840),
MACRO_OBJECT (/*preset*/ macro_recovery_heart, /*yaw*/ 0, /*pos*/ -20, 3850, 160),
MACRO_OBJECT (/*preset*/ macro_box_1up, /*yaw*/ 0, /*pos*/ 2440, 5520, 140),
MACRO_OBJECT(/*preset*/ macro_1up_3, /*yaw*/ 0, /*pos*/ 1198, 5478, 103),
MACRO_OBJECT (/*preset*/ macro_1up_beat_bitfs_bowser, /*yaw*/ 0, /*pos*/ 1198, 5478, 103),
MACRO_OBJECT (/*preset*/ macro_coin_line_horizontal_flying, /*yaw*/ 0, /*pos*/ -2610, 3600, 0),
MACRO_OBJECT (/*preset*/ macro_coin_ring_horizontal, /*yaw*/ 0, /*pos*/ 1231, -2168, -1747),
MACRO_OBJECT(/*preset*/ macro_coin_line_vertical, /*yaw*/ 0, /*pos*/ -5705, 800, 0),
MACRO_OBJECT (/*preset*/ macro_coin_line_vertical_flying, /*yaw*/ 0, /*pos*/ -5705, 800, 0),
MACRO_OBJECT (/*preset*/ macro_goomba_triplet_spawner, /*yaw*/ 0, /*pos*/ 3660, -2764, 300),
MACRO_OBJECT(/*preset*/ macro_1up_3, /*yaw*/ 0, /*pos*/ -174, -2840, -138),
MACRO_OBJECT (/*preset*/ macro_1up_beat_bitfs_bowser, /*yaw*/ 0, /*pos*/ -174, -2840, -138),
MACRO_OBJECT (/*preset*/ macro_red_coin, /*yaw*/ 0, /*pos*/ 2888, -1375, 310),
MACRO_OBJECT (/*preset*/ macro_red_coin, /*yaw*/ 0, /*pos*/ 1230, -1900, -1747),
MACRO_OBJECT (/*preset*/ macro_red_coin, /*yaw*/ 0, /*pos*/ 5800, -2000, 0),
@ -38,7 +38,7 @@ const MacroObject bitfs_seg7_macro_objs[] = {
MACRO_OBJECT (/*preset*/ macro_red_coin, /*yaw*/ 0, /*pos*/ 4330, -790, -50),
MACRO_OBJECT (/*preset*/ macro_box_three_coins, /*yaw*/ 0, /*pos*/ 7220, -1800, 260),
MACRO_OBJECT (/*preset*/ macro_fire_spitter, /*yaw*/ 0, /*pos*/ -7280, 3100, -925),
MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_circling_amp, /*yaw*/ 0, /*pos*/ -2325, 3625, 0, /*behParam*/ 2),
MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_circling_amp, /*yaw*/ 0, /*pos*/ -2325, 3625, 0, /*bhvParam*/ AMP_BP_ROT_RADIUS_400),
MACRO_OBJECT (/*preset*/ macro_box_ten_coins, /*yaw*/ 0, /*pos*/ -5340, 4000, 100),
MACRO_OBJECT_END(),
};

View file

@ -3,8 +3,8 @@
#include "surface_terrains.h"
#include "moving_texture_macros.h"
#include "level_misc_macros.h"
#include "macro_preset_names.h"
#include "special_preset_names.h"
#include "macro_presets.h"
#include "special_presets.h"
#include "textures.h"
#include "make_const_nonconst.h"

View file

@ -16,37 +16,37 @@
#include "levels/bitfs/header.h"
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*/ 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),
OBJECT(/*model*/ MODEL_BITFS_SINKING_CAGE_PLATFORM, /*pos*/ 6605, -3071, 266, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvBitfsSinkingCagePlatform),
OBJECT(/*model*/ MODEL_BITFS_SINKING_CAGE_PLATFORM, /*pos*/ 1843, 3584, 96, /*angle*/ 0, 0, 0, /*behParam*/ 0x00010000, /*beh*/ bhvBitfsSinkingCagePlatform),
OBJECT(/*model*/ MODEL_BITFS_SINKING_CAGE_PLATFORM, /*pos*/ 614, 3584, 96, /*angle*/ 0, 0, 0, /*behParam*/ 0x00010000, /*beh*/ bhvBitfsSinkingCagePlatform),
OBJECT(/*model*/ MODEL_BITFS_SINKING_CAGE_PLATFORM, /*pos*/ 3072, 3584, 96, /*angle*/ 0, 0, 0, /*behParam*/ 0x00010000, /*beh*/ bhvBitfsSinkingCagePlatform),
OBJECT(/*model*/ MODEL_BITFS_ELEVATOR, /*pos*/ 2867, -1279, 307, /*angle*/ 0, 0, 0, /*behParam*/ 0x029F0000, /*beh*/ bhvActivatedBackAndForthPlatform),
OBJECT(/*model*/ MODEL_BITFS_STRETCHING_PLATFORMS, /*pos*/ -5836, 410, 300, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvSquishablePlatform),
OBJECT(/*model*/ MODEL_BITFS_SEESAW_PLATFORM, /*pos*/ 4454, -2226, 266, /*angle*/ 0, 0, 0, /*behParam*/ 0x00040000, /*beh*/ bhvSeesawPlatform),
OBJECT(/*model*/ MODEL_BITFS_SEESAW_PLATFORM, /*pos*/ 5786, -2380, 266, /*angle*/ 0, 0, 0, /*behParam*/ 0x00040000, /*beh*/ bhvSeesawPlatform),
OBJECT(/*model*/ MODEL_BITFS_MOVING_SQUARE_PLATFORM, /*pos*/ -3890, 102, 617, /*angle*/ 0, 90, 0, /*behParam*/ 0x010C0000, /*beh*/ bhvSlidingPlatform2),
OBJECT(/*model*/ MODEL_BITFS_MOVING_SQUARE_PLATFORM, /*pos*/ -3276, 102, 2, /*angle*/ 0, 270, 0, /*behParam*/ 0x010C0000, /*beh*/ bhvSlidingPlatform2),
OBJECT(/*model*/ MODEL_BITFS_SLIDING_PLATFORM, /*pos*/ 2103, 198, 312, /*angle*/ 0, 0, 0, /*behParam*/ 0x019F0000, /*beh*/ bhvSlidingPlatform2),
OBJECT(/*model*/ MODEL_BITFS_TUMBLING_PLATFORM, /*pos*/ 4979, 4250, 96, /*angle*/ 0, 0, 0, /*behParam*/ 0x00030000, /*beh*/ bhvWfTumblingBridge),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 3890, -2043, 266, /*angle*/ 0, 0, 0, /*behParam*/ 0x00520000, /*beh*/ bhvPoleGrabbing),
OBJECT(/*model*/ MODEL_BITFS_PLATFORM_ON_TRACK, /*pos*/ -5733, -3071, 0, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(0x07) | BPARAM2(0x33), /*bhv*/ bhvPlatformOnTrack),
OBJECT(/*model*/ MODEL_BITFS_TILTING_SQUARE_PLATFORM, /*pos*/ -1945, -3225, -715, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvBitFSTiltingInvertedPyramid),
OBJECT(/*model*/ MODEL_BITFS_TILTING_SQUARE_PLATFORM, /*pos*/ -2866, -3225, -715, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvBitFSTiltingInvertedPyramid),
OBJECT(/*model*/ MODEL_BITFS_SINKING_PLATFORMS, /*pos*/ -1381, 3487, 96, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvBitFSSinkingPlatforms),
OBJECT(/*model*/ MODEL_BITFS_SINKING_PLATFORMS, /*pos*/ 1126, -3065, 307, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvBitFSSinkingPlatforms),
OBJECT(/*model*/ MODEL_BITFS_SINKING_PLATFORMS, /*pos*/ -3225, 3487, 96, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvBitFSSinkingPlatforms),
OBJECT(/*model*/ MODEL_BITFS_SINKING_CAGE_PLATFORM, /*pos*/ 6605, -3071, 266, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(0x00), /*bhv*/ bhvBitFSSinkingCagePlatform),
OBJECT(/*model*/ MODEL_BITFS_SINKING_CAGE_PLATFORM, /*pos*/ 1843, 3584, 96, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(0x01), /*bhv*/ bhvBitFSSinkingCagePlatform),
OBJECT(/*model*/ MODEL_BITFS_SINKING_CAGE_PLATFORM, /*pos*/ 614, 3584, 96, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(0x01), /*bhv*/ bhvBitFSSinkingCagePlatform),
OBJECT(/*model*/ MODEL_BITFS_SINKING_CAGE_PLATFORM, /*pos*/ 3072, 3584, 96, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(0x01), /*bhv*/ bhvBitFSSinkingCagePlatform),
OBJECT(/*model*/ MODEL_BITFS_ELEVATOR, /*pos*/ 2867, -1279, 307, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(ACTIVATED_BF_PLAT_TYPE_BITFS_ELEVATOR) | BPARAM2(159), /*bhv*/ bhvActivatedBackAndForthPlatform),
OBJECT(/*model*/ MODEL_BITFS_STRETCHING_PLATFORMS, /*pos*/ -5836, 410, 300, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvSquishablePlatform),
OBJECT(/*model*/ MODEL_BITFS_SEESAW_PLATFORM, /*pos*/ 4454, -2226, 266, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(0x04), /*bhv*/ bhvSeesawPlatform),
OBJECT(/*model*/ MODEL_BITFS_SEESAW_PLATFORM, /*pos*/ 5786, -2380, 266, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(0x04), /*bhv*/ bhvSeesawPlatform),
OBJECT(/*model*/ MODEL_BITFS_MOVING_SQUARE_PLATFORM, /*pos*/ -3890, 102, 617, /*angle*/ 0, 90, 0, /*bhvParam*/ BPARAM1(0x01) | BPARAM2(0x0C), /*bhv*/ bhvSlidingPlatform2),
OBJECT(/*model*/ MODEL_BITFS_MOVING_SQUARE_PLATFORM, /*pos*/ -3276, 102, 2, /*angle*/ 0, 270, 0, /*bhvParam*/ BPARAM1(0x01) | BPARAM2(0x0C), /*bhv*/ bhvSlidingPlatform2),
OBJECT(/*model*/ MODEL_BITFS_SLIDING_PLATFORM, /*pos*/ 2103, 198, 312, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(0x01) | BPARAM2(0x9F), /*bhv*/ bhvSlidingPlatform2),
OBJECT(/*model*/ MODEL_BITFS_TUMBLING_PLATFORM, /*pos*/ 4979, 4250, 96, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(TUMBLING_BRIDGE_BP_BITFS), /*bhv*/ bhvTumblingBridge),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 3890, -2043, 266, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(82), /*bhv*/ bhvPoleGrabbing),
RETURN(),
};
static const LevelScript script_func_local_2[] = {
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -3226, 3584, -822, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvFlamethrower),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -1382, 3584, -822, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvFlamethrower),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 1229, 307, -412, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvFlamethrower),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -3226, 3584, -822, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlamethrower),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -1382, 3584, -822, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlamethrower),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 1229, 307, -412, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlamethrower),
RETURN(),
};
static const LevelScript script_func_local_3[] = {
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 1200, 5700, 160, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvBowserCourseRedCoinStar),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 1200, 5700, 160, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_1), /*bhv*/ bhvBowserCourseRedCoinStar),
RETURN(),
};
@ -63,7 +63,7 @@ const LevelScript level_bitfs_entry[] = {
LOAD_MIO0 (/*seg*/ 0x08, _common0_mio0SegmentRomStart, _common0_mio0SegmentRomEnd),
LOAD_RAW (/*seg*/ 0x0F, _common0_geoSegmentRomStart, _common0_geoSegmentRomEnd),
ALLOC_LEVEL_POOL(),
MARIO(/*model*/ MODEL_MARIO, /*behParam*/ 0x00000001, /*beh*/ bhvMario),
MARIO(/*model*/ MODEL_MARIO, /*bhvParam*/ BPARAM4(0x01), /*bhv*/ bhvMario),
JUMP_LINK(script_func_global_3),
JUMP_LINK(script_func_global_18),
JUMP_LINK(script_func_global_1),
@ -100,13 +100,13 @@ const LevelScript level_bitfs_entry[] = {
LOAD_MODEL_FROM_GEO(MODEL_BITFS_TUMBLING_PLATFORM, bitfs_geo_0006F0),
AREA(/*index*/ 1, bitfs_geo_0007A0),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -7577, -1764, 0, /*angle*/ 0, 90, 0, /*behParam*/ 0x000A0000, /*beh*/ bhvAirborneWarp),
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*/ bhvDeathWarp),
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),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -7577, -1764, 0, /*angle*/ 0, 90, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvAirborneWarp),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 6735, 3681, 99, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(20) | BPARAM2(WARP_NODE_0B), /*bhv*/ bhvWarp),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 5886, 5000, 99, /*angle*/ 0, 90, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0C), /*bhv*/ bhvDeathWarp),
WARP_NODE(/*id*/ WARP_NODE_0A, /*destLevel*/ LEVEL_BITFS, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),
WARP_NODE(/*id*/ WARP_NODE_0B, /*destLevel*/ LEVEL_BOWSER_2, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),
WARP_NODE(/*id*/ WARP_NODE_0C, /*destLevel*/ LEVEL_BITFS, /*destArea*/ 1, /*destNode*/ WARP_NODE_0C, /*flags*/ WARP_NO_CHECKPOINT),
WARP_NODE(/*id*/ WARP_NODE_DEATH, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 3, /*destNode*/ WARP_NODE_68, /*flags*/ WARP_NO_CHECKPOINT),
JUMP_LINK(script_func_local_1),
JUMP_LINK(script_func_local_2),
JUMP_LINK(script_func_local_3),

View file

@ -1,42 +1,42 @@
// 0x0701A76C - 0x0701A99E
const MacroObject bits_seg7_macro_objs[] = {
MACRO_OBJECT(/*preset*/ macro_yellow_coin, /*yaw*/ 0, /*pos*/ -1400, -4000, 0),
MACRO_OBJECT(/*preset*/ macro_yellow_coin, /*yaw*/ 0, /*pos*/ -272, -4000, 0),
MACRO_OBJECT(/*preset*/ macro_yellow_coin, /*yaw*/ 0, /*pos*/ 840, -4000, 0),
MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_circling_amp, /*yaw*/ 0, /*pos*/ 4100, -1320, -1800, /*behParam*/ 1),
MACRO_OBJECT (/*preset*/ macro_yellow_coin_1, /*yaw*/ 0, /*pos*/ -1400, -4000, 0),
MACRO_OBJECT (/*preset*/ macro_yellow_coin_1, /*yaw*/ 0, /*pos*/ -272, -4000, 0),
MACRO_OBJECT (/*preset*/ macro_yellow_coin_1, /*yaw*/ 0, /*pos*/ 840, -4000, 0),
MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_circling_amp, /*yaw*/ 0, /*pos*/ 4100, -1320, -1800, /*bhvParam*/ AMP_BP_ROT_RADIUS_300),
MACRO_OBJECT (/*preset*/ macro_goomba, /*yaw*/ 0, /*pos*/ 6180, -1791, 0),
MACRO_OBJECT (/*preset*/ macro_goomba, /*yaw*/ 0, /*pos*/ 6260, -1453, -1800),
MACRO_OBJECT(/*preset*/ macro_fire_piranha_plant, /*yaw*/ 0, /*pos*/ 1920, -1187, -1840),
MACRO_OBJECT (/*preset*/ macro_fire_piranha_plant_1, /*yaw*/ 0, /*pos*/ 1920, -1187, -1840),
MACRO_OBJECT (/*preset*/ macro_coin_line_horizontal, /*yaw*/ 0, /*pos*/ -5080, -2457, -800),
MACRO_OBJECT (/*preset*/ macro_1up, /*yaw*/ 0, /*pos*/ 1380, -1740, -660),
MACRO_OBJECT (/*preset*/ macro_whomp, /*yaw*/ 90, /*pos*/ -4180, -1330, -800),
MACRO_OBJECT (/*preset*/ macro_chuckya, /*yaw*/ 90, /*pos*/ -3909, -409, -1199),
MACRO_OBJECT(/*preset*/ macro_yellow_coin, /*yaw*/ 0, /*pos*/ 600, -200, -900),
MACRO_OBJECT(/*preset*/ macro_yellow_coin, /*yaw*/ 0, /*pos*/ 900, 60, -900),
MACRO_OBJECT(/*preset*/ macro_yellow_coin, /*yaw*/ 0, /*pos*/ 1200, 310, -900),
MACRO_OBJECT(/*preset*/ macro_yellow_coin, /*yaw*/ 0, /*pos*/ 1500, 560, -900),
MACRO_OBJECT(/*preset*/ macro_yellow_coin, /*yaw*/ 0, /*pos*/ 1800, 810, -900),
MACRO_OBJECT(/*preset*/ macro_yellow_coin, /*yaw*/ 0, /*pos*/ 2100, 1060, -900),
MACRO_OBJECT (/*preset*/ macro_yellow_coin_1, /*yaw*/ 0, /*pos*/ 600, -200, -900),
MACRO_OBJECT (/*preset*/ macro_yellow_coin_1, /*yaw*/ 0, /*pos*/ 900, 60, -900),
MACRO_OBJECT (/*preset*/ macro_yellow_coin_1, /*yaw*/ 0, /*pos*/ 1200, 310, -900),
MACRO_OBJECT (/*preset*/ macro_yellow_coin_1, /*yaw*/ 0, /*pos*/ 1500, 560, -900),
MACRO_OBJECT (/*preset*/ macro_yellow_coin_1, /*yaw*/ 0, /*pos*/ 1800, 810, -900),
MACRO_OBJECT (/*preset*/ macro_yellow_coin_1, /*yaw*/ 0, /*pos*/ 2100, 1060, -900),
MACRO_OBJECT (/*preset*/ macro_recovery_heart, /*yaw*/ 0, /*pos*/ 1279, 2639, -959),
MACRO_OBJECT (/*preset*/ macro_1up, /*yaw*/ 0, /*pos*/ -1399, 2750, -1159),
MACRO_OBJECT (/*preset*/ macro_bobomb, /*yaw*/ 0, /*pos*/ -2839, 2059, -959),
MACRO_OBJECT (/*preset*/ macro_bobomb, /*yaw*/ 0, /*pos*/ -3479, 2059, -799),
MACRO_OBJECT(/*preset*/ macro_yellow_coin, /*yaw*/ 0, /*pos*/ -7200, 2080, -890),
MACRO_OBJECT(/*preset*/ macro_yellow_coin, /*yaw*/ 0, /*pos*/ -6600, 2080, -180),
MACRO_OBJECT(/*preset*/ macro_yellow_coin, /*yaw*/ 0, /*pos*/ -6600, 2080, -1550),
MACRO_OBJECT (/*preset*/ macro_yellow_coin_1, /*yaw*/ 0, /*pos*/ -7200, 2080, -890),
MACRO_OBJECT (/*preset*/ macro_yellow_coin_1, /*yaw*/ 0, /*pos*/ -6600, 2080, -180),
MACRO_OBJECT (/*preset*/ macro_yellow_coin_1, /*yaw*/ 0, /*pos*/ -6600, 2080, -1550),
MACRO_OBJECT (/*preset*/ macro_hidden_1up_trigger, /*yaw*/ 0, /*pos*/ -6600, 2080, -180),
MACRO_OBJECT (/*preset*/ macro_hidden_1up_trigger, /*yaw*/ 0, /*pos*/ -7200, 2080, -890),
MACRO_OBJECT (/*preset*/ macro_hidden_1up_trigger, /*yaw*/ 0, /*pos*/ -6600, 2080, -1550),
MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_hidden_1up, /*yaw*/ 0, /*pos*/ -6640, 2280, -890, /*behParam*/ 3),
MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_hidden_1up, /*yaw*/ 0, /*pos*/ -6640, 2280, -890, /*bhvParam*/ 3),
MACRO_OBJECT (/*preset*/ macro_goomba_triplet_spawner, /*yaw*/ 0, /*pos*/ -5239, 3839, -999),
MACRO_OBJECT (/*preset*/ macro_bobomb, /*yaw*/ 0, /*pos*/ -1559, 3800, -1079),
MACRO_OBJECT (/*preset*/ macro_bobomb, /*yaw*/ 0, /*pos*/ -1079, 3800, -1039),
MACRO_OBJECT (/*preset*/ macro_coin_line_horizontal, /*yaw*/ 0, /*pos*/ 1879, 4639, -1559),
MACRO_OBJECT (/*preset*/ macro_1up, /*yaw*/ 0, /*pos*/ -259, 6059, -3759),
MACRO_OBJECT (/*preset*/ macro_recovery_heart, /*yaw*/ 0, /*pos*/ 359, 6099, -3219),
MACRO_OBJECT(/*preset*/ macro_fire_piranha_plant, /*yaw*/ 0, /*pos*/ 3680, 2428, -1840),
MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_circling_amp, /*yaw*/ 0, /*pos*/ -6460, 2080, -900, /*behParam*/ 2),
MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_circling_amp, /*yaw*/ 0, /*pos*/ -6460, 2280, -900, /*behParam*/ 0),
MACRO_OBJECT (/*preset*/ macro_fire_piranha_plant_1, /*yaw*/ 0, /*pos*/ 3680, 2428, -1840),
MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_circling_amp, /*yaw*/ 0, /*pos*/ -6460, 2080, -900, /*bhvParam*/ AMP_BP_ROT_RADIUS_400),
MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_circling_amp, /*yaw*/ 0, /*pos*/ -6460, 2280, -900, /*bhvParam*/ AMP_BP_ROT_RADIUS_200),
MACRO_OBJECT (/*preset*/ macro_goomba_triplet_spawner, /*yaw*/ 0, /*pos*/ 360, 6040, -2880),
MACRO_OBJECT (/*preset*/ macro_coin_line_horizontal, /*yaw*/ 0, /*pos*/ -302, -2457, -800),
MACRO_OBJECT (/*preset*/ macro_red_coin, /*yaw*/ 0, /*pos*/ 1590, -1120, -2055),

View file

@ -3,8 +3,8 @@
#include "surface_terrains.h"
#include "moving_texture_macros.h"
#include "level_misc_macros.h"
#include "macro_preset_names.h"
#include "special_preset_names.h"
#include "macro_presets.h"
#include "special_presets.h"
#include "textures.h"
#include "make_const_nonconst.h"

View file

@ -16,30 +16,30 @@
#include "levels/bits/header.h"
static const LevelScript script_func_local_1[] = {
OBJECT(/*model*/ MODEL_BITS_SLIDING_PLATFORM, /*pos*/ -2370, -4525, 0, /*angle*/ 0, 0, 0, /*behParam*/ 0x00100000, /*beh*/ bhvSlidingPlatform2),
OBJECT(/*model*/ MODEL_BITS_TWIN_SLIDING_PLATFORMS, /*pos*/ -2611, 3544, -904, /*angle*/ 0, 0, 0, /*behParam*/ 0x00CF0000, /*beh*/ bhvSlidingPlatform2),
OBJECT(/*model*/ MODEL_BITS_TWIN_SLIDING_PLATFORMS, /*pos*/ -4700, 3544, -904, /*angle*/ 0, 180, 0, /*behParam*/ 0x008F0000, /*beh*/ bhvSlidingPlatform2),
OBJECT(/*model*/ MODEL_BITS_OCTAGONAL_PLATFORM, /*pos*/ 4139, -1740, -1831, /*angle*/ 0, 0, 0, /*behParam*/ 0x02000000, /*beh*/ bhvOctagonalPlatformRotating),
OBJECT(/*model*/ MODEL_BITS_OCTAGONAL_PLATFORM, /*pos*/ -6459, 1732, -904, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvOctagonalPlatformRotating),
OBJECT(/*model*/ MODEL_BITS_OCTAGONAL_PLATFORM, /*pos*/ -4770, 1732, -904, /*angle*/ 0, 0, 0, /*behParam*/ 0x02000000, /*beh*/ bhvOctagonalPlatformRotating),
OBJECT(/*model*/ MODEL_BITS_FERRIS_WHEEL_AXLE, /*pos*/ -1748, -1330, -1094, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvFerrisWheelAxle),
OBJECT(/*model*/ MODEL_BITS_FERRIS_WHEEL_AXLE, /*pos*/ 2275, 5628, -1315, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvFerrisWheelAxle),
OBJECT(/*model*/ MODEL_BITS_FERRIS_WHEEL_AXLE, /*pos*/ 3114, 4701, -1320, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvFerrisWheelAxle),
OBJECT(/*model*/ MODEL_BITS_ARROW_PLATFORM, /*pos*/ 2793, 2325, -904, /*angle*/ 0, 0, 0, /*behParam*/ 0x00610000, /*beh*/ bhvActivatedBackAndForthPlatform),
OBJECT(/*model*/ MODEL_BITS_SEESAW_PLATFORM, /*pos*/ 27, -1555, -713, /*angle*/ 0, 90, 0, /*behParam*/ 0x00010000, /*beh*/ bhvSeesawPlatform),
OBJECT(/*model*/ MODEL_BITS_TILTING_W_PLATFORM, /*pos*/ -306, -4300, 0, /*angle*/ 0, 0, 0, /*behParam*/ 0x00020000, /*beh*/ bhvSeesawPlatform),
OBJECT(/*model*/ MODEL_BITS_STAIRCASE, /*pos*/ 1769, -234, -899, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvAnimatesOnFloorSwitchPress),
OBJECT(/*model*/ MODEL_PURPLE_SWITCH, /*pos*/ -279, -234, -900, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvFloorSwitchAnimatesObject),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -6460, 2039, -905, /*angle*/ 0, 0, 0, /*behParam*/ 0x00CF0000, /*beh*/ bhvPoleGrabbing),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -3326, 3227, -905, /*angle*/ 0, 0, 0, /*behParam*/ 0x004D0000, /*beh*/ bhvPoleGrabbing),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 5518, 3184, -4019, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvFlamethrower),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 6465, 3731, -1915, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvFlamethrower),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 5915, 3718, -4019, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvFlamethrower),
OBJECT(/*model*/ MODEL_BITS_SLIDING_PLATFORM, /*pos*/ -2370, -4525, 0, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(0x10), /*bhv*/ bhvSlidingPlatform2),
OBJECT(/*model*/ MODEL_BITS_TWIN_SLIDING_PLATFORMS, /*pos*/ -2611, 3544, -904, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(0xCF), /*bhv*/ bhvSlidingPlatform2),
OBJECT(/*model*/ MODEL_BITS_TWIN_SLIDING_PLATFORMS, /*pos*/ -4700, 3544, -904, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(0x8F), /*bhv*/ bhvSlidingPlatform2),
OBJECT(/*model*/ MODEL_BITS_OCTAGONAL_PLATFORM, /*pos*/ 4139, -1740, -1831, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(0x02), /*bhv*/ bhvOctagonalPlatformRotating),
OBJECT(/*model*/ MODEL_BITS_OCTAGONAL_PLATFORM, /*pos*/ -6459, 1732, -904, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvOctagonalPlatformRotating),
OBJECT(/*model*/ MODEL_BITS_OCTAGONAL_PLATFORM, /*pos*/ -4770, 1732, -904, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(0x02), /*bhv*/ bhvOctagonalPlatformRotating),
OBJECT(/*model*/ MODEL_BITS_FERRIS_WHEEL_AXLE, /*pos*/ -1748, -1330, -1094, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFerrisWheelAxle),
OBJECT(/*model*/ MODEL_BITS_FERRIS_WHEEL_AXLE, /*pos*/ 2275, 5628, -1315, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFerrisWheelAxle),
OBJECT(/*model*/ MODEL_BITS_FERRIS_WHEEL_AXLE, /*pos*/ 3114, 4701, -1320, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFerrisWheelAxle),
OBJECT(/*model*/ MODEL_BITS_ARROW_PLATFORM, /*pos*/ 2793, 2325, -904, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(ACTIVATED_BF_PLAT_TYPE_BITS_ARROW_PLAT) | BPARAM2(97), /*bhv*/ bhvActivatedBackAndForthPlatform),
OBJECT(/*model*/ MODEL_BITS_SEESAW_PLATFORM, /*pos*/ 27, -1555, -713, /*angle*/ 0, 90, 0, /*bhvParam*/ BPARAM2(0x01), /*bhv*/ bhvSeesawPlatform),
OBJECT(/*model*/ MODEL_BITS_TILTING_W_PLATFORM, /*pos*/ -306, -4300, 0, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(0x02), /*bhv*/ bhvSeesawPlatform),
OBJECT(/*model*/ MODEL_BITS_STAIRCASE, /*pos*/ 1769, -234, -899, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvAnimatesOnFloorSwitchPress),
OBJECT(/*model*/ MODEL_PURPLE_SWITCH, /*pos*/ -279, -234, -900, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFloorSwitchAnimatesObject),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -6460, 2039, -905, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(207), /*bhv*/ bhvPoleGrabbing),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -3326, 3227, -905, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(77), /*bhv*/ bhvPoleGrabbing),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 5518, 3184, -4019, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlamethrower),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 6465, 3731, -1915, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlamethrower),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 5915, 3718, -4019, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlamethrower),
RETURN(),
};
static const LevelScript script_func_local_2[] = {
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 350, 6800, -6800, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvBowserCourseRedCoinStar),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 350, 6800, -6800, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_1), /*bhv*/ bhvBowserCourseRedCoinStar),
RETURN(),
};
@ -53,7 +53,7 @@ const LevelScript level_bits_entry[] = {
LOAD_MIO0 (/*seg*/ 0x08, _common0_mio0SegmentRomStart, _common0_mio0SegmentRomEnd),
LOAD_RAW (/*seg*/ 0x0F, _common0_geoSegmentRomStart, _common0_geoSegmentRomEnd),
ALLOC_LEVEL_POOL(),
MARIO(/*model*/ MODEL_MARIO, /*behParam*/ 0x00000001, /*beh*/ bhvMario),
MARIO(/*model*/ MODEL_MARIO, /*bhvParam*/ BPARAM4(0x01), /*bhv*/ bhvMario),
JUMP_LINK(script_func_global_15),
JUMP_LINK(script_func_global_1),
LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_03, bits_geo_000430),
@ -90,13 +90,13 @@ const LevelScript level_bits_entry[] = {
LOAD_MODEL_FROM_GEO(MODEL_BITS_WARP_PIPE, warp_pipe_geo),
AREA(/*index*/ 1, bits_geo_000718),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -7039, -3812, 4, /*angle*/ 0, 90, 0, /*behParam*/ 0x000A0000, /*beh*/ bhvAirborneWarp),
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*/ bhvDeathWarp),
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),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -7039, -3812, 4, /*angle*/ 0, 90, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvAirborneWarp),
OBJECT(/*model*/ MODEL_BITS_WARP_PIPE, /*pos*/ 351, 6652, -6030, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0B), /*bhv*/ bhvWarpPipe),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 351, 6800, -3900, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0C), /*bhv*/ bhvDeathWarp),
WARP_NODE(/*id*/ WARP_NODE_0A, /*destLevel*/ LEVEL_BITS, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),
WARP_NODE(/*id*/ WARP_NODE_0B, /*destLevel*/ LEVEL_BOWSER_3, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),
WARP_NODE(/*id*/ WARP_NODE_0C, /*destLevel*/ LEVEL_BITS, /*destArea*/ 1, /*destNode*/ WARP_NODE_0C, /*flags*/ WARP_NO_CHECKPOINT),
WARP_NODE(/*id*/ WARP_NODE_DEATH, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 2, /*destNode*/ WARP_NODE_6B, /*flags*/ WARP_NO_CHECKPOINT),
JUMP_LINK(script_func_local_1),
JUMP_LINK(script_func_local_2),
TERRAIN(/*terrainData*/ bits_seg7_collision_level),

View file

@ -4,21 +4,21 @@ const MacroObject bob_seg7_macro_objs[] = {
MACRO_OBJECT (/*preset*/ macro_breakable_box_no_coins, /*yaw*/ 0, /*pos*/ -3979, 0, 6827),
MACRO_OBJECT (/*preset*/ macro_goomba, /*yaw*/ 0, /*pos*/ -2713, 152, 5778),
MACRO_OBJECT (/*preset*/ macro_goomba, /*yaw*/ 0, /*pos*/ -342, 400, 5433),
MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_water_bomb_spawner, /*yaw*/ 0, /*pos*/ 3620, 4000, 4800, /*behParam*/ 15),
MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_water_bomb_spawner, /*yaw*/ 0, /*pos*/ -5141, 3764, -743, /*behParam*/ 25),
MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_water_bomb_spawner, /*yaw*/ 0, /*pos*/ -4208, 3769, -2036, /*behParam*/ 10),
MACRO_OBJECT(/*preset*/ macro_water_bomb_cannon, /*yaw*/ 315, /*pos*/ 1388, 2918, -2383),
MACRO_OBJECT(/*preset*/ macro_wooden_post, /*yaw*/ 0, /*pos*/ -6500, 768, 1800),
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*/ 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),
MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_cannon_closed, /*yaw*/ 0, /*pos*/ 4352, 3072, 1229, /*behParam*/ 0x80),
MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_cannon_closed, /*yaw*/ 0, /*pos*/ 5376, 1537, 4610, /*behParam*/ 0x40),
MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_water_bomb_spawner, /*yaw*/ 0, /*pos*/ 3620, 4000, 4800, /*bhvParam*/ 15),
MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_water_bomb_spawner, /*yaw*/ 0, /*pos*/ -5141, 3764, -743, /*bhvParam*/ 25),
MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_water_bomb_spawner, /*yaw*/ 0, /*pos*/ -4208, 3769, -2036, /*bhvParam*/ 10),
MACRO_OBJECT (/*preset*/ macro_water_bomb_cannon_2, /*yaw*/ 315, /*pos*/ 1388, 2918, -2383),
MACRO_OBJECT (/*preset*/ macro_wooden_post_1, /*yaw*/ 0, /*pos*/ -6500, 768, 1800),
MACRO_OBJECT (/*preset*/ macro_wooden_post_1, /*yaw*/ 0, /*pos*/ -5500, 768, 1800),
MACRO_OBJECT (/*preset*/ macro_wooden_post_1, /*yaw*/ 0, /*pos*/ -6500, 768, 3000),
MACRO_OBJECT (/*preset*/ macro_wooden_post_1, /*yaw*/ 0, /*pos*/ -5500, 768, 3000),
MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 270, /*pos*/ -4000, 0, 6050, /*bhvParam*/ DIALOG_015),
MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ 1230, 768, 3258, /*bhvParam*/ DIALOG_008),
MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_cannon_closed, /*yaw*/ 0, /*pos*/ -5018, 1332, -3533, /*bhvParam*/ 0x00),
MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_cannon_closed, /*yaw*/ 0, /*pos*/ 6349, 2080, -7066, /*bhvParam*/ 0xC0),
MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_cannon_closed, /*yaw*/ 0, /*pos*/ 4243, 3071, -2451, /*bhvParam*/ 0xC0),
MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_cannon_closed, /*yaw*/ 0, /*pos*/ 4352, 3072, 1229, /*bhvParam*/ 0x80),
MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_cannon_closed, /*yaw*/ 0, /*pos*/ 5376, 1537, 4610, /*bhvParam*/ 0x40),
MACRO_OBJECT (/*preset*/ macro_bobomb, /*yaw*/ 0, /*pos*/ -3080, 0, -5200),
MACRO_OBJECT (/*preset*/ macro_bobomb, /*yaw*/ 0, /*pos*/ -3688, 885, -3813),
MACRO_OBJECT (/*preset*/ macro_bobomb, /*yaw*/ 0, /*pos*/ -4629, 1024, -1772),
@ -39,8 +39,8 @@ 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*/ DIALOG_095),
MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_hidden_1up, /*yaw*/ 0, /*pos*/ -6060, 1060, -5340, /*behParam*/ 4),
MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 270, /*pos*/ -4000, 0, 6300, /*bhvParam*/ DIALOG_095),
MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_hidden_1up, /*yaw*/ 0, /*pos*/ -6060, 1060, -5340, /*bhvParam*/ 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),
MACRO_OBJECT (/*preset*/ macro_hidden_1up_trigger, /*yaw*/ 0, /*pos*/ -6060, 1060, -5640),
@ -57,36 +57,36 @@ 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*/ 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_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 270, /*pos*/ 66, 0, 6977, /*bhvParam*/ DIALOG_113),
MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ 3394, 3072, 1846, /*bhvParam*/ DIALOG_064),
MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 270, /*pos*/ -3110, 104, 5064, /*bhvParam*/ DIALOG_035),
MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ 6860, 2041, -6640, /*bhvParam*/ DIALOG_074),
MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ -6020, 768, 2957, /*bhvParam*/ DIALOG_104),
MACRO_OBJECT (/*preset*/ macro_coin_ring_vertical_flying, /*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),
MACRO_OBJECT(/*preset*/ macro_coin_ring_vertical, /*yaw*/ 90, /*pos*/ 1000, 3400, 1250),
MACRO_OBJECT(/*preset*/ macro_coin_ring_vertical, /*yaw*/ 90, /*pos*/ 2000, 3400, 1250),
MACRO_OBJECT(/*preset*/ macro_coin_ring_vertical, /*yaw*/ 90, /*pos*/ 3000, 3400, 1250),
MACRO_OBJECT (/*preset*/ macro_coin_ring_vertical_flying, /*yaw*/ 90, /*pos*/ 1000, 3400, 1250),
MACRO_OBJECT (/*preset*/ macro_coin_ring_vertical_flying, /*yaw*/ 90, /*pos*/ 2000, 3400, 1250),
MACRO_OBJECT (/*preset*/ macro_coin_ring_vertical_flying, /*yaw*/ 90, /*pos*/ 3000, 3400, 1250),
MACRO_OBJECT (/*preset*/ macro_hidden_star_trigger, /*yaw*/ 0, /*pos*/ 1000, 3600, 1250),
MACRO_OBJECT (/*preset*/ macro_hidden_star_trigger, /*yaw*/ 0, /*pos*/ 2000, 3600, 1250),
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_bobomb_stationary, /*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*/ 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_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 45, /*pos*/ -3530, 1415, 430, /*bhvParam*/ DIALOG_050),
MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ 5053, 3073, 2180, /*bhvParam*/ DIALOG_053),
MACRO_OBJECT (/*preset*/ macro_yellow_coin_1, /*yaw*/ 0, /*pos*/ -1506, 5517, 1250),
MACRO_OBJECT (/*preset*/ macro_yellow_coin_1, /*yaw*/ 0, /*pos*/ 1000, 3600, 1250),
MACRO_OBJECT (/*preset*/ macro_yellow_coin_1, /*yaw*/ 0, /*pos*/ 2000, 3600, 1250),
MACRO_OBJECT (/*preset*/ macro_yellow_coin_1, /*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*/ 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_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 270, /*pos*/ -2224, 990, -4359, /*bhvParam*/ DIALOG_039),
MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 60, /*pos*/ 3911, 3529, -7081, /*bhvParam*/ DIALOG_112),
MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ -7000, 1024, -2099, /*bhvParam*/ 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),
MACRO_OBJECT(/*preset*/ macro_yellow_coin, /*yaw*/ 0, /*pos*/ -300, 4200, 1250),
MACRO_OBJECT (/*preset*/ macro_box_star_act_3, /*yaw*/ 0, /*pos*/ 5540, 3350, 1200),
MACRO_OBJECT (/*preset*/ macro_coin_ring_vertical_flying, /*yaw*/ 90, /*pos*/ -300, 4000, 1250),
MACRO_OBJECT (/*preset*/ macro_yellow_coin_1, /*yaw*/ 0, /*pos*/ -300, 4200, 1250),
MACRO_OBJECT (/*preset*/ macro_breakable_box_small, /*yaw*/ 0, /*pos*/ -6800, 1024, 40),
MACRO_OBJECT_END(),
};

View file

@ -1,6 +1,6 @@
# Bob-Omb Battlefield
# Bob-omb Battlefield
short-name: bob
full-name: Bob-Omb Battlefield
full-name: Bob-omb Battlefield
texture-file: ["/texture.inc.c"]
area-count: 1
objects: [chain_chomp_gate, grate_door, seesaw_platform]

View file

@ -3,8 +3,8 @@
#include "surface_terrains.h"
#include "moving_texture_macros.h"
#include "level_misc_macros.h"
#include "macro_preset_names.h"
#include "special_preset_names.h"
#include "macro_presets.h"
#include "special_presets.h"
#include "textures.h"
#include "dialog_ids.h"

View file

@ -17,39 +17,39 @@
#include "levels/bob/header.h"
static const LevelScript script_func_local_1[] = {
OBJECT(/*model*/ MODEL_BOB_CHAIN_CHOMP_GATE, /*pos*/ 1456, 768, 446, /*angle*/ 0, 326, 0, /*behParam*/ 0x00000000, /*beh*/ bhvChainChompGate),
OBJECT(/*model*/ MODEL_BOB_SEESAW_PLATFORM, /*pos*/ -2303, 717, 1024, /*angle*/ 0, 45, 0, /*behParam*/ 0x00030000, /*beh*/ bhvSeesawPlatform),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -2050, 0, -3069, /*angle*/ 0, 25, 0, /*behParam*/ 0x00000000, /*beh*/ bhvOpenableGrill),
OBJECT(/*model*/ MODEL_PURPLE_SWITCH, /*pos*/ -2283, 0, -3682, /*angle*/ 0, 27, 0, /*behParam*/ 0x00000000, /*beh*/ bhvFloorSwitchGrills),
OBJECT(/*model*/ MODEL_CHECKERBOARD_PLATFORM, /*pos*/ 1612, 300, 4611, /*angle*/ 0, 0, 0, /*behParam*/ 0x00280000, /*beh*/ bhvCheckerboardElevatorGroup),
OBJECT(/*model*/ MODEL_BOB_CHAIN_CHOMP_GATE, /*pos*/ 1456, 768, 446, /*angle*/ 0, 326, 0, /*bhvParam*/ 0, /*bhv*/ bhvChainChompGate),
OBJECT(/*model*/ MODEL_BOB_SEESAW_PLATFORM, /*pos*/ -2303, 717, 1024, /*angle*/ 0, 45, 0, /*bhvParam*/ BPARAM2(0x03), /*bhv*/ bhvSeesawPlatform),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -2050, 0, -3069, /*angle*/ 0, 25, 0, /*bhvParam*/ BPARAM2(OPENABLE_GRILL_BP_BOB), /*bhv*/ bhvOpenableGrill),
OBJECT(/*model*/ MODEL_PURPLE_SWITCH, /*pos*/ -2283, 0, -3682, /*angle*/ 0, 27, 0, /*bhvParam*/ 0, /*bhv*/ bhvFloorSwitchGrills),
OBJECT(/*model*/ MODEL_CHECKERBOARD_PLATFORM, /*pos*/ 1612, 300, 4611, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(0) | BPARAM2(40), /*bhv*/ bhvCheckerboardElevatorGroup),
RETURN(),
};
static const LevelScript script_func_local_2[] = {
OBJECT_WITH_ACTS(/*model*/ MODEL_NONE, /*pos*/ 1535, 3840, -5561, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvBobBowlingBallSpawner, /*acts*/ ACT_1 | ACT_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*/ 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),
OBJECT_WITH_ACTS(/*model*/ MODEL_NONE, /*pos*/ 1535, 3840, -5561, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(BBALL_BP_STYPE_BOB_UPPER), /*bhv*/ bhvBoBBowlingBallSpawner, /*acts*/ ACT_1 | ACT_2),
OBJECT_WITH_ACTS(/*model*/ MODEL_NONE, /*pos*/ 1535, 3840, -5561, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(BBALL_BP_STYPE_BOB_UPPER), /*bhv*/ bhvTTMBowlingBallSpawner, /*acts*/ ACT_3 | ACT_4 | ACT_5 | ACT_6),
OBJECT_WITH_ACTS(/*model*/ MODEL_NONE, /*pos*/ 524, 2825, -5400, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(BBALL_BP_STYPE_BOB_LOWER), /*bhv*/ bhvBoBBowlingBallSpawner, /*acts*/ ACT_1 | ACT_2),
OBJECT_WITH_ACTS(/*model*/ MODEL_NONE, /*pos*/ 524, 2825, -5400, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(BBALL_BP_STYPE_BOB_LOWER), /*bhv*/ bhvTTMBowlingBallSpawner, /*acts*/ ACT_3 | ACT_4 | ACT_5 | ACT_6),
OBJECT (/*model*/ MODEL_BOWLING_BALL, /*pos*/ -993, 886, -3565, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvPitBowlingBall),
OBJECT (/*model*/ MODEL_BOWLING_BALL, /*pos*/ -785, 886, -4301, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvPitBowlingBall),
OBJECT_WITH_ACTS(/*model*/ MODEL_BOWLING_BALL, /*pos*/ -93, 886, -3414, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ 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, /*bhvParam*/ BPARAM2(DIALOG_002), /*bhv*/ bhvBobombBuddy, /*acts*/ ACT_1),
OBJECT_WITH_ACTS(/*model*/ MODEL_BOBOMB_BUDDY, /*pos*/ -6250, 0, 6680, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(DIALOG_001), /*bhv*/ bhvBobombBuddy, /*acts*/ ACT_1),
OBJECT_WITH_ACTS(/*model*/ MODEL_BOBOMB_BUDDY, /*pos*/ -5723, 140, 6017, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ 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, /*bhvParam*/ BPARAM2(DIALOG_003), /*bhv*/ 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, /*bhvParam*/ BPARAM2(0x01), /*bhv*/ bhvWaterBombCannon, /*acts*/ ACT_1),
OBJECT_WITH_ACTS(/*model*/ MODEL_DL_CANNON_LID, /*pos*/ -5694, 128, 5600, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(0x00), /*bhv*/ 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, /*bhvParam*/ 0, /*bhv*/ bhvKoopaRaceEndpoint, /*acts*/ ACT_2),
OBJECT_WITH_ACTS(/*model*/ MODEL_KOOPA_WITH_SHELL, /*pos*/ 3400, 770, 6500, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(KOOPA_BP_NORMAL), /*bhv*/ 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_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_KING_BOBOMB, /*pos*/ 1636, 4242, -5567, /*angle*/ 0, -147, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_1), /*bhv*/ bhvKingBobomb, /*acts*/ ACT_1),
OBJECT_WITH_ACTS(/*model*/ MODEL_KOOPA_WITH_SHELL, /*pos*/ -4004, 0, 5221, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_2) | BPARAM2(KOOPA_BP_KOOPA_THE_QUICK_BOB), /*bhv*/ bhvKoopa, /*acts*/ ACT_2),
OBJECT_WITH_ACTS(/*model*/ MODEL_NONE, /*pos*/ -6000, 1000, 2400, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_4), /*bhv*/ bhvHiddenRedCoinStar, /*acts*/ ALL_ACTS),
OBJECT_WITH_ACTS(/*model*/ MODEL_NONE, /*pos*/ -6600, 1000, 1250, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_5) | BPARAM2(0x04), /*bhv*/ bhvHiddenStar, /*acts*/ ALL_ACTS),
OBJECT_WITH_ACTS(/*model*/ MODEL_STAR, /*pos*/ 1550, 1200, 300, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_6), /*bhv*/ bhvStar, /*acts*/ ALL_ACTS),
RETURN(),
};
@ -65,7 +65,7 @@ const LevelScript level_bob_entry[] = {
LOAD_MIO0 (/*seg*/ 0x08, _common0_mio0SegmentRomStart, _common0_mio0SegmentRomEnd),
LOAD_RAW (/*seg*/ 0x0F, _common0_geoSegmentRomStart, _common0_geoSegmentRomEnd),
ALLOC_LEVEL_POOL(),
MARIO(/*model*/ MODEL_MARIO, /*behParam*/ 0x00000001, /*beh*/ bhvMario),
MARIO(/*model*/ MODEL_MARIO, /*bhvParam*/ BPARAM4(0x01), /*bhv*/ bhvMario),
JUMP_LINK(script_func_global_1),
JUMP_LINK(script_func_global_4),
JUMP_LINK(script_func_global_15),
@ -78,18 +78,18 @@ const LevelScript level_bob_entry[] = {
JUMP_LINK(script_func_local_1),
JUMP_LINK(script_func_local_2),
JUMP_LINK(script_func_local_3),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -6558, 1000, 6464, /*angle*/ 0, 135, 0, /*behParam*/ 0x000A0000, /*beh*/ bhvSpinAirborneWarp),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 583, 2683, -5387, /*angle*/ 0, -154, 0, /*behParam*/ 0x000B0000, /*beh*/ bhvFadingWarp),
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*/ 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),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -6558, 1000, 6464, /*angle*/ 0, 135, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvSpinAirborneWarp),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 583, 2683, -5387, /*angle*/ 0, -154, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0B), /*bhv*/ bhvFadingWarp),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 1680, 3835, -5523, /*angle*/ 0, -153, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0C), /*bhv*/ bhvFadingWarp),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -6612, 1024, -3351, /*angle*/ 0, 107, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0D), /*bhv*/ bhvFadingWarp),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 1980, 768, 6618, /*angle*/ 0, -151, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0E), /*bhv*/ bhvFadingWarp),
WARP_NODE(/*id*/ WARP_NODE_0A, /*destLevel*/ LEVEL_BOB, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),
WARP_NODE(/*id*/ WARP_NODE_0B, /*destLevel*/ LEVEL_BOB, /*destArea*/ 1, /*destNode*/ WARP_NODE_0C, /*flags*/ WARP_NO_CHECKPOINT),
WARP_NODE(/*id*/ WARP_NODE_0C, /*destLevel*/ LEVEL_BOB, /*destArea*/ 1, /*destNode*/ WARP_NODE_0B, /*flags*/ WARP_NO_CHECKPOINT),
WARP_NODE(/*id*/ WARP_NODE_0D, /*destLevel*/ LEVEL_BOB, /*destArea*/ 1, /*destNode*/ WARP_NODE_0E, /*flags*/ WARP_NO_CHECKPOINT),
WARP_NODE(/*id*/ WARP_NODE_0E, /*destLevel*/ LEVEL_BOB, /*destArea*/ 1, /*destNode*/ WARP_NODE_0D, /*flags*/ WARP_NO_CHECKPOINT),
WARP_NODE(/*id*/ WARP_NODE_SUCCESS, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_32, /*flags*/ WARP_NO_CHECKPOINT),
WARP_NODE(/*id*/ WARP_NODE_DEATH, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_64, /*flags*/ WARP_NO_CHECKPOINT),
TERRAIN(/*terrainData*/ bob_seg7_collision_level),
MACRO_OBJECTS(/*objList*/ bob_seg7_macro_objs),
SHOW_DIALOG(/*index*/ 0x00, DIALOG_000),

View file

@ -3,8 +3,8 @@
#include "surface_terrains.h"
#include "moving_texture_macros.h"
#include "level_misc_macros.h"
#include "macro_preset_names.h"
#include "special_preset_names.h"
#include "macro_presets.h"
#include "special_presets.h"
#include "textures.h"
#include "make_const_nonconst.h"

View file

@ -23,15 +23,15 @@ const LevelScript level_bowser_1_entry[] = {
LOAD_MIO0(/*seg*/ 0x06, _group12_mio0SegmentRomStart, _group12_mio0SegmentRomEnd),
LOAD_RAW (/*seg*/ 0x0D, _group12_geoSegmentRomStart, _group12_geoSegmentRomEnd),
ALLOC_LEVEL_POOL(),
MARIO(/*model*/ MODEL_MARIO, /*behParam*/ 0x00000001, /*beh*/ bhvMario),
MARIO(/*model*/ MODEL_MARIO, /*bhvParam*/ BPARAM4(0x01), /*bhv*/ bhvMario),
JUMP_LINK(script_func_global_13),
LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_03, bowser_1_yellow_sphere_geo),
AREA(/*index*/ 1, bowser_1_geo_0000D0),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 0, 1307, 0, /*angle*/ 0, 180, 0, /*behParam*/ 0x000A0000, /*beh*/ bhvSpinAirborneCircleWarp),
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),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 0, 1307, 0, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvSpinAirborneCircleWarp),
WARP_NODE(/*id*/ WARP_NODE_0A, /*destLevel*/ LEVEL_BOWSER_1, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),
WARP_NODE(/*id*/ WARP_NODE_SUCCESS, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_24, /*flags*/ WARP_NO_CHECKPOINT),
WARP_NODE(/*id*/ WARP_NODE_DEATH, /*destLevel*/ LEVEL_BITDW, /*destArea*/ 1, /*destNode*/ WARP_NODE_0C, /*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),

View file

@ -3,8 +3,8 @@
#include "surface_terrains.h"
#include "moving_texture_macros.h"
#include "level_misc_macros.h"
#include "macro_preset_names.h"
#include "special_preset_names.h"
#include "macro_presets.h"
#include "special_presets.h"
#include "textures.h"
#include "make_const_nonconst.h"

View file

@ -16,11 +16,11 @@
#include "levels/bowser_2/header.h"
static const LevelScript script_func_local_1[] = {
OBJECT(/*model*/ MODEL_BOWSER_2_TILTING_ARENA, /*pos*/ 0, 0, 0, /*angle*/ 0, 90, 0, /*behParam*/ 0x00000000, /*beh*/ bhvTiltingBowserLavaPlatform),
OBJECT(/*model*/ MODEL_BOWSER_BOMB, /*pos*/ 4, 1329, 3598, /*angle*/ 0, 90, 0, /*behParam*/ 0x00000000, /*beh*/ bhvBowserBomb),
OBJECT(/*model*/ MODEL_BOWSER_BOMB, /*pos*/ 3584, 1329, 0, /*angle*/ 0, 90, 0, /*behParam*/ 0x00000000, /*beh*/ bhvBowserBomb),
OBJECT(/*model*/ MODEL_BOWSER_BOMB, /*pos*/ 0, 1329, -3583, /*angle*/ 0, 90, 0, /*behParam*/ 0x00000000, /*beh*/ bhvBowserBomb),
OBJECT(/*model*/ MODEL_BOWSER_BOMB, /*pos*/ -3583, 1329, 0, /*angle*/ 0, 90, 0, /*behParam*/ 0x00000000, /*beh*/ bhvBowserBomb),
OBJECT(/*model*/ MODEL_BOWSER_2_TILTING_ARENA, /*pos*/ 0, 0, 0, /*angle*/ 0, 90, 0, /*bhvParam*/ 0, /*bhv*/ bhvTiltingBowserLavaPlatform),
OBJECT(/*model*/ MODEL_BOWSER_BOMB, /*pos*/ 4, 1329, 3598, /*angle*/ 0, 90, 0, /*bhvParam*/ 0, /*bhv*/ bhvBowserBomb),
OBJECT(/*model*/ MODEL_BOWSER_BOMB, /*pos*/ 3584, 1329, 0, /*angle*/ 0, 90, 0, /*bhvParam*/ 0, /*bhv*/ bhvBowserBomb),
OBJECT(/*model*/ MODEL_BOWSER_BOMB, /*pos*/ 0, 1329, -3583, /*angle*/ 0, 90, 0, /*bhvParam*/ 0, /*bhv*/ bhvBowserBomb),
OBJECT(/*model*/ MODEL_BOWSER_BOMB, /*pos*/ -3583, 1329, 0, /*angle*/ 0, 90, 0, /*bhvParam*/ 0, /*bhv*/ bhvBowserBomb),
RETURN(),
};
@ -33,15 +33,15 @@ const LevelScript level_bowser_2_entry[] = {
LOAD_MIO0 (/*seg*/ 0x06, _group12_mio0SegmentRomStart, _group12_mio0SegmentRomEnd),
LOAD_RAW (/*seg*/ 0x0D, _group12_geoSegmentRomStart, _group12_geoSegmentRomEnd),
ALLOC_LEVEL_POOL(),
MARIO(/*model*/ MODEL_MARIO, /*behParam*/ 0x00000001, /*beh*/ bhvMario),
MARIO(/*model*/ MODEL_MARIO, /*bhvParam*/ BPARAM4(0x01), /*bhv*/ bhvMario),
JUMP_LINK(script_func_global_13),
LOAD_MODEL_FROM_GEO(MODEL_BOWSER_2_TILTING_ARENA, bowser_2_geo_000170),
AREA(/*index*/ 1, bowser_2_geo_000188),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 0, 2229, 0, /*angle*/ 0, 180, 0, /*behParam*/ 0x000A0000, /*beh*/ bhvSpinAirborneCircleWarp),
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),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 0, 2229, 0, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvSpinAirborneCircleWarp),
WARP_NODE(/*id*/ WARP_NODE_0A, /*destLevel*/ LEVEL_BOWSER_2, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),
WARP_NODE(/*id*/ WARP_NODE_SUCCESS, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 3, /*destNode*/ WARP_NODE_36, /*flags*/ WARP_NO_CHECKPOINT),
WARP_NODE(/*id*/ WARP_NODE_DEATH, /*destLevel*/ LEVEL_BITFS, /*destArea*/ 1, /*destNode*/ WARP_NODE_0C, /*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),

View file

@ -3,8 +3,8 @@
#include "surface_terrains.h"
#include "moving_texture_macros.h"
#include "level_misc_macros.h"
#include "macro_preset_names.h"
#include "special_preset_names.h"
#include "macro_presets.h"
#include "special_presets.h"
#include "textures.h"
#include "make_const_nonconst.h"

View file

@ -16,21 +16,21 @@
#include "levels/bowser_3/header.h"
static const LevelScript script_func_local_1[] = {
OBJECT(/*model*/ MODEL_BOWSER_3_FALLING_PLATFORM_1, /*pos*/ 0, 0, 0, /*angle*/ 0, 0, 0, /*behParam*/ 0x00010000, /*beh*/ bhvFallingBowserPlatform),
OBJECT(/*model*/ MODEL_BOWSER_3_FALLING_PLATFORM_2, /*pos*/ 0, 0, 0, /*angle*/ 0, 0, 0, /*behParam*/ 0x00020000, /*beh*/ bhvFallingBowserPlatform),
OBJECT(/*model*/ MODEL_BOWSER_3_FALLING_PLATFORM_3, /*pos*/ 0, 0, 0, /*angle*/ 0, 0, 0, /*behParam*/ 0x00030000, /*beh*/ bhvFallingBowserPlatform),
OBJECT(/*model*/ MODEL_BOWSER_3_FALLING_PLATFORM_4, /*pos*/ 0, 0, 0, /*angle*/ 0, 0, 0, /*behParam*/ 0x00040000, /*beh*/ bhvFallingBowserPlatform),
OBJECT(/*model*/ MODEL_BOWSER_3_FALLING_PLATFORM_5, /*pos*/ 0, 0, 0, /*angle*/ 0, 0, 0, /*behParam*/ 0x00050000, /*beh*/ bhvFallingBowserPlatform),
OBJECT(/*model*/ MODEL_BOWSER_3_FALLING_PLATFORM_6, /*pos*/ 0, 0, 0, /*angle*/ 0, 0, 0, /*behParam*/ 0x00060000, /*beh*/ bhvFallingBowserPlatform),
OBJECT(/*model*/ MODEL_BOWSER_3_FALLING_PLATFORM_7, /*pos*/ 0, 0, 0, /*angle*/ 0, 0, 0, /*behParam*/ 0x00070000, /*beh*/ bhvFallingBowserPlatform),
OBJECT(/*model*/ MODEL_BOWSER_3_FALLING_PLATFORM_8, /*pos*/ 0, 0, 0, /*angle*/ 0, 0, 0, /*behParam*/ 0x00080000, /*beh*/ bhvFallingBowserPlatform),
OBJECT(/*model*/ MODEL_BOWSER_3_FALLING_PLATFORM_9, /*pos*/ 0, 0, 0, /*angle*/ 0, 0, 0, /*behParam*/ 0x00090000, /*beh*/ bhvFallingBowserPlatform),
OBJECT(/*model*/ MODEL_BOWSER_3_FALLING_PLATFORM_10, /*pos*/ 0, 0, 0, /*angle*/ 0, 0, 0, /*behParam*/ 0x000A0000, /*beh*/ bhvFallingBowserPlatform),
OBJECT(/*model*/ MODEL_BOWSER_BOMB, /*pos*/ -2122, 512, -2912, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvBowserBomb),
OBJECT(/*model*/ MODEL_BOWSER_BOMB, /*pos*/ -3362, 512, 1121, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvBowserBomb),
OBJECT(/*model*/ MODEL_BOWSER_BOMB, /*pos*/ 0, 512, 3584, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvBowserBomb),
OBJECT(/*model*/ MODEL_BOWSER_BOMB, /*pos*/ 3363, 512, 1121, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvBowserBomb),
OBJECT(/*model*/ MODEL_BOWSER_BOMB, /*pos*/ 2123, 512, -2912, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvBowserBomb),
OBJECT(/*model*/ MODEL_BOWSER_3_FALLING_PLATFORM_1, /*pos*/ 0, 0, 0, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(1), /*bhv*/ bhvFallingBowserPlatform),
OBJECT(/*model*/ MODEL_BOWSER_3_FALLING_PLATFORM_2, /*pos*/ 0, 0, 0, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(2), /*bhv*/ bhvFallingBowserPlatform),
OBJECT(/*model*/ MODEL_BOWSER_3_FALLING_PLATFORM_3, /*pos*/ 0, 0, 0, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(3), /*bhv*/ bhvFallingBowserPlatform),
OBJECT(/*model*/ MODEL_BOWSER_3_FALLING_PLATFORM_4, /*pos*/ 0, 0, 0, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(4), /*bhv*/ bhvFallingBowserPlatform),
OBJECT(/*model*/ MODEL_BOWSER_3_FALLING_PLATFORM_5, /*pos*/ 0, 0, 0, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(5), /*bhv*/ bhvFallingBowserPlatform),
OBJECT(/*model*/ MODEL_BOWSER_3_FALLING_PLATFORM_6, /*pos*/ 0, 0, 0, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(6), /*bhv*/ bhvFallingBowserPlatform),
OBJECT(/*model*/ MODEL_BOWSER_3_FALLING_PLATFORM_7, /*pos*/ 0, 0, 0, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(7), /*bhv*/ bhvFallingBowserPlatform),
OBJECT(/*model*/ MODEL_BOWSER_3_FALLING_PLATFORM_8, /*pos*/ 0, 0, 0, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(8), /*bhv*/ bhvFallingBowserPlatform),
OBJECT(/*model*/ MODEL_BOWSER_3_FALLING_PLATFORM_9, /*pos*/ 0, 0, 0, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(9), /*bhv*/ bhvFallingBowserPlatform),
OBJECT(/*model*/ MODEL_BOWSER_3_FALLING_PLATFORM_10, /*pos*/ 0, 0, 0, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(10), /*bhv*/ bhvFallingBowserPlatform),
OBJECT(/*model*/ MODEL_BOWSER_BOMB, /*pos*/ -2122, 512, -2912, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvBowserBomb),
OBJECT(/*model*/ MODEL_BOWSER_BOMB, /*pos*/ -3362, 512, 1121, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvBowserBomb),
OBJECT(/*model*/ MODEL_BOWSER_BOMB, /*pos*/ 0, 512, 3584, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvBowserBomb),
OBJECT(/*model*/ MODEL_BOWSER_BOMB, /*pos*/ 3363, 512, 1121, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvBowserBomb),
OBJECT(/*model*/ MODEL_BOWSER_BOMB, /*pos*/ 2123, 512, -2912, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvBowserBomb),
RETURN(),
};
@ -41,7 +41,7 @@ const LevelScript level_bowser_3_entry[] = {
LOAD_RAW (/*seg*/ 0x0D, _group12_geoSegmentRomStart, _group12_geoSegmentRomEnd),
LOAD_MIO0(/*seg*/ 0x0A, _bits_skybox_mio0SegmentRomStart, _bits_skybox_mio0SegmentRomEnd),
ALLOC_LEVEL_POOL(),
MARIO(/*model*/ MODEL_MARIO, /*behParam*/ 0x00000001, /*beh*/ bhvMario),
MARIO(/*model*/ MODEL_MARIO, /*bhvParam*/ BPARAM4(0x01), /*bhv*/ bhvMario),
JUMP_LINK(script_func_global_13),
LOAD_MODEL_FROM_GEO(MODEL_BOWSER_3_FALLING_PLATFORM_1, bowser_3_geo_000290),
LOAD_MODEL_FROM_GEO(MODEL_BOWSER_3_FALLING_PLATFORM_2, bowser_3_geo_0002A8),
@ -56,10 +56,10 @@ const LevelScript level_bowser_3_entry[] = {
LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_03, bowser_3_geo_000380),
AREA(/*index*/ 1, bowser_3_geo_000398),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 0, 1307, 0, /*angle*/ 0, 183, 0, /*behParam*/ 0x000A0000, /*beh*/ bhvSpinAirborneCircleWarp),
WARP_NODE(/*id*/ 0x0A, /*destLevel*/ LEVEL_BOWSER_3, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 0, 1307, 0, /*angle*/ 0, 183, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvSpinAirborneCircleWarp),
WARP_NODE(/*id*/ WARP_NODE_0A, /*destLevel*/ LEVEL_BOWSER_3, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),
JUMP_LINK(script_func_local_1),
WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_BITS, /*destArea*/ 0x01, /*destNode*/ 0x0C, /*flags*/ WARP_NO_CHECKPOINT),
WARP_NODE(/*id*/ WARP_NODE_DEATH, /*destLevel*/ LEVEL_BITS, /*destArea*/ 1, /*destNode*/ WARP_NODE_0C, /*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),

View file

@ -865,7 +865,7 @@ const Collision castle_courtyard_seg7_collision[] = {
SPECIAL_OBJECT(/*preset*/ special_spiky_tree, /*pos*/ -2446, -214, -1786),
SPECIAL_OBJECT(/*preset*/ special_spiky_tree, /*pos*/ -2820, -214, -1317),
SPECIAL_OBJECT(/*preset*/ special_spiky_tree, /*pos*/ -1868, -214, -45),
SPECIAL_OBJECT_WITH_YAW_AND_PARAM(/*preset*/ special_wooden_door_warp, /*pos*/ 0, 0, 461, /*yaw*/ 0, /*behParam2*/ 1),
SPECIAL_OBJECT_WITH_YAW_AND_PARAM(/*preset*/ special_wooden_door_warp, /*pos*/ 0, 0, 461, /*yaw*/ 0, /*bhvParam2*/ 1),
COL_WATER_BOX_INIT(1),
COL_WATER_BOX(0, -656, -2405, 674, -1074, 51),
COL_END(),

View file

@ -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*/ 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_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 225, /*pos*/ 3180, 20, 330, /*bhvParam*/ DIALOG_158),
MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 135, /*pos*/ -3180, 20, 330, /*bhvParam*/ DIALOG_159),
MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ 300, 0, -3600, /*bhvParam*/ DIALOG_102),
MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ -300, 0, -3600, /*bhvParam*/ DIALOG_160),
MACRO_OBJECT_END(),
};

View file

@ -3,8 +3,8 @@
#include "surface_terrains.h"
#include "moving_texture_macros.h"
#include "level_misc_macros.h"
#include "macro_preset_names.h"
#include "special_preset_names.h"
#include "macro_presets.h"
#include "special_presets.h"
#include "textures.h"
#include "dialog_ids.h"

View file

@ -16,16 +16,16 @@
#include "levels/castle_courtyard/header.h"
static const LevelScript script_func_local_1[] = {
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 0, 200, -1652, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvAmbientSounds),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -2700, 0, -1652, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvBirdsSoundLoop),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 2700, 0, -1652, /*angle*/ 0, 0, 0, /*behParam*/ 0x00010000, /*beh*/ bhvBirdsSoundLoop),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 0, 200, -1652, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvAmbientSounds),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -2700, 0, -1652, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(0x00), /*bhv*/ bhvBirdsSoundLoop),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 2700, 0, -1652, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(0x01), /*bhv*/ bhvBirdsSoundLoop),
RETURN(),
};
static const LevelScript script_func_local_2[] = {
OBJECT(/*model*/ MODEL_BOO, /*pos*/ -3217, 100, -101, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvCourtyardBooTriplet),
OBJECT(/*model*/ MODEL_BOO, /*pos*/ 3317, 100, -1701, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvCourtyardBooTriplet),
OBJECT(/*model*/ MODEL_BOO, /*pos*/ -71, 1, -1387, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvCourtyardBooTriplet),
OBJECT(/*model*/ MODEL_BOO, /*pos*/ -3217, 100, -101, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvCourtyardBooTriplet),
OBJECT(/*model*/ MODEL_BOO, /*pos*/ 3317, 100, -1701, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvCourtyardBooTriplet),
OBJECT(/*model*/ MODEL_BOO, /*pos*/ -71, 1, -1387, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvCourtyardBooTriplet),
RETURN(),
};
@ -39,7 +39,7 @@ const LevelScript level_castle_courtyard_entry[] = {
LOAD_MIO0 (/*seg*/ 0x08, _common0_mio0SegmentRomStart, _common0_mio0SegmentRomEnd),
LOAD_RAW (/*seg*/ 0x0F, _common0_geoSegmentRomStart, _common0_geoSegmentRomEnd),
ALLOC_LEVEL_POOL(),
MARIO(/*model*/ MODEL_MARIO, /*behParam*/ 0x00000001, /*beh*/ bhvMario),
MARIO(/*model*/ MODEL_MARIO, /*bhvParam*/ BPARAM4(0x01), /*bhv*/ bhvMario),
JUMP_LINK(script_func_global_1),
JUMP_LINK(script_func_global_10),
LOAD_MODEL_FROM_GEO(MODEL_COURTYARD_SPIKY_TREE, spiky_tree_geo),
@ -47,14 +47,14 @@ const LevelScript level_castle_courtyard_entry[] = {
LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_03, castle_courtyard_geo_000200),
AREA(/*index*/ 1, castle_courtyard_geo_000218),
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*/ bhvLaunchStarCollectWarp),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 0, 51, -1000, /*angle*/ 0, 180, 0, /*behParam*/ 0x000B0000, /*beh*/ bhvLaunchDeathWarp),
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),
OBJECT(/*model*/ MODEL_BOO, /*pos*/ -2360, -100, -2712, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(1) | BPARAM2(WARP_NODE_05), /*bhv*/ bhvBooWithCage),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 0, 51, -1000, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvLaunchStarCollectWarp),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 0, 51, -1000, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0B), /*bhv*/ bhvLaunchDeathWarp),
WARP_NODE(/*id*/ WARP_NODE_05, /*destLevel*/ LEVEL_BBH, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),
WARP_NODE(/*id*/ WARP_NODE_0A, /*destLevel*/ LEVEL_CASTLE_COURTYARD, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),
WARP_NODE(/*id*/ WARP_NODE_0B, /*destLevel*/ LEVEL_CASTLE_COURTYARD, /*destArea*/ 1, /*destNode*/ WARP_NODE_0B, /*flags*/ WARP_NO_CHECKPOINT),
WARP_NODE(/*id*/ WARP_NODE_01, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_02, /*flags*/ WARP_NO_CHECKPOINT),
WARP_NODE(/*id*/ WARP_NODE_DEATH, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 1, /*destNode*/ WARP_NODE_03, /*flags*/ WARP_NO_CHECKPOINT),
JUMP_LINK(script_func_local_1),
JUMP_LINK(script_func_local_2),
TERRAIN(/*terrainData*/ castle_courtyard_seg7_collision),

View file

@ -1410,9 +1410,9 @@ const Collision castle_grounds_seg7_collision_level[] = {
SPECIAL_OBJECT(/*preset*/ special_bubble_tree, /*pos*/ 5774, 413, -1114),
SPECIAL_OBJECT(/*preset*/ special_bubble_tree, /*pos*/ 5954, 526, -2846),
SPECIAL_OBJECT(/*preset*/ special_bubble_tree, /*pos*/ -5204, 296, 811),
SPECIAL_OBJECT_WITH_YAW_AND_PARAM(/*preset*/ special_metal_door_warp, /*pos*/ 3292, -511, -2931, /*yaw*/ 160, /*behParam2*/ 2),
SPECIAL_OBJECT_WITH_YAW_AND_PARAM(/*preset*/ special_castle_door_warp, /*pos*/ -76, 803, -3155, /*yaw*/ 0, /*behParam2*/ 0),
SPECIAL_OBJECT_WITH_YAW_AND_PARAM(/*preset*/ special_castle_door_warp, /*pos*/ 77, 803, -3155, /*yaw*/ 128, /*behParam2*/ 1),
SPECIAL_OBJECT_WITH_YAW_AND_PARAM(/*preset*/ special_metal_door_warp, /*pos*/ 3292, -511, -2931, /*yaw*/ 160, /*bhvParam2*/ 2),
SPECIAL_OBJECT_WITH_YAW_AND_PARAM(/*preset*/ special_castle_door_warp, /*pos*/ -76, 803, -3155, /*yaw*/ 0, /*bhvParam2*/ 0),
SPECIAL_OBJECT_WITH_YAW_AND_PARAM(/*preset*/ special_castle_door_warp, /*pos*/ 77, 803, -3155, /*yaw*/ 128, /*bhvParam2*/ 1),
COL_WATER_BOX_INIT(2),
COL_WATER_BOX(0, -7129, -7222, 8253, -58, -81),
COL_WATER_BOX(1, 1024, -58, 8230, 8137, -81),

View file

@ -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*/ 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_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 262, /*pos*/ 5288, 722, -800, /*bhvParam*/ DIALOG_050),
MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 90, /*pos*/ 1740, 35, 2500, /*bhvParam*/ DIALOG_065),
MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ -1566, 260, 3503, /*bhvParam*/ DIALOG_167),
MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 82, /*pos*/ -4666, 260, 922, /*bhvParam*/ 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),
@ -11,11 +11,11 @@ const MacroObject castle_grounds_seg7_macro_objs[] = {
MACRO_OBJECT (/*preset*/ macro_box_wing_cap, /*yaw*/ 0, /*pos*/ 13, 3476, -5646),
MACRO_OBJECT (/*preset*/ macro_hidden_1up_trigger, /*yaw*/ 0, /*pos*/ 0, 535, -500),
MACRO_OBJECT (/*preset*/ macro_hidden_1up_trigger, /*yaw*/ 0, /*pos*/ 0, 535, -1774),
MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_hidden_1up, /*yaw*/ 0, /*pos*/ 0, 510, -1170, /*behParam*/ 2),
MACRO_OBJECT(/*preset*/ macro_yellow_coin, /*yaw*/ 0, /*pos*/ 0, 540, -1774),
MACRO_OBJECT(/*preset*/ macro_yellow_coin, /*yaw*/ 0, /*pos*/ 0, 540, -500),
MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_cannon_open, /*yaw*/ 0, /*pos*/ 2384, 70, 1961, /*behParam*/ 0x40),
MACRO_OBJECT(/*preset*/ macro_butterfly_triplet_2, /*yaw*/ 0, /*pos*/ -6240, 295, 320),
MACRO_OBJECT(/*preset*/ macro_butterfly_triplet_2, /*yaw*/ 0, /*pos*/ 6330, 710, -3760),
MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_hidden_1up, /*yaw*/ 0, /*pos*/ 0, 510, -1170, /*bhvParam*/ 2),
MACRO_OBJECT (/*preset*/ macro_yellow_coin_1, /*yaw*/ 0, /*pos*/ 0, 540, -1774),
MACRO_OBJECT (/*preset*/ macro_yellow_coin_1, /*yaw*/ 0, /*pos*/ 0, 540, -500),
MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_cannon_open, /*yaw*/ 0, /*pos*/ 2384, 70, 1961, /*bhvParam*/ 0x40),
MACRO_OBJECT (/*preset*/ macro_butterfly_triplet_no_bombs, /*yaw*/ 0, /*pos*/ -6240, 295, 320),
MACRO_OBJECT (/*preset*/ macro_butterfly_triplet_no_bombs, /*yaw*/ 0, /*pos*/ 6330, 710, -3760),
MACRO_OBJECT_END(),
};

View file

@ -3,8 +3,8 @@
#include "surface_terrains.h"
#include "moving_texture_macros.h"
#include "level_misc_macros.h"
#include "macro_preset_names.h"
#include "special_preset_names.h"
#include "macro_presets.h"
#include "special_presets.h"
#include "textures.h"
#include "dialog_ids.h"

View file

@ -16,79 +16,79 @@
#include "levels/castle_grounds/header.h"
static const LevelScript script_func_local_1[] = {
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*/ bhvDeathWarp),
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*/ bhvSpinAirborneCircleWarp),
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*/ bhvLaunchDeathWarp),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -3799, -1199, -5816, /*angle*/ 0, 0, 0, /*behParam*/ 0x00070000, /*beh*/ bhvSwimmingWarp),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -3379, -500, -2025, /*angle*/ 0, 180, 0, /*behParam*/ 0x00080000, /*beh*/ bhvLaunchStarCollectWarp),
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*/ bhvAirborneWarp),
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*/ bhvAirborneWarp),
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*/ bhvSwimmingWarp),
WARP_NODE(/*id*/ 0x1E, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 0x01, /*destNode*/ 0x1E, /*flags*/ WARP_NO_CHECKPOINT),
WARP_NODE(/*id*/ WARP_NODE_00, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_00, /*flags*/ WARP_NO_CHECKPOINT),
WARP_NODE(/*id*/ WARP_NODE_01, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_01, /*flags*/ WARP_NO_CHECKPOINT),
WARP_NODE(/*id*/ WARP_NODE_02, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 3, /*destNode*/ WARP_NODE_02, /*flags*/ WARP_NO_CHECKPOINT),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 0, 900, -1710, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(WARP_NODE_03), /*bhv*/ bhvDeathWarp),
WARP_NODE(/*id*/ WARP_NODE_03, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 1, /*destNode*/ WARP_NODE_03, /*flags*/ WARP_NO_CHECKPOINT),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -1328, 260, 4664, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(WARP_NODE_04), /*bhv*/ bhvSpinAirborneCircleWarp),
WARP_NODE(/*id*/ WARP_NODE_04, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 1, /*destNode*/ WARP_NODE_04, /*flags*/ WARP_NO_CHECKPOINT),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -3379, -815, -2025, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(60) | BPARAM2(WARP_NODE_05), /*bhv*/ bhvWarp),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -3379, -500, -2025, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(WARP_NODE_06), /*bhv*/ bhvLaunchDeathWarp),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -3799, -1199, -5816, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(WARP_NODE_07), /*bhv*/ bhvSwimmingWarp),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -3379, -500, -2025, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(WARP_NODE_08), /*bhv*/ bhvLaunchStarCollectWarp),
WARP_NODE(/*id*/ WARP_NODE_05, /*destLevel*/ LEVEL_VCUTM, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),
WARP_NODE(/*id*/ WARP_NODE_06, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 1, /*destNode*/ WARP_NODE_06, /*flags*/ WARP_NO_CHECKPOINT),
WARP_NODE(/*id*/ WARP_NODE_07, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 1, /*destNode*/ WARP_NODE_07, /*flags*/ WARP_NO_CHECKPOINT),
WARP_NODE(/*id*/ WARP_NODE_08, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 1, /*destNode*/ WARP_NODE_08, /*flags*/ WARP_NO_CHECKPOINT),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 5408, 4500, 3637, /*angle*/ 0, 225, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvAirborneWarp),
WARP_NODE(/*id*/ WARP_NODE_0A, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -6901, 2376, -6509, /*angle*/ 0, 230, 0, /*bhvParam*/ BPARAM2(WARP_NODE_14), /*bhv*/ bhvAirborneWarp),
WARP_NODE(/*id*/ WARP_NODE_14, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 1, /*destNode*/ WARP_NODE_14, /*flags*/ WARP_NO_CHECKPOINT),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 4997, -1250, 2258, /*angle*/ 0, 210, 0, /*bhvParam*/ BPARAM2(WARP_NODE_1E), /*bhv*/ bhvSwimmingWarp),
WARP_NODE(/*id*/ WARP_NODE_1E, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 1, /*destNode*/ WARP_NODE_1E, /*flags*/ WARP_NO_CHECKPOINT),
RETURN(),
};
static const LevelScript script_func_local_2[] = {
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -5812, 100, -5937, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvWaterfallSoundLoop),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -7430, 1500, 873, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvBirdsSoundLoop),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -80, 1500, 5004, /*angle*/ 0, 0, 0, /*behParam*/ 0x00010000, /*beh*/ bhvBirdsSoundLoop),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 7131, 1500, -2989, /*angle*/ 0, 0, 0, /*behParam*/ 0x00020000, /*beh*/ bhvBirdsSoundLoop),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -7430, 1500, -5937, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvAmbientSounds),
OBJECT(/*model*/ MODEL_CASTLE_GROUNDS_VCUTM_GRILL, /*pos*/ 0, 0, 0, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvMoatGrills),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 0, 0, 0, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvInvisibleObjectsUnderBridge),
OBJECT(/*model*/ MODEL_MIST, /*pos*/ -4878, -787, -5690, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvWaterMist2),
OBJECT(/*model*/ MODEL_MIST, /*pos*/ -4996, -787, -5548, /*angle*/ 0, 0, 0, /*behParam*/ 0x00010000, /*beh*/ bhvWaterMist2),
OBJECT(/*model*/ MODEL_MIST, /*pos*/ -5114, -787, -5406, /*angle*/ 0, 0, 0, /*behParam*/ 0x00020000, /*beh*/ bhvWaterMist2),
OBJECT(/*model*/ MODEL_MIST, /*pos*/ -5212, -787, -5219, /*angle*/ 0, 0, 0, /*behParam*/ 0x00030000, /*beh*/ bhvWaterMist2),
OBJECT(/*model*/ MODEL_MIST, /*pos*/ -5311, -787, -5033, /*angle*/ 0, 0, 0, /*behParam*/ 0x00040000, /*beh*/ bhvWaterMist2),
OBJECT(/*model*/ MODEL_MIST, /*pos*/ -5419, -787, -4895, /*angle*/ 0, 0, 0, /*behParam*/ 0x00050000, /*beh*/ bhvWaterMist2),
OBJECT(/*model*/ MODEL_MIST, /*pos*/ -5527, -787, -4757, /*angle*/ 0, 0, 0, /*behParam*/ 0x00060000, /*beh*/ bhvWaterMist2),
OBJECT(/*model*/ MODEL_MIST, /*pos*/ -5686, -787, -4733, /*angle*/ 0, 0, 0, /*behParam*/ 0x00070000, /*beh*/ bhvWaterMist2),
OBJECT(/*model*/ MODEL_MIST, /*pos*/ -5845, -787, -4710, /*angle*/ 0, 0, 0, /*behParam*/ 0x00080000, /*beh*/ bhvWaterMist2),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 5223, -975, 1667, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvManyBlueFishSpawner),
OBJECT(/*model*/ MODEL_BIRDS, /*pos*/ -5069, 850, 3221, /*angle*/ 0, 0, 0, /*behParam*/ 0x00010000, /*beh*/ bhvBird),
OBJECT(/*model*/ MODEL_BIRDS, /*pos*/ -4711, 742, 433, /*angle*/ 0, 0, 0, /*behParam*/ 0x00010000, /*beh*/ bhvBird),
OBJECT(/*model*/ MODEL_BIRDS, /*pos*/ 5774, 913, -1114, /*angle*/ 0, 0, 0, /*behParam*/ 0x00010000, /*beh*/ bhvBird),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -1328, 260, 4664, /*angle*/ 0, 180, 0, /*behParam*/ 0x00280000, /*beh*/ bhvIntroScene),
OBJECT(/*model*/ MODEL_CASTLE_GROUNDS_CANNON_GRILL, /*pos*/ 0, 0, 0, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvHiddenAt120Stars),
OBJECT(/*model*/ MODEL_LAKITU, /*pos*/ 11, 803, -3015, /*angle*/ 0, 0, 0, /*behParam*/ 0x00010000, /*beh*/ bhvCameraLakitu),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -5812, 100, -5937, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvWaterfallSoundLoop),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -7430, 1500, 873, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(0x00), /*bhv*/ bhvBirdsSoundLoop),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -80, 1500, 5004, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(0x01), /*bhv*/ bhvBirdsSoundLoop),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 7131, 1500, -2989, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(0x02), /*bhv*/ bhvBirdsSoundLoop),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -7430, 1500, -5937, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvAmbientSounds),
OBJECT(/*model*/ MODEL_CASTLE_GROUNDS_VCUTM_GRILL, /*pos*/ 0, 0, 0, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvMoatGrills),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 0, 0, 0, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvInvisibleObjectsUnderBridge),
OBJECT(/*model*/ MODEL_MIST, /*pos*/ -4878, -787, -5690, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvWaterMist2),
OBJECT(/*model*/ MODEL_MIST, /*pos*/ -4996, -787, -5548, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(0x01), /*bhv*/ bhvWaterMist2),
OBJECT(/*model*/ MODEL_MIST, /*pos*/ -5114, -787, -5406, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(0x02), /*bhv*/ bhvWaterMist2),
OBJECT(/*model*/ MODEL_MIST, /*pos*/ -5212, -787, -5219, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(0x03), /*bhv*/ bhvWaterMist2),
OBJECT(/*model*/ MODEL_MIST, /*pos*/ -5311, -787, -5033, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(0x04), /*bhv*/ bhvWaterMist2),
OBJECT(/*model*/ MODEL_MIST, /*pos*/ -5419, -787, -4895, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(0x05), /*bhv*/ bhvWaterMist2),
OBJECT(/*model*/ MODEL_MIST, /*pos*/ -5527, -787, -4757, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(0x06), /*bhv*/ bhvWaterMist2),
OBJECT(/*model*/ MODEL_MIST, /*pos*/ -5686, -787, -4733, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(0x07), /*bhv*/ bhvWaterMist2),
OBJECT(/*model*/ MODEL_MIST, /*pos*/ -5845, -787, -4710, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(0x08), /*bhv*/ bhvWaterMist2),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 5223, -975, 1667, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvManyBlueFishSpawner),
OBJECT(/*model*/ MODEL_BIRDS, /*pos*/ -5069, 850, 3221, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(BIRD_BP_SPAWNER), /*bhv*/ bhvBird),
OBJECT(/*model*/ MODEL_BIRDS, /*pos*/ -4711, 742, 433, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(BIRD_BP_SPAWNER), /*bhv*/ bhvBird),
OBJECT(/*model*/ MODEL_BIRDS, /*pos*/ 5774, 913, -1114, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(BIRD_BP_SPAWNER), /*bhv*/ bhvBird),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -1328, 260, 4664, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(0x28), /*bhv*/ bhvIntroScene),
OBJECT(/*model*/ MODEL_CASTLE_GROUNDS_CANNON_GRILL, /*pos*/ 0, 0, 0, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvHiddenAt120Stars),
OBJECT(/*model*/ MODEL_LAKITU, /*pos*/ 11, 803, -3015, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(CAMERA_LAKITU_BP_INTRO), /*bhv*/ bhvCameraLakitu),
RETURN(),
};
static const LevelScript script_func_local_3[] = {
OBJECT(/*model*/ MODEL_CASTLE_GROUNDS_FLAG, /*pos*/ -3213, 3348, -3011, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvCastleFlagWaving),
OBJECT(/*model*/ MODEL_CASTLE_GROUNDS_FLAG, /*pos*/ 3213, 3348, -3011, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvCastleFlagWaving),
OBJECT(/*model*/ MODEL_CASTLE_GROUNDS_FLAG, /*pos*/ -3835, 3348, -6647, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvCastleFlagWaving),
OBJECT(/*model*/ MODEL_CASTLE_GROUNDS_FLAG, /*pos*/ 3835, 3348, -6647, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvCastleFlagWaving),
OBJECT(/*model*/ MODEL_CASTLE_GROUNDS_FLAG, /*pos*/ -3213, 3348, -3011, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvCastleFlagWaving),
OBJECT(/*model*/ MODEL_CASTLE_GROUNDS_FLAG, /*pos*/ 3213, 3348, -3011, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvCastleFlagWaving),
OBJECT(/*model*/ MODEL_CASTLE_GROUNDS_FLAG, /*pos*/ -3835, 3348, -6647, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvCastleFlagWaving),
OBJECT(/*model*/ MODEL_CASTLE_GROUNDS_FLAG, /*pos*/ 3835, 3348, -6647, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvCastleFlagWaving),
RETURN(),
};
static const LevelScript script_func_local_4[] = {
OBJECT(/*model*/ MODEL_BUTTERFLY, /*pos*/ -4508, 406, 4400, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvButterfly),
OBJECT(/*model*/ MODEL_BUTTERFLY, /*pos*/ -4408, 406, 4500, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvButterfly),
OBJECT(/*model*/ MODEL_BUTTERFLY, /*pos*/ -4708, 406, 4100, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvButterfly),
OBJECT(/*model*/ MODEL_BUTTERFLY, /*pos*/ -6003, 473, -2621, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvButterfly),
OBJECT(/*model*/ MODEL_BUTTERFLY, /*pos*/ -6003, 473, -2321, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvButterfly),
OBJECT(/*model*/ MODEL_BUTTERFLY, /*pos*/ 6543, 461, -617, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvButterfly),
OBJECT(/*model*/ MODEL_BUTTERFLY, /*pos*/ 6143, 461, -617, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvButterfly),
OBJECT(/*model*/ MODEL_BUTTERFLY, /*pos*/ 5773, 775, -5722, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvButterfly),
OBJECT(/*model*/ MODEL_BUTTERFLY, /*pos*/ 5873, 775, -5622, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvButterfly),
OBJECT(/*model*/ MODEL_BUTTERFLY, /*pos*/ 5473, 775, -5322, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvButterfly),
OBJECT(/*model*/ MODEL_BUTTERFLY, /*pos*/ -1504, 326, 3196, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvButterfly),
OBJECT(/*model*/ MODEL_BUTTERFLY, /*pos*/ -1204, 326, 3296, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvButterfly),
OBJECT(/*model*/ MODEL_YOSHI, /*pos*/ 0, 3174, -5625, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvYoshi),
OBJECT(/*model*/ MODEL_BUTTERFLY, /*pos*/ -4508, 406, 4400, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvButterfly),
OBJECT(/*model*/ MODEL_BUTTERFLY, /*pos*/ -4408, 406, 4500, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvButterfly),
OBJECT(/*model*/ MODEL_BUTTERFLY, /*pos*/ -4708, 406, 4100, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvButterfly),
OBJECT(/*model*/ MODEL_BUTTERFLY, /*pos*/ -6003, 473, -2621, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvButterfly),
OBJECT(/*model*/ MODEL_BUTTERFLY, /*pos*/ -6003, 473, -2321, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvButterfly),
OBJECT(/*model*/ MODEL_BUTTERFLY, /*pos*/ 6543, 461, -617, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvButterfly),
OBJECT(/*model*/ MODEL_BUTTERFLY, /*pos*/ 6143, 461, -617, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvButterfly),
OBJECT(/*model*/ MODEL_BUTTERFLY, /*pos*/ 5773, 775, -5722, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvButterfly),
OBJECT(/*model*/ MODEL_BUTTERFLY, /*pos*/ 5873, 775, -5622, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvButterfly),
OBJECT(/*model*/ MODEL_BUTTERFLY, /*pos*/ 5473, 775, -5322, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvButterfly),
OBJECT(/*model*/ MODEL_BUTTERFLY, /*pos*/ -1504, 326, 3196, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvButterfly),
OBJECT(/*model*/ MODEL_BUTTERFLY, /*pos*/ -1204, 326, 3296, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvButterfly),
OBJECT(/*model*/ MODEL_YOSHI, /*pos*/ 0, 3174, -5625, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvYoshi),
RETURN(),
};
@ -104,7 +104,7 @@ const LevelScript level_castle_grounds_entry[] = {
LOAD_MIO0 (/*seg*/ 0x08, _common0_mio0SegmentRomStart, _common0_mio0SegmentRomEnd),
LOAD_RAW (/*seg*/ 0x0F, _common0_geoSegmentRomStart, _common0_geoSegmentRomEnd),
ALLOC_LEVEL_POOL(),
MARIO(/*model*/ MODEL_MARIO, /*behParam*/ 0x00000001, /*beh*/ bhvMario),
MARIO(/*model*/ MODEL_MARIO, /*bhvParam*/ BPARAM4(0x01), /*bhv*/ bhvMario),
JUMP_LINK(script_func_global_1),
JUMP_LINK(script_func_global_11),
JUMP_LINK(script_func_global_16),
@ -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*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 0x01, /*destNode*/ 0x03, /*flags*/ WARP_NO_CHECKPOINT),
WARP_NODE(/*id*/ WARP_NODE_DEATH, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 1, /*destNode*/ WARP_NODE_03, /*flags*/ WARP_NO_CHECKPOINT),
JUMP_LINK(script_func_local_1),
JUMP_LINK(script_func_local_2),
JUMP_LINK(script_func_local_3),

Some files were not shown because too many files have changed in this diff Show more