You've already forked HackerSM64
mirror of
https://github.com/HackerN64/HackerSM64.git
synced 2026-01-21 10:35:32 -08:00
Compare commits
1 Commits
develop/re
...
pragma
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e97ca065a5 |
30
.gitignore
vendored
30
.gitignore
vendored
@@ -71,38 +71,8 @@ build/*
|
||||
!/assets/**/*custom*.bin
|
||||
!/assets/**/*custom*/**/*.bin
|
||||
!/textures/crash_custom/*.png
|
||||
|
||||
# Specific assets
|
||||
!/actors/breath_meter/breath_meter_*.png
|
||||
!/actors/coin/coin_*.ia8.png
|
||||
!/textures/segment2/light_quarter_circle.ia16.png
|
||||
!/textures/segment2/segment2.hud_char_j.rgba16.png
|
||||
!/textures/segment2/segment2.hud_char_q.rgba16.png
|
||||
!/textures/segment2/segment2.hud_char_v.rgba16.png
|
||||
!/textures/segment2/segment2.hud_char_x.rgba16.png
|
||||
!/textures/segment2/segment2.hud_char_z.rgba16.png
|
||||
!/textures/segment2/segment2.umlaut_us.rgba16.png
|
||||
!/textures/segment2/segment2.beta_key.rgba16.png
|
||||
!/textures/segment2/segment2.decimal_point.rgba16.png
|
||||
!/textures/segment2/segment2.exclamation.rgba16.png
|
||||
!/textures/segment2/segment2.double_exclamation.rgba16.png
|
||||
!/textures/segment2/segment2.question.rgba16.png
|
||||
!/textures/segment2/segment2.ampersand.rgba16.png
|
||||
!/textures/segment2/segment2.percent.rgba16.png
|
||||
!/textures/segment2/segment2.minus.rgba16.png
|
||||
!/textures/segment2/segment2.minus2.rgba16.png
|
||||
!/textures/segment2/segment2.yellow_coin.rgba16.png
|
||||
!/textures/segment2/segment2.blue_coin.rgba16.png
|
||||
!/textures/segment2/segment2.red_coin.rgba16.png
|
||||
!/textures/segment2/segment2.silver_coin.*.png
|
||||
!/textures/segment2/shadow_quarter_circle_64.ia8.png
|
||||
!/textures/segment2/shadow_quarter_square_64.ia8.png
|
||||
|
||||
|
||||
|
||||
# libultra
|
||||
|
||||
!/lib/**/*.o
|
||||
!/lib/*.a
|
||||
lib/libs2d_engine.a
|
||||
!/lib/gcclib/*.a
|
||||
|
||||
3
.vscode/c_cpp_properties.json
vendored
3
.vscode/c_cpp_properties.json
vendored
@@ -17,8 +17,7 @@
|
||||
"${workspaceFolder}/include/geo_commands.h",
|
||||
"${workspaceFolder}/include/level_commands.h",
|
||||
"${workspaceFolder}/include/segment_symbols.h",
|
||||
"${workspaceFolder}/include/command_macros_base.h",
|
||||
"${workspaceFolder}/include/object_constants.h"
|
||||
"${workspaceFolder}/include/command_macros_base.h"
|
||||
],
|
||||
"defines": [
|
||||
"TARGET_N64=1",
|
||||
|
||||
10
CHANGES
10
CHANGES
@@ -1,13 +1,3 @@
|
||||
Refresh 15 (mostly a hotfix for RSP microcode selection)
|
||||
|
||||
1.) Renamed frame_buffer funcs and _ZBUFFER (#1184)
|
||||
2.) RSP Microcode Hotfix (#1183)
|
||||
3.) Label osSetTimer.c (#1182)
|
||||
4.) Fix styling (#1177)
|
||||
5.) Rename all `FrameBuffer` variants to `Framebuffer` (#1176)
|
||||
6.) Remove (WIP) from sh.
|
||||
7.) Allow both archives and ELF objects to be patched (#1127)
|
||||
|
||||
Refresh 14
|
||||
|
||||
1.) Label whomp and some object fields (#1174)
|
||||
|
||||
12
CODEOWNERS
12
CODEOWNERS
@@ -1,12 +0,0 @@
|
||||
# Lines starting with '#' are comments.
|
||||
# Each line is a file pattern followed by one or more owners.
|
||||
|
||||
# These owners will be the default owners for everything in the repo.
|
||||
* @Reonu
|
||||
* @thecozies
|
||||
|
||||
# Order is important. The last matching pattern has the most precedence.
|
||||
# So if a pull request only touches javascript files, only these owners
|
||||
# will be requested to review.
|
||||
|
||||
# You can also use email addresses if you prefer.
|
||||
219
Makefile
219
Makefile
@@ -67,6 +67,25 @@ endif
|
||||
|
||||
DEFINES += NO_ERRNO_H=1 NO_GZIP=1
|
||||
|
||||
COMPRESS ?= rnc1
|
||||
$(eval $(call validate-option,COMPRESS,mio0 yay0 gzip rnc1 rnc2 uncomp))
|
||||
ifeq ($(COMPRESS),gzip)
|
||||
DEFINES += GZIP=1
|
||||
else ifeq ($(COMPRESS),rnc1)
|
||||
DEFINES += RNC1=1
|
||||
else ifeq ($(COMPRESS),rnc2)
|
||||
DEFINES += RNC2=1
|
||||
else ifeq ($(COMPRESS),yay0)
|
||||
DEFINES += YAY0=1
|
||||
else ifeq ($(COMPRESS),mio0)
|
||||
DEFINES += MIO0=1
|
||||
else ifeq ($(COMPRESS),uncomp)
|
||||
DEFINES += UNCOMPRESSED=1
|
||||
endif
|
||||
|
||||
GZIPVER ?= std
|
||||
$(eval $(call validate-option,GZIPVER,std libdef))
|
||||
|
||||
# VERSION - selects the version of the game to build
|
||||
# jp - builds the 1996 Japanese version
|
||||
# us - builds the 1996 North American version
|
||||
@@ -76,18 +95,22 @@ VERSION ?= us
|
||||
$(eval $(call validate-option,VERSION,jp us eu sh))
|
||||
|
||||
ifeq ($(VERSION),jp)
|
||||
DEFINES += VERSION_JP=1
|
||||
DEFINES += VERSION_JP=1
|
||||
GRUCODE ?= f3dzex
|
||||
else ifeq ($(VERSION),us)
|
||||
DEFINES += VERSION_US=1
|
||||
DEFINES += VERSION_US=1
|
||||
GRUCODE ?= f3dzex
|
||||
else ifeq ($(VERSION),eu)
|
||||
DEFINES += VERSION_EU=1
|
||||
DEFINES += VERSION_EU=1
|
||||
GRUCODE ?= f3dzex
|
||||
else ifeq ($(VERSION),sh)
|
||||
DEFINES += VERSION_SH=1
|
||||
DEFINES += VERSION_SH=1
|
||||
GRUCODE ?= f3dzex
|
||||
endif
|
||||
|
||||
DEBUG_MAP_STACKTRACE_FLAG := -D DEBUG_MAP_STACKTRACE
|
||||
|
||||
TARGET := sm64
|
||||
TARGET := sm64.$(VERSION)
|
||||
|
||||
|
||||
# GRUCODE - selects which RSP microcode to use.
|
||||
@@ -96,7 +119,6 @@ TARGET := sm64
|
||||
# l3dex2 - F3DEX2 version that only renders in wireframe
|
||||
# f3dzex - newer, experimental microcode used in Animal Crossing
|
||||
# super3d - extremely experimental version of Fast3D lacking many features for speed
|
||||
GRUCODE ?= f3dzex
|
||||
$(eval $(call validate-option,GRUCODE,f3dex f3dex2 f3dex2pl f3dzex super3d l3dex2))
|
||||
|
||||
ifeq ($(GRUCODE),f3dex) # Fast3DEX
|
||||
@@ -128,78 +150,15 @@ endif
|
||||
|
||||
LINK_LIBRARIES = $(foreach i,$(LIBRARIES),-l$(i))
|
||||
|
||||
|
||||
#==============================================================================#
|
||||
# Optimization flags #
|
||||
#==============================================================================#
|
||||
|
||||
# Default non-gcc opt flags
|
||||
DEFAULT_OPT_FLAGS = -Ofast
|
||||
|
||||
# Main opt flags
|
||||
GCC_MAIN_OPT_FLAGS = \
|
||||
-Ofast \
|
||||
--param case-values-threshold=20 \
|
||||
--param max-completely-peeled-insns=10 \
|
||||
--param max-unrolled-insns=10 \
|
||||
-finline-limit=1 \
|
||||
-freorder-blocks-algorithm=simple \
|
||||
-ffunction-sections \
|
||||
-fdata-sections
|
||||
|
||||
# Surface Collision
|
||||
GCC_COLLISION_OPT_FLAGS = \
|
||||
-Ofast \
|
||||
--param case-values-threshold=20 \
|
||||
--param max-completely-peeled-insns=100 \
|
||||
--param max-unrolled-insns=100 \
|
||||
-finline-limit=0 \
|
||||
-fno-inline \
|
||||
-freorder-blocks-algorithm=simple \
|
||||
-ffunction-sections \
|
||||
-fdata-sections \
|
||||
-falign-functions=32
|
||||
|
||||
# Math Util
|
||||
GCC_MATH_UTIL_OPT_FLAGS = \
|
||||
-Ofast \
|
||||
-fno-unroll-loops \
|
||||
-fno-peel-loops \
|
||||
--param case-values-threshold=20 \
|
||||
-ffunction-sections \
|
||||
-fdata-sections \
|
||||
-falign-functions=32
|
||||
# - setting any sort of -finline-limit has shown to worsen performance with math_util.c,
|
||||
# lower values were the worst, the higher you go - the closer performance gets to not setting it at all
|
||||
|
||||
# Rendering graph node
|
||||
GCC_GRAPH_NODE_OPT_FLAGS = \
|
||||
-Ofast \
|
||||
--param case-values-threshold=20 \
|
||||
--param max-completely-peeled-insns=100 \
|
||||
--param max-unrolled-insns=100 \
|
||||
-finline-limit=0 \
|
||||
-freorder-blocks-algorithm=simple \
|
||||
-ffunction-sections \
|
||||
-fdata-sections \
|
||||
-falign-functions=32
|
||||
#==============================================================================#
|
||||
|
||||
ifeq ($(COMPILER),gcc)
|
||||
NON_MATCHING := 1
|
||||
MIPSISET := -mips3
|
||||
OPT_FLAGS := $(GCC_MAIN_OPT_FLAGS)
|
||||
COLLISION_OPT_FLAGS = $(GCC_COLLISION_OPT_FLAGS)
|
||||
MATH_UTIL_OPT_FLAGS = $(GCC_MATH_UTIL_OPT_FLAGS)
|
||||
GRAPH_NODE_OPT_FLAGS = $(GCC_GRAPH_NODE_OPT_FLAGS)
|
||||
OPT_FLAGS := -Os
|
||||
else ifeq ($(COMPILER),clang)
|
||||
NON_MATCHING := 1
|
||||
# clang doesn't support ABI 'o32' for 'mips3'
|
||||
MIPSISET := -mips2
|
||||
OPT_FLAGS := $(DEFAULT_OPT_FLAGS)
|
||||
COLLISION_OPT_FLAGS = $(DEFAULT_OPT_FLAGS)
|
||||
MATH_UTIL_OPT_FLAGS = $(DEFAULT_OPT_FLAGS)
|
||||
GRAPH_NODE_OPT_FLAGS = $(DEFAULT_OPT_FLAGS)
|
||||
OPT_FLAGS := -Os
|
||||
endif
|
||||
|
||||
|
||||
@@ -215,14 +174,25 @@ endif
|
||||
|
||||
ifeq ($(NON_MATCHING),1)
|
||||
DEFINES += NON_MATCHING=1 AVOID_UB=1
|
||||
COMPARE := 0
|
||||
endif
|
||||
|
||||
|
||||
TARGET_STRING := sm64
|
||||
# COMPARE - whether to verify the SHA-1 hash of the ROM after building
|
||||
# 1 - verifies the SHA-1 hash of the selected version of the game
|
||||
# 0 - does not verify the hash
|
||||
COMPARE ?= 0
|
||||
$(eval $(call validate-option,COMPARE,0 1))
|
||||
|
||||
TARGET_STRING := sm64.$(VERSION).$(CONSOLE).$(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),)
|
||||
COMPARE := 0
|
||||
endif
|
||||
|
||||
# UNF - whether to use UNFLoader flashcart library
|
||||
# 1 - includes code in ROM
|
||||
# 0 - does not
|
||||
# 0 - does not
|
||||
UNF ?= 0
|
||||
$(eval $(call validate-option,UNF,0 1))
|
||||
ifeq ($(UNF),1)
|
||||
@@ -234,7 +204,7 @@ endif
|
||||
# ISVPRINT - whether to fake IS-Viewer presence,
|
||||
# allowing for usage of CEN64 (and possibly Project64) to print messages to terminal.
|
||||
# 1 - includes code in ROM
|
||||
# 0 - does not
|
||||
# 0 - does not
|
||||
ISVPRINT ?= 0
|
||||
$(eval $(call validate-option,ISVPRINT,0 1))
|
||||
ifeq ($(ISVPRINT),1)
|
||||
@@ -252,7 +222,7 @@ endif
|
||||
|
||||
# HVQM - whether to use HVQM fmv library
|
||||
# 1 - includes code in ROM
|
||||
# 0 - does not
|
||||
# 0 - does not
|
||||
HVQM ?= 0
|
||||
$(eval $(call validate-option,HVQM,0 1))
|
||||
ifeq ($(HVQM),1)
|
||||
@@ -260,34 +230,9 @@ ifeq ($(HVQM),1)
|
||||
SRC_DIRS += src/hvqm
|
||||
endif
|
||||
|
||||
BUILD_DIR_BASE := build
|
||||
# BUILD_DIR is the location where all build artifacts are placed
|
||||
BUILD_DIR := $(BUILD_DIR_BASE)/$(VERSION)_$(CONSOLE)
|
||||
|
||||
COMPRESS ?= rnc1
|
||||
$(eval $(call validate-option,COMPRESS,mio0 yay0 gzip rnc1 rnc2 uncomp))
|
||||
ifeq ($(COMPRESS),gzip)
|
||||
DEFINES += GZIP=1
|
||||
LIBZRULE := $(BUILD_DIR)/libz.a
|
||||
LIBZLINK := -lz
|
||||
else ifeq ($(COMPRESS),rnc1)
|
||||
DEFINES += RNC1=1
|
||||
else ifeq ($(COMPRESS),rnc2)
|
||||
DEFINES += RNC2=1
|
||||
else ifeq ($(COMPRESS),yay0)
|
||||
DEFINES += YAY0=1
|
||||
else ifeq ($(COMPRESS),mio0)
|
||||
DEFINES += MIO0=1
|
||||
else ifeq ($(COMPRESS),uncomp)
|
||||
DEFINES += UNCOMPRESSED=1
|
||||
endif
|
||||
|
||||
GZIPVER ?= std
|
||||
$(eval $(call validate-option,GZIPVER,std libdef))
|
||||
|
||||
# GODDARD - whether to use libgoddard (Mario Head)
|
||||
# 1 - includes code in ROM
|
||||
# 0 - does not
|
||||
# 0 - does not
|
||||
GODDARD ?= 0
|
||||
$(eval $(call validate-option,GODDARD,0 1))
|
||||
ifeq ($(GODDARD),1)
|
||||
@@ -303,6 +248,27 @@ endif
|
||||
# Whether to colorize build messages
|
||||
COLOR ?= 1
|
||||
|
||||
# display selected options unless 'make clean' or 'make distclean' is run
|
||||
ifeq ($(filter clean distclean,$(MAKECMDGOALS)),)
|
||||
$(info ==== Build Options ====)
|
||||
$(info Version: $(VERSION))
|
||||
$(info Microcode: $(GRUCODE))
|
||||
$(info Console: $(CONSOLE))
|
||||
$(info Target: $(TARGET))
|
||||
ifeq ($(COMPARE),1)
|
||||
$(info Compare ROM: yes)
|
||||
else
|
||||
$(info Compare ROM: no)
|
||||
endif
|
||||
ifeq ($(NON_MATCHING),1)
|
||||
$(info Build Matching: no)
|
||||
else
|
||||
$(info Build Matching: yes)
|
||||
endif
|
||||
$(info =======================)
|
||||
endif
|
||||
|
||||
|
||||
#==============================================================================#
|
||||
# Universal Dependencies #
|
||||
#==============================================================================#
|
||||
@@ -348,7 +314,7 @@ endif
|
||||
|
||||
BUILD_DIR_BASE := build
|
||||
# BUILD_DIR is the location where all build artifacts are placed
|
||||
BUILD_DIR := $(BUILD_DIR_BASE)/$(VERSION)_$(CONSOLE)
|
||||
BUILD_DIR := $(BUILD_DIR_BASE)/$(VERSION)
|
||||
ROM := $(BUILD_DIR)/$(TARGET_STRING).z64
|
||||
ELF := $(BUILD_DIR)/$(TARGET_STRING).elf
|
||||
LIBZ := $(BUILD_DIR)/libz.a
|
||||
@@ -428,8 +394,8 @@ export LD_LIBRARY_PATH=./tools
|
||||
AS := $(CROSS)as
|
||||
ifeq ($(COMPILER),gcc)
|
||||
CC := $(CROSS)gcc
|
||||
$(BUILD_DIR)/actors/%.o: OPT_FLAGS := -Ofast -mlong-calls
|
||||
$(BUILD_DIR)/levels/%.o: OPT_FLAGS := -Ofast -mlong-calls
|
||||
$(BUILD_DIR)/actors/%.o: OPT_FLAGS := -Os -mlong-calls
|
||||
$(BUILD_DIR)/levels/%.o: OPT_FLAGS := -Os -mlong-calls
|
||||
else ifeq ($(COMPILER),clang)
|
||||
CC := clang
|
||||
endif
|
||||
@@ -464,11 +430,9 @@ DEF_INC_CFLAGS := $(foreach i,$(INCLUDE_DIRS),-I$(i)) $(C_DEFINES)
|
||||
# C compiler options
|
||||
CFLAGS = -G 0 $(OPT_FLAGS) $(TARGET_CFLAGS) $(MIPSISET) $(DEF_INC_CFLAGS)
|
||||
ifeq ($(COMPILER),gcc)
|
||||
CFLAGS += -mno-shared -march=vr4300 -mfix4300 -mabi=32 -mhard-float -mdivide-breaks -fno-stack-protector -fno-common -fno-zero-initialized-in-bss -fno-PIC -mno-abicalls -fno-strict-aliasing -fno-inline-functions -ffreestanding -fwrapv -Wall -Wextra
|
||||
CFLAGS += -Wno-missing-braces
|
||||
CFLAGS += -mno-shared -march=vr4300 -mfix4300 -mabi=32 -mhard-float -mdivide-breaks -fno-stack-protector -fno-common -fno-zero-initialized-in-bss -fno-PIC -mno-abicalls -fno-strict-aliasing -fno-inline-functions -ffreestanding -fwrapv -Wall -Wextra -Wno-missing-braces -fno-jump-tables
|
||||
else ifeq ($(COMPILER),clang)
|
||||
CFLAGS += -mfpxx -target mips -mabi=32 -G 0 -mhard-float -fomit-frame-pointer -fno-stack-protector -fno-common -I include -I src/ -I $(BUILD_DIR)/include -fno-PIC -mno-abicalls -fno-strict-aliasing -fno-inline-functions -ffreestanding -fwrapv -Wall -Wextra
|
||||
CFLAGS += -Wno-missing-braces
|
||||
CFLAGS += -target mips -mabi=32 -G 0 -mhard-float -fomit-frame-pointer -fno-stack-protector -fno-common -I include -I src/ -I $(BUILD_DIR)/include -fno-PIC -mno-abicalls -fno-strict-aliasing -fno-inline-functions -ffreestanding -fwrapv -Wall -Wextra -Wno-missing-braces -fno-jump-tables
|
||||
else
|
||||
CFLAGS += -non_shared -Wab,-r4300_mul -Xcpluscomm -Xfullwarn -signed -32
|
||||
endif
|
||||
@@ -511,7 +475,7 @@ else
|
||||
RSPASM := $(TOOLS_DIR)/armips
|
||||
endif
|
||||
ENDIAN_BITWIDTH := $(BUILD_DIR)/endian-and-bitwidth
|
||||
EMULATOR = mupen64plus
|
||||
EMULATOR = ~/Downloads/mupen64plus/mupen64plus-gui
|
||||
EMU_FLAGS =
|
||||
LOADER = loader64
|
||||
LOADER_FLAGS = -vwf
|
||||
@@ -524,7 +488,7 @@ RED := \033[0;31m
|
||||
GREEN := \033[0;32m
|
||||
BLUE := \033[0;34m
|
||||
YELLOW := \033[0;33m
|
||||
BLINK := \033[32;5m
|
||||
BLINK := \033[33;5m
|
||||
endif
|
||||
|
||||
# For non-IDO, use objcopy instead of extract_data_for_mio
|
||||
@@ -542,12 +506,13 @@ endef
|
||||
#==============================================================================#
|
||||
|
||||
all: $(ROM)
|
||||
ifeq ($(COMPARE),1)
|
||||
@$(PRINT) "$(GREEN)Checking if ROM matches.. $(NO_COL)\n"
|
||||
@$(SHA1SUM) --quiet -c $(TARGET).sha1 && $(PRINT) "$(TARGET): $(GREEN)OK$(NO_COL)\n" || ($(PRINT) "$(YELLOW)Building the ROM file has succeeded, but does not match the original ROM.\nThis is expected, and not an error, if you are making modifications.\nTo silence this message, use 'make COMPARE=0.' $(NO_COL)\n" && false)
|
||||
else
|
||||
@$(SHA1SUM) $(ROM)
|
||||
@$(PRINT) "${BLINK}Build succeeded.\n$(NO_COL)"
|
||||
@$(PRINT) "==== Build Options ====$(NO_COL)\n"
|
||||
@$(PRINT) "${GREEN}Version: $(BLUE)$(VERSION)$(NO_COL)\n"
|
||||
@$(PRINT) "${GREEN}Microcode: $(BLUE)$(GRUCODE)$(NO_COL)\n"
|
||||
@$(PRINT) "${GREEN}Console: $(BLUE)$(CONSOLE)$(NO_COL)\n"
|
||||
@$(PRINT) "${GREEN}Build succeeded.$(NO_COL)\n"
|
||||
endif
|
||||
|
||||
clean:
|
||||
$(RM) -r $(BUILD_DIR_BASE)
|
||||
@@ -560,10 +525,6 @@ distclean: clean
|
||||
test: $(ROM)
|
||||
$(EMULATOR) $(EMU_FLAGS) $<
|
||||
|
||||
test-pj64: $(ROM)
|
||||
wine ~/Desktop/new64/Project64.exe $<
|
||||
# someone2639
|
||||
|
||||
load: $(ROM)
|
||||
$(LOADER) $(LOADER_FLAGS) $<
|
||||
|
||||
@@ -573,7 +534,7 @@ libultra: $(BUILD_DIR)/libultra.a
|
||||
$(BUILD_DIR)/asm/boot.o: $(IPL3_RAW_FILES)
|
||||
$(BUILD_DIR)/src/game/crash_screen.o: $(CRASH_TEXTURE_C_FILES)
|
||||
$(BUILD_DIR)/src/game/version.o: $(BUILD_DIR)/src/game/version_data.h
|
||||
$(BUILD_DIR)/lib/aspMain.o: $(BUILD_DIR)/rsp/audio.bin
|
||||
$(BUILD_DIR)/lib/rsp.o: $(BUILD_DIR)/rsp/rspboot.bin $(BUILD_DIR)/rsp/audio.bin
|
||||
$(SOUND_BIN_DIR)/sound_data.o: $(SOUND_BIN_DIR)/sound_data.ctl $(SOUND_BIN_DIR)/sound_data.tbl $(SOUND_BIN_DIR)/sequences.bin $(SOUND_BIN_DIR)/bank_sets
|
||||
$(BUILD_DIR)/levels/scripts.o: $(BUILD_DIR)/include/level_headers.h
|
||||
|
||||
@@ -615,17 +576,6 @@ $(BUILD_DIR)/src/usb/usb.o: OPT_FLAGS := -O0
|
||||
$(BUILD_DIR)/src/usb/usb.o: CFLAGS += -Wno-unused-variable -Wno-sign-compare -Wno-unused-function
|
||||
$(BUILD_DIR)/src/usb/debug.o: OPT_FLAGS := -O0
|
||||
$(BUILD_DIR)/src/usb/debug.o: CFLAGS += -Wno-unused-parameter -Wno-maybe-uninitialized
|
||||
# File specific opt flags
|
||||
$(BUILD_DIR)/src/audio/*.o: OPT_FLAGS := -Os -fno-jump-tables
|
||||
|
||||
$(BUILD_DIR)/src/engine/surface_collision.o: OPT_FLAGS := $(COLLISION_OPT_FLAGS)
|
||||
$(BUILD_DIR)/src/engine/math_util.o: OPT_FLAGS := $(MATH_UTIL_OPT_FLAGS)
|
||||
$(BUILD_DIR)/src/game/rendering_graph_node.o: OPT_FLAGS := $(GRAPH_NODE_OPT_FLAGS)
|
||||
|
||||
# $(info OPT_FLAGS: $(OPT_FLAGS))
|
||||
# $(info COLLISION_OPT_FLAGS: $(COLLISION_OPT_FLAGS))
|
||||
# $(info MATH_UTIL_OPT_FLAGS: $(MATH_UTIL_OPT_FLAGS))
|
||||
# $(info GRAPH_NODE_OPT_FLAGS: $(GRAPH_NODE_OPT_FLAGS))
|
||||
|
||||
ALL_DIRS := $(BUILD_DIR) $(addprefix $(BUILD_DIR)/,$(SRC_DIRS) asm/debug $(GODDARD_SRC_DIRS) $(LIBZ_SRC_DIRS) $(ULTRA_BIN_DIRS) $(BIN_DIRS) $(TEXTURE_DIRS) $(TEXT_DIRS) $(SOUND_SAMPLE_DIRS) $(addprefix levels/,$(LEVEL_DIRS)) rsp include) $(YAY0_DIR) $(addprefix $(YAY0_DIR)/,$(VERSION)) $(SOUND_BIN_DIR) $(SOUND_BIN_DIR)/sequences/$(VERSION)
|
||||
|
||||
@@ -636,8 +586,7 @@ $(BUILD_DIR)/include/text_strings.h: $(BUILD_DIR)/include/text_menu_strings.h
|
||||
$(BUILD_DIR)/src/menu/file_select.o: $(BUILD_DIR)/include/text_strings.h
|
||||
$(BUILD_DIR)/src/menu/star_select.o: $(BUILD_DIR)/include/text_strings.h
|
||||
$(BUILD_DIR)/src/game/ingame_menu.o: $(BUILD_DIR)/include/text_strings.h
|
||||
$(BUILD_DIR)/src/game/puppycam2.o: $(BUILD_DIR)/include/text_strings.h
|
||||
|
||||
$(BUILD_DIR)/src/game/puppycam2.o: $(BUILD_DIR)/include/text_strings.h
|
||||
|
||||
|
||||
#==============================================================================#
|
||||
@@ -852,7 +801,7 @@ $(BUILD_DIR)/asm/debug/map.o: asm/debug/map.s $(BUILD_DIR)/sm64_prelim.elf
|
||||
# Link SM64 ELF file
|
||||
$(ELF): $(BUILD_DIR)/sm64_prelim.elf $(BUILD_DIR)/asm/debug/map.o $(O_FILES) $(YAY0_OBJ_FILES) $(SEG_FILES) $(BUILD_DIR)/$(LD_SCRIPT) undefined_syms.txt $(BUILD_DIR)/libz.a $(BUILD_DIR)/libgoddard.a
|
||||
@$(PRINT) "$(GREEN)Linking ELF file: $(BLUE)$@ $(NO_COL)\n"
|
||||
$(V)$(LD) --gc-sections -L $(BUILD_DIR) -T undefined_syms.txt -T $(BUILD_DIR)/$(LD_SCRIPT) -T goddard.txt -Map $(BUILD_DIR)/sm64.$(VERSION).map --no-check-sections $(addprefix -R ,$(SEG_FILES)) -o $@ $(O_FILES) -L$(LIBS_DIR) -l$(ULTRALIB) -Llib $(LINK_LIBRARIES) -u sprintf -u osMapTLB -Llib/gcclib/$(LIBGCCDIR) -lgcc -lrtc
|
||||
$(V)$(LD) --gc-sections -L $(BUILD_DIR) -T undefined_syms.txt -T $(BUILD_DIR)/$(LD_SCRIPT) -T goddard.txt -Map $(BUILD_DIR)/sm64.$(VERSION).map --no-check-sections $(addprefix -R ,$(SEG_FILES)) -o $@ $(O_FILES) -L$(LIBS_DIR) -l$(ULTRALIB) -Llib $(LINK_LIBRARIES) -u sprintf -u osMapTLB -Llib/gcclib/$(LIBGCCDIR) -lgcc
|
||||
|
||||
# Build ROM
|
||||
$(ROM): $(ELF)
|
||||
@@ -861,7 +810,7 @@ ifeq ($(CONSOLE),n64)
|
||||
$(V)$(OBJCOPY) --pad-to=0x101000 --gap-fill=0xFF $< $@ -O binary
|
||||
else ifeq ($(CONSOLE),bb)
|
||||
$(V)$(OBJCOPY) --gap-fill=0x00 $< $@ -O binary
|
||||
$(V)dd if=$@ of=tmp bs=16K conv=sync status=none
|
||||
$(V)dd if=$@ of=tmp bs=16K conv=sync
|
||||
$(V)mv tmp $@
|
||||
endif
|
||||
$(V)$(N64CKSUM) $@
|
||||
|
||||
@@ -66,7 +66,7 @@ KING_BOBOMB_DIRS := king_bobomb water_bubble
|
||||
BOO_DIRS := bookend book chair small_key mad_piano boo haunted_cage
|
||||
MR_I_DIRS := mr_i_eyeball mr_i_iris swoop snufit dorrie scuttlebug
|
||||
HOOT_DIRS := yellow_sphere_small hoot yoshi_egg thwomp bullet_bill heave_ho
|
||||
COINS_DIRS := mist explosion butterfly coin warp_pipe door bowser_key flame blue_fish pebble leaves mario_cap breath_meter power_meter mushroom_1up star sand dirt transparent_star white_particle wooden_signpost tree
|
||||
COINS_DIRS := mist explosion butterfly coin warp_pipe door bowser_key flame blue_fish pebble leaves warp_collision mario_cap power_meter mushroom_1up star sand dirt transparent_star white_particle wooden_signpost tree
|
||||
BUBBA_DIRS := bubba wiggler wiggler_body_part lakitu_enemy spiny_egg spiny
|
||||
SKEETER_DIRS := skeeter seaweed water_mine cyan_fish bub water_ring treasure_chest
|
||||
KLEPTO_DIRS := klepto eyerok pokey tornado
|
||||
@@ -76,7 +76,7 @@ MOLE_DIRS := monty_mole_hole monty_mole smoke ukiki fwoosh
|
||||
LAKITU_DIRS := lakitu_cameraman toad mips boo_castle
|
||||
PEACH_DIRS := bird peach yoshi
|
||||
BOWSER_DIRS := bowser_flame impact_ring yellow_sphere bowser bomb impact_smoke
|
||||
MARIO_DIRS := mario bubble walk_smoke burn_smoke small_water_splash water_wave sparkle water_splash white_particle_small sparkle_animation
|
||||
MARIO_DIRS := mario bubble walk_smoke burn_smoke stomp_smoke water_wave sparkle water_splash white_particle_small sparkle_animation
|
||||
|
||||
# Actor Textures
|
||||
AMP_CHUCKYA_TEXTURES := $(foreach dir,$(AMP_DIRS), $(wildcard actors/$(dir)/*.png))
|
||||
|
||||
32
README.md
32
README.md
@@ -1,5 +1,4 @@
|
||||
#  HackerSM64 
|
||||
|
||||
**AFTER CLONING THE REPO, CHECK OUT THE `include/config.h` FILE BEFORE ANYTHING ELSE! IT THERE'S A LOT OF STUFF IN THIS REPO THAT CAN BE TOGGLED THERE.**
|
||||
|
||||
HackerSM64 now has a discord server! https://discord.gg/brETAakcXr
|
||||
@@ -10,28 +9,6 @@ This repo needs gcc in order to be able to build it. To install it, run `sudo ap
|
||||
|
||||
This is a fork of the ultrasm64 repo by CrashOveride which includes the following commonly used patches (patches marked with `*` are toggleable in `config.h`):
|
||||
|
||||
**Credits**
|
||||
- **ArcticJaguar725**: Most audio configuration and layout changes, colored ia4 text, floombas, a bunch of random bugfixes, and more
|
||||
- **CowQuack**: Adjustable skybox sizes, area-specific skybox function
|
||||
- **thecozies**: Water surface types, general maintenance, and time
|
||||
- **MrComit**: General use object defines, JUMP_KICK_FIX, LEDGE_GRABS_CHECK_SLOPE_ANGLE
|
||||
- **aglab2**: bugfixes (particularly puppycam), refactor stuff
|
||||
- **someone2639**: math.s and crash screen disam, stack trace, map packing, shiftable segments 2, S2DEX engine
|
||||
- **Arthurtilly**: Platform Displacement 2
|
||||
- **Fazana**: PuppyLib, ucode swapping, Audio load time optimisations (with Arctic), general hacker qol improvements, visual debug
|
||||
- **Reonu**: Starting the project/repo, widescreen, various defines for hacker QoL
|
||||
- **JoshDuMan**: decomp guy, general assistance
|
||||
- **Arceveti**: silhouette, shadow optimisation, better hanging, breath meter
|
||||
- **axollyon**: Console testing, bugfixes, idea-guying, and had a hand in silhouettes
|
||||
- **Wiseguy**: silhouette, graph node optimisations, instant input patch, cake screen fix, segmented code support, and various optimizations/fixes
|
||||
- **Kaze**: Graph node optimisations, automatic optimal collision distance
|
||||
- **Pyro Jay**: Texture improvements, repo banner art, some QoL stuff
|
||||
- **CrashOveride**: creating the `ultrasm64` repo
|
||||
- **falcobuster**: coordinate overflow fix (world scale), ASM version of extended bounds
|
||||
- **anonymous_moose**: porting falco's extended bounds to decomp
|
||||
|
||||
Thanks to Frame#5375 and AloXado320 for also helping with silhouette stuff
|
||||
|
||||
**Lighting Engine by Wiseguy**
|
||||
- Lighting Engine is available on a separate branch `(lighting-engine)`. Instructions on how to use it are in the readme of that branch.
|
||||
- Alternatively, the main repo has `Puppylights` available, which is a more lightweight, but limited lighting library intended to be used to modify existing light properties. You can look at `puppylights.c` to find out how to use it.
|
||||
@@ -43,7 +20,8 @@ Thanks to Frame#5375 and AloXado320 for also helping with silhouette stuff
|
||||
- Slope fix and exposed ceilings fix
|
||||
- No false ledgegrabs fix *
|
||||
- Jump kick fix *
|
||||
- Configurable wallkick angle, in degrees *
|
||||
- 46 degree wallkicks *
|
||||
- Pole fix
|
||||
- Possibility of disabling BLJs *
|
||||
- Hanging fix (mario can grab hangable ceilings from any state, instead of only jump or double jump) *
|
||||
- Increased maximum pole length (The game will read bparam1 and bparam2 together as a single value, so you can have a very long pole) *
|
||||
@@ -91,7 +69,6 @@ Thanks to Frame#5375 and AloXado320 for also helping with silhouette stuff
|
||||
- Example Text: `"@FF0000FFRED @00FF00FFGREEN @0000FFFFBLUE @FFFFFF00INVISIBLE @--------NORMAL"`
|
||||
- NOTE: It is not mandatory to reset the text color with `"@--------"`, but text will need to be recolored each time it scrolls in a dialog box, or the custom color will reset.
|
||||
- Toggle visiblity of collision surfaces and object hitboxes with Visual Surface Debug. `config.h` has VISUAL_DEBUG which can be turned on to enable this feature.
|
||||
- Workaround for infinite death loops caused by using the wrong warp type for death warps. Mario's HP will be restored when being warped to any warp if (and only if) he was warped while dead. *
|
||||
|
||||
**Other Bugfixes:**
|
||||
- Castle music fix (Fixes the castle music sometimes triggering after getting a dialog) *
|
||||
@@ -109,9 +86,6 @@ Thanks to Frame#5375 and AloXado320 for also helping with silhouette stuff
|
||||
- Widescreen (16:9) support toggleable by pressing `L` in the pause menu. *
|
||||
- S2DEX engine by someone2639! To use it, compile with `make TEXT_ENGINE=s2dex_text_engine` or just set `TEXT_ENGINE` to `s2dex_text_engine` in the makefile.
|
||||
- ia8 coins (64x64), the vanilla coin texture is upgraded to accomodate. *
|
||||
- ia8 30 FPS (64x64) coins (Textures by InTheBeef, cleaned up by Arceveti). *
|
||||
- Floombas! Simply just retextured goombas with custom behaviors (does not overwrite standard goombas). *
|
||||
- HD texture support for intro splash screen (with floombas if enabled). *
|
||||
- Mario's silhouette is shown when behind most surfaces (By Frame#5375, Axollyon, AloXado320, Wiseguy, Arceveti) *
|
||||
- Skybox size modifier. You can have 2x, 3x and 4x size skyboxes (you can select the skybox size in `config.h`.) Please note that this might affect console performance, especially 4x mode. 2x or 3x mode is recommended if aiming for console. By CowQuack *
|
||||
- You can set the black border size to different values for console and emulator. It's set to 0 by default for both. *
|
||||
@@ -198,9 +172,7 @@ To switch to no compression, run make with the ``COMPRESS=uncomp`` argument.
|
||||
Q: Why in the hell are you bundling your own build of ``ld``?
|
||||
|
||||
A: Newer binutils (Like the one bundled with Ubuntu, 2.34) break linking with libultra builds due to local asm symbols.
|
||||
|
||||
This puts me at a crossroads of either touching leaked code and requiring GCC, or just using an older linker that works just fine.
|
||||
|
||||
I went with the latter.
|
||||
Thanks to "someone2639" for this hacky-ass idea
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ const GeoLayout boo_geo[] = {
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_SCALE(0x00, 26214),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ASM(GEO_TRANSPARENCY_MODE_NORMAL, geo_update_layer_transparency),
|
||||
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),
|
||||
|
||||
@@ -4,7 +4,7 @@ const GeoLayout boo_castle_geo[] = {
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_SCALE(0x00, 26214),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ASM(GEO_TRANSPARENCY_MODE_NORMAL, geo_update_layer_transparency),
|
||||
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),
|
||||
|
||||
@@ -332,7 +332,7 @@ const GeoLayout bowser_shadow_geo[] = {
|
||||
const GeoLayout bowser_geo[] = {
|
||||
GEO_NODE_START(),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ASM(GEO_TRANSPARENCY_MODE_NORMAL, geo_update_layer_transparency),
|
||||
GEO_ASM(0, geo_update_layer_transparency),
|
||||
GEO_SWITCH_CASE(3, geo_switch_anim_state),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_NODE_START(),
|
||||
@@ -362,7 +362,7 @@ const GeoLayout bowser_geo[] = {
|
||||
const GeoLayout bowser_geo_no_shadow[] = {
|
||||
GEO_NODE_START(),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ASM(GEO_TRANSPARENCY_MODE_NORMAL, geo_update_layer_transparency),
|
||||
GEO_ASM(0, geo_update_layer_transparency),
|
||||
GEO_SWITCH_CASE(3, geo_switch_anim_state),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_NODE_START(),
|
||||
|
||||
@@ -120,7 +120,7 @@ const Gfx flame_seg6_dl_0601C108[] = {
|
||||
gsDPLoadTextureBlock(flame_seg6_texture_06000000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPVertex(flame_seg6_vertex_0601C000, 8, 0),
|
||||
gsSPDisplayList(flame_seg6_dl_0601C0B0),
|
||||
gsDPLoadTextureBlock((Texture*)flame_seg6_texture_06000000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsDPLoadTextureBlock((u8*)flame_seg6_texture_06000000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPDisplayList(flame_seg6_dl_0601C0C8),
|
||||
gsSPDisplayList(flame_seg6_dl_0601C0E0),
|
||||
gsSPEndDisplayList(),
|
||||
@@ -132,7 +132,7 @@ const Gfx flame_seg6_dl_0601C1A8[] = {
|
||||
gsDPLoadTextureBlock(flame_seg6_texture_06002000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPVertex(flame_seg6_vertex_0601C000, 8, 0),
|
||||
gsSPDisplayList(flame_seg6_dl_0601C0B0),
|
||||
gsDPLoadTextureBlock((Texture*)flame_seg6_texture_06002000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsDPLoadTextureBlock((u8*)flame_seg6_texture_06002000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPDisplayList(flame_seg6_dl_0601C0C8),
|
||||
gsSPDisplayList(flame_seg6_dl_0601C0E0),
|
||||
gsSPEndDisplayList(),
|
||||
@@ -144,7 +144,7 @@ const Gfx flame_seg6_dl_0601C248[] = {
|
||||
gsDPLoadTextureBlock(flame_seg6_texture_06004000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPVertex(flame_seg6_vertex_0601C000, 8, 0),
|
||||
gsSPDisplayList(flame_seg6_dl_0601C0B0),
|
||||
gsDPLoadTextureBlock((Texture*)flame_seg6_texture_06004000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsDPLoadTextureBlock((u8*)flame_seg6_texture_06004000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPDisplayList(flame_seg6_dl_0601C0C8),
|
||||
gsSPDisplayList(flame_seg6_dl_0601C0E0),
|
||||
gsSPEndDisplayList(),
|
||||
@@ -156,7 +156,7 @@ const Gfx flame_seg6_dl_0601C2E8[] = {
|
||||
gsDPLoadTextureBlock(flame_seg6_texture_06006000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPVertex(flame_seg6_vertex_0601C000, 8, 0),
|
||||
gsSPDisplayList(flame_seg6_dl_0601C0B0),
|
||||
gsDPLoadTextureBlock((Texture*)flame_seg6_texture_06006000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsDPLoadTextureBlock((u8*)flame_seg6_texture_06006000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPDisplayList(flame_seg6_dl_0601C0C8),
|
||||
gsSPDisplayList(flame_seg6_dl_0601C0E0),
|
||||
gsSPEndDisplayList(),
|
||||
@@ -168,7 +168,7 @@ const Gfx flame_seg6_dl_0601C388[] = {
|
||||
gsDPLoadTextureBlock(flame_seg6_texture_06008000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPVertex(flame_seg6_vertex_0601C000, 8, 0),
|
||||
gsSPDisplayList(flame_seg6_dl_0601C0B0),
|
||||
gsDPLoadTextureBlock((Texture*)flame_seg6_texture_06008000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsDPLoadTextureBlock((u8*)flame_seg6_texture_06008000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPDisplayList(flame_seg6_dl_0601C0C8),
|
||||
gsSPDisplayList(flame_seg6_dl_0601C0E0),
|
||||
gsSPEndDisplayList(),
|
||||
@@ -180,7 +180,7 @@ const Gfx flame_seg6_dl_0601C428[] = {
|
||||
gsDPLoadTextureBlock(flame_seg6_texture_0600A000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPVertex(flame_seg6_vertex_0601C000, 8, 0),
|
||||
gsSPDisplayList(flame_seg6_dl_0601C0B0),
|
||||
gsDPLoadTextureBlock((Texture*)flame_seg6_texture_0600A000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsDPLoadTextureBlock((u8*)flame_seg6_texture_0600A000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPDisplayList(flame_seg6_dl_0601C0C8),
|
||||
gsSPDisplayList(flame_seg6_dl_0601C0E0),
|
||||
gsSPEndDisplayList(),
|
||||
@@ -192,7 +192,7 @@ const Gfx flame_seg6_dl_0601C4C8[] = {
|
||||
gsDPLoadTextureBlock(flame_seg6_texture_0600C000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPVertex(flame_seg6_vertex_0601C000, 8, 0),
|
||||
gsSPDisplayList(flame_seg6_dl_0601C0B0),
|
||||
gsDPLoadTextureBlock((Texture*)flame_seg6_texture_0600C000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsDPLoadTextureBlock((u8*)flame_seg6_texture_0600C000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPDisplayList(flame_seg6_dl_0601C0C8),
|
||||
gsSPDisplayList(flame_seg6_dl_0601C0E0),
|
||||
gsSPEndDisplayList(),
|
||||
@@ -204,7 +204,7 @@ const Gfx flame_seg6_dl_0601C568[] = {
|
||||
gsDPLoadTextureBlock(flame_seg6_texture_0600E000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPVertex(flame_seg6_vertex_0601C000, 8, 0),
|
||||
gsSPDisplayList(flame_seg6_dl_0601C0B0),
|
||||
gsDPLoadTextureBlock((Texture*)flame_seg6_texture_0600E000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsDPLoadTextureBlock((u8*)flame_seg6_texture_0600E000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPDisplayList(flame_seg6_dl_0601C0C8),
|
||||
gsSPDisplayList(flame_seg6_dl_0601C0E0),
|
||||
gsSPEndDisplayList(),
|
||||
@@ -216,7 +216,7 @@ const Gfx flame_seg6_dl_0601C608[] = {
|
||||
gsDPLoadTextureBlock(flame_seg6_texture_06010000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPVertex(flame_seg6_vertex_0601C000, 8, 0),
|
||||
gsSPDisplayList(flame_seg6_dl_0601C0B0),
|
||||
gsDPLoadTextureBlock((Texture*)flame_seg6_texture_06010000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsDPLoadTextureBlock((u8*)flame_seg6_texture_06010000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPDisplayList(flame_seg6_dl_0601C0C8),
|
||||
gsSPDisplayList(flame_seg6_dl_0601C0E0),
|
||||
gsSPEndDisplayList(),
|
||||
@@ -228,7 +228,7 @@ const Gfx flame_seg6_dl_0601C6A8[] = {
|
||||
gsDPLoadTextureBlock(flame_seg6_texture_06012000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPVertex(flame_seg6_vertex_0601C000, 8, 0),
|
||||
gsSPDisplayList(flame_seg6_dl_0601C0B0),
|
||||
gsDPLoadTextureBlock((Texture*)flame_seg6_texture_06012000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsDPLoadTextureBlock((u8*)flame_seg6_texture_06012000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPDisplayList(flame_seg6_dl_0601C0C8),
|
||||
gsSPDisplayList(flame_seg6_dl_0601C0E0),
|
||||
gsSPEndDisplayList(),
|
||||
@@ -240,7 +240,7 @@ const Gfx flame_seg6_dl_0601C748[] = {
|
||||
gsDPLoadTextureBlock(flame_seg6_texture_06014000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPVertex(flame_seg6_vertex_0601C000, 8, 0),
|
||||
gsSPDisplayList(flame_seg6_dl_0601C0B0),
|
||||
gsDPLoadTextureBlock((Texture*)flame_seg6_texture_06014000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsDPLoadTextureBlock((u8*)flame_seg6_texture_06014000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPDisplayList(flame_seg6_dl_0601C0C8),
|
||||
gsSPDisplayList(flame_seg6_dl_0601C0E0),
|
||||
gsSPEndDisplayList(),
|
||||
@@ -252,7 +252,7 @@ const Gfx flame_seg6_dl_0601C7E8[] = {
|
||||
gsDPLoadTextureBlock(flame_seg6_texture_06016000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPVertex(flame_seg6_vertex_0601C000, 8, 0),
|
||||
gsSPDisplayList(flame_seg6_dl_0601C0B0),
|
||||
gsDPLoadTextureBlock((Texture*)flame_seg6_texture_06016000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsDPLoadTextureBlock((u8*)flame_seg6_texture_06016000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPDisplayList(flame_seg6_dl_0601C0C8),
|
||||
gsSPDisplayList(flame_seg6_dl_0601C0E0),
|
||||
gsSPEndDisplayList(),
|
||||
@@ -264,7 +264,7 @@ const Gfx flame_seg6_dl_0601C888[] = {
|
||||
gsDPLoadTextureBlock(flame_seg6_texture_06018000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPVertex(flame_seg6_vertex_0601C000, 8, 0),
|
||||
gsSPDisplayList(flame_seg6_dl_0601C0B0),
|
||||
gsDPLoadTextureBlock((Texture*)flame_seg6_texture_06018000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsDPLoadTextureBlock((u8*)flame_seg6_texture_06018000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPDisplayList(flame_seg6_dl_0601C0C8),
|
||||
gsSPDisplayList(flame_seg6_dl_0601C0E0),
|
||||
gsSPEndDisplayList(),
|
||||
@@ -276,7 +276,7 @@ const Gfx flame_seg6_dl_0601C928[] = {
|
||||
gsDPLoadTextureBlock(flame_seg6_texture_0601A000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPVertex(flame_seg6_vertex_0601C000, 8, 0),
|
||||
gsSPDisplayList(flame_seg6_dl_0601C0B0),
|
||||
gsDPLoadTextureBlock((Texture*)flame_seg6_texture_0601A000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsDPLoadTextureBlock((u8*)flame_seg6_texture_0601A000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPDisplayList(flame_seg6_dl_0601C0C8),
|
||||
gsSPDisplayList(flame_seg6_dl_0601C0E0),
|
||||
gsSPEndDisplayList(),
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// Breakable Box
|
||||
|
||||
// 0x08012D70 - 0x08012DF4
|
||||
const Collision breakable_box_seg8_collision[] = {
|
||||
const Collision breakable_box_seg8_collision_08012D70[] = {
|
||||
COL_INIT(),
|
||||
COL_VERTEX_INIT(0x8),
|
||||
COL_VERTEX(-100, 0, -100),
|
||||
@@ -29,6 +29,3 @@ const Collision breakable_box_seg8_collision[] = {
|
||||
COL_TRI_STOP(),
|
||||
COL_END(),
|
||||
};
|
||||
|
||||
UNUSED static const u32 breakable_box_unused_1 = 0;
|
||||
UNUSED static const u64 breakable_box_unused_2 = 0;
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
const GeoLayout breakable_box_geo[] = {
|
||||
GEO_CULLING_RADIUS(500),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_SHADOW(SHADOW_SQUARE_PERMANENT, 0xA0, 240),
|
||||
GEO_SHADOW(SHADOW_SQUARE_PERMANENT, 0xB4, 240),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_SWITCH_CASE(2, geo_switch_anim_state),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_DISPLAY_LIST(LAYER_OPAQUE, breakable_box_seg8_dl_crazy_box),
|
||||
GEO_DISPLAY_LIST(LAYER_OPAQUE, breakable_box_seg8_dl_cork_box),
|
||||
GEO_DISPLAY_LIST(LAYER_OPAQUE, breakable_box_seg8_dl_08012D20),
|
||||
GEO_DISPLAY_LIST(LAYER_OPAQUE, breakable_box_seg8_dl_08012D48),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
@@ -15,13 +15,13 @@ const GeoLayout breakable_box_geo[] = {
|
||||
};
|
||||
|
||||
// 0x0F000610
|
||||
const GeoLayout breakable_box_no_shadow_geo[] = {
|
||||
const GeoLayout breakable_box_small_geo[] = {
|
||||
GEO_CULLING_RADIUS(500),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_SWITCH_CASE(2, geo_switch_anim_state),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_DISPLAY_LIST(LAYER_OPAQUE, breakable_box_seg8_dl_crazy_box),
|
||||
GEO_DISPLAY_LIST(LAYER_OPAQUE, breakable_box_seg8_dl_cork_box),
|
||||
GEO_DISPLAY_LIST(LAYER_OPAQUE, breakable_box_seg8_dl_08012D20),
|
||||
GEO_DISPLAY_LIST(LAYER_OPAQUE, breakable_box_seg8_dl_08012D48),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_END(),
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// Breakable Box
|
||||
|
||||
// 0x08011A78
|
||||
static const Lights1 breakable_box_seg8_lights_default = gdSPDefLights1(
|
||||
static const Lights1 breakable_box_seg8_lights_08011A80 = gdSPDefLights1(
|
||||
0x3f, 0x3f, 0x3f,
|
||||
0xff, 0xff, 0xff, 0x28, 0x28, 0x28
|
||||
);
|
||||
@@ -17,7 +17,7 @@ ALIGNED8 static const Texture breakable_box_seg8_texture_08012290[] = {
|
||||
};
|
||||
|
||||
// 0x08012A90
|
||||
static const Vtx breakable_box_seg8_vertex[] = {
|
||||
static const Vtx breakable_box_seg8_vertex_08012A90[] = {
|
||||
{{{ -100, 0, -100}, 0, { 992, 0}, {0x81, 0x00, 0x00, 0xff}}},
|
||||
{{{ -100, 0, 100}, 0, { 992, 992}, {0x81, 0x00, 0x00, 0xff}}},
|
||||
{{{ -100, 200, 100}, 0, { 0, 992}, {0x81, 0x00, 0x00, 0xff}}},
|
||||
@@ -33,6 +33,10 @@ static const Vtx breakable_box_seg8_vertex[] = {
|
||||
{{{ 100, 200, 100}, 0, { 0, 992}, {0x7f, 0x00, 0x00, 0xff}}},
|
||||
{{{ 100, 0, 100}, 0, { 992, 992}, {0x7f, 0x00, 0x00, 0xff}}},
|
||||
{{{ 100, 0, -100}, 0, { 992, 0}, {0x7f, 0x00, 0x00, 0xff}}},
|
||||
};
|
||||
|
||||
// 0x08012B80
|
||||
static const Vtx breakable_box_seg8_vertex_08012B80[] = {
|
||||
{{{ -100, 200, 100}, 0, { 0, 0}, {0x00, 0x7f, 0x00, 0xff}}},
|
||||
{{{ 100, 200, -100}, 0, { 992, 992}, {0x00, 0x7f, 0x00, 0xff}}},
|
||||
{{{ -100, 200, -100}, 0, { 992, 0}, {0x00, 0x7f, 0x00, 0xff}}},
|
||||
@@ -47,16 +51,18 @@ static const Vtx breakable_box_seg8_vertex[] = {
|
||||
};
|
||||
|
||||
// 0x08012C30 - 0x08012CD8
|
||||
const Gfx breakable_box_seg8_sub_dl_end[] = {
|
||||
gsSPLight(&breakable_box_seg8_lights_default.l, 1),
|
||||
gsSPLight(&breakable_box_seg8_lights_default.a, 2),
|
||||
gsSPVertex(breakable_box_seg8_vertex, 26, 0),
|
||||
const Gfx breakable_box_seg8_dl_08012C30[] = {
|
||||
gsSPLight(&breakable_box_seg8_lights_08011A80.l, 1),
|
||||
gsSPLight(&breakable_box_seg8_lights_08011A80.a, 2),
|
||||
gsSPVertex(breakable_box_seg8_vertex_08012A90, 15, 0),
|
||||
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
|
||||
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
|
||||
gsSP2Triangles( 7, 9, 10, 0x0, 11, 12, 13, 0x0),
|
||||
gsSP2Triangles(11, 13, 14, 0x0, 15, 16, 17, 0x0),
|
||||
gsSP2Triangles(15, 18, 16, 0x0, 19, 20, 21, 0x0),
|
||||
gsSP2Triangles(19, 21, 22, 0x0, 23, 24, 25, 0x0),
|
||||
gsSP1Triangle(11, 13, 14, 0x0),
|
||||
gsSPVertex(breakable_box_seg8_vertex_08012B80, 11, 0),
|
||||
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
|
||||
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
|
||||
gsSP1Triangle( 8, 9, 10, 0x0),
|
||||
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
|
||||
gsDPPipeSync(),
|
||||
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
|
||||
@@ -65,9 +71,9 @@ const Gfx breakable_box_seg8_sub_dl_end[] = {
|
||||
};
|
||||
|
||||
// 0x08012CD8 - 0x08012D20
|
||||
const Gfx breakable_box_seg8_sub_dl_begin[] = {
|
||||
const Gfx breakable_box_seg8_dl_08012CD8[] = {
|
||||
gsDPPipeSync(),
|
||||
gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),
|
||||
gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),
|
||||
gsSPClearGeometryMode(G_SHADING_SMOOTH),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),
|
||||
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
|
||||
@@ -78,19 +84,19 @@ const Gfx breakable_box_seg8_sub_dl_begin[] = {
|
||||
};
|
||||
|
||||
// 0x08012D20 - 0x08012D48
|
||||
const Gfx breakable_box_seg8_dl_crazy_box[] = {
|
||||
gsSPDisplayList(breakable_box_seg8_sub_dl_begin),
|
||||
const Gfx breakable_box_seg8_dl_08012D20[] = {
|
||||
gsSPDisplayList(breakable_box_seg8_dl_08012CD8),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, breakable_box_seg8_texture_08011A90),
|
||||
gsDPLoadSync(),
|
||||
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
|
||||
gsSPBranchList(breakable_box_seg8_sub_dl_end),
|
||||
gsSPBranchList(breakable_box_seg8_dl_08012C30),
|
||||
};
|
||||
|
||||
// 0x08012D20 - 0x08012D70
|
||||
const Gfx breakable_box_seg8_dl_cork_box[] = {
|
||||
gsSPDisplayList(breakable_box_seg8_sub_dl_begin),
|
||||
const Gfx breakable_box_seg8_dl_08012D48[] = {
|
||||
gsSPDisplayList(breakable_box_seg8_dl_08012CD8),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, breakable_box_seg8_texture_08012290),
|
||||
gsDPLoadSync(),
|
||||
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
|
||||
gsSPBranchList(breakable_box_seg8_sub_dl_end),
|
||||
gsSPBranchList(breakable_box_seg8_dl_08012C30),
|
||||
};
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 8.6 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 8.7 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 8.8 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 10 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 8.2 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 9.3 KiB |
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user