You've already forked HackerSM64
mirror of
https://github.com/HackerN64/HackerSM64.git
synced 2026-01-21 10:35:32 -08:00
Compare commits
4 Commits
v2.3.0
...
develop/2.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
32035cfb7f | ||
|
|
e100979877 | ||
|
|
64225b7a19 | ||
|
|
735c0ba438 |
6
.gitignore
vendored
6
.gitignore
vendored
@@ -38,9 +38,6 @@
|
||||
# datadump
|
||||
/tools/ddump/*
|
||||
|
||||
# python cache in tools/
|
||||
/tools/__pycache__/*
|
||||
|
||||
# Text editor remnants
|
||||
*.swp
|
||||
.vscode/*
|
||||
@@ -2149,6 +2146,3 @@ lib/libs2d_engine.a
|
||||
|
||||
# :Zone_Identifier files
|
||||
*Zone.Identifier
|
||||
|
||||
# user-specific config file
|
||||
include/config/config_local.h
|
||||
|
||||
3
.gitmodules
vendored
3
.gitmodules
vendored
@@ -1,3 +0,0 @@
|
||||
[submodule "lib/libpl"]
|
||||
path = lib/libpl
|
||||
url = https://gitlab.com/parallel-launcher/libpl.git
|
||||
3
.vscode/c_cpp_properties.json
vendored
3
.vscode/c_cpp_properties.json
vendored
@@ -26,8 +26,7 @@
|
||||
"VERSION_US=1",
|
||||
"F3DEX_GBI_2=1",
|
||||
"F3DZEX_NON_GBI_2=1",
|
||||
"F3DEX_GBI_SHARED=1",
|
||||
"LIBPL=1"
|
||||
"F3DEX_GBI_SHARED=1"
|
||||
],
|
||||
"compilerPath": "/usr/bin/mips-linux-gnu-gcc",
|
||||
"cStandard": "gnu17",
|
||||
|
||||
15
Dockerfile
15
Dockerfile
@@ -1,18 +1,17 @@
|
||||
FROM ubuntu:22.04 as build
|
||||
FROM ubuntu:18.04 as build
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get install -y \
|
||||
binutils-mips-linux-gnu \
|
||||
bsdextrautils \
|
||||
bsdmainutils \
|
||||
build-essential \
|
||||
gcc-mips-linux-gnu \
|
||||
libcapstone-dev \
|
||||
pkgconf \
|
||||
python3
|
||||
|
||||
RUN mkdir /hackersm64
|
||||
WORKDIR /hackersm64
|
||||
ENV PATH="/hackersm64/tools:${PATH}"
|
||||
RUN mkdir /sm64
|
||||
WORKDIR /sm64
|
||||
ENV PATH="/sm64/tools:${PATH}"
|
||||
|
||||
CMD echo 'Usage: docker run --rm -v ${PWD}:/hackersm64 hackersm64 make VERSION=us -j4\n' \
|
||||
'See https://github.com/HackerN64/HackerSM64/blob/master/README.md for more information'
|
||||
CMD echo 'usage: docker run --rm --mount type=bind,source="$(pwd)",destination=/sm64 sm64 make VERSION=us -j4\n' \
|
||||
'see https://github.com/n64decomp/sm64/blob/master/README.md for advanced usage'
|
||||
|
||||
158
Makefile
158
Makefile
@@ -124,26 +124,16 @@ endif
|
||||
TEXT_ENGINE := none
|
||||
$(eval $(call validate-option,TEXT_ENGINE,none s2dex_text_engine))
|
||||
|
||||
ifeq ($(TEXT_ENGINE), s2dex_text_engine)
|
||||
DEFINES += S2DEX_GBI_2=1 S2DEX_TEXT_ENGINE=1
|
||||
SRC_DIRS += src/s2d_engine
|
||||
endif
|
||||
# add more text engines here
|
||||
|
||||
#==============================================================================#
|
||||
# Optimization flags #
|
||||
#==============================================================================#
|
||||
|
||||
# Default non-gcc opt flags
|
||||
DEFAULT_OPT_FLAGS = -Ofast -falign-functions=32
|
||||
# Note: -fno-associative-math is used here to suppress warnings, ideally we would enable this as an optimization but
|
||||
# this conflicts with -ftrapping-math apparently.
|
||||
# TODO: Figure out how to allow -fassociative-math to be enabled
|
||||
SAFETY_OPT_FLAGS = -ftrapping-math -fno-associative-math
|
||||
DEFAULT_OPT_FLAGS = -Ofast
|
||||
|
||||
# Main opt flags
|
||||
GCC_MAIN_OPT_FLAGS = \
|
||||
$(DEFAULT_OPT_FLAGS) $(SAFETY_OPT_FLAGS) \
|
||||
-Ofast \
|
||||
--param case-values-threshold=20 \
|
||||
--param max-completely-peeled-insns=10 \
|
||||
--param max-unrolled-insns=10 \
|
||||
@@ -154,7 +144,7 @@ GCC_MAIN_OPT_FLAGS = \
|
||||
|
||||
# Surface Collision
|
||||
GCC_COLLISION_OPT_FLAGS = \
|
||||
$(DEFAULT_OPT_FLAGS) $(SAFETY_OPT_FLAGS) \
|
||||
-Ofast \
|
||||
--param case-values-threshold=20 \
|
||||
--param max-completely-peeled-insns=100 \
|
||||
--param max-unrolled-insns=100 \
|
||||
@@ -167,7 +157,7 @@ GCC_COLLISION_OPT_FLAGS = \
|
||||
|
||||
# Math Util
|
||||
GCC_MATH_UTIL_OPT_FLAGS = \
|
||||
$(DEFAULT_OPT_FLAGS) $(SAFETY_OPT_FLAGS) \
|
||||
-Ofast \
|
||||
-fno-unroll-loops \
|
||||
-fno-peel-loops \
|
||||
--param case-values-threshold=20 \
|
||||
@@ -179,7 +169,7 @@ GCC_MATH_UTIL_OPT_FLAGS = \
|
||||
|
||||
# Rendering graph node
|
||||
GCC_GRAPH_NODE_OPT_FLAGS = \
|
||||
$(DEFAULT_OPT_FLAGS) $(SAFETY_OPT_FLAGS) \
|
||||
-Ofast \
|
||||
--param case-values-threshold=20 \
|
||||
--param max-completely-peeled-insns=100 \
|
||||
--param max-unrolled-insns=100 \
|
||||
@@ -219,6 +209,7 @@ endif
|
||||
ifeq ($(UNF),1)
|
||||
DEFINES += UNF=1
|
||||
SRC_DIRS += src/usb
|
||||
USE_DEBUG := 1
|
||||
endif
|
||||
|
||||
# ISVPRINT - whether to fake IS-Viewer presence,
|
||||
@@ -234,13 +225,10 @@ endif
|
||||
|
||||
ifeq ($(USE_DEBUG),1)
|
||||
ULTRALIB := ultra_d
|
||||
DEFINES += DEBUG=1 OVERWRITE_OSPRINT=1
|
||||
else ifeq ($(UNF),1)
|
||||
ULTRALIB := ultra
|
||||
DEFINES += _FINALROM=1 NDEBUG=1 OVERWRITE_OSPRINT=1
|
||||
DEFINES += DEBUG=1
|
||||
else
|
||||
ULTRALIB := ultra_rom
|
||||
DEFINES += _FINALROM=1 NDEBUG=1 OVERWRITE_OSPRINT=0
|
||||
DEFINES += _FINALROM=1 NDEBUG=1
|
||||
endif
|
||||
|
||||
# HVQM - whether to use HVQM fmv library
|
||||
@@ -253,23 +241,11 @@ ifeq ($(HVQM),1)
|
||||
SRC_DIRS += src/hvqm
|
||||
endif
|
||||
|
||||
# LIBPL - whether to include libpl library for interfacing with Parallel Launcher
|
||||
# (library will be pulled into repo after building with this enabled for the first time)
|
||||
# 1 - includes code in ROM
|
||||
# 0 - does not
|
||||
LIBPL ?= 0
|
||||
LIBPL_DIR := lib/libpl
|
||||
$(eval $(call validate-option,LIBPL,0 1))
|
||||
ifeq ($(LIBPL),1)
|
||||
DEFINES += LIBPL=1
|
||||
SRC_DIRS += $(LIBPL_DIR)
|
||||
endif
|
||||
|
||||
BUILD_DIR_BASE := build
|
||||
# BUILD_DIR is the location where all build artifacts are placed
|
||||
BUILD_DIR := $(BUILD_DIR_BASE)/$(VERSION)_$(CONSOLE)
|
||||
|
||||
COMPRESS ?= yay0
|
||||
COMPRESS ?= rnc1
|
||||
$(eval $(call validate-option,COMPRESS,mio0 yay0 gzip rnc1 rnc2 uncomp))
|
||||
ifeq ($(COMPRESS),gzip)
|
||||
DEFINES += GZIP=1
|
||||
@@ -317,23 +293,23 @@ ifeq ($(filter clean distclean print-%,$(MAKECMDGOALS)),)
|
||||
# Make sure assets exist
|
||||
NOEXTRACT ?= 0
|
||||
ifeq ($(NOEXTRACT),0)
|
||||
DUMMY != $(PYTHON) extract_assets.py us >&2 || echo FAIL
|
||||
DUMMY != $(PYTHON) extract_assets.py $(VERSION) >&2 || echo FAIL
|
||||
ifeq ($(DUMMY),FAIL)
|
||||
$(error Failed to extract assets from US ROM)
|
||||
endif
|
||||
ifneq (,$(shell python3 tools/detect_baseroms.py jp))
|
||||
ifneq (,$(wildcard baserom.jp.z64))
|
||||
DUMMY != $(PYTHON) extract_assets.py jp >&2 || echo FAIL
|
||||
ifeq ($(DUMMY),FAIL)
|
||||
$(error Failed to extract assets from JP ROM)
|
||||
endif
|
||||
endif
|
||||
ifneq (,$(shell python3 tools/detect_baseroms.py eu))
|
||||
ifneq (,$(wildcard baserom.eu.z64))
|
||||
DUMMY != $(PYTHON) extract_assets.py eu >&2 || echo FAIL
|
||||
ifeq ($(DUMMY),FAIL)
|
||||
$(error Failed to extract assets from EU ROM)
|
||||
endif
|
||||
endif
|
||||
ifneq (,$(shell python3 tools/detect_baseroms.py sh))
|
||||
ifneq (,$(wildcard baserom.sh.z64))
|
||||
DUMMY != $(PYTHON) extract_assets.py sh >&2 || echo FAIL
|
||||
ifeq ($(DUMMY),FAIL)
|
||||
$(error Failed to extract assets from SH ROM)
|
||||
@@ -347,18 +323,6 @@ ifeq ($(filter clean distclean print-%,$(MAKECMDGOALS)),)
|
||||
ifeq ($(DUMMY),FAIL)
|
||||
$(error Failed to build tools)
|
||||
endif
|
||||
|
||||
# Clone any needed submodules
|
||||
ifeq ($(LIBPL),1)
|
||||
ifeq ($(wildcard $(LIBPL_DIR)/*.h),)
|
||||
$(info Cloning libpl submodule...)
|
||||
DUMMY != git submodule update --init $(LIBPL_DIR) > /dev/null || echo FAIL
|
||||
ifeq ($(DUMMY),FAIL)
|
||||
$(error Failed to clone libpl submodule)
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
$(info Building ROM...)
|
||||
|
||||
endif
|
||||
@@ -393,15 +357,11 @@ include Makefile.split
|
||||
# Source code files
|
||||
LEVEL_C_FILES := $(wildcard levels/*/leveldata.c) $(wildcard levels/*/script.c) $(wildcard levels/*/geo.c)
|
||||
C_FILES := $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.c)) $(LEVEL_C_FILES)
|
||||
CPP_FILES := $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.cpp))
|
||||
LIBZ_C_FILES := $(foreach dir,$(LIBZ_SRC_DIRS),$(wildcard $(dir)/*.c))
|
||||
LIBZ_C_FILES := $(foreach dir,$(LIBZ_SRC_DIRS),$(wildcard $(dir)/*.c))
|
||||
GODDARD_C_FILES := $(foreach dir,$(GODDARD_SRC_DIRS),$(wildcard $(dir)/*.c))
|
||||
S_FILES := $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.s))
|
||||
GENERATED_C_FILES := $(BUILD_DIR)/assets/mario_anim_data.c $(BUILD_DIR)/assets/demo_data.c
|
||||
|
||||
# Ignore all .inc.c files
|
||||
C_FILES := $(filter-out %.inc.c,$(C_FILES))
|
||||
|
||||
# Sound files
|
||||
SOUND_BANK_FILES := $(wildcard sound/sound_banks/*.json)
|
||||
SOUND_SAMPLE_DIRS := $(wildcard sound/samples/*)
|
||||
@@ -418,7 +378,6 @@ SOUND_SEQUENCE_FILES := \
|
||||
|
||||
# Object files
|
||||
O_FILES := $(foreach file,$(C_FILES),$(BUILD_DIR)/$(file:.c=.o)) \
|
||||
$(foreach file,$(CPP_FILES),$(BUILD_DIR)/$(file:.cpp=.o)) \
|
||||
$(foreach file,$(S_FILES),$(BUILD_DIR)/$(file:.s=.o)) \
|
||||
$(foreach file,$(GENERATED_C_FILES),$(file:.c=.o)) \
|
||||
lib/PR/hvqm/hvqm2sp1.o lib/PR/hvqm/hvqm2sp2.o
|
||||
@@ -436,16 +395,12 @@ DEP_FILES := $(O_FILES:.o=.d) $(LIBZ_O_FILES:.o=.d) $(GODDARD_O_FILES:.o=.d) $(B
|
||||
# detect prefix for MIPS toolchain
|
||||
ifneq ($(call find-command,mips64-elf-ld),)
|
||||
CROSS := mips64-elf-
|
||||
else ifneq ($(call find-command,mips-n64-ld),)
|
||||
CROSS := mips-n64-
|
||||
else ifneq ($(call find-command,mips64-ld),)
|
||||
CROSS := mips64-
|
||||
else ifneq ($(call find-command,mips-linux-gnu-ld),)
|
||||
CROSS := mips-linux-gnu-
|
||||
else ifneq ($(call find-command,mips64-linux-gnu-ld),)
|
||||
CROSS := mips64-linux-gnu-
|
||||
else ifneq ($(call find-command,mips64-none-elf-ld),)
|
||||
CROSS := mips64-none-elf-
|
||||
else ifneq ($(call find-command,mips-ld),)
|
||||
CROSS := mips-
|
||||
else
|
||||
@@ -454,6 +409,14 @@ endif
|
||||
|
||||
LIBRARIES := nustd hvqm2 z goddard
|
||||
|
||||
# Text engine
|
||||
ifeq ($(TEXT_ENGINE), s2dex_text_engine)
|
||||
DEFINES += S2DEX_GBI_2=1 S2DEX_TEXT_ENGINE=1
|
||||
LIBRARIES += s2d_engine
|
||||
DUMMY != $(MAKE) -C src/s2d_engine COPY_DIR=$(shell pwd)/lib/ CROSS=$(CROSS)
|
||||
endif
|
||||
# add more text engines here
|
||||
|
||||
LINK_LIBRARIES = $(foreach i,$(LIBRARIES),-l$(i))
|
||||
|
||||
export LD_LIBRARY_PATH=./tools
|
||||
@@ -461,12 +424,10 @@ export LD_LIBRARY_PATH=./tools
|
||||
AS := $(CROSS)as
|
||||
ifeq ($(COMPILER),gcc)
|
||||
CC := $(CROSS)gcc
|
||||
CXX := $(CROSS)g++
|
||||
$(BUILD_DIR)/actors/%.o: OPT_FLAGS := -Ofast -mlong-calls
|
||||
$(BUILD_DIR)/levels/%.o: OPT_FLAGS := -Ofast -mlong-calls
|
||||
else ifeq ($(COMPILER),clang)
|
||||
CC := clang
|
||||
CXX := clang++
|
||||
endif
|
||||
# Prefer gcc's cpp if installed on the system
|
||||
ifneq (,$(call find-command,cpp-10))
|
||||
@@ -483,13 +444,6 @@ AR := $(CROSS)ar
|
||||
OBJDUMP := $(CROSS)objdump
|
||||
OBJCOPY := $(CROSS)objcopy
|
||||
|
||||
ifeq ($(LD), tools/mips64-elf-ld)
|
||||
ifeq ($(shell ls -la tools/mips64-elf-ld | awk '{print $1}' | grep x),)
|
||||
$(warning [ERROR]: A required file in this repository is no longer executable.)
|
||||
$(error * Please run: 'chmod +x tools/mips64-elf-ld', then run `make` again)
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(TARGET_N64),1)
|
||||
TARGET_CFLAGS := -nostdinc -DTARGET_N64 -D_LANGUAGE_C
|
||||
CC_CFLAGS := -fno-builtin
|
||||
@@ -530,6 +484,7 @@ CPPFLAGS := -P -Wno-trigraphs $(DEF_INC_CFLAGS)
|
||||
YAY0TOOL := $(TOOLS_DIR)/slienc
|
||||
MIO0TOOL := $(TOOLS_DIR)/mio0
|
||||
RNCPACK := $(TOOLS_DIR)/rncpack
|
||||
ROMALIGN := $(TOOLS_DIR)/romalign
|
||||
FILESIZER := $(TOOLS_DIR)/filesizer
|
||||
N64CKSUM := $(TOOLS_DIR)/n64cksum
|
||||
N64GRAPHICS := $(TOOLS_DIR)/n64graphics
|
||||
@@ -541,7 +496,6 @@ VADPCM_ENC := $(TOOLS_DIR)/vadpcm_enc
|
||||
EXTRACT_DATA_FOR_MIO := $(TOOLS_DIR)/extract_data_for_mio
|
||||
SKYCONV := $(TOOLS_DIR)/skyconv
|
||||
FIXLIGHTS_PY := $(TOOLS_DIR)/fixlights.py
|
||||
FLIPS := $(TOOLS_DIR)/flips
|
||||
ifeq ($(GZIPVER),std)
|
||||
GZIP := gzip
|
||||
else
|
||||
@@ -553,13 +507,8 @@ ifneq (,$(call find-command,armips))
|
||||
else
|
||||
RSPASM := $(TOOLS_DIR)/armips
|
||||
endif
|
||||
|
||||
ifneq (,$(call find-command,wslview))
|
||||
EMULATOR = "/mnt/c/Program Files (x86)/parallel-launcher/parallel-launcher.exe"
|
||||
else
|
||||
EMULATOR = parallel-launcher
|
||||
endif
|
||||
|
||||
ENDIAN_BITWIDTH := $(BUILD_DIR)/endian-and-bitwidth
|
||||
EMULATOR = mupen64plus
|
||||
EMU_FLAGS =
|
||||
|
||||
ifneq (,$(call find-command,wslview))
|
||||
@@ -604,10 +553,7 @@ all: $(ROM)
|
||||
|
||||
clean:
|
||||
$(RM) -r $(BUILD_DIR_BASE)
|
||||
|
||||
rebuildtools:
|
||||
$(MAKE) -C tools distclean
|
||||
$(MAKE) -C tools
|
||||
make -C src/s2d_engine clean
|
||||
|
||||
distclean: clean
|
||||
$(PYTHON) extract_assets.py --clean
|
||||
@@ -635,11 +581,8 @@ unf: $(ROM) $(LOADER)
|
||||
|
||||
libultra: $(BUILD_DIR)/libultra.a
|
||||
|
||||
patch: $(ROM)
|
||||
$(FLIPS) --create --bps $(shell python3 tools/detect_baseroms.py $(VERSION)) $(ROM) $(BUILD_DIR)/$(TARGET_STRING).bps
|
||||
|
||||
# Extra object file dependencies
|
||||
$(BUILD_DIR)/asm/ipl3.o: $(IPL3_RAW_FILES)
|
||||
$(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
|
||||
@@ -744,11 +687,9 @@ $(BUILD_DIR)/%.ci4.inc.c: %.ci4.png
|
||||
$(BUILD_DIR)/%.elf: $(BUILD_DIR)/%.o
|
||||
$(call print,Linking ELF file:,$<,$@)
|
||||
$(V)$(LD) -e 0 -Ttext=$(SEGMENT_ADDRESS) -Map $@.map -o $@ $<
|
||||
# Override for leveldata.elf, which otherwise matches the above pattern.
|
||||
# Has to be a static pattern rule for make-4.4 and above to trigger the second
|
||||
# expansion.
|
||||
# Override for leveldata.elf, which otherwise matches the above pattern
|
||||
.SECONDEXPANSION:
|
||||
$(LEVEL_ELF_FILES): $(BUILD_DIR)/levels/%/leveldata.elf: $(BUILD_DIR)/levels/%/leveldata.o $(BUILD_DIR)/bin/$$(TEXTURE_BIN).elf
|
||||
$(BUILD_DIR)/levels/%/leveldata.elf: $(BUILD_DIR)/levels/%/leveldata.o $(BUILD_DIR)/bin/$$(TEXTURE_BIN).elf
|
||||
$(call print,Linking ELF file:,$<,$@)
|
||||
$(V)$(LD) -e 0 -Ttext=$(SEGMENT_ADDRESS) -Map $@.map --just-symbols=$(BUILD_DIR)/bin/$(TEXTURE_BIN).elf -o $@ $<
|
||||
|
||||
@@ -780,15 +721,23 @@ endif
|
||||
|
||||
$(BUILD_DIR)/%.table: %.aiff
|
||||
$(call print,Extracting codebook:,$<,$@)
|
||||
$(V)$(AIFF_EXTRACT_CODEBOOK) $< $@
|
||||
$(V)$(AIFF_EXTRACT_CODEBOOK) $< >$@
|
||||
|
||||
$(BUILD_DIR)/%.aifc: $(BUILD_DIR)/%.table %.aiff
|
||||
$(call print,Encoding ADPCM:,$(word 2,$^),$@)
|
||||
$(V)$(VADPCM_ENC) -c $^ $@
|
||||
|
||||
$(SOUND_BIN_DIR)/sound_data.ctl: sound/sound_banks/ $(SOUND_BANK_FILES) $(SOUND_SAMPLE_AIFCS)
|
||||
$(ENDIAN_BITWIDTH): $(TOOLS_DIR)/determine-endian-bitwidth.c
|
||||
@$(PRINT) "$(GREEN)Generating endian-bitwidth $(NO_COL)\n"
|
||||
$(V)$(CC) -c $(CFLAGS) -o $@.dummy2 $< 2>$@.dummy1; true
|
||||
$(V)grep -o 'msgbegin --endian .* --bitwidth .* msgend' $@.dummy1 > $@.dummy2
|
||||
$(V)head -n1 <$@.dummy2 | cut -d' ' -f2-5 > $@
|
||||
$(V)$(RM) $@.dummy1
|
||||
$(V)$(RM) $@.dummy2
|
||||
|
||||
$(SOUND_BIN_DIR)/sound_data.ctl: sound/sound_banks/ $(SOUND_BANK_FILES) $(SOUND_SAMPLE_AIFCS) $(ENDIAN_BITWIDTH)
|
||||
@$(PRINT) "$(GREEN)Generating: $(BLUE)$@ $(NO_COL)\n"
|
||||
$(V)$(PYTHON) $(TOOLS_DIR)/assemble_sound.py $(BUILD_DIR)/sound/samples/ sound/sound_banks/ $(SOUND_BIN_DIR)/sound_data.ctl $(SOUND_BIN_DIR)/ctl_header $(SOUND_BIN_DIR)/sound_data.tbl $(SOUND_BIN_DIR)/tbl_header $(C_DEFINES)
|
||||
$(V)$(PYTHON) $(TOOLS_DIR)/assemble_sound.py $(BUILD_DIR)/sound/samples/ sound/sound_banks/ $(SOUND_BIN_DIR)/sound_data.ctl $(SOUND_BIN_DIR)/ctl_header $(SOUND_BIN_DIR)/sound_data.tbl $(SOUND_BIN_DIR)/tbl_header $(C_DEFINES) $$(cat $(ENDIAN_BITWIDTH))
|
||||
|
||||
$(SOUND_BIN_DIR)/sound_data.tbl: $(SOUND_BIN_DIR)/sound_data.ctl
|
||||
@true
|
||||
@@ -799,9 +748,9 @@ $(SOUND_BIN_DIR)/ctl_header: $(SOUND_BIN_DIR)/sound_data.ctl
|
||||
$(SOUND_BIN_DIR)/tbl_header: $(SOUND_BIN_DIR)/sound_data.ctl
|
||||
@true
|
||||
|
||||
$(SOUND_BIN_DIR)/sequences.bin: $(SOUND_BANK_FILES) sound/sequences.json $(SOUND_SEQUENCE_DIRS) $(SOUND_SEQUENCE_FILES)
|
||||
$(SOUND_BIN_DIR)/sequences.bin: $(SOUND_BANK_FILES) sound/sequences.json $(SOUND_SEQUENCE_DIRS) $(SOUND_SEQUENCE_FILES) $(ENDIAN_BITWIDTH)
|
||||
@$(PRINT) "$(GREEN)Generating: $(BLUE)$@ $(NO_COL)\n"
|
||||
$(V)$(PYTHON) $(TOOLS_DIR)/assemble_sound.py --sequences $@ $(SOUND_BIN_DIR)/sequences_header $(SOUND_BIN_DIR)/bank_sets sound/sound_banks/ sound/sequences.json $(SOUND_SEQUENCE_FILES) $(C_DEFINES)
|
||||
$(V)$(PYTHON) $(TOOLS_DIR)/assemble_sound.py --sequences $@ $(SOUND_BIN_DIR)/sequences_header $(SOUND_BIN_DIR)/bank_sets sound/sound_banks/ sound/sequences.json $(SOUND_SEQUENCE_FILES) $(C_DEFINES) $$(cat $(ENDIAN_BITWIDTH))
|
||||
|
||||
$(SOUND_BIN_DIR)/bank_sets: $(SOUND_BIN_DIR)/sequences.bin
|
||||
@true
|
||||
@@ -856,7 +805,7 @@ $(BUILD_DIR)/include/level_headers.h: levels/level_headers.h.in
|
||||
# Generate version_data.h
|
||||
$(BUILD_DIR)/src/game/version_data.h: tools/make_version.sh
|
||||
@$(PRINT) "$(GREEN)Generating: $(BLUE)$@ $(NO_COL)\n"
|
||||
$(V)sh tools/make_version.sh $(CROSS) > $@
|
||||
$(V)tools/make_version.sh $(CROSS) > $@
|
||||
|
||||
#==============================================================================#
|
||||
# Compilation Recipes #
|
||||
@@ -865,15 +814,12 @@ $(BUILD_DIR)/src/game/version_data.h: tools/make_version.sh
|
||||
# Compile C code
|
||||
ifeq ($(FIXLIGHTS),1)
|
||||
# This must not be run multiple times at once, so we run it ahead of time rather than in a rule
|
||||
DUMMY != $(PYTHON) $(FIXLIGHTS_PY) actors
|
||||
DUMMY != $(PYTHON) $(FIXLIGHTS_PY) levels
|
||||
DUMMY != $(FIXLIGHTS_PY) actors
|
||||
DUMMY != $(FIXLIGHTS_PY) levels
|
||||
endif
|
||||
$(BUILD_DIR)/%.o: %.c
|
||||
$(call print,Compiling:,$<,$@)
|
||||
$(V)$(CC) -c $(CFLAGS) -MMD -MF $(BUILD_DIR)/$*.d -o $@ $<
|
||||
$(BUILD_DIR)/%.o: %.cpp
|
||||
$(call print,Compiling (C++):,$<,$@)
|
||||
$(V)$(CXX) -c $(CFLAGS) -std=c++17 -Wno-register -MMD -MF $(BUILD_DIR)/$*.d -o $@ $<
|
||||
$(BUILD_DIR)/%.o: $(BUILD_DIR)/%.c
|
||||
$(call print,Compiling:,$<,$@)
|
||||
$(V)$(CC) -c $(CFLAGS) -MMD -MF $(BUILD_DIR)/$*.d -o $@ $<
|
||||
@@ -891,7 +837,7 @@ $(BUILD_DIR)/rsp/%.bin $(BUILD_DIR)/rsp/%_data.bin: rsp/%.s
|
||||
# Run linker script through the C preprocessor
|
||||
$(BUILD_DIR)/$(LD_SCRIPT): $(LD_SCRIPT) $(BUILD_DIR)/goddard.txt
|
||||
$(call print,Preprocessing linker script:,$<,$@)
|
||||
$(V)$(CPP) $(CPPFLAGS) -DBUILD_DIR=$(BUILD_DIR) -DULTRALIB=lib$(ULTRALIB) $(DEBUG_MAP_STACKTRACE_FLAG) -MMD -MP -MT $@ -MF $@.d -o $@ $<
|
||||
$(V)$(CPP) $(CPPFLAGS) -DBUILD_DIR=$(BUILD_DIR) $(DEBUG_MAP_STACKTRACE_FLAG) -MMD -MP -MT $@ -MF $@.d -o $@ $<
|
||||
|
||||
# Link libgoddard
|
||||
$(BUILD_DIR)/libgoddard.a: $(GODDARD_O_FILES)
|
||||
@@ -906,11 +852,11 @@ $(BUILD_DIR)/libz.a: $(LIBZ_O_FILES)
|
||||
# SS2: Goddard rules to get size
|
||||
$(BUILD_DIR)/sm64_prelim.ld: sm64.ld $(O_FILES) $(YAY0_OBJ_FILES) $(SEG_FILES) $(BUILD_DIR)/libgoddard.a $(BUILD_DIR)/libz.a
|
||||
$(call print,Preprocessing preliminary linker script:,$<,$@)
|
||||
$(V)$(CPP) $(CPPFLAGS) -DPRELIMINARY=1 -DBUILD_DIR=$(BUILD_DIR) -DULTRALIB=lib$(ULTRALIB) -MMD -MP -MT $@ -MF $@.d -o $@ $<
|
||||
$(V)$(CPP) $(CPPFLAGS) -DPRELIMINARY=1 -DBUILD_DIR=$(BUILD_DIR) -MMD -MP -MT $@ -MF $@.d -o $@ $<
|
||||
|
||||
$(BUILD_DIR)/sm64_prelim.elf: $(BUILD_DIR)/sm64_prelim.ld
|
||||
@$(PRINT) "$(GREEN)Linking Preliminary ELF file: $(BLUE)$@ $(NO_COL)\n"
|
||||
$(V)$(LD) --gc-sections -L $(BUILD_DIR) -T $< -Map $(BUILD_DIR)/sm64_prelim.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
|
||||
$(V)$(LD) --gc-sections -L $(BUILD_DIR) -T undefined_syms.txt -T $< -Map $(BUILD_DIR)/sm64_prelim.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_DIR)/goddard.txt: $(BUILD_DIR)/sm64_prelim.elf
|
||||
$(call print,Getting Goddard size...)
|
||||
@@ -918,13 +864,13 @@ $(BUILD_DIR)/goddard.txt: $(BUILD_DIR)/sm64_prelim.elf
|
||||
|
||||
$(BUILD_DIR)/asm/debug/map.o: asm/debug/map.s $(BUILD_DIR)/sm64_prelim.elf
|
||||
$(call print,Assembling:,$<,$@)
|
||||
$(V)python3 tools/mapPacker.py $(BUILD_DIR)/sm64_prelim.elf $(BUILD_DIR)/bin/addr.bin $(BUILD_DIR)/bin/name.bin
|
||||
$(V)python3 tools/mapPacker.py $(BUILD_DIR)/sm64_prelim.map $(BUILD_DIR)/bin/addr.bin $(BUILD_DIR)/bin/name.bin
|
||||
$(V)$(CROSS)gcc -c $(ASMFLAGS) $(foreach i,$(INCLUDE_DIRS),-Wa,-I$(i)) -x assembler-with-cpp -MMD -MF $(BUILD_DIR)/$*.d -o $@ $<
|
||||
|
||||
# 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) $(BUILD_DIR)/libz.a $(BUILD_DIR)/libgoddard.a
|
||||
$(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 $(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
|
||||
$(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
|
||||
|
||||
# Build ROM
|
||||
ifeq (n,$(findstring n,$(firstword -$(MAKEFLAGS))))
|
||||
@@ -949,7 +895,7 @@ endif
|
||||
$(BUILD_DIR)/$(TARGET).objdump: $(ELF)
|
||||
$(OBJDUMP) -D $< > $@
|
||||
|
||||
.PHONY: all clean distclean default test load rebuildtools
|
||||
.PHONY: all clean distclean default test load
|
||||
# with no prerequisites, .SECONDARY causes no intermediate target to be removed
|
||||
.SECONDARY:
|
||||
|
||||
|
||||
@@ -39,8 +39,6 @@ ACTOR_GROUPS := \
|
||||
|
||||
LEVEL_FILES := $(addsuffix leveldata,$(LEVEL_DIRS))
|
||||
|
||||
LEVEL_ELF_FILES := $(foreach level_dir,$(LEVEL_DIRS),$(BUILD_DIR)/levels/$(level_dir)leveldata.elf)
|
||||
|
||||
SEG_FILES := \
|
||||
$(SEGMENTS:%=$(BUILD_DIR)/bin/%.elf) \
|
||||
$(ACTOR_GROUPS:%=$(BUILD_DIR)/actors/%.elf) \
|
||||
|
||||
14
README.md
14
README.md
@@ -21,21 +21,21 @@ This is a fork of the ultrasm64 repo by CrashOveride which includes the followin
|
||||
- **Fazana**: PuppyLib, ucode swapping, audio load time optimisations (with Arctic), general hacker qol improvements, visual debug
|
||||
- **Reonu**: Starting the project/repo, widescreen, reonucam, various defines for hacker QoL
|
||||
- **JoshDuMan**: Decomp guy, general assistance
|
||||
- **Arceveti**: Silhouette, shadow optimisation, better hanging, breath meter, 4 controller support
|
||||
- **Arceveti**: Silhouette, shadow optimisation, better hanging, breath meter
|
||||
- **axollyon**: Console testing, bugfixes, idea-guying, and had a hand in silhouettes
|
||||
- **Wiseguy**: World scale reimplementation, 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](https://github.com/CrashOveride95/ultrasm64) repo
|
||||
- **falcobuster**: Original coordinate overflow fix (world scale), ASM version of extended bounds, emulator detector
|
||||
- **falcobuster**: Original coordinate overflow fix (world scale), ASM version of extended bounds
|
||||
- **anonymous_moose**: porting falco's extended bounds to decomp
|
||||
- **tuxlovesyou**: `LOAD_MIO0_TEXTURE` macro and moral support
|
||||
- **devwizard**: the PJ64 pre-v3.0 detection part of the emulator detector
|
||||
|
||||
Thanks to Frame#5375 and AloXado320 for also helping with silhouette stuff
|
||||
|
||||
**Lighting Engine by Wiseguy**
|
||||
- Lighting Engine is available on a separate branch ([base/lighting-engine](https://github.com/Reonu/HackerSM64/tree/base/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.
|
||||
|
||||
**Puppycam**
|
||||
- Puppycam is available on the master branch now, you can toggle it in `config/config_camera.h`. *
|
||||
@@ -82,7 +82,7 @@ Thanks to Frame#5375 and AloXado320 for also helping with silhouette stuff
|
||||
- Many general use defines for object struct members, meant for use in custom object behaviors. Check `include/object_fields.h` for more info on this. (By MrComit)
|
||||
- Included `actors/group0.c` in `behavior_data.c`
|
||||
- The internal ROM name is now set with a define in `config/config_rom.h` to make it simpler
|
||||
- There is a `gEmulator` variable to detect console or specific emulators and emulator versions
|
||||
- There is a `gIsConsole` variable that is 1 when running on console and 0 when running on emulator. This way you can wrap your code in a console check.
|
||||
- Expanded audio heap allows for a larger concurrent note count and the importing of more m64 sequences and sound banks (By ArcticJaguar725) *
|
||||
- You can set a test level in `config/config_debug.h` in order to boot straight into it, so you can quickly test the level you're working on. *
|
||||
- Allow all surfaces in the game to have a `force` parameter. Activating this doesn't REQUIRE you to set `force` for every surface: If you don't set, it will default to 0x0000 rather than crashing. Increases RAM usage of collision. *
|
||||
@@ -105,7 +105,7 @@ Thanks to Frame#5375 and AloXado320 for also helping with silhouette stuff
|
||||
|
||||
**Neat Misc. Changes:**
|
||||
- Instant Input patch by Wiseguy (Removes all input lag caused by plugins supporting framebuffer)
|
||||
- This means that you'll have to do your framebuffer effects on buffer 0 for emulator, but NOT for console. You can use the `gEmulator` variable to check for console when doing your framebuffer effects.
|
||||
- This means that you'll have to do your framebuffer effects on buffer 0 for emulator, but NOT for console. You can use the `gIsConsole` variable to check for console when doing your framebuffer effects.
|
||||
- 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 (64x64) coins, the vanilla coin texture is upgraded to accomodate. *
|
||||
@@ -121,7 +121,7 @@ Thanks to Frame#5375 and AloXado320 for also helping with silhouette stuff
|
||||
- Use `render_multi_image` to draw large texture rectangles consisting of multiple images on the screen.
|
||||
- More info in `puppyprint.c`
|
||||
- Wiseguy's Farcall TLB mapping allows to store executable code inside uncompressed segments, that can be loaded and ran as needed, instead of it having to be loaded at all times. See `farcall.h` in the include folder for instructions and details.
|
||||
- Red Coin Stars now support up to 99 red coins! In addition, multi-area red coin missions can now be created by setting the 2nd behavior paramater of the red coin star to the number of reds required for the star to spawn.
|
||||
|
||||
# UltraSM64
|
||||
|
||||
- This repo contains a full decompilation of Super Mario 64 (J), (U), (E), and (SH).
|
||||
@@ -135,7 +135,7 @@ Thanks to Frame#5375 and AloXado320 for also helping with silhouette stuff
|
||||
- It has been patched with someone2639's shiftable segments patch
|
||||
- Wiseguy's instant input patch has been added to allow for less input lag on emulation (Does not affect console)
|
||||
This does mean that any framebuffer effects will have to be done on buffer 0 if targeting emulators
|
||||
- Automatic console and emulator detection: Use the `gEmulator` variable to wrap your code in an emulator check.
|
||||
- Automatic console and emulator detection: Use the `gIsConsole` variable to wrap your code in an emulator check.
|
||||
- Separate defines for emulator and console black border height.
|
||||
- Getting HVQM FMV support to work with the game is WIP.
|
||||
|
||||
|
||||
@@ -1 +1 @@
|
||||
v2.3.0
|
||||
v2.0.5
|
||||
|
||||
@@ -27,6 +27,6 @@
|
||||
#include "sparkle_animation/model.inc.c"
|
||||
|
||||
#ifdef S2DEX_TEXT_ENGINE
|
||||
#include "src/s2d_engine/s2d_config.h"
|
||||
#include "src/s2d_engine/config.h"
|
||||
#include FONT_C_FILE
|
||||
#endif
|
||||
|
||||
@@ -368,8 +368,8 @@ const Gfx mario_metal_butt[] = {
|
||||
gsDPPipeSync(),
|
||||
gsSPSetGeometryMode(G_TEXTURE_GEN),
|
||||
gsDPSetCombineMode(G_CC_DECALFADE, G_CC_DECALFADE),
|
||||
gsDPLoadTextureBlock(mario_texture_metal, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 64, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 5, 6, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPTexture(0x07C0, 0x0F80, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsDPLoadTextureBlock(mario_texture_metal, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsSPLightColor(LIGHT_1, 0xffffffff),
|
||||
gsSPLightColor(LIGHT_2, 0x7f7f7fff),
|
||||
gsSPDisplayList(mario_butt_dl),
|
||||
@@ -966,8 +966,8 @@ const Gfx mario_metal_left_thigh[] = {
|
||||
gsDPPipeSync(),
|
||||
gsSPSetGeometryMode(G_TEXTURE_GEN),
|
||||
gsDPSetCombineMode(G_CC_DECALFADE, G_CC_DECALFADE),
|
||||
gsDPLoadTextureBlock(mario_texture_metal, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 64, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 5, 6, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPTexture(0x07C0, 0x0F80, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsDPLoadTextureBlock(mario_texture_metal, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsSPLightColor(LIGHT_1, 0xffffffff),
|
||||
gsSPLightColor(LIGHT_2, 0x7f7f7fff),
|
||||
gsSPDisplayList(mario_left_thigh_dl),
|
||||
@@ -3249,8 +3249,8 @@ const Gfx mario_metal_medium_poly_butt[] = {
|
||||
gsDPPipeSync(),
|
||||
gsSPSetGeometryMode(G_TEXTURE_GEN),
|
||||
gsDPSetCombineMode(G_CC_DECALFADE, G_CC_DECALFADE),
|
||||
gsDPLoadTextureBlock(mario_texture_metal, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 64, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 5, 6, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPTexture(0x07C0, 0x0F80, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsDPLoadTextureBlock(mario_texture_metal, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsSPLightColor(LIGHT_1, 0xffffffff),
|
||||
gsSPLightColor(LIGHT_2, 0x7f7f7fff),
|
||||
gsSPDisplayList(mario_medium_poly_butt_dl),
|
||||
@@ -3638,8 +3638,8 @@ const Gfx mario_metal_medium_poly_left_thigh[] = {
|
||||
gsDPPipeSync(),
|
||||
gsSPSetGeometryMode(G_TEXTURE_GEN),
|
||||
gsDPSetCombineMode(G_CC_DECALFADE, G_CC_DECALFADE),
|
||||
gsDPLoadTextureBlock(mario_texture_metal, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 64, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 5, 6, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPTexture(0x07C0, 0x0F80, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsDPLoadTextureBlock(mario_texture_metal, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsSPLightColor(LIGHT_1, 0xffffffff),
|
||||
gsSPLightColor(LIGHT_2, 0x7f7f7fff),
|
||||
gsSPDisplayList(mario_medium_poly_left_thigh_dl),
|
||||
@@ -4128,8 +4128,8 @@ const Gfx mario_metal_low_poly_butt[] = {
|
||||
gsDPPipeSync(),
|
||||
gsSPSetGeometryMode(G_TEXTURE_GEN),
|
||||
gsDPSetCombineMode(G_CC_DECALFADE, G_CC_DECALFADE),
|
||||
gsDPLoadTextureBlock(mario_texture_metal, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 64, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 5, 6, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPTexture(0x07C0, 0x0F80, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsDPLoadTextureBlock(mario_texture_metal, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsSPLightColor(LIGHT_1, 0xffffffff),
|
||||
gsSPLightColor(LIGHT_2, 0x7f7f7fff),
|
||||
gsSPDisplayList(mario_low_poly_butt_dl),
|
||||
@@ -4373,8 +4373,8 @@ const Gfx mario_metal_low_poly_left_thigh[] = {
|
||||
gsDPPipeSync(),
|
||||
gsSPSetGeometryMode(G_TEXTURE_GEN),
|
||||
gsDPSetCombineMode(G_CC_DECALFADE, G_CC_DECALFADE),
|
||||
gsDPLoadTextureBlock(mario_texture_metal, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 64, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 5, 6, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPTexture(0x07C0, 0x0F80, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsDPLoadTextureBlock(mario_texture_metal, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsSPLightColor(LIGHT_1, 0xffffffff),
|
||||
gsSPLightColor(LIGHT_2, 0x7f7f7fff),
|
||||
gsSPDisplayList(mario_low_poly_left_thigh_dl),
|
||||
@@ -6608,8 +6608,8 @@ const Gfx mario_metal_cap_unused_dl[] = {
|
||||
gsDPPipeSync(),
|
||||
gsSPSetGeometryMode(G_TEXTURE_GEN),
|
||||
gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),
|
||||
gsDPLoadTextureBlock(mario_texture_metal, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 64, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 5, 6, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPTexture(0x07C0, 0x0F80, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsDPLoadTextureBlock(mario_texture_metal, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsSPLightColor(LIGHT_1, 0xffffffff),
|
||||
gsSPLightColor(LIGHT_2, 0x7f7f7fff),
|
||||
gsSPDisplayList(mario_cap_unused_m_logo_dl),
|
||||
@@ -6787,7 +6787,7 @@ const Gfx mario_metal_cap_wings_transparent[] = {
|
||||
gsDPPipeSync(),
|
||||
gsSPSetGeometryMode(G_TEXTURE_GEN | G_CULL_BACK | G_SHADING_SMOOTH),
|
||||
gsDPSetCombineMode(G_CC_DECALFADE, G_CC_DECALFADE),
|
||||
gsDPLoadTextureBlock(mario_texture_metal, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 64, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 5, 6, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPTexture(0x07C0, 0x0F80, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsDPLoadTextureBlock(mario_texture_metal, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
@@ -271,8 +271,8 @@ const Gfx mario_cap_seg3_dl_03022FF8[] = {
|
||||
gsDPPipeSync(),
|
||||
gsSPSetGeometryMode(G_TEXTURE_GEN),
|
||||
gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),
|
||||
gsDPLoadTextureBlock(mario_cap_seg3_texture_0301CF50, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 64, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 5, 6, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPTexture(0x07C0, 0x0F80, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsDPLoadTextureBlock(mario_cap_seg3_texture_0301CF50, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsSPLightColor(LIGHT_1, 0xffffffff),
|
||||
gsSPLightColor(LIGHT_2, 0x7f7f7fff),
|
||||
gsSPDisplayList(mario_cap_seg3_dl_03022B30),
|
||||
@@ -281,7 +281,7 @@ const Gfx mario_cap_seg3_dl_03022FF8[] = {
|
||||
gsDPPipeSync(),
|
||||
gsSPClearGeometryMode(G_TEXTURE_GEN),
|
||||
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
|
||||
gsSPTexture(0x07C0, 0x0F80, 0, G_TX_RENDERTILE, G_OFF),
|
||||
gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_OFF),
|
||||
gsDPSetAlphaCompare(G_AC_NONE),
|
||||
gsDPSetEnvColor(255, 255, 255, 255),
|
||||
gsSPEndDisplayList(),
|
||||
@@ -365,8 +365,14 @@ const Gfx mario_cap_seg3_dl_03023298[] = {
|
||||
gsDPPipeSync(),
|
||||
gsSPSetGeometryMode(G_TEXTURE_GEN),
|
||||
gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),
|
||||
gsDPLoadTextureBlock(mario_cap_seg3_texture_0301CF50, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 64, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 5, 6, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPTexture(0x07C0, 0x0F80, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_cap_seg3_texture_0301CF50),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),
|
||||
gsDPLoadSync(),
|
||||
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
|
||||
gsDPPipeSync(),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),
|
||||
gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),
|
||||
gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsSPLightColor(LIGHT_1, 0xffffffff),
|
||||
gsSPLightColor(LIGHT_2, 0x7f7f7fff),
|
||||
gsSPDisplayList(mario_cap_seg3_dl_03022B30),
|
||||
|
||||
@@ -160,8 +160,8 @@ const Gfx water_ring_seg6_dl_06013AC0[] = {
|
||||
gsDPPipeSync(),
|
||||
gsSPSetGeometryMode(G_TEXTURE_GEN),
|
||||
gsDPSetCombineMode(G_CC_DECALFADE, G_CC_DECALFADE),
|
||||
gsDPLoadTextureBlock(water_ring_seg6_texture_06012380, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 64, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 5, 6, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPTexture(0x07C0, 0x1800, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsDPLoadTextureBlock(water_ring_seg6_texture_06012380, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPTexture(0x1800, 0x07C0, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsSPLightColor(LIGHT_1, 0xffffffff),
|
||||
gsSPLightColor(LIGHT_2, 0x3f3f3fff),
|
||||
gsSPVertex(water_ring_seg6_vertex_06013380, 16, 0),
|
||||
@@ -212,6 +212,6 @@ const Gfx water_ring_seg6_dl_06013AC0[] = {
|
||||
gsSPClearGeometryMode(G_TEXTURE_GEN),
|
||||
gsDPSetEnvColor(255, 255, 255, 255),
|
||||
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
|
||||
gsSPTexture(0x07C0, 0x0F80, 0, G_TX_RENDERTILE, G_OFF),
|
||||
gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_OFF),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
@@ -4,39 +4,24 @@
|
||||
.set gp=64
|
||||
|
||||
#include "macros.inc"
|
||||
#undef _LANGUAGE_C
|
||||
#include <PR/rcp.h>
|
||||
|
||||
#define PHYS_TO_CART(addr) ((addr) | 0xB0000000)
|
||||
.set CART_ENTRYPOINT, 0x00000008
|
||||
.set CART_CHECKSUM0, 0x00000010
|
||||
.set CART_CHECKSUM1, 0x00000014
|
||||
|
||||
// initial DMEM state
|
||||
.set SP_DMEM_UNK0, 0x040004C0
|
||||
.set SP_DMEM_UNK1, 0x04000774
|
||||
|
||||
// Used for documentation; changing these can and will break your ROM!
|
||||
.set INITIAL_DMA_LEN, 0x00100000
|
||||
.set INITIAL_DMA_ROMPOS, 0x1000
|
||||
|
||||
|
||||
// 0xA0000000-0xBFFFFFFF: KSEG1 direct map non-cache mirror of 0x00000000
|
||||
// 0xA4000000-0xA4000FFF: RSP DMEM
|
||||
|
||||
// 0xA4000000-0xA400003F: ROM header
|
||||
|
||||
.section .text, "ax"
|
||||
|
||||
// 0xA4000040-0xA4000B6F: IPL3
|
||||
|
||||
// IPL3 entry point jumped to from IPL2
|
||||
glabel ipl3_entry // 0xA4000040
|
||||
.ent ipl3_entry
|
||||
mtc0 $zero, C0_CAUSE
|
||||
mtc0 $zero, C0_COUNT
|
||||
mtc0 $zero, C0_COMPARE
|
||||
lui $t0, %hi(PHYS_TO_K1(RI_BASE_REG))
|
||||
addiu $t0, %lo(PHYS_TO_K1(RI_BASE_REG))
|
||||
lw $t1, %lo(RI_SELECT_REG)($t0)
|
||||
mtc0 $zero, $13
|
||||
mtc0 $zero, $9
|
||||
mtc0 $zero, $11
|
||||
lui $t0, %hi(RI_MODE_REG)
|
||||
addiu $t0, %lo(RI_MODE_REG)
|
||||
lw $t1, 0xc($t0)
|
||||
bnez $t1, .LA4000410
|
||||
nop
|
||||
addiu $sp, $sp, -0x18
|
||||
@@ -45,24 +30,24 @@ glabel ipl3_entry // 0xA4000040
|
||||
sw $s5, 8($sp)
|
||||
sw $s6, 0xc($sp)
|
||||
sw $s7, 0x10($sp)
|
||||
lui $t0, %hi(PHYS_TO_K1(RI_BASE_REG))
|
||||
addiu $t0, %lo(PHYS_TO_K1(RI_BASE_REG))
|
||||
lui $t2, %hi(PHYS_TO_K1(RDRAM_BASE_REG + 0x80000))
|
||||
lui $t3, %hi(PHYS_TO_K1(RDRAM_BASE_REG))
|
||||
lui $t4, %hi(PHYS_TO_K1(MI_BASE_REG))
|
||||
addiu $t4, %lo(PHYS_TO_K1(MI_BASE_REG))
|
||||
lui $t0, %hi(RI_MODE_REG)
|
||||
addiu $t0, %lo(RI_MODE_REG)
|
||||
lui $t2, (0xa3f80000 >> 16)
|
||||
lui $t3, (0xa3f00000 >> 16)
|
||||
lui $t4, %hi(MI_MODE_REG)
|
||||
addiu $t4, %lo(MI_MODE_REG)
|
||||
ori $t1, $zero, 64
|
||||
sw $t1, %lo(MI_VERSION_REG)($t0)
|
||||
sw $t1, 4($t0)
|
||||
li $s1, 8000
|
||||
.LA400009C:
|
||||
nop
|
||||
addi $s1, $s1, -1
|
||||
bnez $s1, .LA400009C
|
||||
nop
|
||||
sw $zero, %lo(RI_CURRENT_LOAD_REG)($t0)
|
||||
ori $t1, $zero, 0x14
|
||||
sw $t1, %lo(RI_SELECT_REG)($t0)
|
||||
sw $zero, %lo(RI_MODE_REG)($t0)
|
||||
sw $zero, 8($t0)
|
||||
ori $t1, $zero, 20
|
||||
sw $t1, 0xc($t0)
|
||||
sw $zero, ($t0)
|
||||
li $s1, 4
|
||||
.LA40000C0:
|
||||
nop
|
||||
@@ -70,34 +55,34 @@ glabel ipl3_entry // 0xA4000040
|
||||
bnez $s1, .LA40000C0
|
||||
nop
|
||||
ori $t1, $zero, 14
|
||||
sw $t1, %lo(RI_MODE_REG)($t0)
|
||||
sw $t1, ($t0)
|
||||
li $s1, 32
|
||||
.LA40000DC:
|
||||
addi $s1, $s1, -1
|
||||
bnez $s1, .LA40000DC
|
||||
ori $t1, $zero, (MI_SET_INIT | 0xF)
|
||||
sw $t1, %lo(MI_MODE_REG)($t4)
|
||||
ori $t1, $zero, 271
|
||||
sw $t1, ($t4)
|
||||
lui $t1, (0x18082838 >> 16)
|
||||
ori $t1, (0x18082838 & 0xFFFF)
|
||||
sw $t1, %lo(RDRAM_DELAY_REG)($t2)
|
||||
sw $zero, %lo(RDRAM_REF_ROW_REG)($t2)
|
||||
sw $t1, 0x8($t2)
|
||||
sw $zero, 0x14($t2)
|
||||
lui $t1, 0x8000
|
||||
sw $t1, %lo(RDRAM_DEVICE_ID_REG)($t2)
|
||||
sw $t1, 0x4($t2)
|
||||
move $t5, $zero
|
||||
move $t6, $zero
|
||||
lui $t7, %hi(PHYS_TO_K1(RDRAM_BASE_REG))
|
||||
lui $t7, (0xA3F00000 >> 16)
|
||||
move $t8, $zero
|
||||
lui $t9, %hi(PHYS_TO_K1(RDRAM_BASE_REG))
|
||||
lui $t9, (0xA3F00000 >> 16)
|
||||
lui $s6, (0xA0000000 >> 16)
|
||||
move $s7, $zero
|
||||
lui $a2, %hi(PHYS_TO_K1(RDRAM_BASE_REG))
|
||||
lui $a2, (0xA3F00000 >> 16)
|
||||
lui $a3, (0xA0000000 >> 16)
|
||||
move $s2, $zero
|
||||
lui $s4, (0xA0000000 >> 16)
|
||||
addiu $sp, $sp, -0x48
|
||||
move $fp, $sp
|
||||
lui $s0, %hi(PHYS_TO_K1(MI_VERSION_REG))
|
||||
lw $s0, %lo(PHYS_TO_K1(MI_VERSION_REG))($s0)
|
||||
lui $s0, %hi(MI_VERSION_REG)
|
||||
lw $s0, %lo(MI_VERSION_REG)($s0)
|
||||
lui $s1, (0x01010101 >> 16)
|
||||
addiu $s1, (0x01010101 & 0xFFFF)
|
||||
bne $s0, $s1, .LA4000160
|
||||
@@ -118,14 +103,14 @@ glabel ipl3_entry // 0xA4000040
|
||||
nop
|
||||
sw $v0, ($sp)
|
||||
li $t1, 8192
|
||||
sw $t1, %lo(MI_MODE_REG)($t4)
|
||||
lw $t3, %lo(RDRAM_CONFIG_REG)($t7)
|
||||
sw $t1, ($t4)
|
||||
lw $t3, ($t7)
|
||||
lui $t0, 0xf0ff
|
||||
and $t3, $t3, $t0
|
||||
sw $t3, 4($sp)
|
||||
addi $sp, $sp, 8
|
||||
li $t1, 4096
|
||||
sw $t1, %lo(MI_MODE_REG)($t4)
|
||||
sw $t1, ($t4)
|
||||
lui $t0, 0xb019
|
||||
bne $t3, $t0, .LA40001E0
|
||||
nop
|
||||
@@ -145,11 +130,11 @@ glabel ipl3_entry // 0xA4000040
|
||||
add $s4, $s4, $t0
|
||||
.LA40001E8:
|
||||
li $t0, 8192
|
||||
sw $t0, %lo(MI_MODE_REG)($t4)
|
||||
lw $t1, %lo(RDRAM_DEVICE_MANUF_REG)($t7)
|
||||
lw $k0, %lo(RDRAM_CONFIG_REG)($t7)
|
||||
sw $t0, ($t4)
|
||||
lw $t1, 0x24($t7)
|
||||
lw $k0, ($t7)
|
||||
li $t0, 4096
|
||||
sw $t0, %lo(MI_MODE_REG)($t4)
|
||||
sw $t0, ($t4)
|
||||
andi $t1, $t1, 0xffff
|
||||
li $t0, 1280
|
||||
bne $t1, $t0, .LA4000230
|
||||
@@ -177,9 +162,9 @@ glabel ipl3_entry // 0xA4000040
|
||||
nop
|
||||
.LA400025C:
|
||||
li $t0, 0xc4000000
|
||||
sw $t0, %lo(RDRAM_MODE_REG)($t2)
|
||||
sw $t0, 0xc($t2)
|
||||
li $t0, 0x80000000
|
||||
sw $t0, %lo(RDRAM_DEVICE_ID_REG)($t2)
|
||||
sw $t0, 0x4($t2)
|
||||
move $sp, $fp
|
||||
move $v1, $zero
|
||||
.LA4000274:
|
||||
@@ -247,7 +232,7 @@ glabel ipl3_entry // 0xA4000040
|
||||
slt $t0, $v1, $t5
|
||||
bnez $t0, .LA4000274
|
||||
nop
|
||||
lui $t2, %hi(PHYS_TO_K1(RI_BASE_REG))
|
||||
lui $t2, %hi(RI_REFRESH_REG)
|
||||
sll $s2, $s2, 0x13
|
||||
lui $t1, (0x00063634 >> 16)
|
||||
ori $t1, (0x00063634 & 0xFFFF)
|
||||
@@ -268,8 +253,8 @@ glabel ipl3_entry // 0xA4000040
|
||||
lw $s6, 0xc($sp)
|
||||
lw $s7, 0x10($sp)
|
||||
addiu $sp, $sp, 0x18
|
||||
lui $t0, %hi(UT_VEC)
|
||||
addiu $t0, $t0, %lo(UT_VEC)
|
||||
lui $t0, %hi(EXCEPTION_TLB_MISS)
|
||||
addiu $t0, $t0, %lo(EXCEPTION_TLB_MISS)
|
||||
addiu $t1, $t0, 0x4000
|
||||
addiu $t1, $t1, -0x20
|
||||
mtc0 $zero, $28
|
||||
@@ -279,8 +264,8 @@ glabel ipl3_entry // 0xA4000040
|
||||
sltu $at, $t0, $t1
|
||||
bnez $at, .LA40003D8
|
||||
addiu $t0, $t0, 0x20
|
||||
lui $t0, %hi(UT_VEC)
|
||||
addiu $t0, %lo(UT_VEC)
|
||||
lui $t0, %hi(EXCEPTION_TLB_MISS)
|
||||
addiu $t0, %lo(EXCEPTION_TLB_MISS)
|
||||
addiu $t1, $t0, 0x2000
|
||||
addiu $t1, $t1, -0x10
|
||||
.LA40003F8:
|
||||
@@ -291,8 +276,8 @@ glabel ipl3_entry // 0xA4000040
|
||||
b .LA4000458
|
||||
nop
|
||||
.LA4000410:
|
||||
lui $t0, %hi(UT_VEC)
|
||||
addiu $t0, %lo(UT_VEC)
|
||||
lui $t0, %hi(EXCEPTION_TLB_MISS)
|
||||
addiu $t0, %lo(EXCEPTION_TLB_MISS)
|
||||
addiu $t1, $t0, 0x4000
|
||||
addiu $t1, $t1, -0x20
|
||||
mtc0 $zero, $28
|
||||
@@ -302,8 +287,8 @@ glabel ipl3_entry // 0xA4000040
|
||||
sltu $at, $t0, $t1
|
||||
bnez $at, .LA4000428
|
||||
addiu $t0, $t0, 0x20
|
||||
lui $t0, %hi(UT_VEC)
|
||||
addiu $t0, %lo(UT_VEC)
|
||||
lui $t0, %hi(EXCEPTION_TLB_MISS)
|
||||
addiu $t0, %lo(EXCEPTION_TLB_MISS)
|
||||
addiu $t1, $t0, 0x2000
|
||||
addiu $t1, $t1, -0x10
|
||||
.LA4000448:
|
||||
@@ -312,16 +297,16 @@ glabel ipl3_entry // 0xA4000040
|
||||
bnez $at, .LA4000448
|
||||
addiu $t0, $t0, 0x10
|
||||
.LA4000458:
|
||||
lui $t2, %hi(PHYS_TO_K1(SP_DMEM_START))
|
||||
addiu $t2, $t2, %lo(PHYS_TO_K1(SP_DMEM_START))
|
||||
lui $t2, %hi(SP_DMEM)
|
||||
addiu $t2, $t2, %lo(SP_DMEM)
|
||||
lui $t3, 0xfff0
|
||||
lui $t1, 0x0010
|
||||
and $t2, $t2, $t3
|
||||
lui $t0, %hi(PHYS_TO_K1(SP_DMEM_UNK0))
|
||||
lui $t0, %hi(SP_DMEM_UNK0)
|
||||
addiu $t1, -1
|
||||
lui $t3, %hi(PHYS_TO_K1(SP_DMEM_UNK1))
|
||||
addiu $t0, %lo(PHYS_TO_K1(SP_DMEM_UNK0))
|
||||
addiu $t3, %lo(PHYS_TO_K1(SP_DMEM_UNK1))
|
||||
lui $t3, %hi(SP_DMEM_UNK1)
|
||||
addiu $t0, %lo(SP_DMEM_UNK0)
|
||||
addiu $t3, %lo(SP_DMEM_UNK1)
|
||||
and $t0, $t0, $t1
|
||||
and $t3, $t3, $t1
|
||||
lui $t1, 0xa000
|
||||
@@ -335,32 +320,32 @@ glabel ipl3_entry // 0xA4000040
|
||||
addiu $t1, $t1, 4
|
||||
bnez $at, .LA4000498
|
||||
sw $t5, -4($t1)
|
||||
lui $t4, %hi(UT_VEC)
|
||||
addiu $t4, %lo(UT_VEC)
|
||||
lui $t4, %hi(EXCEPTION_TLB_MISS)
|
||||
addiu $t4, %lo(EXCEPTION_TLB_MISS)
|
||||
jr $t4
|
||||
nop
|
||||
lui $t3, %hi(PHYS_TO_CART(CART_ENTRYPOINT))
|
||||
lw $t1, %lo(PHYS_TO_CART(CART_ENTRYPOINT))($t3)
|
||||
lui $t3, %hi(D_B0000008)
|
||||
lw $t1, %lo(D_B0000008)($t3)
|
||||
lui $t2, (0x1FFFFFFF >> 16)
|
||||
ori $t2, (0x1FFFFFFF & 0xFFFF)
|
||||
lui $at, %hi(PHYS_TO_K1(PI_DRAM_ADDR_REG))
|
||||
lui $at, %hi(PI_DRAM_ADDR_REG)
|
||||
and $t1, $t1, $t2
|
||||
sw $t1, %lo(PHYS_TO_K1(PI_DRAM_ADDR_REG))($at)
|
||||
lui $t0, %hi(PHYS_TO_K1(PI_STATUS_REG))
|
||||
sw $t1, %lo(PI_DRAM_ADDR_REG)($at)
|
||||
lui $t0, %hi(PI_STATUS_REG)
|
||||
.LA40004D0:
|
||||
lw $t0, %lo(PHYS_TO_K1(PI_STATUS_REG))($t0)
|
||||
andi $t0, $t0, PI_STATUS_IO_BUSY
|
||||
lw $t0, %lo(PI_STATUS_REG)($t0)
|
||||
andi $t0, $t0, 2
|
||||
bnezl $t0, .LA40004D0
|
||||
lui $t0, %hi(PHYS_TO_K1(PI_STATUS_REG))
|
||||
li $t0, INITIAL_DMA_ROMPOS
|
||||
lui $t0, %hi(PI_STATUS_REG)
|
||||
li $t0, 0x1000
|
||||
add $t0, $t0, $t3
|
||||
and $t0, $t0, $t2
|
||||
lui $at, %hi(PHYS_TO_K1(PI_CART_ADDR_REG))
|
||||
sw $t0, %lo(PHYS_TO_K1(PI_CART_ADDR_REG))($at)
|
||||
li $t2, INITIAL_DMA_LEN
|
||||
addiu $t2, -1
|
||||
lui $at, %hi(PHYS_TO_K1(PI_WR_LEN_REG))
|
||||
sw $t2, %lo(PHYS_TO_K1(PI_WR_LEN_REG))($at)
|
||||
lui $at, %hi(PI_CART_ADDR_REG)
|
||||
sw $t0, %lo(PI_CART_ADDR_REG)($at)
|
||||
lui $t2, 0x0010
|
||||
addiu $t2, 0xFFFF
|
||||
lui $at, %hi(PI_WR_LEN_REG)
|
||||
sw $t2, %lo(PI_WR_LEN_REG)($at)
|
||||
|
||||
.LA4000514:
|
||||
nop
|
||||
@@ -391,13 +376,13 @@ glabel ipl3_entry // 0xA4000040
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
lui $t3, %hi(PHYS_TO_K1(PI_STATUS_REG))
|
||||
lw $t3, %lo(PHYS_TO_K1(PI_STATUS_REG))($t3)
|
||||
lui $t3, %hi(PI_STATUS_REG)
|
||||
lw $t3, %lo(PI_STATUS_REG)($t3)
|
||||
andi $t3, $t3, 0x1
|
||||
bnez $t3, .LA4000514
|
||||
nop
|
||||
lui $t3, %hi(PHYS_TO_CART(CART_ENTRYPOINT))
|
||||
lw $a0, %lo(PHYS_TO_CART(CART_ENTRYPOINT))($t3)
|
||||
lui $t3, %hi(D_B0000008)
|
||||
lw $a0, %lo(D_B0000008)($t3)
|
||||
move $a1, $s6
|
||||
lui $at, (0x5D588B65 >> 16)
|
||||
ori $at, (0x5D588B65 & 0xFFFF)
|
||||
@@ -451,54 +436,52 @@ glabel ipl3_entry // 0xA4000040
|
||||
xor $a3, $t6, $t3
|
||||
xor $t8, $s0, $a2
|
||||
xor $s0, $t8, $t4
|
||||
// verifies checksum
|
||||
lui $t3, %hi(PHYS_TO_CART(CART_CHECKSUM0))
|
||||
lw $t0, %lo(PHYS_TO_CART(CART_CHECKSUM0))($t3)
|
||||
lui $t3, %hi(D_B0000010)
|
||||
lw $t0, %lo(D_B0000010)($t3)
|
||||
bne $a3, $t0, halt
|
||||
nop
|
||||
lw $t0, %lo(PHYS_TO_CART(CART_CHECKSUM1))($t3)
|
||||
lw $t0, %lo(D_B0000014)($t3)
|
||||
bne $s0, $t0, halt
|
||||
nop
|
||||
bal func_A4000690
|
||||
nop
|
||||
|
||||
// In a permanent loop that cannot be exited.
|
||||
halt:
|
||||
bal halt
|
||||
nop
|
||||
|
||||
func_A4000690:
|
||||
lui $t1, %hi(PHYS_TO_K1(SP_PC_REG))
|
||||
lw $t1, %lo(PHYS_TO_K1(SP_PC_REG))($t1)
|
||||
lui $t1, %hi(SP_PC)
|
||||
lw $t1, %lo(SP_PC)($t1)
|
||||
lw $s0, 0x14($sp)
|
||||
lw $ra, 0x1c($sp)
|
||||
beqz $t1, .LA40006BC
|
||||
addiu $sp, $sp, 0x20
|
||||
li $t2, 65
|
||||
lui $at, %hi(PHYS_TO_K1(SP_STATUS_REG))
|
||||
sw $t2, %lo(PHYS_TO_K1(SP_STATUS_REG))($at)
|
||||
lui $at, %hi(PHYS_TO_K1(SP_PC_REG))
|
||||
sw $zero, %lo(PHYS_TO_K1(SP_PC_REG))($at)
|
||||
lui $at, %hi(SP_STATUS_REG)
|
||||
sw $t2, %lo(SP_STATUS_REG)($at)
|
||||
lui $at, %hi(SP_PC)
|
||||
sw $zero, %lo(SP_PC)($at)
|
||||
.LA40006BC:
|
||||
lui $t3, (0x00AAAAAE >> 16)
|
||||
ori $t3, (0x00AAAAAE & 0xFFFF)
|
||||
lui $at, %hi(PHYS_TO_K1(SP_STATUS_REG))
|
||||
sw $t3, %lo(PHYS_TO_K1(SP_STATUS_REG))($at)
|
||||
lui $at, %hi(PHYS_TO_K1(MI_INTR_MASK_REG))
|
||||
lui $at, %hi(SP_STATUS_REG)
|
||||
sw $t3, %lo(SP_STATUS_REG)($at)
|
||||
lui $at, %hi(MI_INTR_MASK_REG)
|
||||
li $t0, 1365
|
||||
sw $t0, %lo(PHYS_TO_K1(MI_INTR_MASK_REG))($at)
|
||||
lui $at, %hi(PHYS_TO_K1(SI_STATUS_REG))
|
||||
sw $zero, %lo(PHYS_TO_K1(SI_STATUS_REG))($at)
|
||||
lui $at, %hi(PHYS_TO_K1(AI_STATUS_REG))
|
||||
sw $zero, %lo(PHYS_TO_K1(AI_STATUS_REG))($at)
|
||||
lui $at, %hi(PHYS_TO_K1(MI_BASE_REG))
|
||||
sw $t0, %lo(MI_INTR_MASK_REG)($at)
|
||||
lui $at, %hi(SI_STATUS_REG)
|
||||
sw $zero, %lo(SI_STATUS_REG)($at)
|
||||
lui $at, %hi(AI_STATUS_REG)
|
||||
sw $zero, %lo(AI_STATUS_REG)($at)
|
||||
lui $at, %hi(MI_MODE_REG)
|
||||
li $t1, 2048
|
||||
sw $t1, %lo(PHYS_TO_K1(MI_BASE_REG))($at)
|
||||
sw $t1, %lo(MI_MODE_REG)($at)
|
||||
li $t1, 2
|
||||
lui $at, %hi(PHYS_TO_K1(PI_STATUS_REG))
|
||||
lui $at, %hi(PI_STATUS_REG)
|
||||
lui $t0, (0xA0000300 >> 16)
|
||||
ori $t0, (0xA0000300 & 0xFFFF)
|
||||
sw $t1, %lo(PHYS_TO_K1(PI_STATUS_REG))($at)
|
||||
sw $t1, %lo(PI_STATUS_REG)($at)
|
||||
sw $s7, 0x14($t0)
|
||||
sw $s5, 0xc($t0)
|
||||
sw $s3, 0x4($t0)
|
||||
@@ -512,22 +495,22 @@ func_A4000690:
|
||||
addiu $t1, $t1, 0
|
||||
.LA4000730:
|
||||
sw $t1, 0x8($t0)
|
||||
lui $t0, %hi(PHYS_TO_K1(SP_DMEM_START))
|
||||
addiu $t0, %lo(PHYS_TO_K1(SP_DMEM_START))
|
||||
lui $t0, %hi(SP_DMEM)
|
||||
addiu $t0, %lo(SP_DMEM)
|
||||
addi $t1, $t0, 0x1000
|
||||
.LA4000740:
|
||||
addiu $t0, $t0, 4
|
||||
bne $t0, $t1, .LA4000740
|
||||
sw $zero, -4($t0)
|
||||
lui $t0, %hi(PHYS_TO_K1(SP_IMEM_START))
|
||||
addiu $t0, %lo(PHYS_TO_K1(SP_IMEM_START))
|
||||
lui $t0, %hi(SP_IMEM)
|
||||
addiu $t0, %lo(SP_IMEM)
|
||||
addi $t1, $t0, 0x1000
|
||||
.LA4000758:
|
||||
addiu $t0, $t0, 4
|
||||
bne $t0, $t1, .LA4000758
|
||||
sw $zero, -4($t0)
|
||||
lui $t3, %hi(PHYS_TO_CART(CART_ENTRYPOINT))
|
||||
lw $t1, %lo(PHYS_TO_CART(CART_ENTRYPOINT))($t3)
|
||||
lui $t3, %hi(D_B0000008)
|
||||
lw $t1, %lo(D_B0000008)($t3)
|
||||
jr $t1
|
||||
nop
|
||||
nop
|
||||
@@ -764,8 +747,8 @@ func_A4000A40:
|
||||
li $k1, 1
|
||||
bne $a1, $k1, .LA4000AC0
|
||||
sw $t7, ($s5)
|
||||
lui $k0, %hi(PHYS_TO_K1(MI_BASE_REG))
|
||||
sw $zero, %lo(PHYS_TO_K1(MI_BASE_REG))($k0)
|
||||
lui $k0, %hi(MI_MODE_REG)
|
||||
sw $zero, %lo(MI_MODE_REG)($k0)
|
||||
.LA4000AC0:
|
||||
lw $ra, 0x1c($sp)
|
||||
addiu $sp, $sp, 0x28
|
||||
@@ -776,12 +759,12 @@ func_A4000AD0:
|
||||
addiu $sp, $sp, -0x28
|
||||
sw $ra, 0x1c($sp)
|
||||
li $k0, 0x2000
|
||||
lui $k1, %hi(PHYS_TO_K1(MI_BASE_REG))
|
||||
sw $k0, %lo(PHYS_TO_K1(MI_BASE_REG))($k1)
|
||||
lui $k1, %hi(MI_MODE_REG)
|
||||
sw $k0, %lo(MI_MODE_REG)($k1)
|
||||
move $fp, $zero
|
||||
lw $fp, ($s5)
|
||||
li $k0, 0x1000
|
||||
sw $k0, %lo(PHYS_TO_K1(MI_BASE_REG))($k1)
|
||||
sw $k0, %lo(MI_MODE_REG)($k1)
|
||||
li $k1, 0x40
|
||||
and $k1, $k1, $fp
|
||||
srl $k1, $k1, 6
|
||||
@@ -814,8 +797,6 @@ func_A4000AD0:
|
||||
nop
|
||||
nop
|
||||
|
||||
.end ipl3_entry
|
||||
|
||||
// 0xA4000B70-0xA4000FFF: IPL3 Font
|
||||
glabel ipl3_font
|
||||
.incbin "textures/ipl3_raw/ipl3_font_00.ia1"
|
||||
11
asm/emux.s
11
asm/emux.s
@@ -1,11 +0,0 @@
|
||||
// Detect if the emux emulator extension is supported
|
||||
// https://hackmd.io/@rasky/r1k7na6Jn
|
||||
|
||||
.include "macros.inc"
|
||||
.section .text, "ax"
|
||||
.set noreorder
|
||||
|
||||
glabel emux_detect
|
||||
or $v0, $0, $0
|
||||
jr $ra
|
||||
tne $v0, $v0, 0x0
|
||||
69
asm/fcr31.s
69
asm/fcr31.s
@@ -1,69 +0,0 @@
|
||||
.include "macros.inc"
|
||||
.section .text, "ax"
|
||||
.set noreorder
|
||||
.set noat
|
||||
|
||||
glabel fcr_get_rounding_mode
|
||||
cfc1 $v0, $31
|
||||
jr $ra
|
||||
andi $v0, 0x3
|
||||
|
||||
glabel fcr_set_rounding_mode
|
||||
cfc1 $t0, $31
|
||||
xor $at, $t0, $a0
|
||||
andi $at, $at, 0x3
|
||||
xor $at, $at, $t0
|
||||
jr $ra
|
||||
ctc1 $at, $31
|
||||
|
||||
glabel fcr_get_enabled_exceptions
|
||||
cfc1 $v0, $31
|
||||
srl $v0, $v0, 7
|
||||
jr $ra
|
||||
andi $v0, $v0, 0x1f
|
||||
|
||||
glabel fcr_set_enabled_exceptions
|
||||
cfc1 $t0, $31
|
||||
sll $a0, $a0, 7
|
||||
xor $at, $t0, $a0
|
||||
andi $at, $at, 0xf80
|
||||
xor $at, $at, $t0
|
||||
jr $ra
|
||||
ctc1 $at, $31
|
||||
|
||||
glabel fcr_enable_exceptions
|
||||
cfc1 $at, $31
|
||||
andi $a0, $a0, 0x1f
|
||||
sll $a0, $a0, 7
|
||||
or $at, $at, $a0
|
||||
jr $ra
|
||||
ctc1 $at, $31
|
||||
|
||||
glabel fcr_disable_exceptions
|
||||
cfc1 $at, $31
|
||||
andi $a0, $a0, 0x1f
|
||||
sll $a0, $a0, 7
|
||||
or $at, $at, $a0
|
||||
subu $at, $at, $a0
|
||||
jr $ra
|
||||
ctc1 $at, $31
|
||||
|
||||
glabel fcr_get_cause
|
||||
cfc1 $v0, $31
|
||||
srl $v0, $v0, 12
|
||||
jr $ra
|
||||
andi $v0, $v0, 0x3f
|
||||
|
||||
glabel fcr_get_flags
|
||||
cfc1 $v0, $31
|
||||
srl $v0, $v0, 2
|
||||
jr $ra
|
||||
andi $v0, $v0, 0x1f
|
||||
|
||||
glabel fcr_clear_flags
|
||||
cfc1 $t0, $31
|
||||
xor $at, $t0, $0
|
||||
andi $at, $at, 0x7c
|
||||
xor $at, $at, $t0
|
||||
jr $ra
|
||||
ctc1 $at, $31
|
||||
@@ -1,14 +0,0 @@
|
||||
// Used as part of emulator detection. The dynarec core of PJ64 4.0 only updates
|
||||
// the COUNT register in between recompiled functions, so this will return 0 on
|
||||
// PJ64 4.0 dynarec, but will instead return the count factor on other versions.
|
||||
|
||||
.include "macros.inc"
|
||||
.section .text, "ax"
|
||||
.set noreorder
|
||||
|
||||
.balign 32
|
||||
glabel pj64_get_count_factor_asm
|
||||
mfc0 $t0, $9 // $9 is the COUNT register
|
||||
mfc0 $t1, $9
|
||||
jr $ra
|
||||
subu $v0, $t1, $t0
|
||||
@@ -15,14 +15,14 @@
|
||||
.word 0x00000000 /* Unknown */
|
||||
.word 0x00000000 /* Unknown */
|
||||
.ascii INTERNAL_ROM_NAME /* Internal ROM name */
|
||||
#if defined(EMU_DEFAULT_TO_GCN)
|
||||
#if defined(USE_GAMECUBE_CONTROLLER)
|
||||
/* Advanced homebrew ROM header bytes: https://n64brew.dev/wiki/ROM_Header#Advanced_Homebrew_ROM_Header */
|
||||
.word 0x82000000
|
||||
#else
|
||||
.word 0x00000000 /* Unknown */
|
||||
#endif
|
||||
.word 0x0000004E /* Cartridge */
|
||||
#if defined(EEP4K) && !defined(EMU_DEFAULT_TO_GCN)
|
||||
#if defined(EEP4K) && !defined(USE_GAMECUBE_CONTROLLER)
|
||||
.ascii "SM" /* Cartridge ID */
|
||||
#else
|
||||
.ascii "ED" /* Cartridge ID */
|
||||
|
||||
10
asm/round.s
10
asm/round.s
@@ -1,10 +0,0 @@
|
||||
.include "macros.inc"
|
||||
.section .text
|
||||
.set noreorder
|
||||
|
||||
.set abi_arg0, $f12
|
||||
|
||||
glabel roundf
|
||||
round.w.s $f0, abi_arg0
|
||||
jr $ra
|
||||
mfc1 $v0, $f0
|
||||
190
bin/segment2.c
190
bin/segment2.c
@@ -5,152 +5,40 @@
|
||||
#include "macros.h"
|
||||
#include "types.h"
|
||||
#include "game/ingame_menu.h"
|
||||
#include "game/puppyprint.h"
|
||||
|
||||
#include "make_const_nonconst.h"
|
||||
|
||||
// SM64 (US/JP/EU/SH) Segment 02
|
||||
#ifdef PUPPYPRINT
|
||||
ALIGNED8 static const Texture small_font_default[] = {
|
||||
ALIGNED8 static const Texture small_font_1[] = {
|
||||
#include "textures/segment2/custom_text.i4.inc.c"
|
||||
};
|
||||
ALIGNED8 static const Texture small_font_outline[] = {
|
||||
#include "textures/segment2/custom_text2.ia4.inc.c"
|
||||
};
|
||||
ALIGNED8 static const Texture small_font_plain[] = {
|
||||
#include "textures/segment2/custom_text3.i4.inc.c"
|
||||
};
|
||||
ALIGNED8 static const Texture small_font_vanilla[] = {
|
||||
#include "textures/segment2/custom_text4.i4.inc.c"
|
||||
ALIGNED8 static const Texture small_font_2[] = {
|
||||
#include "textures/segment2/custom_text2.i4.inc.c"
|
||||
};
|
||||
|
||||
const u8 small_font_kerning_default[] = {
|
||||
/*!*/ 4, /*"*/ 5, /*#*/ 0, /*$*/ 0, /*%*/ 8, /*&*/ 8, /*'*/ 2, /*(*/ 5, /*)*/ 5, /***/ 0, /*+*/ 8, /*,*/ 3, /*-*/ 8, /*.*/ 3, /*/*/ 8, /*0*/ 6,
|
||||
/*1*/ 5, /*2*/ 7, /*3*/ 7, /*4*/ 7, /*5*/ 7, /*6*/ 8, /*7*/ 7, /*8*/ 7, /*9*/ 6, /*:*/ 3, /*;*/ 3, /*<*/ 0, /*=*/ 0, /*>*/ 0, /*?*/ 6, /*@*/ 0,
|
||||
/*A*/ 7, /*B*/ 7, /*C*/ 7, /*D*/ 7, /*E*/ 6, /*F*/ 5, /*G*/ 8, /*H*/ 6, /*I*/ 6, /*J*/ 5, /*K*/ 7, /*L*/ 6, /*M*/ 7, /*N*/ 7, /*O*/ 7, /*P*/ 6,
|
||||
/*Q*/ 8, /*R*/ 6, /*S*/ 7, /*T*/ 7, /*U*/ 7, /*V*/ 7, /*W*/ 8, /*X*/ 7, /*Y*/ 7, /*Z*/ 7, /*[*/ 0, /*\\*/ 0, /*]*/ 0, /*^*/ 8, /*_*/ 0, /*`*/ 0,
|
||||
/*a*/ 7, /*b*/ 7, /*c*/ 6, /*d*/ 7, /*e*/ 7, /*f*/ 7, /*g*/ 7, /*h*/ 7, /*i*/ 3, /*j*/ 5, /*k*/ 8, /*l*/ 4, /*m*/ 7, /*n*/ 7, /*o*/ 7, /*p*/ 7,
|
||||
/*q*/ 7, /*r*/ 6, /*s*/ 6, /*t*/ 6, /*u*/ 6, /*v*/ 7, /*w*/ 8, /*x*/ 6, /*y*/ 8, /*z*/ 7, /*{*/ 0, /*|*/ 0, /*}*/ 0, /*~*/ 8,
|
||||
const Texture *const puppyprint_font_lut[2] = {
|
||||
small_font_1, small_font_2
|
||||
};
|
||||
|
||||
const u16 small_font_offsets_default[] = {
|
||||
/*!*/ 0, /*"*/ 8, /*#*/ 16, /*$*/ 24, /*%*/ 32, /*&*/ 40, /*'*/ 48, /*(*/ 56, /*)*/ 64, /***/ 72, /*+*/ 80, /*,*/ 88, /*-*/ 96, /*.*/ 104, /*/*/ 112,
|
||||
/*0*/ 120, /*1*/ 128, /*2*/ 136, /*3*/ 144, /*4*/ 152, /*5*/ 160, /*6*/ 168, /*7*/ 176, /*8*/ 184, /*9*/ 192, /*:*/ 200, /*;*/ 208, /*<*/ 216, /*=*/ 216,
|
||||
/*>*/ 216, /*?*/ 216, /*@*/ 224, /*A*/ 224, /*B*/ 232, /*C*/ 240, /*D*/ 248, /*E*/ 256, /*F*/ 264, /*G*/ 272, /*H*/ 280, /*I*/ 288, /*J*/ 296, /*K*/ 304,
|
||||
/*L*/ 312, /*M*/ 320, /*N*/ 328, /*O*/ 336, /*P*/ 344, /*Q*/ 352, /*R*/ 360, /*S*/ 368, /*T*/ 376, /*U*/ 384, /*V*/ 392, /*W*/ 400, /*X*/ 408, /*Y*/ 416,
|
||||
/*Z*/ 424, /*[*/ 432, /*\*/ 432, /*]*/ 432, /*^*/ 432, /*_*/ 440, /*`*/ 440, /*a*/ 440, /*b*/ 448, /*c*/ 456, /*d*/ 464, /*e*/ 472, /*f*/ 480, /*g*/ 488,
|
||||
/*h*/ 496, /*i*/ 504, /*j*/ 512, /*k*/ 520, /*l*/ 528, /*m*/ 536, /*n*/ 544, /*o*/ 552, /*p*/ 560, /*q*/ 568, /*r*/ 576, /*s*/ 584, /*t*/ 592, /*u*/ 600,
|
||||
/*v*/ 608, /*w*/ 616, /*x*/ 624, /*y*/ 632, /*z*/ 640, /*{*/ 648, /*|*/ 648, /*}*/ 648, /*~*/ 648, /*:)*/ 656
|
||||
static const u8 small_font_kerning_1[80] = {
|
||||
/*0*/ 6, /*1*/ 5, /*2*/ 7, /*3*/ 7, /*4*/ 7, /*5*/ 7, /*6*/ 8, /*7*/ 7, /*8*/ 7, /*9*/ 6, /*-*/ 8, /*+*/ 8, /*(*/ 5, /*)*/ 5, /*!*/ 4, /*?*/ 6,
|
||||
/*A*/ 7, /*B*/ 7, /*C*/ 7, /*D*/ 7, /*E*/ 6, /*F*/ 5, /*G*/ 8, /*H*/ 6, /*I*/ 6, /*J*/ 5, /*K*/ 7, /*L*/ 6, /*M*/ 7, /*N*/ 7, /*O*/ 7, /*P*/ 6,
|
||||
/*Q*/ 8, /*R*/ 6, /*S*/ 7, /*T*/ 7, /*U*/ 7, /*V*/ 7, /*W*/ 8, /*X*/ 7, /*Y*/ 7, /*Z*/ 7, /*"*/ 5, /*'*/ 2, /*:*/ 3, /*;*/ 3, /*.*/ 3, /*,*/ 3,
|
||||
/*a*/ 7, /*b*/ 7, /*c*/ 6, /*d*/ 7, /*e*/ 7, /*f*/ 7, /*g*/ 7, /*h*/ 7, /*i*/ 3, /*j*/ 5, /*k*/ 8, /*l*/ 4, /*m*/ 7, /*n*/ 7, /*o*/ 7, /*p*/ 7,
|
||||
/*q*/ 7, /*r*/ 6, /*s*/ 6, /*t*/ 6, /*u*/ 6, /*v*/ 7, /*w*/ 8, /*x*/ 6, /*y*/ 8, /*z*/ 7, /*~*/ 8, /*¨*/ 7, /*^*/ 8, /*/*/ 8, /*%*/ 8, /*&*/ 8,
|
||||
};
|
||||
|
||||
static const u8 small_font_kerning_outline[] = {
|
||||
/*!*/ 3, /*"*/ 4, /*#*/ 0, /*$*/ 0, /*%*/ 6, /*&*/ 6, /*'*/ 2, /*(*/ 4, /*)*/ 4, /***/ 0, /*+*/ 6, /*,*/ 2, /*-*/ 6, /*.*/ 2, /*/*/ 6, /*0*/ 6,
|
||||
/*1*/ 6, /*2*/ 6, /*3*/ 6, /*4*/ 6, /*5*/ 6, /*6*/ 6, /*7*/ 6, /*8*/ 6, /*9*/ 6, /*:*/ 2, /*;*/ 2, /*<*/ 0, /*=*/ 0, /*>*/ 0, /*?*/ 6, /*@*/ 0,
|
||||
/*A*/ 6, /*B*/ 6, /*C*/ 6, /*D*/ 6, /*E*/ 6, /*F*/ 6, /*G*/ 6, /*H*/ 6, /*I*/ 5, /*J*/ 7, /*K*/ 6, /*L*/ 6, /*M*/ 6, /*N*/ 6, /*O*/ 6, /*P*/ 6,
|
||||
/*Q*/ 6, /*R*/ 6, /*S*/ 6, /*T*/ 6, /*U*/ 6, /*V*/ 6, /*W*/ 6, /*X*/ 6, /*Y*/ 6, /*Z*/ 6, /*[*/ 0, /*\\*/ 0, /*]*/ 0, /*^*/ 7, /*_*/ 0, /*`*/ 0,
|
||||
/*a*/ 5, /*b*/ 5, /*c*/ 5, /*d*/ 5, /*e*/ 5, /*f*/ 5, /*g*/ 5, /*h*/ 5, /*i*/ 2, /*j*/ 6, /*k*/ 4, /*l*/ 2, /*m*/ 5, /*n*/ 5, /*o*/ 5, /*p*/ 5,
|
||||
/*q*/ 5, /*r*/ 5, /*s*/ 5, /*t*/ 5, /*u*/ 5, /*v*/ 5, /*w*/ 5, /*x*/ 5, /*y*/ 5, /*z*/ 5, /*{*/ 0, /*|*/ 0, /*}*/ 0, /*~*/ 6,
|
||||
static const u8 small_font_kerning_2[80] = {
|
||||
/*0*/ 6, /*1*/ 6, /*2*/ 6, /*3*/ 6, /*4*/ 6, /*5*/ 6, /*6*/ 6, /*7*/ 6, /*8*/ 6, /*9*/ 6, /*-*/ 6, /*+*/ 6, /*(*/ 3, /*)*/ 3, /*!*/ 4, /*?*/ 5,
|
||||
/*A*/ 6, /*B*/ 6, /*C*/ 6, /*D*/ 6, /*E*/ 6, /*F*/ 6, /*G*/ 6, /*H*/ 6, /*I*/ 6, /*J*/ 6, /*K*/ 6, /*L*/ 6, /*M*/ 6, /*N*/ 6, /*O*/ 6, /*P*/ 6,
|
||||
/*Q*/ 6, /*R*/ 6, /*S*/ 6, /*T*/ 6, /*U*/ 6, /*V*/ 6, /*W*/ 6, /*X*/ 6, /*Y*/ 6, /*Z*/ 6, /*"*/ 4, /*'*/ 1, /*:*/ 2, /*;*/ 2, /*.*/ 2, /*,*/ 2,
|
||||
/*a*/ 5, /*b*/ 5, /*c*/ 5, /*d*/ 5, /*e*/ 5, /*f*/ 5, /*g*/ 5, /*h*/ 5, /*i*/ 1, /*j*/ 5, /*k*/ 5, /*l*/ 3, /*m*/ 5, /*n*/ 5, /*o*/ 5, /*p*/ 5,
|
||||
/*q*/ 5, /*r*/ 5, /*s*/ 5, /*t*/ 5, /*u*/ 5, /*v*/ 5, /*w*/ 5, /*x*/ 5, /*y*/ 5, /*z*/ 5, /*~*/ 6, /*¨*/ 5, /*^*/ 6, /*/*/ 5, /*%*/ 5, /*&*/ 6,
|
||||
};
|
||||
|
||||
const u16 small_font_offsets_outline[] = {
|
||||
/*!*/ 0, /*"*/ 8, /*#*/ 16, /*$*/ 24, /*%*/ 32, /*&*/ 40, /*'*/ 48, /*(*/ 56, /*)*/ 64, /***/ 72, /*+*/ 80, /*,*/ 88, /*-*/ 96, /*.*/ 104, /*/*/ 112,
|
||||
/*0*/ 120, /*1*/ 128, /*2*/ 136, /*3*/ 144, /*4*/ 152, /*5*/ 160, /*6*/ 168, /*7*/ 176, /*8*/ 184, /*9*/ 192, /*:*/ 200, /*;*/ 208, /*<*/ 216, /*=*/ 216,
|
||||
/*>*/ 216, /*?*/ 216, /*@*/ 224, /*A*/ 224, /*B*/ 232, /*C*/ 240, /*D*/ 248, /*E*/ 256, /*F*/ 264, /*G*/ 272, /*H*/ 280, /*I*/ 288, /*J*/ 296, /*K*/ 304,
|
||||
/*L*/ 312, /*M*/ 320, /*N*/ 328, /*O*/ 336, /*P*/ 344, /*Q*/ 352, /*R*/ 360, /*S*/ 368, /*T*/ 376, /*U*/ 384, /*V*/ 392, /*W*/ 400, /*X*/ 408, /*Y*/ 416,
|
||||
/*Z*/ 424, /*[*/ 432, /*\*/ 432, /*]*/ 432, /*^*/ 432, /*_*/ 440, /*`*/ 440, /*a*/ 440, /*b*/ 448, /*c*/ 456, /*d*/ 464, /*e*/ 472, /*f*/ 480, /*g*/ 488,
|
||||
/*h*/ 496, /*i*/ 504, /*j*/ 512, /*k*/ 520, /*l*/ 528, /*m*/ 536, /*n*/ 544, /*o*/ 552, /*p*/ 560, /*q*/ 568, /*r*/ 576, /*s*/ 584, /*t*/ 592, /*u*/ 600,
|
||||
/*v*/ 608, /*w*/ 616, /*x*/ 624, /*y*/ 632, /*z*/ 640, /*{*/ 648, /*|*/ 648, /*}*/ 648, /*~*/ 648, /*:)*/ 656
|
||||
};
|
||||
|
||||
static const u8 small_font_kerning_plain[] = {
|
||||
/*!*/ 5, /*"*/ 4, /*#*/ 0, /*$*/ 0, /*%*/ 6, /*&*/ 7, /*'*/ 2, /*(*/ 4, /*)*/ 4, /***/ 0, /*+*/ 6, /*,*/ 2, /*-*/ 6, /*.*/ 2, /*/*/ 6, /*0*/ 6,
|
||||
/*1*/ 5, /*2*/ 5, /*3*/ 5, /*4*/ 5, /*5*/ 5, /*6*/ 5, /*7*/ 5, /*8*/ 5, /*9*/ 5, /*:*/ 3, /*;*/ 3, /*<*/ 0, /*=*/ 0, /*>*/ 0, /*?*/ 6, /*@*/ 0,
|
||||
/*A*/ 6, /*B*/ 6, /*C*/ 6, /*D*/ 6, /*E*/ 6, /*F*/ 6, /*G*/ 6, /*H*/ 6, /*I*/ 4, /*J*/ 6, /*K*/ 6, /*L*/ 6, /*M*/ 7, /*N*/ 7, /*O*/ 6, /*P*/ 6,
|
||||
/*Q*/ 6, /*R*/ 6, /*S*/ 6, /*T*/ 6, /*U*/ 6, /*V*/ 6, /*W*/ 7, /*X*/ 6, /*Y*/ 6, /*Z*/ 6, /*[*/ 0, /*\\*/ 0, /*]*/ 0, /*^*/ 7, /*_*/ 0, /*`*/ 0,
|
||||
/*a*/ 6, /*b*/ 6, /*c*/ 6, /*d*/ 6, /*e*/ 6, /*f*/ 6, /*g*/ 6, /*h*/ 6, /*i*/ 3, /*j*/ 4, /*k*/ 6, /*l*/ 5, /*m*/ 7, /*n*/ 6, /*o*/ 6, /*p*/ 6,
|
||||
/*q*/ 6, /*r*/ 6, /*s*/ 6, /*t*/ 6, /*u*/ 6, /*v*/ 6, /*w*/ 7, /*x*/ 6, /*y*/ 6, /*z*/ 6, /*{*/ 0, /*|*/ 0, /*}*/ 0, /*~*/ 7,
|
||||
};
|
||||
|
||||
const u16 small_font_offsets_plain[] = {
|
||||
/*!*/ 0, /*"*/ 8, /*#*/ 16, /*$*/ 24, /*%*/ 32, /*&*/ 40, /*'*/ 48, /*(*/ 56, /*)*/ 64, /***/ 72, /*+*/ 80, /*,*/ 88, /*-*/ 96, /*.*/ 104, /*/*/ 112,
|
||||
/*0*/ 120, /*1*/ 128, /*2*/ 136, /*3*/ 144, /*4*/ 152, /*5*/ 160, /*6*/ 168, /*7*/ 176, /*8*/ 184, /*9*/ 192, /*:*/ 200, /*;*/ 208, /*<*/ 216, /*=*/ 216,
|
||||
/*>*/ 216, /*?*/ 216, /*@*/ 224, /*A*/ 224, /*B*/ 232, /*C*/ 240, /*D*/ 248, /*E*/ 256, /*F*/ 264, /*G*/ 272, /*H*/ 280, /*I*/ 288, /*J*/ 296, /*K*/ 304,
|
||||
/*L*/ 312, /*M*/ 320, /*N*/ 328, /*O*/ 336, /*P*/ 344, /*Q*/ 352, /*R*/ 360, /*S*/ 368, /*T*/ 376, /*U*/ 384, /*V*/ 392, /*W*/ 400, /*X*/ 408, /*Y*/ 416,
|
||||
/*Z*/ 424, /*[*/ 432, /*\*/ 432, /*]*/ 432, /*^*/ 432, /*_*/ 440, /*`*/ 440, /*a*/ 440, /*b*/ 448, /*c*/ 456, /*d*/ 464, /*e*/ 472, /*f*/ 480, /*g*/ 488,
|
||||
/*h*/ 496, /*i*/ 504, /*j*/ 512, /*k*/ 520, /*l*/ 528, /*m*/ 536, /*n*/ 544, /*o*/ 552, /*p*/ 560, /*q*/ 568, /*r*/ 576, /*s*/ 584, /*t*/ 592, /*u*/ 600,
|
||||
/*v*/ 608, /*w*/ 616, /*x*/ 624, /*y*/ 632, /*z*/ 640, /*{*/ 648, /*|*/ 648, /*}*/ 648, /*~*/ 648, /*:)*/ 656
|
||||
};
|
||||
|
||||
static const u8 small_font_kerning_vanilla[] = {
|
||||
/*!*/ 4, /*"*/ 4, /*#*/ 0, /*$*/ 0, /*%*/ 6, /*&*/ 7, /*'*/ 3, /*(*/ 4, /*)*/ 4, /***/ 0, /*+*/ 6, /*,*/ 2, /*-*/ 4, /*.*/ 3, /*/*/ 4, /*0*/ 5,
|
||||
/*1*/ 5, /*2*/ 6, /*3*/ 6, /*4*/ 6, /*5*/ 6, /*6*/ 6, /*7*/ 6, /*8*/ 6, /*9*/ 6, /*:*/ 4, /*;*/ 4, /*<*/ 0, /*=*/ 0, /*>*/ 0, /*?*/ 5, /*@*/ 0,
|
||||
/*A*/ 5, /*B*/ 5, /*C*/ 5, /*D*/ 5, /*E*/ 5, /*F*/ 5, /*G*/ 5, /*H*/ 5, /*I*/ 3, /*J*/ 5, /*K*/ 5, /*L*/ 5, /*M*/ 7, /*N*/ 7, /*O*/ 6, /*P*/ 5,
|
||||
/*Q*/ 6, /*R*/ 5, /*S*/ 5, /*T*/ 5, /*U*/ 5, /*V*/ 5, /*W*/ 7, /*X*/ 6, /*Y*/ 5, /*Z*/ 5, /*[*/ 0, /*\\*/ 0, /*]*/ 0, /*^*/ 7, /*_*/ 0, /*`*/ 0,
|
||||
/*a*/ 5, /*b*/ 4, /*c*/ 4, /*d*/ 4, /*e*/ 4, /*f*/ 5, /*g*/ 5, /*h*/ 4, /*i*/ 3, /*j*/ 4, /*k*/ 3, /*l*/ 2, /*m*/ 6, /*n*/ 4, /*o*/ 4, /*p*/ 4,
|
||||
/*q*/ 5, /*r*/ 4, /*s*/ 4, /*t*/ 4, /*u*/ 4, /*v*/ 4, /*w*/ 7, /*x*/ 5, /*y*/ 4, /*z*/ 5, /*{*/ 0, /*|*/ 0, /*}*/ 0, /*~*/ 6,
|
||||
};
|
||||
|
||||
const u16 small_font_offsets_vanilla[] = {
|
||||
/*!*/ 0, /*"*/ 8, /*#*/ 16, /*$*/ 24, /*%*/ 32, /*&*/ 40, /*'*/ 48, /*(*/ 56, /*)*/ 64, /***/ 72, /*+*/ 80, /*,*/ 88, /*-*/ 96, /*.*/ 104, /*/*/ 112,
|
||||
/*0*/ 120, /*1*/ 128, /*2*/ 136, /*3*/ 144, /*4*/ 152, /*5*/ 160, /*6*/ 168, /*7*/ 176, /*8*/ 184, /*9*/ 192, /*:*/ 200, /*;*/ 208, /*<*/ 216, /*=*/ 216,
|
||||
/*>*/ 216, /*?*/ 216, /*@*/ 224, /*A*/ 224, /*B*/ 232, /*C*/ 240, /*D*/ 248, /*E*/ 256, /*F*/ 264, /*G*/ 272, /*H*/ 280, /*I*/ 288, /*J*/ 296, /*K*/ 304,
|
||||
/*L*/ 312, /*M*/ 320, /*N*/ 328, /*O*/ 336, /*P*/ 344, /*Q*/ 352, /*R*/ 360, /*S*/ 368, /*T*/ 376, /*U*/ 384, /*V*/ 392, /*W*/ 400, /*X*/ 408, /*Y*/ 416,
|
||||
/*Z*/ 424, /*[*/ 432, /*\*/ 432, /*]*/ 432, /*^*/ 432, /*_*/ 440, /*`*/ 440, /*a*/ 440, /*b*/ 448, /*c*/ 456, /*d*/ 464, /*e*/ 472, /*f*/ 480, /*g*/ 488,
|
||||
/*h*/ 496, /*i*/ 504, /*j*/ 512, /*k*/ 520, /*l*/ 528, /*m*/ 536, /*n*/ 544, /*o*/ 552, /*p*/ 560, /*q*/ 568, /*r*/ 576, /*s*/ 584, /*t*/ 592, /*u*/ 600,
|
||||
/*v*/ 608, /*w*/ 616, /*x*/ 624, /*y*/ 632, /*z*/ 640, /*{*/ 648, /*|*/ 648, /*}*/ 648, /*~*/ 648, /*:)*/ 656
|
||||
};
|
||||
|
||||
const struct PPTextFont sPPFont_default = {
|
||||
small_font_default,
|
||||
small_font_kerning_default,
|
||||
small_font_offsets_default,
|
||||
NULL,
|
||||
G_IM_FMT_I, G_IM_SIZ_4b,
|
||||
672, 12,
|
||||
8, 12
|
||||
};
|
||||
|
||||
const struct PPTextFont sPPFont_outline = {
|
||||
small_font_outline,
|
||||
small_font_kerning_outline,
|
||||
small_font_offsets_outline,
|
||||
NULL,
|
||||
G_IM_FMT_IA, G_IM_SIZ_4b,
|
||||
672, 12,
|
||||
8, 12
|
||||
};
|
||||
|
||||
const struct PPTextFont sPPFont_plain = {
|
||||
small_font_plain,
|
||||
small_font_kerning_plain,
|
||||
small_font_offsets_plain,
|
||||
NULL,
|
||||
G_IM_FMT_I, G_IM_SIZ_4b,
|
||||
672, 12,
|
||||
8, 12
|
||||
};
|
||||
|
||||
const struct PPTextFont sPPFont_vanilla = {
|
||||
small_font_vanilla,
|
||||
small_font_kerning_vanilla,
|
||||
small_font_offsets_vanilla,
|
||||
NULL,
|
||||
G_IM_FMT_I, G_IM_SIZ_4b,
|
||||
672, 12,
|
||||
8, 12
|
||||
};
|
||||
|
||||
const struct PPTextFont *const gPuppyPrintFontTable[] = {
|
||||
&sPPFont_default, &sPPFont_outline, &sPPFont_plain, &sPPFont_vanilla
|
||||
};
|
||||
|
||||
|
||||
const Texture *const puppyprint_font_lut[] = {
|
||||
small_font_default, small_font_outline, small_font_plain, small_font_vanilla
|
||||
};
|
||||
|
||||
const u8 *const puppyprint_kerning_lut[][95] = {
|
||||
small_font_kerning_default, small_font_kerning_outline, small_font_kerning_plain, small_font_kerning_vanilla
|
||||
const u8 *const puppyprint_kerning_lut[2][80] = {
|
||||
small_font_kerning_1, small_font_kerning_2
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -2328,23 +2216,6 @@ const Gfx dl_rgba16_text_end[] = {
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
const Gfx dl_shade_screen_begin[] = {
|
||||
gsDPPipeSync(),
|
||||
gsDPSetRenderMode(G_RM_CLD_SURF, G_RM_CLD_SURF2),
|
||||
gsDPSetCycleType(G_CYC_1CYCLE),
|
||||
gsDPSetPrimColor(0, 0, 0, 0, 0, 127),
|
||||
gsDPSetCombineMode(G_CC_PRIMITIVE, G_CC_PRIMITIVE),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
const Gfx dl_shade_screen_end[] = {
|
||||
gsDPPipeSync(),
|
||||
gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2),
|
||||
gsDPSetPrimColor(0, 0, 255, 255, 255, 255),
|
||||
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
// 0x0200EDA8 - 0x0200EDE8
|
||||
static const Vtx vertex_text_bg_box[] = {
|
||||
{{{ 0, -80, 0}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}},
|
||||
@@ -2374,8 +2245,8 @@ static const Vtx vertex_ia8_char[] = {
|
||||
#else
|
||||
{{{ 0, 0, 0}, 0, { 0, 256}, {0xff, 0xff, 0xff, 0xff}}},
|
||||
{{{ 8, 0, 0}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}},
|
||||
{{{ 8, 16, 0}, 0, { 512, 0}, {0xff, 0xff, 0xff, 0xff}}},
|
||||
{{{ 0, 16, 0}, 0, { 512, 256}, {0xff, 0xff, 0xff, 0xff}}},
|
||||
{{{ 8, 16, 0}, 0, { 480, 0}, {0xff, 0xff, 0xff, 0xff}}},
|
||||
{{{ 0, 16, 0}, 0, { 480, 256}, {0xff, 0xff, 0xff, 0xff}}},
|
||||
#endif
|
||||
};
|
||||
|
||||
@@ -2394,11 +2265,11 @@ const Gfx dl_ia_text_begin[] = {
|
||||
|
||||
// 0x020073E8 - 0x02007418
|
||||
const Gfx dl_ia_text_tex_settings[] = {
|
||||
gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 3, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD),
|
||||
gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, (G_TX_WRAP | G_TX_MIRROR), 3, G_TX_NOLOD, (G_TX_WRAP | G_TX_MIRROR), 4, G_TX_NOLOD),
|
||||
gsDPLoadSync(),
|
||||
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, ((16 * 8 + G_IM_SIZ_4b_INCR) >> G_IM_SIZ_4b_SHIFT) - 1, CALC_DXT(16, G_IM_SIZ_4b_BYTES)),
|
||||
gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_4b, 1, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 3, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD),
|
||||
gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (8 - 1) << G_TEXTURE_IMAGE_FRAC),
|
||||
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, ((((16 * 8) + G_IM_SIZ_4b_INCR) >> G_IM_SIZ_4b_SHIFT) - 1), CALC_DXT(16, G_IM_SIZ_4b_BYTES)),
|
||||
gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_4b, 1, 0, G_TX_RENDERTILE, 0, (G_TX_WRAP | G_TX_MIRROR), 3, G_TX_NOLOD, (G_TX_WRAP | G_TX_MIRROR), 4, G_TX_NOLOD),
|
||||
gsDPSetTileSize(0, 0, 0, ((16 - 1) << G_TEXTURE_IMAGE_FRAC), ((8 - 1) << G_TEXTURE_IMAGE_FRAC)),
|
||||
gsSPVertex(vertex_ia8_char, 4, 0),
|
||||
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
|
||||
gsSPEndDisplayList(),
|
||||
@@ -2474,7 +2345,6 @@ static const Vtx vertex_billboard_num[] = {
|
||||
// 0x0200EFF0 - 0x0200F038
|
||||
const Gfx dl_billboard_num_begin[] = {
|
||||
gsDPPipeSync(),
|
||||
gsDPSetTextureFilter(G_TF_POINT),
|
||||
gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),
|
||||
gsSPClearGeometryMode(G_LIGHTING),
|
||||
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),
|
||||
@@ -2491,7 +2361,6 @@ const Gfx dl_billboard_num_end[] = {
|
||||
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
|
||||
gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_OFF),
|
||||
gsDPPipeSync(),
|
||||
gsDPSetTextureFilter(G_TF_BILERP),
|
||||
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
|
||||
gsSPSetGeometryMode(G_LIGHTING),
|
||||
gsSPEndDisplayList(),
|
||||
@@ -2884,9 +2753,6 @@ const Gfx dl_waterbox_rgba16_begin[] = {
|
||||
gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),
|
||||
gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),
|
||||
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
|
||||
#ifdef USE_FRUSTRATIO2
|
||||
gsSPClipRatio(FRUSTRATIO_1),
|
||||
#endif
|
||||
gsDPTileSync(),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, (G_TX_WRAP | G_TX_NOMIRROR), 5, G_TX_NOLOD, (G_TX_WRAP | G_TX_NOMIRROR), 5, G_TX_NOLOD),
|
||||
gsDPSetTileSize(0, 0, 0, ((32 - 1) << G_TEXTURE_IMAGE_FRAC), ((32 - 1) << G_TEXTURE_IMAGE_FRAC)),
|
||||
@@ -2899,9 +2765,6 @@ const Gfx dl_waterbox_ia16_begin[] = {
|
||||
gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),
|
||||
gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),
|
||||
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
|
||||
#ifdef USE_FRUSTRATIO2
|
||||
gsSPClipRatio(FRUSTRATIO_1),
|
||||
#endif
|
||||
gsDPTileSync(),
|
||||
gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, (G_TX_WRAP | G_TX_NOMIRROR), 5, G_TX_NOLOD, (G_TX_WRAP | G_TX_NOMIRROR), 5, G_TX_NOLOD),
|
||||
gsDPSetTileSize(0, 0, 0, ((32 - 1) << G_TEXTURE_IMAGE_FRAC), ((32 - 1) << G_TEXTURE_IMAGE_FRAC)),
|
||||
@@ -2911,9 +2774,6 @@ const Gfx dl_waterbox_ia16_begin[] = {
|
||||
// 0x02014810 - 0x02014838
|
||||
const Gfx dl_waterbox_end[] = {
|
||||
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
|
||||
#ifdef USE_FRUSTRATIO2
|
||||
gsSPClipRatio(FRUSTRATIO_2),
|
||||
#endif
|
||||
gsDPPipeSync(),
|
||||
gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),
|
||||
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
|
||||
|
||||
@@ -143,8 +143,7 @@ const Gfx title_screen_bg_dl_face_easter_egg_end[] = {
|
||||
};
|
||||
#endif
|
||||
|
||||
// Not part of segment2, but define still covers same use case
|
||||
#if (defined(COMPLETE_EN_US_SEGMENT2) && ENABLE_RUMBLE)
|
||||
#if defined(VERSION_SH)
|
||||
ALIGNED8 static const Texture title_texture_rumble_pak[] = {
|
||||
#include "textures/title_screen_bg/title_screen_bg.06648.rgba16.inc.c"
|
||||
};
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user