You've already forked ultrasm64-2
mirror of
https://github.com/HackerN64/ultrasm64-2.git
synced 2026-01-21 10:38:08 -08:00
Refresh 16
This commit is contained in:
26
CHANGES
26
CHANGES
@@ -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)
|
||||
|
||||
@@ -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
16
Jenkinsfile
vendored
@@ -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 '''
|
||||
|
||||
271
Makefile
271
Makefile
@@ -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))
|
||||
SOUND_SEQUENCE_DIRS := sound/sequences sound/sequences/$(VERSION)
|
||||
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_C_FILES != grep -rl 'GLOBAL_ASM(' $(wildcard src/**/*.c)
|
||||
GLOBAL_ASM_O_FILES = $(foreach file,$(GLOBAL_ASM_C_FILES),$(BUILD_DIR)/$(file:.c=.o))
|
||||
GLOBAL_ASM_DEP = $(BUILD_DIR)/src/audio/non_matching_dep
|
||||
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-
|
||||
@@ -288,26 +317,30 @@ else
|
||||
$(error Unable to detect a suitable MIPS toolchain installed)
|
||||
endif
|
||||
|
||||
AS := $(CROSS)as
|
||||
AS := $(CROSS)as
|
||||
ifeq ($(COMPILER),gcc)
|
||||
CC := $(CROSS)gcc
|
||||
CC := $(CROSS)gcc
|
||||
else
|
||||
ifeq ($(USE_QEMU_IRIX),1)
|
||||
IRIX_ROOT := $(TOOLS_DIR)/ido5.3_compiler
|
||||
CC := $(QEMU_IRIX) -silent -L $(IRIX_ROOT) $(IRIX_ROOT)/usr/bin/cc
|
||||
ACPP := $(QEMU_IRIX) -silent -L $(IRIX_ROOT) $(IRIX_ROOT)/usr/lib/acpp
|
||||
COPT := $(QEMU_IRIX) -silent -L $(IRIX_ROOT) $(IRIX_ROOT)/usr/lib/copt
|
||||
CC := $(QEMU_IRIX) -silent -L $(IRIX_ROOT) $(IRIX_ROOT)/usr/bin/cc
|
||||
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
|
||||
CC := $(IDO_ROOT)/cc
|
||||
ACPP := $(IDO_ROOT)/acpp
|
||||
COPT := $(IDO_ROOT)/copt
|
||||
IDO_ROOT := $(TOOLS_DIR)/ido-static-recomp/build/out
|
||||
CC := $(IDO_ROOT)/cc
|
||||
ACPP := $(IDO_ROOT)/acpp
|
||||
COPT := $(IDO_ROOT)/copt
|
||||
endif
|
||||
endif
|
||||
LD := $(CROSS)ld
|
||||
AR := $(CROSS)ar
|
||||
OBJDUMP := $(CROSS)objdump
|
||||
OBJCOPY := $(CROSS)objcopy
|
||||
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
|
||||
|
||||
ifeq ($(TARGET_N64),1)
|
||||
TARGET_CFLAGS := -nostdinc -DTARGET_N64 -D_LANGUAGE_C
|
||||
@@ -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
|
||||
@@ -343,7 +404,7 @@ else
|
||||
CFLAGS += -non_shared -Wab,-r4300_mul -Xcpluscomm -Xfullwarn -signed -32
|
||||
endif
|
||||
|
||||
ASFLAGS := -march=vr4300 -mabi=32 $(foreach i,$(INCLUDE_DIRS),-I$(i)) $(foreach d,$(DEFINES),--defsym $(d))
|
||||
ASFLAGS := -march=vr4300 -mabi=32 $(foreach i,$(INCLUDE_DIRS),-I$(i)) $(foreach d,$(DEFINES),--defsym $(d))
|
||||
RSPASMFLAGS := $(foreach d,$(DEFINES),-definelabel $(subst =, ,$(d)))
|
||||
|
||||
ifeq ($(shell getconf LONG_BIT), 32)
|
||||
@@ -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 $< > $@
|
||||
|
||||
@@ -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
|
||||
|
||||
27
README.md
27
README.md
@@ -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
|
||||
@@ -154,7 +153,7 @@ docker run --rm --mount type=bind,source="$(pwd)",destination=/sm64 --user $UID:
|
||||
Resulting artifacts can be found in the `build` directory.
|
||||
|
||||
## Project Structure
|
||||
|
||||
|
||||
sm64
|
||||
├── actors: object behaviors, geo layout, and display lists
|
||||
├── asm: handwritten assembly code, rom header
|
||||
|
||||
@@ -1,55 +1,55 @@
|
||||
const GeoLayout dAmpGeo[] = {
|
||||
GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0xC8, 100),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_SCALE(0x00, 16384),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, dAmpEyeDl),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_SWITCH_CASE(2, geo_switch_anim_state),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, dAmpElectricityDl),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_SWITCH_CASE(2, geo_switch_anim_state),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, dAmpElectricityDl),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_SWITCH_CASE(2, geo_switch_anim_state),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, dAmpElectricityDl),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_SWITCH_CASE(2, geo_switch_anim_state),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, dAmpElectricityDl),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, dAmpMouthDl),
|
||||
GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0xC8, 100),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_SCALE(0x00, 16384),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_BILLBOARD(),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_DISPLAY_LIST(LAYER_ALPHA, dAmpBodyDl),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, dAmpEyeDl),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_SWITCH_CASE(2, geo_switch_anim_state),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, dAmpElectricityDl),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_SWITCH_CASE(2, geo_switch_anim_state),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, dAmpElectricityDl),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_SWITCH_CASE(2, geo_switch_anim_state),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, dAmpElectricityDl),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_SWITCH_CASE(2, geo_switch_anim_state),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, dAmpElectricityDl),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, dAmpMouthDl),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_BILLBOARD(),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_DISPLAY_LIST(LAYER_ALPHA, dAmpBodyDl),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_END(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_END(),
|
||||
};
|
||||
|
||||
@@ -1,25 +1,25 @@
|
||||
// 0x0C000000
|
||||
const GeoLayout birds_geo[] = {
|
||||
GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x96, 100),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_SCALE(0x00, 16384),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, birds_seg5_dl_05000670),
|
||||
GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x96, 100),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_SCALE(0x00, 16384),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 1, -12, 37, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, birds_seg5_dl_05000528),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 1, -12, -37, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, birds_seg5_dl_05000600),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, birds_seg5_dl_05000670),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 1, -12, 37, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, birds_seg5_dl_05000528),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 1, -12, -37, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, birds_seg5_dl_05000600),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, birds_seg5_dl_05000598),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, birds_seg5_dl_05000598),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_END(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_END(),
|
||||
};
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
// 0x0C000240
|
||||
const GeoLayout blargg_geo[] = {
|
||||
GEO_SCALE(0x00, 16384),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, blargg_seg5_dl_05005D00),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 306, 0, 0, blargg_seg5_dl_05005A60),
|
||||
GEO_SCALE(0x00, 16384),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, blargg_seg5_dl_05005D00),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 6, 3, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, blargg_seg5_dl_050058D0),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 306, 0, 0, blargg_seg5_dl_05005A60),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 6, 3, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, blargg_seg5_dl_050058D0),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_END(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_END(),
|
||||
};
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
// 0x0F000000
|
||||
const GeoLayout blue_coin_switch_geo[] = {
|
||||
GEO_CULLING_RADIUS(300),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_DISPLAY_LIST(LAYER_OPAQUE, blue_coin_switch_seg8_dl_08000E08),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_END(),
|
||||
GEO_CULLING_RADIUS(300),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_DISPLAY_LIST(LAYER_OPAQUE, blue_coin_switch_seg8_dl_08000E08),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_END(),
|
||||
};
|
||||
|
||||
@@ -1,32 +1,32 @@
|
||||
// 0x16000BEC
|
||||
const GeoLayout fish_shadow_geo[] = {
|
||||
GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x9B, 50),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_SCALE(0x00, 16384),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, -16, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, blue_fish_seg3_dl_0301BFB8),
|
||||
GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x9B, 50),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_SCALE(0x00, 16384),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, -16, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 97, 0, 0, blue_fish_seg3_dl_0301C150),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, blue_fish_seg3_dl_0301BFB8),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 97, 0, 0, blue_fish_seg3_dl_0301C150),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_END(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_END(),
|
||||
};
|
||||
|
||||
// 0x16000C44
|
||||
const GeoLayout fish_geo[] = {
|
||||
GEO_SCALE(0x00, 16384),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, -16, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, blue_fish_seg3_dl_0301BFB8),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 97, 0, 0, blue_fish_seg3_dl_0301C150),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_END(),
|
||||
GEO_SCALE(0x00, 16384),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, -16, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, blue_fish_seg3_dl_0301BFB8),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 97, 0, 0, blue_fish_seg3_dl_0301C150),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_END(),
|
||||
};
|
||||
|
||||
@@ -1,99 +1,99 @@
|
||||
// 0x0F0007B8
|
||||
const GeoLayout black_bobomb_geo[] = {
|
||||
GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0xC8, 70),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_SCALE(0x00, 24576),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0xC8, 70),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_SCALE(0x00, 24576),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_BILLBOARD(),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_DISPLAY_LIST(LAYER_ALPHA, bobomb_seg8_dl_08022D08),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 57, -60, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 91, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bobomb_seg8_dl_08023270),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 55, 62, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 91, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bobomb_seg8_dl_08023378),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bobomb_seg8_dl_08023480),
|
||||
GEO_SWITCH_CASE(2, geo_switch_anim_state),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, bobomb_seg8_dl_08022B58),
|
||||
GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, bobomb_seg8_dl_08022B88),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_BILLBOARD(),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_DISPLAY_LIST(LAYER_ALPHA, bobomb_seg8_dl_08022D08),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 57, -60, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 91, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bobomb_seg8_dl_08023270),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 55, 62, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 91, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bobomb_seg8_dl_08023378),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bobomb_seg8_dl_08023480),
|
||||
GEO_SWITCH_CASE(2, geo_switch_anim_state),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, bobomb_seg8_dl_08022B58),
|
||||
GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, bobomb_seg8_dl_08022B88),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_END(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_END(),
|
||||
};
|
||||
|
||||
// 0x0F0008F4
|
||||
const GeoLayout bobomb_buddy_geo[] = {
|
||||
GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0xC8, 70),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_SCALE(0x00, 24576),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0xC8, 70),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_SCALE(0x00, 24576),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_BILLBOARD(),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_DISPLAY_LIST(LAYER_ALPHA, bobomb_seg8_dl_08022D78),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 57, -60, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 91, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bobomb_seg8_dl_08023270),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 55, 62, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 91, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bobomb_seg8_dl_08023378),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bobomb_seg8_dl_08023480),
|
||||
GEO_SWITCH_CASE(2, geo_switch_anim_state),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, bobomb_seg8_dl_08022B58),
|
||||
GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, bobomb_seg8_dl_08022B88),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_BILLBOARD(),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_DISPLAY_LIST(LAYER_ALPHA, bobomb_seg8_dl_08022D78),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 57, -60, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 91, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bobomb_seg8_dl_08023270),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 55, 62, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 91, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bobomb_seg8_dl_08023378),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bobomb_seg8_dl_08023480),
|
||||
GEO_SWITCH_CASE(2, geo_switch_anim_state),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, bobomb_seg8_dl_08022B58),
|
||||
GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, bobomb_seg8_dl_08022B88),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_END(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_END(),
|
||||
};
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
// 0x0D000B78 / 0BBC
|
||||
const GeoLayout bowser_bomb_geo[] = {
|
||||
GEO_CULLING_RADIUS(1000),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_SCALE(0x00, 196608),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_DISPLAY_LIST(LAYER_OPAQUE, bomb_seg6_dl_0605A9C0),
|
||||
GEO_BILLBOARD(),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_DISPLAY_LIST(LAYER_ALPHA, bomb_seg6_dl_0605A830),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_END(),
|
||||
GEO_CULLING_RADIUS(1000),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_SCALE(0x00, 196608),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_DISPLAY_LIST(LAYER_OPAQUE, bomb_seg6_dl_0605A9C0),
|
||||
GEO_BILLBOARD(),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_DISPLAY_LIST(LAYER_ALPHA, bomb_seg6_dl_0605A830),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_END(),
|
||||
};
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
// 0x0C000224
|
||||
const GeoLayout boo_geo[] = {
|
||||
GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x96, 70),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_SCALE(0x00, 26214),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ASM(0, geo_update_layer_transparency),
|
||||
GEO_SWITCH_CASE(2, geo_switch_anim_state),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_DISPLAY_LIST(LAYER_OPAQUE, boo_seg5_dl_0500C1B0),
|
||||
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, boo_seg5_dl_0500C1B0),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(), //! more close than open nodes
|
||||
GEO_END(),
|
||||
GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x96, 70),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_SCALE(0x00, 26214),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ASM(0, geo_update_layer_transparency),
|
||||
GEO_SWITCH_CASE(2, geo_switch_anim_state),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_DISPLAY_LIST(LAYER_OPAQUE, boo_seg5_dl_0500C1B0),
|
||||
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, boo_seg5_dl_0500C1B0),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(), //! more close than open nodes
|
||||
GEO_END(),
|
||||
};
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
// 0x0D0005B0
|
||||
const GeoLayout boo_castle_geo[] = {
|
||||
GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x96, 70),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_SCALE(0x00, 26214),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ASM(0, geo_update_layer_transparency),
|
||||
GEO_SWITCH_CASE(2, geo_switch_anim_state),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_DISPLAY_LIST(LAYER_OPAQUE, boo_castle_seg6_dl_06017CE0),
|
||||
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, boo_castle_seg6_dl_06017CE0),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(), //! more close than open nodes
|
||||
GEO_END(),
|
||||
GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x96, 70),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_SCALE(0x00, 26214),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ASM(0, geo_update_layer_transparency),
|
||||
GEO_SWITCH_CASE(2, geo_switch_anim_state),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_DISPLAY_LIST(LAYER_OPAQUE, boo_castle_seg6_dl_06017CE0),
|
||||
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, boo_castle_seg6_dl_06017CE0),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(), //! more close than open nodes
|
||||
GEO_END(),
|
||||
};
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
// 0x0C0000C0
|
||||
const GeoLayout bookend_geo[] = {
|
||||
GEO_CULLING_RADIUS(300),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_DISPLAY_LIST(LAYER_OPAQUE, book_seg5_dl_05002FB0),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_END(),
|
||||
GEO_CULLING_RADIUS(300),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_DISPLAY_LIST(LAYER_OPAQUE, book_seg5_dl_05002FB0),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_END(),
|
||||
};
|
||||
|
||||
@@ -1,29 +1,29 @@
|
||||
// 0x0C000000
|
||||
const GeoLayout bookend_part_geo[] = {
|
||||
GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x96, 100),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_SCALE(0x00, 16384),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x96, 100),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_SCALE(0x00, 16384),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bookend_seg5_dl_05001F98),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bookend_seg5_dl_05001B20),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bookend_seg5_dl_05002140),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bookend_seg5_dl_05001F98),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bookend_seg5_dl_05001B20),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bookend_seg5_dl_05002140),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bookend_seg5_dl_05001D68),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bookend_seg5_dl_05001978),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bookend_seg5_dl_050022E0),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bookend_seg5_dl_05001D68),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bookend_seg5_dl_05001978),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bookend_seg5_dl_050022E0),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(), //! more close than open nodes
|
||||
GEO_END(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(), //! more close than open nodes
|
||||
GEO_END(),
|
||||
};
|
||||
|
||||
@@ -4,24 +4,24 @@
|
||||
|
||||
// 0x0F000640
|
||||
const GeoLayout bowling_ball_geo[] = {
|
||||
GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0xC8, 280),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_SCALE(0x00, 170393),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_DISPLAY_LIST(LAYER_ALPHA, bobomb_seg8_dl_08022D08),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_END(),
|
||||
GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0xC8, 280),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_SCALE(0x00, 170393),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_DISPLAY_LIST(LAYER_ALPHA, bobomb_seg8_dl_08022D08),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_END(),
|
||||
};
|
||||
|
||||
// 0x0F00066C
|
||||
const GeoLayout bowling_ball_track_geo[] = {
|
||||
GEO_NODE_START(),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_SCALE(0x00, 170393),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_DISPLAY_LIST(LAYER_ALPHA, bobomb_seg8_dl_08022D08),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_END(),
|
||||
GEO_NODE_START(),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_SCALE(0x00, 170393),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_DISPLAY_LIST(LAYER_ALPHA, bobomb_seg8_dl_08022D08),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_END(),
|
||||
};
|
||||
|
||||
@@ -2,97 +2,97 @@
|
||||
|
||||
const s16 dBowserFlamesOrientationValues[] = {
|
||||
// posX, posY, posZ, rotY, rotX
|
||||
0, 280, 80, 0x00E9, 0x1A96,
|
||||
0, 278, 83, 0x00EC, 0x1C7F,
|
||||
0, 273, 92, 0x00F9, 0x20BF,
|
||||
0, 268, 102, 0x010F, 0x2519,
|
||||
0, 263, 109, 0x011D, 0x2751,
|
||||
0, 263, 110, 0x011C, 0x2714,
|
||||
0, 265, 106, 0x0112, 0x2601,
|
||||
0, 268, 102, 0x0109, 0x24C0,
|
||||
0, 271, 96, 0x00FF, 0x2358,
|
||||
0, 274, 90, 0x00F7, 0x21CB,
|
||||
0, 277, 84, 0x00EE, 0x201C,
|
||||
0, 280, 78, 0x00E7, 0x1E4E,
|
||||
0, 284, 71, 0x00DF, 0x1C64,
|
||||
0, 288, 63, 0x00D9, 0x1A61,
|
||||
0, 291, 56, 0x00D3, 0x184B,
|
||||
0, 295, 48, 0x00CF, 0x1622,
|
||||
0, 298, 40, 0x00CA, 0x13E9,
|
||||
0, 301, 32, 0x00C7, 0x11A5,
|
||||
0, 304, 23, 0x00C4, 0x0F59,
|
||||
0, 308, 15, 0x00C1, 0x0D08,
|
||||
0, 311, 7, 0x00C0, 0x0AB5,
|
||||
0, 313, 0, 0x00C0, 0x0863,
|
||||
0, 315, -8, 0x00BF, 0x0615,
|
||||
0, 317, -15, 0x00CE, 0x03A3,
|
||||
0, 319, -22, 0x00F8, 0x00ED,
|
||||
0, 320, -29, 0x0131, 0xFFFF,
|
||||
0, 322, -36, 0x0172, 0xFFFF,
|
||||
0, 322, -40, 0x01B5, 0xFFFF,
|
||||
0, 323, -45, 0x01ED, 0xFFFF,
|
||||
0, 323, -48, 0x0213, 0xFFFF,
|
||||
0, 323, -51, 0x0219, 0xFFFF,
|
||||
0, 323, -52, 0x01F2, 0xFFFF,
|
||||
0, 323, -51, 0x018F, 0xFFFF,
|
||||
0, 323, -49, 0x00E5, 0xFFFF,
|
||||
0, 322, -45, 0xFFFF, 0xFFFF,
|
||||
0, 320, -35, 0xFFFF, 0xFFFF,
|
||||
0, 317, -23, 0xFFFF, 0xFFFF,
|
||||
0, 312, -7, 0xFFFF, 0xFFFF,
|
||||
0, 306, 11, 0xFFFF, 0xFFFF,
|
||||
0, 299, 31, 0xFFFF, 0xFFFF,
|
||||
0, 288, 51, 0xFFFF, 0xFFFF,
|
||||
0, 278, 70, 0xFFFF, 0xFFFF,
|
||||
0, 267, 89, 0xFFFF, 0xFFFF,
|
||||
0, 256, 106, 0xFFFF, 0x023A,
|
||||
0, 244, 120, 0xFFFF, 0x04AA,
|
||||
0, 236, 132, 0xFFFF, 0x069F,
|
||||
0, 229, 139, 0xFFFF, 0x0803,
|
||||
0, 224, 144, 0xFFFF, 0x08C0,
|
||||
0, 222, 147, 0xFFFF, 0x0928,
|
||||
0, 221, 148, 0xFFFF, 0x099D,
|
||||
0, 221, 149, 0xFFFF, 0x0A16,
|
||||
0, 221, 150, 0xFFFF, 0x0A8D,
|
||||
0, 221, 150, 0xFFFF, 0x0AF6,
|
||||
0, 222, 150, 0xFFFF, 0x0B4A,
|
||||
0, 222, 150, 0xFFFF, 0x0B84,
|
||||
0, 222, 149, 0x020A, 0x0BA0,
|
||||
0, 223, 149, 0x0524, 0x0B9E,
|
||||
0, 225, 148, 0x07EC, 0x0B84,
|
||||
0, 226, 147, 0x0A3F, 0x0B57,
|
||||
0, 227, 145, 0x0BFB, 0x0B1F,
|
||||
0, 228, 144, 0x0D00, 0x0AE5,
|
||||
0, 230, 142, 0x0D6F, 0x0AA0,
|
||||
0, 232, 140, 0x0D8B, 0x0A48,
|
||||
0, 233, 138, 0x0D5D, 0x09DE,
|
||||
0, 236, 136, 0x0CED, 0x096A,
|
||||
0, 238, 134, 0x0C49, 0x08EA,
|
||||
0, 239, 132, 0x0B76, 0x0863,
|
||||
0, 241, 130, 0x0A80, 0x07D9,
|
||||
0, 244, 128, 0x0970, 0x074E,
|
||||
0, 246, 125, 0x084E, 0x06C7,
|
||||
0, 248, 122, 0x0723, 0x0649,
|
||||
0, 251, 120, 0x05F8, 0x05D7,
|
||||
0, 253, 117, 0x04D6, 0x0579,
|
||||
0, 254, 114, 0x03C3, 0x0532,
|
||||
0, 256, 111, 0x02C9, 0x0509,
|
||||
0, 259, 108, 0x01F0, 0x0504,
|
||||
0, 261, 105, 0x0141, 0x0525,
|
||||
0, 262, 103, 0x00C3, 0x0572,
|
||||
0, 264, 100, 0x006E, 0x0619,
|
||||
0, 267, 97, 0x0032, 0x0734,
|
||||
0, 268, 95, 0x000C, 0x08AF,
|
||||
0, 269, 93, 0xFFFF, 0x0A74,
|
||||
0, 272, 90, 0xFFFF, 0x0C70,
|
||||
0, 273, 88, 0xFFFF, 0x0E8E,
|
||||
0, 274, 86, 0x0014, 0x10B6,
|
||||
0, 275, 84, 0x0032, 0x12DA,
|
||||
0, 277, 82, 0x0056, 0x14E1,
|
||||
0, 277, 82, 0x007E, 0x16B9,
|
||||
0, 278, 80, 0x00A4, 0x184B,
|
||||
0, 278, 80, 0x00C6, 0x1983,
|
||||
0, 279, 80, 0x00DF, 0x1A4D,
|
||||
0, 280, 80, 0x00E9, 0x1A96,
|
||||
0, 280, 80, 0x00E9, 0x1A96,
|
||||
0, 278, 83, 0x00EC, 0x1C7F,
|
||||
0, 273, 92, 0x00F9, 0x20BF,
|
||||
0, 268, 102, 0x010F, 0x2519,
|
||||
0, 263, 109, 0x011D, 0x2751,
|
||||
0, 263, 110, 0x011C, 0x2714,
|
||||
0, 265, 106, 0x0112, 0x2601,
|
||||
0, 268, 102, 0x0109, 0x24C0,
|
||||
0, 271, 96, 0x00FF, 0x2358,
|
||||
0, 274, 90, 0x00F7, 0x21CB,
|
||||
0, 277, 84, 0x00EE, 0x201C,
|
||||
0, 280, 78, 0x00E7, 0x1E4E,
|
||||
0, 284, 71, 0x00DF, 0x1C64,
|
||||
0, 288, 63, 0x00D9, 0x1A61,
|
||||
0, 291, 56, 0x00D3, 0x184B,
|
||||
0, 295, 48, 0x00CF, 0x1622,
|
||||
0, 298, 40, 0x00CA, 0x13E9,
|
||||
0, 301, 32, 0x00C7, 0x11A5,
|
||||
0, 304, 23, 0x00C4, 0x0F59,
|
||||
0, 308, 15, 0x00C1, 0x0D08,
|
||||
0, 311, 7, 0x00C0, 0x0AB5,
|
||||
0, 313, 0, 0x00C0, 0x0863,
|
||||
0, 315, -8, 0x00BF, 0x0615,
|
||||
0, 317, -15, 0x00CE, 0x03A3,
|
||||
0, 319, -22, 0x00F8, 0x00ED,
|
||||
0, 320, -29, 0x0131, 0xFFFF,
|
||||
0, 322, -36, 0x0172, 0xFFFF,
|
||||
0, 322, -40, 0x01B5, 0xFFFF,
|
||||
0, 323, -45, 0x01ED, 0xFFFF,
|
||||
0, 323, -48, 0x0213, 0xFFFF,
|
||||
0, 323, -51, 0x0219, 0xFFFF,
|
||||
0, 323, -52, 0x01F2, 0xFFFF,
|
||||
0, 323, -51, 0x018F, 0xFFFF,
|
||||
0, 323, -49, 0x00E5, 0xFFFF,
|
||||
0, 322, -45, 0xFFFF, 0xFFFF,
|
||||
0, 320, -35, 0xFFFF, 0xFFFF,
|
||||
0, 317, -23, 0xFFFF, 0xFFFF,
|
||||
0, 312, -7, 0xFFFF, 0xFFFF,
|
||||
0, 306, 11, 0xFFFF, 0xFFFF,
|
||||
0, 299, 31, 0xFFFF, 0xFFFF,
|
||||
0, 288, 51, 0xFFFF, 0xFFFF,
|
||||
0, 278, 70, 0xFFFF, 0xFFFF,
|
||||
0, 267, 89, 0xFFFF, 0xFFFF,
|
||||
0, 256, 106, 0xFFFF, 0x023A,
|
||||
0, 244, 120, 0xFFFF, 0x04AA,
|
||||
0, 236, 132, 0xFFFF, 0x069F,
|
||||
0, 229, 139, 0xFFFF, 0x0803,
|
||||
0, 224, 144, 0xFFFF, 0x08C0,
|
||||
0, 222, 147, 0xFFFF, 0x0928,
|
||||
0, 221, 148, 0xFFFF, 0x099D,
|
||||
0, 221, 149, 0xFFFF, 0x0A16,
|
||||
0, 221, 150, 0xFFFF, 0x0A8D,
|
||||
0, 221, 150, 0xFFFF, 0x0AF6,
|
||||
0, 222, 150, 0xFFFF, 0x0B4A,
|
||||
0, 222, 150, 0xFFFF, 0x0B84,
|
||||
0, 222, 149, 0x020A, 0x0BA0,
|
||||
0, 223, 149, 0x0524, 0x0B9E,
|
||||
0, 225, 148, 0x07EC, 0x0B84,
|
||||
0, 226, 147, 0x0A3F, 0x0B57,
|
||||
0, 227, 145, 0x0BFB, 0x0B1F,
|
||||
0, 228, 144, 0x0D00, 0x0AE5,
|
||||
0, 230, 142, 0x0D6F, 0x0AA0,
|
||||
0, 232, 140, 0x0D8B, 0x0A48,
|
||||
0, 233, 138, 0x0D5D, 0x09DE,
|
||||
0, 236, 136, 0x0CED, 0x096A,
|
||||
0, 238, 134, 0x0C49, 0x08EA,
|
||||
0, 239, 132, 0x0B76, 0x0863,
|
||||
0, 241, 130, 0x0A80, 0x07D9,
|
||||
0, 244, 128, 0x0970, 0x074E,
|
||||
0, 246, 125, 0x084E, 0x06C7,
|
||||
0, 248, 122, 0x0723, 0x0649,
|
||||
0, 251, 120, 0x05F8, 0x05D7,
|
||||
0, 253, 117, 0x04D6, 0x0579,
|
||||
0, 254, 114, 0x03C3, 0x0532,
|
||||
0, 256, 111, 0x02C9, 0x0509,
|
||||
0, 259, 108, 0x01F0, 0x0504,
|
||||
0, 261, 105, 0x0141, 0x0525,
|
||||
0, 262, 103, 0x00C3, 0x0572,
|
||||
0, 264, 100, 0x006E, 0x0619,
|
||||
0, 267, 97, 0x0032, 0x0734,
|
||||
0, 268, 95, 0x000C, 0x08AF,
|
||||
0, 269, 93, 0xFFFF, 0x0A74,
|
||||
0, 272, 90, 0xFFFF, 0x0C70,
|
||||
0, 273, 88, 0xFFFF, 0x0E8E,
|
||||
0, 274, 86, 0x0014, 0x10B6,
|
||||
0, 275, 84, 0x0032, 0x12DA,
|
||||
0, 277, 82, 0x0056, 0x14E1,
|
||||
0, 277, 82, 0x007E, 0x16B9,
|
||||
0, 278, 80, 0x00A4, 0x184B,
|
||||
0, 278, 80, 0x00C6, 0x1983,
|
||||
0, 279, 80, 0x00DF, 0x1A4D,
|
||||
0, 280, 80, 0x00E9, 0x1A96,
|
||||
0, 0, 0, 0x0000, 0x0000,
|
||||
};
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user