Compare commits
328 Commits
fix_hardco
...
old/refact
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0a53b7a602 | ||
|
|
c228f8583f | ||
|
|
fde55ad6ef | ||
|
|
47b20c859f | ||
|
|
f9db11c7ec | ||
|
|
1aca17942a | ||
|
|
34b0eba5c1 | ||
|
|
d71063f270 | ||
|
|
2baabaf687 | ||
|
|
133334994a | ||
|
|
b564bed602 | ||
|
|
bd5f810a3b | ||
|
|
4477f16781 | ||
|
|
5ea71e38dd | ||
|
|
3fd984f2b5 | ||
|
|
947c8c5234 | ||
|
|
0bc97ea620 | ||
|
|
119e34bae5 | ||
|
|
d99b79f335 | ||
|
|
21c16b0482 | ||
|
|
bb32509898 | ||
|
|
82f0338877 | ||
|
|
8ecc76bdcf | ||
|
|
247dd8eab9 | ||
|
|
1734c7afe4 | ||
|
|
40d01909df | ||
|
|
eb0f4792b7 | ||
|
|
b7134c5931 | ||
|
|
d1e9c84326 | ||
|
|
b3a383e8d3 | ||
|
|
9dda63419d | ||
|
|
4b4740ec43 | ||
|
|
5915a5e7f2 | ||
|
|
f5a6159104 | ||
|
|
b205c47da9 | ||
|
|
78bff66c30 | ||
|
|
5c21b3467d | ||
|
|
6a341ad1ba | ||
|
|
468ecb80a5 | ||
|
|
d4d8a0540f | ||
|
|
eb2211948d | ||
|
|
ccea32c26d | ||
|
|
6627c2378a | ||
|
|
d6e5d9e2cf | ||
|
|
2418aa7700 | ||
|
|
7e2746eac4 | ||
|
|
602b7ee1d9 | ||
|
|
072282b68b | ||
|
|
9c22158b8e | ||
|
|
b10d01cf53 | ||
|
|
afcc1f28a5 | ||
|
|
6668ae391a | ||
|
|
c241f6941f | ||
|
|
102f21d533 | ||
|
|
eadfff013a | ||
|
|
58836138c8 | ||
|
|
94e19d439f | ||
|
|
63b2838e91 | ||
|
|
eb0bb591f0 | ||
|
|
a5033a56c9 | ||
|
|
6e03037f2e | ||
|
|
87b66c7400 | ||
|
|
5538b207a5 | ||
|
|
bbdfcfd0bf | ||
|
|
e49bc4273a | ||
|
|
a6c4bfd5d6 | ||
|
|
675977a4d6 | ||
|
|
c5d3cd4f53 | ||
|
|
9141396ec4 | ||
|
|
390ce3fdb9 | ||
|
|
48bea623e4 | ||
|
|
33056f6f3c | ||
|
|
1c13a86569 | ||
|
|
75eb23b21f | ||
|
|
5d46bb1f8e | ||
|
|
665e5bac05 | ||
|
|
46cc527da3 | ||
|
|
1360622242 | ||
|
|
15a58d4dff | ||
|
|
b5f785d669 | ||
|
|
a2faba2a93 | ||
|
|
10dfcd9433 | ||
|
|
564af66ceb | ||
|
|
dda3ebd29e | ||
|
|
de1decf039 | ||
|
|
112761e484 | ||
|
|
236498a201 | ||
|
|
e7564adfb3 | ||
|
|
18103b25f1 | ||
|
|
91b59799f9 | ||
|
|
6f45ad5eec | ||
|
|
55bfa653e2 | ||
|
|
a0d96ee90e | ||
|
|
45dccaa1c0 | ||
|
|
5be59e7970 | ||
|
|
61e7e8e506 | ||
|
|
6832ebca2c | ||
|
|
552b765ed0 | ||
|
|
993e8ec4e2 | ||
|
|
2a70709cfa | ||
|
|
212e71120f | ||
|
|
b5af7fa0e1 | ||
|
|
f50860cf8b | ||
|
|
7c558d73e3 | ||
|
|
499eaa20ab | ||
|
|
51a9e18132 | ||
|
|
ed4f8267e0 | ||
|
|
a2cee228ca | ||
|
|
58f3130de6 | ||
|
|
dad1cd742a | ||
|
|
4c915eb666 | ||
|
|
d6d64deb7e | ||
|
|
a1205e12a1 | ||
|
|
fd043ea324 | ||
|
|
9e12023873 | ||
|
|
4fe0f19d0a | ||
|
|
8a5a3a9f29 | ||
|
|
a929717881 | ||
|
|
d2d3d60c9f | ||
|
|
282adb36b5 | ||
|
|
edc6fe6b57 | ||
|
|
50d1b73bac | ||
|
|
8c110adb36 | ||
|
|
836c6a4850 | ||
|
|
a5fce270ef | ||
|
|
f2148ce405 | ||
|
|
19c79e95fe | ||
|
|
a2c4243600 | ||
|
|
d92ddeecd8 | ||
|
|
97eebacb1e | ||
|
|
913ea2dfdd | ||
|
|
a5a826052e | ||
|
|
9f538f8e7d | ||
|
|
f7b79d132d | ||
|
|
933b3d3ec4 | ||
|
|
639e2e2898 | ||
|
|
ee60c7a2a5 | ||
|
|
460b45d8b0 | ||
|
|
8455f92421 | ||
|
|
81ff820c05 | ||
|
|
f4f2a502c3 | ||
|
|
ad23ec4ca6 | ||
|
|
ae0ba99459 | ||
|
|
19657d25b0 | ||
|
|
3f0206bb1f | ||
|
|
1f6d00e316 | ||
|
|
50eb8a8473 | ||
|
|
bdf489067b | ||
|
|
958ae2b987 | ||
|
|
0812acc11b | ||
|
|
94bbcc2d2a | ||
|
|
05d4be8fdf | ||
|
|
141042c59a | ||
|
|
03014f34cb | ||
|
|
81f642aba4 | ||
|
|
f740731fd6 | ||
|
|
b529941cbb | ||
|
|
9ddaf82c82 | ||
|
|
b803b7f350 | ||
|
|
2f5cec36a7 | ||
|
|
e2ab5b3f90 | ||
|
|
75a188c7d9 | ||
|
|
fe8e30296d | ||
|
|
e966fe76ee | ||
|
|
daa28cf98a | ||
|
|
1b1724b557 | ||
|
|
9b13050d01 | ||
|
|
b1dbbf0e05 | ||
|
|
6da4ca07f6 | ||
|
|
f28fc49027 | ||
|
|
ec042fc2eb | ||
|
|
c2655c8bb7 | ||
|
|
e538c669c1 | ||
|
|
990757ef62 | ||
|
|
9ec1709032 | ||
|
|
7ed9933735 | ||
|
|
25dc528e18 | ||
|
|
44982fdf74 | ||
|
|
a7a7fb1140 | ||
|
|
a3622efc15 | ||
|
|
e18131a846 | ||
|
|
4d98245769 | ||
|
|
b858817530 | ||
|
|
8303bc66f1 | ||
|
|
b6cc6ce79a | ||
|
|
f5acebbaec | ||
|
|
221c3b9ec5 | ||
|
|
5778ec7e38 | ||
|
|
2c362ebb7c | ||
|
|
fffa0db0bc | ||
|
|
9a4c45e4ab | ||
|
|
f1f0a0d1e8 | ||
|
|
97eb2ee23a | ||
|
|
c33b3e3b69 | ||
|
|
9fdae48a76 | ||
|
|
941f4b2f39 | ||
|
|
61dc565c07 | ||
|
|
b274fc1afb | ||
|
|
d118f84e71 | ||
|
|
56d10de4fd | ||
|
|
6ab783554f | ||
|
|
43eba6e35e | ||
|
|
59bb53086f | ||
|
|
07e8a24d34 | ||
|
|
faf6929503 | ||
|
|
4ac365f34b | ||
|
|
7b3ad36cb0 | ||
|
|
fb40ca64d0 | ||
|
|
e067673c51 | ||
|
|
0398a73f9b | ||
|
|
771fd915af | ||
|
|
8f11b9de6a | ||
|
|
13c10a047c | ||
|
|
8946885a22 | ||
|
|
295e535899 | ||
|
|
56da90ef85 | ||
|
|
5f8b0209a5 | ||
|
|
7227eb31fa | ||
|
|
56e29c1dde | ||
|
|
6f43aa7032 | ||
|
|
679ae324b0 | ||
|
|
0e1a68bb65 | ||
|
|
819c60a717 | ||
|
|
76cafa71df | ||
|
|
ee81099336 | ||
|
|
e6d031c4c4 | ||
|
|
f86fa7fb3b | ||
|
|
ad691a34c6 | ||
|
|
24687da134 | ||
|
|
e7f6186580 | ||
|
|
4c779bdfed | ||
|
|
2dc9446d4a | ||
|
|
83ad6aec22 | ||
|
|
f2a8cf49de | ||
|
|
9c6764ba1d | ||
|
|
baf071e527 | ||
|
|
eee8af463d | ||
|
|
ded4e11fbd | ||
|
|
e535b4bdc1 | ||
|
|
3f5cf00f74 | ||
|
|
8f13447642 | ||
|
|
719f5afdf9 | ||
|
|
df88bb78f1 | ||
|
|
2df0dcfdde | ||
|
|
afa381564e | ||
|
|
d88a5b82b4 | ||
|
|
a9796a7490 | ||
|
|
c5c5d2c79b | ||
|
|
cd37e655f3 | ||
|
|
615d9abca3 | ||
|
|
e840d74b93 | ||
|
|
e49404014d | ||
|
|
9ee39666d6 | ||
|
|
30bcccb686 | ||
|
|
fd3de66b9f | ||
|
|
487187e3c6 | ||
|
|
624801a288 | ||
|
|
cefdec7023 | ||
|
|
d0382cd1be | ||
|
|
e216b42f53 | ||
|
|
fad3406ab5 | ||
|
|
581b0cafc9 | ||
|
|
b384fb1b7b | ||
|
|
9c0878319f | ||
|
|
36c7c622e3 | ||
|
|
ac2852ba47 | ||
|
|
36001f7fd3 | ||
|
|
b6e18a95bf | ||
|
|
142b79e310 | ||
|
|
d334579ad4 | ||
|
|
381a0aed7c | ||
|
|
984b117e77 | ||
|
|
4467ff1ed1 | ||
|
|
664fe248e1 | ||
|
|
26a064faa1 | ||
|
|
37ca9f03b1 | ||
|
|
bff61ca5ba | ||
|
|
91c169e693 | ||
|
|
7741e5123e | ||
|
|
e9b2562694 | ||
|
|
e4e8bc2d9a | ||
|
|
e97695d3d8 | ||
|
|
1e8a960a17 | ||
|
|
455da1c3a8 | ||
|
|
c24ef6562f | ||
|
|
4b20d19989 | ||
|
|
a091678009 | ||
|
|
b9773ffae3 | ||
|
|
80641a82c4 | ||
|
|
2a87631629 | ||
|
|
1221e2944b | ||
|
|
0c83e15d04 | ||
|
|
63b9e771d7 | ||
|
|
34cf317fc4 | ||
|
|
e5ee3e89b2 | ||
|
|
aab3b8ecb0 | ||
|
|
1080fc90e1 | ||
|
|
1c11bb7ddc | ||
|
|
2caed65be9 | ||
|
|
409bce0eca | ||
|
|
8d6d3ca69a | ||
|
|
571388c821 | ||
|
|
f5e9c0d710 | ||
|
|
91b77c05dd | ||
|
|
8514254fd3 | ||
|
|
4ed3975973 | ||
|
|
ddfc2f6609 | ||
|
|
5ae11f3bab | ||
|
|
830e2ea81c | ||
|
|
0a5659ed09 | ||
|
|
e607106cd5 | ||
|
|
7a54020fef | ||
|
|
72d0d35274 | ||
|
|
696a87c9b0 | ||
|
|
1e0db61191 | ||
|
|
6a1d1c489b | ||
|
|
79db39b06b | ||
|
|
2e619e5aff | ||
|
|
fa9ff4f9d5 | ||
|
|
0aa9d73e8d | ||
|
|
be9319e5c4 | ||
|
|
f3e6641029 | ||
|
|
23d34210dd | ||
|
|
9d9ac8eea1 | ||
|
|
734982d608 | ||
|
|
1fee018a7f | ||
|
|
9601207aa4 | ||
|
|
d1f6aa63b0 |
1
.gitignore
vendored
@@ -102,6 +102,7 @@ build/*
|
|||||||
|
|
||||||
# libultra
|
# libultra
|
||||||
|
|
||||||
|
!/lib/**/*.o
|
||||||
!/lib/*.a
|
!/lib/*.a
|
||||||
lib/libs2d_engine.a
|
lib/libs2d_engine.a
|
||||||
!/lib/gcclib/*.a
|
!/lib/gcclib/*.a
|
||||||
|
|||||||
1
.vscode/c_cpp_properties.json
vendored
@@ -6,6 +6,7 @@
|
|||||||
"${workspaceFolder}/include/n64/**",
|
"${workspaceFolder}/include/n64/**",
|
||||||
"${workspaceFolder}/include/**",
|
"${workspaceFolder}/include/**",
|
||||||
"${workspaceFolder}/textures/**",
|
"${workspaceFolder}/textures/**",
|
||||||
|
"${workspaceFolder}/build/us_n64/**",
|
||||||
"${workspaceFolder}/**"
|
"${workspaceFolder}/**"
|
||||||
],
|
],
|
||||||
"forcedInclude": [
|
"forcedInclude": [
|
||||||
|
|||||||
199
Makefile
@@ -67,25 +67,6 @@ endif
|
|||||||
|
|
||||||
DEFINES += NO_ERRNO_H=1 NO_GZIP=1
|
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
|
# VERSION - selects the version of the game to build
|
||||||
# jp - builds the 1996 Japanese version
|
# jp - builds the 1996 Japanese version
|
||||||
# us - builds the 1996 North American version
|
# us - builds the 1996 North American version
|
||||||
@@ -106,7 +87,7 @@ endif
|
|||||||
|
|
||||||
DEBUG_MAP_STACKTRACE_FLAG := -D DEBUG_MAP_STACKTRACE
|
DEBUG_MAP_STACKTRACE_FLAG := -D DEBUG_MAP_STACKTRACE
|
||||||
|
|
||||||
TARGET := sm64.$(VERSION)
|
TARGET := sm64
|
||||||
|
|
||||||
|
|
||||||
# GRUCODE - selects which RSP microcode to use.
|
# GRUCODE - selects which RSP microcode to use.
|
||||||
@@ -147,15 +128,78 @@ endif
|
|||||||
|
|
||||||
LINK_LIBRARIES = $(foreach i,$(LIBRARIES),-l$(i))
|
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)
|
ifeq ($(COMPILER),gcc)
|
||||||
NON_MATCHING := 1
|
NON_MATCHING := 1
|
||||||
MIPSISET := -mips3
|
MIPSISET := -mips3
|
||||||
OPT_FLAGS := -Ofast
|
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)
|
||||||
else ifeq ($(COMPILER),clang)
|
else ifeq ($(COMPILER),clang)
|
||||||
NON_MATCHING := 1
|
NON_MATCHING := 1
|
||||||
# clang doesn't support ABI 'o32' for 'mips3'
|
# clang doesn't support ABI 'o32' for 'mips3'
|
||||||
MIPSISET := -mips2
|
MIPSISET := -mips2
|
||||||
OPT_FLAGS := -Ofast
|
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)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
@@ -171,25 +215,14 @@ endif
|
|||||||
|
|
||||||
ifeq ($(NON_MATCHING),1)
|
ifeq ($(NON_MATCHING),1)
|
||||||
DEFINES += NON_MATCHING=1 AVOID_UB=1
|
DEFINES += NON_MATCHING=1 AVOID_UB=1
|
||||||
COMPARE := 0
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
# COMPARE - whether to verify the SHA-1 hash of the ROM after building
|
TARGET_STRING := sm64
|
||||||
# 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
|
# UNF - whether to use UNFLoader flashcart library
|
||||||
# 1 - includes code in ROM
|
# 1 - includes code in ROM
|
||||||
# 0 - does not
|
# 0 - does not
|
||||||
UNF ?= 0
|
UNF ?= 0
|
||||||
$(eval $(call validate-option,UNF,0 1))
|
$(eval $(call validate-option,UNF,0 1))
|
||||||
ifeq ($(UNF),1)
|
ifeq ($(UNF),1)
|
||||||
@@ -201,7 +234,7 @@ endif
|
|||||||
# ISVPRINT - whether to fake IS-Viewer presence,
|
# ISVPRINT - whether to fake IS-Viewer presence,
|
||||||
# allowing for usage of CEN64 (and possibly Project64) to print messages to terminal.
|
# allowing for usage of CEN64 (and possibly Project64) to print messages to terminal.
|
||||||
# 1 - includes code in ROM
|
# 1 - includes code in ROM
|
||||||
# 0 - does not
|
# 0 - does not
|
||||||
ISVPRINT ?= 0
|
ISVPRINT ?= 0
|
||||||
$(eval $(call validate-option,ISVPRINT,0 1))
|
$(eval $(call validate-option,ISVPRINT,0 1))
|
||||||
ifeq ($(ISVPRINT),1)
|
ifeq ($(ISVPRINT),1)
|
||||||
@@ -219,7 +252,7 @@ endif
|
|||||||
|
|
||||||
# HVQM - whether to use HVQM fmv library
|
# HVQM - whether to use HVQM fmv library
|
||||||
# 1 - includes code in ROM
|
# 1 - includes code in ROM
|
||||||
# 0 - does not
|
# 0 - does not
|
||||||
HVQM ?= 0
|
HVQM ?= 0
|
||||||
$(eval $(call validate-option,HVQM,0 1))
|
$(eval $(call validate-option,HVQM,0 1))
|
||||||
ifeq ($(HVQM),1)
|
ifeq ($(HVQM),1)
|
||||||
@@ -227,9 +260,34 @@ ifeq ($(HVQM),1)
|
|||||||
SRC_DIRS += src/hvqm
|
SRC_DIRS += src/hvqm
|
||||||
endif
|
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)
|
# GODDARD - whether to use libgoddard (Mario Head)
|
||||||
# 1 - includes code in ROM
|
# 1 - includes code in ROM
|
||||||
# 0 - does not
|
# 0 - does not
|
||||||
GODDARD ?= 0
|
GODDARD ?= 0
|
||||||
$(eval $(call validate-option,GODDARD,0 1))
|
$(eval $(call validate-option,GODDARD,0 1))
|
||||||
ifeq ($(GODDARD),1)
|
ifeq ($(GODDARD),1)
|
||||||
@@ -245,27 +303,6 @@ endif
|
|||||||
# Whether to colorize build messages
|
# Whether to colorize build messages
|
||||||
COLOR ?= 1
|
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 #
|
# Universal Dependencies #
|
||||||
#==============================================================================#
|
#==============================================================================#
|
||||||
@@ -311,7 +348,7 @@ endif
|
|||||||
|
|
||||||
BUILD_DIR_BASE := build
|
BUILD_DIR_BASE := build
|
||||||
# BUILD_DIR is the location where all build artifacts are placed
|
# BUILD_DIR is the location where all build artifacts are placed
|
||||||
BUILD_DIR := $(BUILD_DIR_BASE)/$(VERSION)
|
BUILD_DIR := $(BUILD_DIR_BASE)/$(VERSION)_$(CONSOLE)
|
||||||
ROM := $(BUILD_DIR)/$(TARGET_STRING).z64
|
ROM := $(BUILD_DIR)/$(TARGET_STRING).z64
|
||||||
ELF := $(BUILD_DIR)/$(TARGET_STRING).elf
|
ELF := $(BUILD_DIR)/$(TARGET_STRING).elf
|
||||||
LIBZ := $(BUILD_DIR)/libz.a
|
LIBZ := $(BUILD_DIR)/libz.a
|
||||||
@@ -427,9 +464,11 @@ DEF_INC_CFLAGS := $(foreach i,$(INCLUDE_DIRS),-I$(i)) $(C_DEFINES)
|
|||||||
# C compiler options
|
# C compiler options
|
||||||
CFLAGS = -G 0 $(OPT_FLAGS) $(TARGET_CFLAGS) $(MIPSISET) $(DEF_INC_CFLAGS)
|
CFLAGS = -G 0 $(OPT_FLAGS) $(TARGET_CFLAGS) $(MIPSISET) $(DEF_INC_CFLAGS)
|
||||||
ifeq ($(COMPILER),gcc)
|
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 -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
|
||||||
|
CFLAGS += -Wno-missing-braces
|
||||||
else ifeq ($(COMPILER),clang)
|
else ifeq ($(COMPILER),clang)
|
||||||
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
|
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
|
||||||
else
|
else
|
||||||
CFLAGS += -non_shared -Wab,-r4300_mul -Xcpluscomm -Xfullwarn -signed -32
|
CFLAGS += -non_shared -Wab,-r4300_mul -Xcpluscomm -Xfullwarn -signed -32
|
||||||
endif
|
endif
|
||||||
@@ -472,7 +511,7 @@ else
|
|||||||
RSPASM := $(TOOLS_DIR)/armips
|
RSPASM := $(TOOLS_DIR)/armips
|
||||||
endif
|
endif
|
||||||
ENDIAN_BITWIDTH := $(BUILD_DIR)/endian-and-bitwidth
|
ENDIAN_BITWIDTH := $(BUILD_DIR)/endian-and-bitwidth
|
||||||
EMULATOR = ~/Downloads/mupen64plus/mupen64plus-gui
|
EMULATOR = mupen64plus
|
||||||
EMU_FLAGS =
|
EMU_FLAGS =
|
||||||
LOADER = loader64
|
LOADER = loader64
|
||||||
LOADER_FLAGS = -vwf
|
LOADER_FLAGS = -vwf
|
||||||
@@ -485,7 +524,7 @@ RED := \033[0;31m
|
|||||||
GREEN := \033[0;32m
|
GREEN := \033[0;32m
|
||||||
BLUE := \033[0;34m
|
BLUE := \033[0;34m
|
||||||
YELLOW := \033[0;33m
|
YELLOW := \033[0;33m
|
||||||
BLINK := \033[33;5m
|
BLINK := \033[32;5m
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# For non-IDO, use objcopy instead of extract_data_for_mio
|
# For non-IDO, use objcopy instead of extract_data_for_mio
|
||||||
@@ -503,13 +542,12 @@ endef
|
|||||||
#==============================================================================#
|
#==============================================================================#
|
||||||
|
|
||||||
all: $(ROM)
|
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)
|
@$(SHA1SUM) $(ROM)
|
||||||
@$(PRINT) "${GREEN}Build succeeded.$(NO_COL)\n"
|
@$(PRINT) "${BLINK}Build succeeded.\n$(NO_COL)"
|
||||||
endif
|
@$(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"
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
$(RM) -r $(BUILD_DIR_BASE)
|
$(RM) -r $(BUILD_DIR_BASE)
|
||||||
@@ -524,6 +562,7 @@ test: $(ROM)
|
|||||||
|
|
||||||
test-pj64: $(ROM)
|
test-pj64: $(ROM)
|
||||||
wine ~/Desktop/new64/Project64.exe $<
|
wine ~/Desktop/new64/Project64.exe $<
|
||||||
|
# someone2639
|
||||||
|
|
||||||
load: $(ROM)
|
load: $(ROM)
|
||||||
$(LOADER) $(LOADER_FLAGS) $<
|
$(LOADER) $(LOADER_FLAGS) $<
|
||||||
@@ -534,7 +573,7 @@ libultra: $(BUILD_DIR)/libultra.a
|
|||||||
$(BUILD_DIR)/asm/boot.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/crash_screen.o: $(CRASH_TEXTURE_C_FILES)
|
||||||
$(BUILD_DIR)/src/game/version.o: $(BUILD_DIR)/src/game/version_data.h
|
$(BUILD_DIR)/src/game/version.o: $(BUILD_DIR)/src/game/version_data.h
|
||||||
$(BUILD_DIR)/lib/rsp.o: $(BUILD_DIR)/rsp/rspboot.bin $(BUILD_DIR)/rsp/audio.bin
|
$(BUILD_DIR)/lib/aspMain.o: $(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
|
$(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
|
$(BUILD_DIR)/levels/scripts.o: $(BUILD_DIR)/include/level_headers.h
|
||||||
|
|
||||||
@@ -576,9 +615,17 @@ $(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/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: OPT_FLAGS := -O0
|
||||||
$(BUILD_DIR)/src/usb/debug.o: CFLAGS += -Wno-unused-parameter -Wno-maybe-uninitialized
|
$(BUILD_DIR)/src/usb/debug.o: CFLAGS += -Wno-unused-parameter -Wno-maybe-uninitialized
|
||||||
$(BUILD_DIR)/src/audio/*.o: OPT_FLAGS := -Os -fno-jump-tables
|
# File specific opt flags
|
||||||
$(BUILD_DIR)/src/engine/math_util.o: OPT_FLAGS := -Ofast -fno-unroll-loops -fno-peel-loops --param case-values-threshold=20
|
$(BUILD_DIR)/src/audio/*.o: OPT_FLAGS := -Os -fno-jump-tables
|
||||||
$(BUILD_DIR)/src/game/rendering_graph_node.o: OPT_FLAGS := -Ofast --param case-values-threshold=20
|
|
||||||
|
$(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)
|
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)
|
||||||
|
|
||||||
@@ -589,7 +636,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/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/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/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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -814,7 +861,7 @@ ifeq ($(CONSOLE),n64)
|
|||||||
$(V)$(OBJCOPY) --pad-to=0x101000 --gap-fill=0xFF $< $@ -O binary
|
$(V)$(OBJCOPY) --pad-to=0x101000 --gap-fill=0xFF $< $@ -O binary
|
||||||
else ifeq ($(CONSOLE),bb)
|
else ifeq ($(CONSOLE),bb)
|
||||||
$(V)$(OBJCOPY) --gap-fill=0x00 $< $@ -O binary
|
$(V)$(OBJCOPY) --gap-fill=0x00 $< $@ -O binary
|
||||||
$(V)dd if=$@ of=tmp bs=16K conv=sync
|
$(V)dd if=$@ of=tmp bs=16K conv=sync status=none
|
||||||
$(V)mv tmp $@
|
$(V)mv tmp $@
|
||||||
endif
|
endif
|
||||||
$(V)$(N64CKSUM) $@
|
$(V)$(N64CKSUM) $@
|
||||||
|
|||||||
74
README.md
@@ -1,23 +1,43 @@
|
|||||||
#  HackerSM64 
|
#  HackerSM64 
|
||||||
|
|
||||||
**[Thank you to Kaze Emanuar for these major optimizations!](https://www.youtube.com/watch?v=uYPH-NH3B6k)
|
**AFTER CLONING THE REPO, CHECK OUT THE `include/config` FOLDER BEFORE ANYTHING ELSE! THERE'S A LOT OF STUFF IN THIS REPO THAT CAN BE TOGGLED THERE.**
|
||||||
|
|
||||||
**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
|
HackerSM64 now has a discord server! https://discord.gg/brETAakcXr
|
||||||
|
|
||||||
This repo needs BOTH an US ROM and a JP ROM in order to build. Place baserom.us.z64 in the repo as usual and ALSO place baserom.jp.z64
|
This repo requires BOTH a US ROM and a JP ROM in order to build. Place baserom.us.z64 in the repo as usual and ALSO include baserom.jp.z64.
|
||||||
|
|
||||||
This repo needs gcc in order to be able to build it. To install it, run `sudo apt install gcc-mips-linux-gnu`
|
This repo needs gcc in order to be able to build it. To install it, run `sudo apt install gcc-mips-linux-gnu`
|
||||||
|
|
||||||
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`):
|
This is a fork of the ultrasm64 repo by CrashOveride which includes the following commonly used patches (patches marked with `*` are toggleable in the config files):
|
||||||
|
|
||||||
|
**Credits**
|
||||||
|
- **ArcticJaguar725**: Most audio configuration and layout changes, colored ia4 text, floombas, various 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, reonucam, 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**: 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
|
||||||
|
- **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 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.
|
- 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.
|
- 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**
|
||||||
- Puppycam is available on the master branch now, you can toogle it in config.h. *
|
- Puppycam is available on the master branch now, you can toggle it in `config/config_camera.h`. *
|
||||||
|
|
||||||
**Collision:**
|
**Collision:**
|
||||||
- Slope fix and exposed ceilings fix
|
- Slope fix and exposed ceilings fix
|
||||||
@@ -25,11 +45,11 @@ This is a fork of the ultrasm64 repo by CrashOveride which includes the followin
|
|||||||
- Jump kick fix *
|
- Jump kick fix *
|
||||||
- Configurable wallkick angle, in degrees *
|
- Configurable wallkick angle, in degrees *
|
||||||
- Possibility of disabling BLJs *
|
- Possibility of disabling BLJs *
|
||||||
- Hanging fix (mario can grab hangable ceilings from any state, instead of only jump or double jump) *
|
- 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) *
|
- Increased maximum pole length (The game will read bparam1 and bparam2 together as a single value, so you can have a very long pole) *
|
||||||
- Platform Displacement 2 by Arthurtilly *
|
- Platform Displacement 2 by Arthurtilly *
|
||||||
- Water Surface Type patch by thecozies
|
- Water Surface Type patch by thecozies
|
||||||
- Better Wall Collision With Rounded Corners by FramePerfection, merged by Cheezepin & Arceveti
|
- Better wall collision with rounded corners by FramePerfection, merged by Cheezepin & Arceveti
|
||||||
- Automatically calculate the optimal collision distance for an object based on its vertices, by Kaze *
|
- Automatically calculate the optimal collision distance for an object based on its vertices, by Kaze *
|
||||||
|
|
||||||
**Common Hack Changes:**
|
**Common Hack Changes:**
|
||||||
@@ -42,8 +62,8 @@ This is a fork of the ultrasm64 repo by CrashOveride which includes the followin
|
|||||||
- Removed course-specific camera processing *
|
- Removed course-specific camera processing *
|
||||||
- You can increase the number of frames that you have to perform a firsty *
|
- You can increase the number of frames that you have to perform a firsty *
|
||||||
- Ability to set Mario's movement speed when hanging from a ceiling *
|
- Ability to set Mario's movement speed when hanging from a ceiling *
|
||||||
- Tighter hanging controls (mario will face the direction of the analog stick directly while hanging from a ceiling) *
|
- Tighter hanging controls (Mario will face the direction of the analog stick directly while hanging from a ceiling) *
|
||||||
- reonucam3: custom camera by me. This is included as a .patch file in the enhancements folder, you need to apply it if you want this camera.
|
- reonucam3: custom camera by Reonu. This is included as a .patch file in the enhancements folder, you need to apply it if you want this camera.
|
||||||
This video shows a rundown of the features: https://youtu.be/TQNkznX9Z3k
|
This video shows a rundown of the features: https://youtu.be/TQNkznX9Z3k
|
||||||
- Ability to disable Mario getting suck in snow or sand
|
- Ability to disable Mario getting suck in snow or sand
|
||||||
|
|
||||||
@@ -52,34 +72,34 @@ This is a fork of the ultrasm64 repo by CrashOveride which includes the followin
|
|||||||
- Debug mode: prints mario's coordinates, angle and speed, and a FPS counter.
|
- Debug mode: prints mario's coordinates, angle and speed, and a FPS counter.
|
||||||
- Automatic console/emulator detection. If emulator is detected, LODs are disabled. *
|
- Automatic console/emulator detection. If emulator is detected, LODs are disabled. *
|
||||||
- Ability to configure whether there's a 100 coin star at all and how many coins are required to spawn it *
|
- Ability to configure whether there's a 100 coin star at all and how many coins are required to spawn it *
|
||||||
- Ability to easily change the warp that EXIT COURSE takes you to via config.h, or disable it entirely. *
|
- Ability to easily change the warp that EXIT COURSE takes you to via `config/config_menu.h`, or disable it entirely. *
|
||||||
- 16 bit model IDs by someone2639. This means you can have up to 65536 models (lol). You can set the maximum number of model IDs in `config.h`.
|
- 16 bit model IDs by someone2639. This means you can have up to 65536 models (lol). You can set the maximum number of model IDs in `config/config_game.h`.
|
||||||
- Apply_patch.sh improved
|
- Apply_patch.sh improved
|
||||||
- Removed the ifdef hell in `file_select.c` and `ingame_menu.c`
|
- Removed the ifdef hell in `file_select.c` and `ingame_menu.c`
|
||||||
- Added Blake's custom function for object model stuff: `obj_set_model` and `obj_has_model`
|
- Added Blake's custom function for object model stuff: `obj_set_model` and `obj_has_model`
|
||||||
- Added function to get the model ID from an object: `obj_get_model_id` (by Arceveti)
|
- Added function to get the model ID from an object: `obj_get_model_id` (by Arceveti)
|
||||||
- The "far" variable is now u16, allowing you to increase the farclip (the max distance at which geometry is rendered). However, when increasing the farclip, make sure to increase the nearclip by the same ratio, or rendering will break on console and LLE plugins.
|
- The "far" variable is now u16, allowing you to increase the farclip (the max distance at which geometry is rendered). However, when increasing the farclip, make sure to increase the nearclip by the same ratio, or rendering will break on console and LLE plugins.
|
||||||
- Many general use defines for object struct members, meant for use in custom object behaviors. Check `object_fields.h` for more info on this. (By MrComit)
|
- 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`
|
- Included `actors/group0.c` in `behavior_data.c`
|
||||||
- The internal ROM name is now set with a define in `config.h` to make it simpler
|
- The internal ROM name is now set with a define in `config/config_rom.h` to make it simpler
|
||||||
- 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.
|
- 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) *
|
- 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.h in order to boot straight into it, so you can quickly test the level you're working on. *
|
- 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. *
|
||||||
- Allows 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. *
|
- 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. *
|
||||||
- The clown font includes the entire English alphabet.
|
- The clown font includes the entire English alphabet.
|
||||||
- Colored ia4 text support. Format: `"@XXXXXXXX[YOUR TEXT]@--------"` (By ArcticJaguar725)
|
- Colored ia4 text support. Format: `"@XXXXXXXX[YOUR TEXT]@--------"` (By ArcticJaguar725)
|
||||||
- Example Text: `"@FF0000FFRED @00FF00FFGREEN @0000FFFFBLUE @FFFFFF00INVISIBLE @--------NORMAL"`
|
- 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.
|
- 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.
|
- Toggle visiblity of collision surfaces and object hitboxes with Visual Surface Debug. `config/config_debug.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. *
|
- 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:**
|
**Other Bugfixes:**
|
||||||
- Castle music fix (Fixes the castle music sometimes triggering after getting a dialog) *
|
- Castle music fix (fixes the castle music sometimes triggering after getting a dialog) *
|
||||||
- bparam4 fix (the game no longer uses bparam4 to check if an object is mario and therefore you can safely use it)
|
- bparam4 fix (the game no longer uses bparam4 to check if an object is Mario and therefore you can safely use it)
|
||||||
- Instant warp offset fix (makes the instant warp offset work even when warping to a different area) *
|
- Instant warp offset fix (makes the instant warp offset work even when warping to a different area) *
|
||||||
- haveyourcake, also known as cake screen fix. Made by Wiseguy and ported/PR'd by Cheezepin
|
- haveyourcake, also known as cake screen fix. Made by Wiseguy and ported/PR'd by Cheezepin
|
||||||
- Tree particle fix (Whether a tree uses snow particles or not is decided via the model IDs instead of the course number) *
|
- Tree particle fix (Whether a tree uses snow particles or not is decided via the model IDs instead of the course number) *
|
||||||
- Coordinate overflow fix by falcobuster. Your levels will render correctly on console and LLE emulators even when using 2x or 4x bounds, while not hurting anything on HLE plugins. *This is automatic now, you don't have to set WORLD_SCALE manually.*
|
- Adjustable world scale. You can change the geometry scaling of your level, which allow large levels to render correctly on console and LLE emulators while not hurting anything on HLE plugins.
|
||||||
- A couple vanilla texture fixes
|
- A couple vanilla texture fixes
|
||||||
- Smoke fix (the smoke texture uses the correct texture format)
|
- Smoke fix (the smoke texture uses the correct texture format)
|
||||||
|
|
||||||
@@ -88,14 +108,14 @@ This is a fork of the ultrasm64 repo by CrashOveride which includes the followin
|
|||||||
- 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.
|
- 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. *
|
- 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.
|
- 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 (64x64) coins, the vanilla coin texture is upgraded to accomodate. *
|
||||||
- ia8 30 FPS (64x64) coins (Textures by InTheBeef, cleaned up by Arceveti). *
|
- ia8 (64x64) 30 FPS coins (Textures by InTheBeef, cleaned up by Arceveti). *
|
||||||
- Floombas! Simply just retextured goombas with custom behaviors (does not overwrite standard goombas). *
|
- Floombas! Simply just retextured goombas with customizable behaviors (does not overwrite standard goombas). *
|
||||||
- HD texture support for intro splash screen (with floombas if enabled). *
|
- 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) *
|
- 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 *
|
- Skybox size modifier. You can have 2x, 3x and 4x size skyboxes (you can select the skybox size in `config/config_graphics.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. *
|
- You can set the black border size to different values for console and emulator. It's set to 0 by default for both. *
|
||||||
- This repo supports much better implementation of reverb over vanilla's fake echo reverb. Great for caves or eerie levels, as well as just a better audio experience in general. See `audio/synthesis.c` for more configuration info. (By ArcticJaguar725) *
|
- This repo supports a much better implementation of reverb over vanilla's fake echo reverb. Great for caves or eerie levels, as well as just a better audio experience in general. See `audio/synthesis.c` for more details and configuration info. (By ArcticJaguar725) *
|
||||||
- Fazana's "puppyprint" text engine. *
|
- Fazana's "puppyprint" text engine. *
|
||||||
- Use `print_small_text` to print normal text. The two last params are aligment and how many characters to print (-1 means PRINT_ALL).
|
- Use `print_small_text` to print normal text. The two last params are aligment and how many characters to print (-1 means PRINT_ALL).
|
||||||
- Use `render_multi_image` to draw large texture rectangles consisting of multiple images on the screen.
|
- Use `render_multi_image` to draw large texture rectangles consisting of multiple images on the screen.
|
||||||
@@ -178,7 +198,9 @@ 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``?
|
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.
|
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.
|
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.
|
I went with the latter.
|
||||||
Thanks to "someone2639" for this hacky-ass idea
|
Thanks to "someone2639" for this hacky-ass idea
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// unreferenced animation
|
// unreferenced
|
||||||
// 0x0500616C
|
// 0x0500616C
|
||||||
const struct Animation *const blargg_seg5_anims_0500616C[] = {
|
const struct Animation *const blargg_seg5_anims_0500616C[] = {
|
||||||
&blargg_seg5_anim_05006154,
|
&blargg_seg5_anim_05006154,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ const GeoLayout boo_geo[] = {
|
|||||||
GEO_OPEN_NODE(),
|
GEO_OPEN_NODE(),
|
||||||
GEO_SCALE(0x00, 26214),
|
GEO_SCALE(0x00, 26214),
|
||||||
GEO_OPEN_NODE(),
|
GEO_OPEN_NODE(),
|
||||||
GEO_ASM(0, geo_update_layer_transparency),
|
GEO_ASM(GEO_TRANSPARENCY_MODE_NORMAL, geo_update_layer_transparency),
|
||||||
GEO_SWITCH_CASE(2, geo_switch_anim_state),
|
GEO_SWITCH_CASE(2, geo_switch_anim_state),
|
||||||
GEO_OPEN_NODE(),
|
GEO_OPEN_NODE(),
|
||||||
GEO_DISPLAY_LIST(LAYER_OPAQUE, boo_seg5_dl_0500C1B0),
|
GEO_DISPLAY_LIST(LAYER_OPAQUE, boo_seg5_dl_0500C1B0),
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ const GeoLayout boo_castle_geo[] = {
|
|||||||
GEO_OPEN_NODE(),
|
GEO_OPEN_NODE(),
|
||||||
GEO_SCALE(0x00, 26214),
|
GEO_SCALE(0x00, 26214),
|
||||||
GEO_OPEN_NODE(),
|
GEO_OPEN_NODE(),
|
||||||
GEO_ASM(0, geo_update_layer_transparency),
|
GEO_ASM(GEO_TRANSPARENCY_MODE_NORMAL, geo_update_layer_transparency),
|
||||||
GEO_SWITCH_CASE(2, geo_switch_anim_state),
|
GEO_SWITCH_CASE(2, geo_switch_anim_state),
|
||||||
GEO_OPEN_NODE(),
|
GEO_OPEN_NODE(),
|
||||||
GEO_DISPLAY_LIST(LAYER_OPAQUE, boo_castle_seg6_dl_06017CE0),
|
GEO_DISPLAY_LIST(LAYER_OPAQUE, boo_castle_seg6_dl_06017CE0),
|
||||||
|
|||||||
@@ -332,7 +332,7 @@ const GeoLayout bowser_shadow_geo[] = {
|
|||||||
const GeoLayout bowser_geo[] = {
|
const GeoLayout bowser_geo[] = {
|
||||||
GEO_NODE_START(),
|
GEO_NODE_START(),
|
||||||
GEO_OPEN_NODE(),
|
GEO_OPEN_NODE(),
|
||||||
GEO_ASM(0, geo_update_layer_transparency),
|
GEO_ASM(GEO_TRANSPARENCY_MODE_NORMAL, geo_update_layer_transparency),
|
||||||
GEO_SWITCH_CASE(3, geo_switch_anim_state),
|
GEO_SWITCH_CASE(3, geo_switch_anim_state),
|
||||||
GEO_OPEN_NODE(),
|
GEO_OPEN_NODE(),
|
||||||
GEO_NODE_START(),
|
GEO_NODE_START(),
|
||||||
@@ -362,7 +362,7 @@ const GeoLayout bowser_geo[] = {
|
|||||||
const GeoLayout bowser_geo_no_shadow[] = {
|
const GeoLayout bowser_geo_no_shadow[] = {
|
||||||
GEO_NODE_START(),
|
GEO_NODE_START(),
|
||||||
GEO_OPEN_NODE(),
|
GEO_OPEN_NODE(),
|
||||||
GEO_ASM(0, geo_update_layer_transparency),
|
GEO_ASM(GEO_TRANSPARENCY_MODE_NORMAL, geo_update_layer_transparency),
|
||||||
GEO_SWITCH_CASE(3, geo_switch_anim_state),
|
GEO_SWITCH_CASE(3, geo_switch_anim_state),
|
||||||
GEO_OPEN_NODE(),
|
GEO_OPEN_NODE(),
|
||||||
GEO_NODE_START(),
|
GEO_NODE_START(),
|
||||||
|
|||||||
@@ -4,13 +4,13 @@
|
|||||||
const Collision breakable_box_seg8_collision[] = {
|
const Collision breakable_box_seg8_collision[] = {
|
||||||
COL_INIT(),
|
COL_INIT(),
|
||||||
COL_VERTEX_INIT(0x8),
|
COL_VERTEX_INIT(0x8),
|
||||||
COL_VERTEX(-100, 0, -100),
|
COL_VERTEX(-100, 0, -100),
|
||||||
COL_VERTEX(-100, 0, 100),
|
COL_VERTEX(-100, 0, 100),
|
||||||
COL_VERTEX(-100, 200, 100),
|
COL_VERTEX(-100, 200, 100),
|
||||||
COL_VERTEX( 100, 0, 100),
|
COL_VERTEX(100, 0, 100),
|
||||||
COL_VERTEX( 100, 200, 100),
|
COL_VERTEX(100, 200, 100),
|
||||||
COL_VERTEX( 100, 0, -100),
|
COL_VERTEX(100, 0, -100),
|
||||||
COL_VERTEX( 100, 200, -100),
|
COL_VERTEX(100, 200, -100),
|
||||||
COL_VERTEX(-100, 200, -100),
|
COL_VERTEX(-100, 200, -100),
|
||||||
|
|
||||||
COL_TRI_INIT(SURFACE_NO_CAM_COLLISION, 12),
|
COL_TRI_INIT(SURFACE_NO_CAM_COLLISION, 12),
|
||||||
@@ -29,3 +29,6 @@ const Collision breakable_box_seg8_collision[] = {
|
|||||||
COL_TRI_STOP(),
|
COL_TRI_STOP(),
|
||||||
COL_END(),
|
COL_END(),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
UNUSED static const u32 breakable_box_unused_1 = 0;
|
||||||
|
UNUSED static const u64 breakable_box_unused_2 = 0;
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ const Gfx breakable_box_seg8_sub_dl_end[] = {
|
|||||||
// 0x08012CD8 - 0x08012D20
|
// 0x08012CD8 - 0x08012D20
|
||||||
const Gfx breakable_box_seg8_sub_dl_begin[] = {
|
const Gfx breakable_box_seg8_sub_dl_begin[] = {
|
||||||
gsDPPipeSync(),
|
gsDPPipeSync(),
|
||||||
gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),
|
gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),
|
||||||
gsSPClearGeometryMode(G_SHADING_SMOOTH),
|
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),
|
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),
|
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
|
||||||
|
|||||||
@@ -2,6 +2,9 @@
|
|||||||
// It's possible that bubba and bub used to be 2 "actors" in
|
// It's possible that bubba and bub used to be 2 "actors" in
|
||||||
// one actor file.
|
// one actor file.
|
||||||
|
|
||||||
|
// Bin ID? What is this?
|
||||||
|
UNUSED static const u64 bubba_unused_1 = 0;
|
||||||
|
|
||||||
// Bubba
|
// Bubba
|
||||||
|
|
||||||
// 0x05000008
|
// 0x05000008
|
||||||
|
|||||||
@@ -2,7 +2,10 @@
|
|||||||
const GeoLayout burn_smoke_geo[] = {
|
const GeoLayout burn_smoke_geo[] = {
|
||||||
GEO_NODE_START(),
|
GEO_NODE_START(),
|
||||||
GEO_OPEN_NODE(),
|
GEO_OPEN_NODE(),
|
||||||
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, burn_smoke_seg4_dl_04022070),
|
#ifdef BURN_SMOKE_FIX
|
||||||
|
GEO_ASM(GEO_TRANSPARENCY_MODE_INTER, geo_update_layer_transparency),
|
||||||
|
#endif
|
||||||
|
GEO_DISPLAY_LIST(LAYER_TRANSPARENT_INTER, burn_smoke_seg4_dl),
|
||||||
GEO_CLOSE_NODE(),
|
GEO_CLOSE_NODE(),
|
||||||
GEO_END(),
|
GEO_END(),
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
// Burn Smoke
|
// Burn Smoke
|
||||||
|
|
||||||
// 0x040217C0
|
// 0x040217C0
|
||||||
static const Vtx burn_smoke_seg4_vertex_040217C0[] = {
|
static const Vtx burn_smoke_seg4_vertex[] = {
|
||||||
{{{ -50, -50, 0}, 0, { 0, 992}, {0x14, 0x0a, 0x0a, 0xff}}},
|
{{{ -50, -50, 0}, 0, { 0, 992}, {0x14, 0x0a, 0x0a, 0xff}}},
|
||||||
{{{ 50, -50, 0}, 0, { 992, 992}, {0x14, 0x0a, 0x0a, 0xff}}},
|
{{{ 50, -50, 0}, 0, { 992, 992}, {0x14, 0x0a, 0x0a, 0xff}}},
|
||||||
{{{ 50, 50, 0}, 0, { 992, 0}, {0x14, 0x0a, 0x0a, 0xff}}},
|
{{{ 50, 50, 0}, 0, { 992, 0}, {0x14, 0x0a, 0x0a, 0xff}}},
|
||||||
@@ -12,15 +12,15 @@ static const Vtx burn_smoke_seg4_vertex_040217C0[] = {
|
|||||||
// as a transparent black burn smoke. Probably meant to show up as white-ish
|
// as a transparent black burn smoke. Probably meant to show up as white-ish
|
||||||
// burn smoke, but mistakened for being intended as black smoke.
|
// burn smoke, but mistakened for being intended as black smoke.
|
||||||
// 0x04021800
|
// 0x04021800
|
||||||
ALIGNED8 static const Texture burn_smoke_seg4_texture_04021800[] = {
|
ALIGNED8 static const Texture burn_smoke_seg4_sub_dl_texture[] = {
|
||||||
#include "actors/burn_smoke/burn_smoke.ia16.inc.c"
|
#include "actors/burn_smoke/burn_smoke.ia16.inc.c"
|
||||||
};
|
};
|
||||||
|
|
||||||
// 0x04022000 - 0x04022028
|
// 0x04022000 - 0x04022028
|
||||||
const Gfx burn_smoke_seg4_dl_04022000[] = {
|
const Gfx burn_smoke_seg4_sub_dl_begin[] = {
|
||||||
gsDPPipeSync(),
|
gsDPPipeSync(),
|
||||||
#ifdef BURN_SMOKE_FIX
|
#ifdef BURN_SMOKE_FIX
|
||||||
gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),
|
gsDPSetCombineMode(G_CC_MODULATEIFADEA, G_CC_MODULATEIFADEA),
|
||||||
#else
|
#else
|
||||||
gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),
|
gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),
|
||||||
#endif
|
#endif
|
||||||
@@ -30,14 +30,14 @@ const Gfx burn_smoke_seg4_dl_04022000[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// 0x04022028 - 0x04022048
|
// 0x04022028 - 0x04022048
|
||||||
const Gfx burn_smoke_seg4_dl_04022028[] = {
|
const Gfx burn_smoke_seg4_sub_dl_model[] = {
|
||||||
gsSPVertex(burn_smoke_seg4_vertex_040217C0, 4, 0),
|
gsSPVertex(burn_smoke_seg4_vertex, 4, 0),
|
||||||
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
|
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
|
||||||
gsSPEndDisplayList(),
|
gsSPEndDisplayList(),
|
||||||
};
|
};
|
||||||
|
|
||||||
// 0x04022048 - 0x04022070
|
// 0x04022048 - 0x04022070
|
||||||
const Gfx burn_smoke_seg4_dl_04022048[] = {
|
const Gfx burn_smoke_seg4_sub_dl_end[] = {
|
||||||
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
|
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
|
||||||
gsDPPipeSync(),
|
gsDPPipeSync(),
|
||||||
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
|
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
|
||||||
@@ -46,14 +46,14 @@ const Gfx burn_smoke_seg4_dl_04022048[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// 0x04022070 - 0x040220C8
|
// 0x04022070 - 0x040220C8
|
||||||
const Gfx burn_smoke_seg4_dl_04022070[] = {
|
const Gfx burn_smoke_seg4_dl[] = {
|
||||||
gsSPDisplayList(burn_smoke_seg4_dl_04022000),
|
gsSPDisplayList(burn_smoke_seg4_sub_dl_begin),
|
||||||
#ifdef BURN_SMOKE_FIX
|
#ifdef BURN_SMOKE_FIX
|
||||||
gsDPLoadTextureBlock(burn_smoke_seg4_texture_04021800, G_IM_FMT_IA, G_IM_SIZ_16b, 32, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 5, 5, G_TX_NOLOD, G_TX_NOLOD),
|
gsDPLoadTextureBlock(burn_smoke_seg4_sub_dl_texture, G_IM_FMT_IA, G_IM_SIZ_16b, 32, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 5, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||||
#else
|
#else
|
||||||
gsDPLoadTextureBlock(burn_smoke_seg4_texture_04021800, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 5, 5, G_TX_NOLOD, G_TX_NOLOD),
|
gsDPLoadTextureBlock(burn_smoke_seg4_sub_dl_texture, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 5, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||||
#endif
|
#endif
|
||||||
gsSPDisplayList(burn_smoke_seg4_dl_04022028),
|
gsSPDisplayList(burn_smoke_seg4_sub_dl_model),
|
||||||
gsSPDisplayList(burn_smoke_seg4_dl_04022048),
|
gsSPDisplayList(burn_smoke_seg4_sub_dl_end),
|
||||||
gsSPEndDisplayList(),
|
gsSPEndDisplayList(),
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1 +1,2 @@
|
|||||||
// Empty geo script
|
// Empty geo script
|
||||||
|
UNUSED static const u64 cannon_lid_unused_1 = 0;
|
||||||
|
|||||||
@@ -9,6 +9,9 @@ static const Vtx chain_ball_seg6_vertex_06020AA0[] = {
|
|||||||
{{{ -26, 26, 0}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}},
|
{{{ -26, 26, 0}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// align? binid?
|
||||||
|
UNUSED static const u64 chain_ball_unused_1 = 0;
|
||||||
|
|
||||||
// 0x06020AE8
|
// 0x06020AE8
|
||||||
ALIGNED8 static const Texture chain_ball_seg6_texture_06020AE8[] = {
|
ALIGNED8 static const Texture chain_ball_seg6_texture_06020AE8[] = {
|
||||||
#include "actors/chain_ball/chain_ball.rgba16.inc.c"
|
#include "actors/chain_ball/chain_ball.rgba16.inc.c"
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ ALIGNED8 static const Texture chair_seg5_texture_05004060[] = {
|
|||||||
#include "actors/chair/chair_bottom.rgba16.inc.c"
|
#include "actors/chair/chair_bottom.rgba16.inc.c"
|
||||||
};
|
};
|
||||||
|
|
||||||
// unreferenced texture
|
// unreferenced
|
||||||
// 0x05004460
|
// 0x05004460
|
||||||
UNUSED ALIGNED8 static const Texture chair_seg5_texture_05004460[] = {
|
UNUSED ALIGNED8 static const Texture chair_seg5_texture_05004460[] = {
|
||||||
#include "actors/chair/chair_surface_unused.rgba16.inc.c"
|
#include "actors/chair/chair_surface_unused.rgba16.inc.c"
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 1007 B After Width: | Height: | Size: 8.1 KiB |
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 12 KiB |