Merge branch 'master' of https://github.com/Reonu/HackerSM64 into shift_segs_2

This commit is contained in:
someone2639
2021-08-13 15:28:24 -04:00
51 changed files with 302 additions and 257 deletions

View File

@@ -43,8 +43,9 @@ endif
# COMPILER - selects the C compiler to use
# gcc - uses the GNU C Compiler
# clang - uses clang C/C++ frontend for LLVM
COMPILER ?= gcc
$(eval $(call validate-option,COMPILER,gcc))
$(eval $(call validate-option,COMPILER,gcc clang))
# LIBGCCDIR - selects the libgcc configuration for checking for dividing by zero
@@ -158,7 +159,12 @@ LINK_LIBRARIES = $(foreach i,$(LIBRARIES),-l$(i))
ifeq ($(COMPILER),gcc)
NON_MATCHING := 1
MIPSISET := -mips3
OPT_FLAGS := -O2 -g
OPT_FLAGS := -O2
else ifeq ($(COMPILER),clang)
NON_MATCHING := 1
# clang doesn't support ABI 'o32' for 'mips3'
MIPSISET := -mips2
OPT_FLAGS := -O2
endif
@@ -390,6 +396,8 @@ export LD_LIBRARY_PATH=./tools
AS := $(CROSS)as
ifeq ($(COMPILER),gcc)
CC := $(CROSS)gcc
else ifeq ($(COMPILER),clang)
CC := clang
endif
# Prefer gcc's cpp if installed on the system
ifneq (,$(call find-command,cpp-10))
@@ -423,9 +431,12 @@ DEF_INC_CFLAGS := $(foreach i,$(INCLUDE_DIRS),-I$(i)) $(C_DEFINES)
CFLAGS = -G 0 $(OPT_FLAGS) $(TARGET_CFLAGS) $(MIPSISET) $(DEF_INC_CFLAGS)
ifeq ($(COMPILER),gcc)
CFLAGS += -mno-shared -march=vr4300 -mfix4300 -mabi=32 -mhard-float -mdivide-breaks -fno-stack-protector -fno-common -fno-zero-initialized-in-bss -fno-PIC -mno-abicalls -fno-strict-aliasing -fno-inline-functions -ffreestanding -fwrapv -Wall -Wextra -Wno-missing-braces -fno-jump-tables
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
else
CFLAGS += -non_shared -Wab,-r4300_mul -Xcpluscomm -Xfullwarn -signed -32
endif
ASMFLAGS = -G 0 $(OPT_FLAGS) $(TARGET_CFLAGS) -mips3 $(DEF_INC_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
ASFLAGS := -march=vr4300 -mabi=32 $(foreach i,$(INCLUDE_DIRS),-I$(i)) $(foreach d,$(DEFINES),--defsym $(d))
RSPASMFLAGS := $(foreach d,$(DEFINES),-definelabel $(subst =, ,$(d)))
@@ -479,8 +490,8 @@ YELLOW := \033[0;33m
BLINK := \033[33;5m
endif
# Use Objcopy instead of extract_data_for_mio
ifeq ($(COMPILER),gcc)
# For non-IDO, use objcopy instead of extract_data_for_mio
ifneq ($(COMPILER),ido)
EXTRACT_DATA_FOR_MIO := $(OBJCOPY) -O binary --only-section=.data
endif
@@ -745,7 +756,7 @@ $(BUILD_DIR)/%.o: $(BUILD_DIR)/%.c
# Assemble assembly code
$(BUILD_DIR)/%.o: %.s
$(call print,Assembling:,$<,$@)
$(V)$(CC) -c $(CFLAGS) $(foreach i,$(INCLUDE_DIRS),-Wa,-I$(i)) -x assembler-with-cpp -MMD -MF $(BUILD_DIR)/$*.d -o $@ $<
$(V)$(CROSS)gcc -c $(ASMFLAGS) $(foreach i,$(INCLUDE_DIRS),-Wa,-I$(i)) -x assembler-with-cpp -MMD -MF $(BUILD_DIR)/$*.d -o $@ $<
# Assemble RSP assembly code
$(BUILD_DIR)/rsp/%.bin $(BUILD_DIR)/rsp/%_data.bin: rsp/%.s
@@ -788,7 +799,13 @@ $(ELF): $(O_FILES) $(YAY0_OBJ_FILES) $(SEG_FILES) $(BUILD_DIR)/$(LD_SCRIPT) unde
# Build ROM
$(ROM): $(ELF)
$(call print,Building ROM:,$<,$@)
ifeq ($(CONSOLE),n64)
$(V)$(OBJCOPY) --pad-to=0x800000 --gap-fill=0xFF $< $@ -O binary
else ifeq ($(CONSOLE),bb)
$(V)$(OBJCOPY) --gap-fill=0x00 $< $@ -O binary
$(V)dd if=$@ of=tmp bs=16K conv=sync
$(V)mv tmp $@
endif
$(V)$(N64CKSUM) $@
$(BUILD_DIR)/$(TARGET).objdump: $(ELF)

View File

@@ -37,7 +37,7 @@ This is a fork of the ultrasm64 repo by CrashOveride which includes the followin
**Hacker QOL:**
- Global, non-level based, star IDs (off by default) *
- FPS counter (use the function `print_fps(x,y)` anywhere that runs code every frame)
- Debug mode: prints mario's coordinates, angle and speed, and a FPS counter.
- 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 easily change the warp that EXIT COURSE takes you to via config.h, or disable it entirely. *
@@ -53,6 +53,7 @@ This is a fork of the ultrasm64 repo by CrashOveride which includes the followin
- 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. *
- 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. *
- The clown font includes the entire English alphabet.
- Colored ia4 text support. Format: `"@XXXXXXXX[YOUR TEXT]@--------"` (By ArcticJaguar725)
- 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.

View File

@@ -5,39 +5,39 @@ const GeoLayout chilly_chief_geo[] = {
GEO_OPEN_NODE(),
GEO_SCALE(0, 0x7333),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(1, 0, 0, 0, NULL),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(1, 0, 0, 0, NULL),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(1, 0, 0, 75, NULL),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 75, NULL),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(1, 0, 0, 0, NULL),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(1, 146, 0, 0, NULL),
GEO_ANIMATED_PART(LAYER_OPAQUE, 146, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(1, 0, 0, 0, chilly_chief_seg6_dl_06002B30),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, chilly_chief_seg6_dl_06002B30),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_ANIMATED_PART(1, 0, 0, -75, NULL),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, -75, NULL),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(1, 0, 0, 0, NULL),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(1, 146, 0, 0, NULL),
GEO_ANIMATED_PART(LAYER_OPAQUE, 146, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(1, 0, 0, 0, chilly_chief_seg6_dl_06002BC8),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, chilly_chief_seg6_dl_06002BC8),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_ANIMATED_PART(1, 0, 0, 0, NULL),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_BILLBOARD(),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_ALPHA, chilly_chief_seg6_dl_06002D88),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_ANIMATED_PART(1, 0, 0, 0, chilly_chief_seg6_dl_06002C60),
GEO_ANIMATED_PART(4, 0, 0, 0, chilly_chief_seg6_dl_06003010),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, chilly_chief_seg6_dl_06002C60),
GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, chilly_chief_seg6_dl_06003010),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
@@ -51,39 +51,39 @@ const GeoLayout chilly_chief_big_geo[] = {
GEO_OPEN_NODE(),
GEO_SCALE(0, 0xE666),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(1, 0, 0, 0, NULL),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(1, 0, 0, 0, NULL),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(1, 0, 0, 75, NULL),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 75, NULL),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(1, 0, 0, 0, NULL),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(1, 146, 0, 0, NULL),
GEO_ANIMATED_PART(LAYER_OPAQUE, 146, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(1, 0, 0, 0, chilly_chief_seg6_dl_06002B30),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, chilly_chief_seg6_dl_06002B30),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_ANIMATED_PART(1, 0, 0, -75, NULL),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, -75, NULL),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(1, 0, 0, 0, NULL),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(1, 146, 0, 0, NULL),
GEO_ANIMATED_PART(LAYER_OPAQUE, 146, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(1, 0, 0, 0, chilly_chief_seg6_dl_06002BC8),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, chilly_chief_seg6_dl_06002BC8),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_ANIMATED_PART(1, 0, 0, 0, NULL),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_BILLBOARD(),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_ALPHA, chilly_chief_seg6_dl_06002EF0),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_ANIMATED_PART(1, 0, 0, 0, chilly_chief_seg6_dl_06002C60),
GEO_ANIMATED_PART(4, 0, 0, 0, chilly_chief_seg6_dl_06003010),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, chilly_chief_seg6_dl_06002C60),
GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, chilly_chief_seg6_dl_06003010),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),

View File

@@ -13,7 +13,6 @@ UNUSED static const u64 binid_0 = 0;
#include "wiggler_body/model.inc.c"
#include "wiggler_body/anims/data.inc.c"
#include "wiggler_body/geo.inc.c"
#include "wiggler_body/anims/table.inc.c"
#include "wiggler_head/model.inc.c"

View File

@@ -8,6 +8,7 @@
#include "group11.h"
#include "bubba/geo.inc.c"
#include "wiggler_body/geo.inc.c"
#include "wiggler_head/geo.inc.c"
#include "lakitu_enemy/geo.inc.c"
#include "spiny_egg/geo.inc.c"

View File

@@ -10,7 +10,6 @@
#include "chillychief/model.inc.c"
#include "chillychief/anims/data.inc.c"
#include "chillychief/geo.inc.c"
#include "chillychief/anims/table.inc.c"
UNUSED static const u64 binid_0 = 0;

View File

@@ -7,4 +7,5 @@
#include "common1.h"
#include "group16.h"
#include "chillychief/geo.inc.c"
#include "moneybag/geo.inc.c"

View File

@@ -14,7 +14,6 @@ UNUSED static const u64 binid_0 = 0;
#include "manta/model.inc.c"
#include "manta/anims/data.inc.c"
#include "manta/geo.inc.c"
#include "manta/anims/table.inc.c"
UNUSED static const u64 binid_1 = 1;

View File

@@ -8,5 +8,6 @@
#include "group4.h"
#include "clam_shell/geo.inc.c"
#include "manta/geo.inc.c"
#include "sushi/geo.inc.c"
#include "unagi/geo.inc.c"

View File

@@ -2,56 +2,56 @@
const GeoLayout manta_seg5_geo_05008D14[] = {
GEO_SCALE(0, 16384),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(1, 0, 0, 0, NULL),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(1, 0, 0, 0, manta_seg5_dl_05006750),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, manta_seg5_dl_05006750),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(1, 440, 220, 6, NULL),
GEO_ANIMATED_PART(LAYER_OPAQUE, 440, 220, 6, NULL),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(1, 0, 0, 0, manta_seg5_dl_05005358),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, manta_seg5_dl_05005358),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(1, 220, 0, 0, manta_seg5_dl_050055A8),
GEO_ANIMATED_PART(LAYER_OPAQUE, 220, 0, 0, manta_seg5_dl_050055A8),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(1, 180, 0, 0, manta_seg5_dl_05005768),
GEO_ANIMATED_PART(LAYER_OPAQUE, 180, 0, 0, manta_seg5_dl_05005768),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_ANIMATED_PART(1, 440, -220, 6, NULL),
GEO_ANIMATED_PART(LAYER_OPAQUE, 440, -220, 6, NULL),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(1, 0, 0, 0, manta_seg5_dl_05005C38),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, manta_seg5_dl_05005C38),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(1, 220, 0, 0, manta_seg5_dl_05005E88),
GEO_ANIMATED_PART(LAYER_OPAQUE, 220, 0, 0, manta_seg5_dl_05005E88),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(1, 180, 0, 0, manta_seg5_dl_05006048),
GEO_ANIMATED_PART(LAYER_OPAQUE, 180, 0, 0, manta_seg5_dl_05006048),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_ANIMATED_PART(1, 0, 0, 0, NULL),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(1, 0, 0, 0, manta_seg5_dl_05006C08),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, manta_seg5_dl_05006C08),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(1, 168, 0, 0, manta_seg5_dl_05006B70),
GEO_ANIMATED_PART(LAYER_OPAQUE, 168, 0, 0, manta_seg5_dl_05006B70),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(1, 236, 0, 0, manta_seg5_dl_05006B08),
GEO_ANIMATED_PART(1, 236, 0, 0, manta_seg5_dl_05004E90),
GEO_ANIMATED_PART(LAYER_OPAQUE, 236, 0, 0, manta_seg5_dl_05006B08),
GEO_ANIMATED_PART(LAYER_OPAQUE, 236, 0, 0, manta_seg5_dl_05004E90),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_ANIMATED_PART(1, 688, 120, -6, NULL),
GEO_ANIMATED_PART(LAYER_OPAQUE, 688, 120, -6, NULL),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(1, 0, 0, 0, manta_seg5_dl_05005038),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, manta_seg5_dl_05005038),
GEO_CLOSE_NODE(),
GEO_ANIMATED_PART(1, 668, 170, 6, NULL),
GEO_ANIMATED_PART(LAYER_OPAQUE, 668, 170, 6, NULL),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(1, 0, 0, 0, manta_seg5_dl_05004DB8),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, manta_seg5_dl_05004DB8),
GEO_CLOSE_NODE(),
GEO_ANIMATED_PART(1, 688, -120, -6, NULL),
GEO_ANIMATED_PART(LAYER_OPAQUE, 688, -120, -6, NULL),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(1, 0, 0, 0, manta_seg5_dl_05005918),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, manta_seg5_dl_05005918),
GEO_CLOSE_NODE(),
GEO_ANIMATED_PART(1, 668, -170, 6, NULL),
GEO_ANIMATED_PART(LAYER_OPAQUE, 668, -170, 6, NULL),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(1, 0, 0, 0, manta_seg5_dl_05004A70),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, manta_seg5_dl_05004A70),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),

View File

@@ -4,9 +4,9 @@ const GeoLayout wiggler_body_geo[] = {
GEO_OPEN_NODE(),
GEO_SCALE(0, 16384),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(1, 0, 0, 0, NULL),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(1, 0, 0, 0, NULL),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
GEO_OPEN_NODE(),
GEO_BILLBOARD(),
GEO_OPEN_NODE(),
@@ -14,23 +14,23 @@ const GeoLayout wiggler_body_geo[] = {
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(1, -31, 0, 51, NULL),
GEO_ANIMATED_PART(LAYER_OPAQUE, -31, 0, 51, NULL),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(1, 0, 0, 0, wiggler_seg5_dl_0500BE98),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, wiggler_seg5_dl_0500BE98),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(1, 39, 0, 0, wiggler_seg5_dl_0500BE10),
GEO_ANIMATED_PART(LAYER_OPAQUE, 39, 0, 0, wiggler_seg5_dl_0500BE10),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(1, 41, 0, 0, wiggler_seg5_dl_0500BCB8),
GEO_ANIMATED_PART(LAYER_OPAQUE, 41, 0, 0, wiggler_seg5_dl_0500BCB8),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_ANIMATED_PART(1, -31, 0, -49, NULL),
GEO_ANIMATED_PART(LAYER_OPAQUE, -31, 0, -49, NULL),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(1, 0, 0, 0, wiggler_seg5_dl_0500C100),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, wiggler_seg5_dl_0500C100),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(1, 39, 0, 0, wiggler_seg5_dl_0500C078),
GEO_ANIMATED_PART(LAYER_OPAQUE, 39, 0, 0, wiggler_seg5_dl_0500C078),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(1, 41, 0, 0, wiggler_seg5_dl_0500BF20),
GEO_ANIMATED_PART(LAYER_OPAQUE, 41, 0, 0, wiggler_seg5_dl_0500BF20),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),

View File

@@ -86,11 +86,9 @@ ALIGNED8 static const Texture texture_hud_char_I[] = {
#include "textures/segment2/segment2.02400.rgba16.inc.c"
};
#if defined(VERSION_JP) || defined(VERSION_SH)
ALIGNED8 static const Texture texture_hud_char_J[] = {
#include "textures/segment2/segment2.02600.rgba16.inc.c"
};
#endif
ALIGNED8 static const Texture texture_hud_char_K[] = {
#include "textures/segment2/segment2.02800.rgba16.inc.c"
@@ -116,11 +114,9 @@ ALIGNED8 static const Texture texture_hud_char_P[] = {
#include "textures/segment2/segment2.03200.rgba16.inc.c"
};
#if defined(VERSION_JP) || defined(VERSION_SH)
ALIGNED8 static const Texture texture_hud_char_Q[] = {
#include "textures/segment2/segment2.03400.rgba16.inc.c"
};
#endif
ALIGNED8 static const Texture texture_hud_char_R[] = {
#include "textures/segment2/segment2.03600.rgba16.inc.c"
@@ -138,31 +134,25 @@ ALIGNED8 static const Texture texture_hud_char_U[] = {
#include "textures/segment2/segment2.03C00.rgba16.inc.c"
};
#if defined(VERSION_JP) || defined(VERSION_EU) || defined(VERSION_SH)
ALIGNED8 static const Texture texture_hud_char_V[] = {
#include "textures/segment2/segment2.03E00.rgba16.inc.c"
};
#endif
ALIGNED8 static const Texture texture_hud_char_W[] = {
#include "textures/segment2/segment2.04000.rgba16.inc.c"
};
#if defined(VERSION_JP) || defined(VERSION_SH)
ALIGNED8 static const Texture texture_hud_char_X[] = {
#include "textures/segment2/segment2.04200.rgba16.inc.c"
};
#endif
ALIGNED8 static const Texture texture_hud_char_Y[] = {
#include "textures/segment2/segment2.04400.rgba16.inc.c"
};
#if defined(VERSION_JP) || defined(VERSION_EU) || defined(VERSION_SH)
ALIGNED8 static const Texture texture_hud_char_Z[] = {
#include "textures/segment2/segment2.04600.rgba16.inc.c"
};
#endif
ALIGNED8 static const Texture texture_hud_char_apostrophe[] = {
#include "textures/segment2/segment2.04800.rgba16.inc.c"
@@ -178,7 +168,6 @@ ALIGNED8 static const Texture texture_hud_char_umlaut[] = {
};
#endif
#if defined(VERSION_JP) || defined(VERSION_SH)
ALIGNED8 static const Texture texture_hud_char_exclamation[] = {
#include "textures/segment2/segment2.04C00.rgba16.inc.c"// JP !
};
@@ -198,7 +187,6 @@ ALIGNED8 static const Texture texture_hud_char_ampersand[] = {
ALIGNED8 static const Texture texture_hud_char_percent[] = {
#include "textures/segment2/segment2.05400.rgba16.inc.c"// JP %
};
#endif
ALIGNED8 static const Texture texture_hud_char_multiply[] = {
#include "textures/segment2/segment2.05600.rgba16.inc.c"
@@ -216,11 +204,9 @@ ALIGNED8 static const Texture texture_hud_char_star[] = {
#include "textures/segment2/segment2.05C00.rgba16.inc.c"
};
#if defined(VERSION_JP) || defined(VERSION_SH)
ALIGNED8 static const Texture texture_hud_char_decimal_point[] = {
#include "textures/segment2/segment2.05E00.rgba16.inc.c"
};
#endif
#if defined(VERSION_JP) || defined(VERSION_SH)
ALIGNED8 static const Texture texture_hud_char_beta_key[] = {
@@ -1827,16 +1813,16 @@ const Texture *const main_hud_lut[] = {
texture_hud_char_4, texture_hud_char_5, texture_hud_char_6, texture_hud_char_7,
texture_hud_char_8, texture_hud_char_9, texture_hud_char_A, texture_hud_char_B,
texture_hud_char_C, texture_hud_char_D, texture_hud_char_E, texture_hud_char_F,
texture_hud_char_G, texture_hud_char_H, texture_hud_char_I, 0x0,
texture_hud_char_G, texture_hud_char_H, texture_hud_char_I, texture_hud_char_J,
texture_hud_char_K, texture_hud_char_L, texture_hud_char_M, texture_hud_char_N,
texture_hud_char_O, texture_hud_char_P, 0x0, texture_hud_char_R,
texture_hud_char_S, texture_hud_char_T, texture_hud_char_U, 0x0,
texture_hud_char_W, 0x0, texture_hud_char_Y, 0x0,
0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0,
texture_hud_char_O, texture_hud_char_P, texture_hud_char_Q, texture_hud_char_R,
texture_hud_char_S, texture_hud_char_T, texture_hud_char_U, texture_hud_char_V,
texture_hud_char_W, texture_hud_char_X, texture_hud_char_Y, texture_hud_char_Z,
texture_hud_char_exclamation, texture_hud_char_double_exclamation, texture_hud_char_question, texture_hud_char_ampersand,
texture_hud_char_percent, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0,
0x0, 0x0, texture_hud_char_multiply, texture_hud_char_coin,
texture_hud_char_mario_head, texture_hud_char_star, 0x0, 0x0,
texture_hud_char_mario_head, texture_hud_char_star, texture_hud_char_decimal_point, 0x0,
texture_hud_char_apostrophe, texture_hud_char_double_quote,
#else
texture_hud_char_0, texture_hud_char_1, texture_hud_char_2, texture_hud_char_3,

View File

@@ -3507,7 +3507,7 @@ UNUSED static const u64 behavior_data_unused_0 = 0;
const BehaviorScript bhvMario[] = {
BEGIN(OBJ_LIST_PLAYER),
SET_INT(oIntangibleTimer, 0),
OR_INT(oFlags, OBJ_FLAG_0100),
OR_INT(oFlags, OBJ_FLAG_PLAYER),
OR_INT(oUnk94, 0x0001),
SET_HITBOX(/*Radius*/ 37, /*Height*/ 160),
BEGIN_LOOP(),
@@ -3631,7 +3631,7 @@ const BehaviorScript bhvMenuButton[] = {
const BehaviorScript bhvMenuButtonManager[] = {
BEGIN(OBJ_LIST_LEVEL),
OR_INT(oFlags, (OBJ_FLAG_SET_THROW_MATRIX_FROM_TRANSFORM | OBJ_FLAG_0020 | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
OR_INT(oFlags, (OBJ_FLAG_SET_THROW_MATRIX_FROM_TRANSFORM | OBJ_FLAG_UPDATE_TRANSFORM_FOR_THROW_MATRIX | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
CALL_NATIVE(bhv_menu_button_manager_init),
BEGIN_LOOP(),
SET_INT(oIntangibleTimer, 0),
@@ -4828,7 +4828,7 @@ const BehaviorScript bhvHidden1upInPoleSpawner[] = {
const BehaviorScript bhvControllablePlatform[] = {
BEGIN(OBJ_LIST_SURFACE),
OR_INT(oFlags, (OBJ_FLAG_SET_THROW_MATRIX_FROM_TRANSFORM | OBJ_FLAG_0020 | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
OR_INT(oFlags, (OBJ_FLAG_SET_THROW_MATRIX_FROM_TRANSFORM | OBJ_FLAG_UPDATE_TRANSFORM_FOR_THROW_MATRIX | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
LOAD_COLLISION_DATA(hmc_seg7_collision_controllable_platform),
SET_HOME(),
CALL_NATIVE(bhv_controllable_platform_init),

View File

@@ -1,9 +1,9 @@
diff --git a/include/text_strings.h.in b/include/text_strings.h.in
index d266058..4b12426 100644
index 8ccc6b1..d2bb516 100644
--- a/include/text_strings.h.in
+++ b/include/text_strings.h.in
@@ -34,6 +34,12 @@
#define TEXT_HUD_WIDE_INFO2 _("STRETCH THE IMAGE TO 16:9")
@@ -33,6 +33,12 @@
#define TEXT_HUD_WIDE_INFO _("PLEASE CONFIGURE YOUR DISPLAY OR YOUR EMULATOR TO\nSTRETCH THE IMAGE TO 16:9")
#endif
+#define TEXT_CAM_INFO_SLOWEST _("CAM SPEED: SLOWEST")
@@ -302,13 +302,13 @@ index dfcf16a..e56f8c0 100644
}
}
diff --git a/src/game/game_init.c b/src/game/game_init.c
index 6cfa8f5..63158e1 100644
index 8693507..fb8729d 100644
--- a/src/game/game_init.c
+++ b/src/game/game_init.c
@@ -46,6 +46,11 @@ OSContPad gControllerPads[4];
u8 gControllerBits;
u8 gIsConsole;
u8 gBorderHeight;
@@ -49,6 +49,11 @@ u8 gBorderHeight;
#ifdef CUSTOM_DEBUG
u8 gCustomDebugMode;
#endif
+u8 gCameraSpeed = 2;
+u8 gWaterCamOverride;
+u8 gFlyingCamOverride;
@@ -317,7 +317,7 @@ index 6cfa8f5..63158e1 100644
#ifdef EEP
s8 gEepromProbe;
#endif
@@ -715,6 +720,7 @@ void thread5_game_loop(UNUSED void *arg) {
@@ -725,6 +730,7 @@ void thread5_game_loop(UNUSED void *arg) {
play_music(SEQ_PLAYER_SFX, SEQUENCE_ARGS(0, SEQ_SOUND_PLAYER), 0);
set_sound_mode(save_file_get_sound_mode());
@@ -326,7 +326,7 @@ index 6cfa8f5..63158e1 100644
gWidescreen = save_file_get_widescreen_mode();
#endif
diff --git a/src/game/game_init.h b/src/game/game_init.h
index 87386ce..47e9724 100644
index f3f650c..fdf20b6 100644
--- a/src/game/game_init.h
+++ b/src/game/game_init.h
@@ -45,6 +45,10 @@ extern u8 gIsConsole;
@@ -338,14 +338,14 @@ index 87386ce..47e9724 100644
+extern u8 gFlyingCamOverride;
+extern u8 gKeepCliffCam;
extern u8 gBorderHeight;
#ifdef EEP
extern s8 gEepromProbe;
#ifdef CUSTOM_DEBUG
extern u8 gCustomDebugMode;
diff --git a/src/game/ingame_menu.c b/src/game/ingame_menu.c
index 9cd458a..ac2d18c 100644
index 158154c..9ffefec 100644
--- a/src/game/ingame_menu.c
+++ b/src/game/ingame_menu.c
@@ -39,6 +39,12 @@ u8 textWideInfo[] = { TEXT_HUD_WIDE_INFO };
u8 textWideInfo2[] = { TEXT_HUD_WIDE_INFO2 };
@@ -38,6 +38,12 @@ u8 textPressL[] = { TEXT_HUD_PRESS_L };
u8 textWideInfo[] = { TEXT_HUD_WIDE_INFO };
#endif
+u8 textCamInfoSlowest[] = { TEXT_CAM_INFO_SLOWEST };
@@ -357,7 +357,7 @@ index 9cd458a..ac2d18c 100644
extern u8 gLastCompletedCourseNum;
extern u8 gLastCompletedStarNum;
@@ -1350,6 +1356,45 @@ void reset_red_coins_collected(void) {
@@ -1434,6 +1440,45 @@ void reset_red_coins_collected(void) {
gRedCoinsCollected = 0;
}
@@ -403,19 +403,23 @@ index 9cd458a..ac2d18c 100644
void change_dialog_camera_angle(void) {
if (cam_select_alt_mode(0) == CAM_SELECTION_MARIO) {
gDialogCameraAngleIndex = CAM_SELECTION_MARIO;
@@ -1779,6 +1824,7 @@ s16 render_pause_courses_and_castle(void) {
@@ -1866,6 +1911,11 @@ s16 render_pause_courses_and_castle(void) {
}
#ifdef WIDE
render_widescreen_setting();
+ render_camera_speed_setting();
if (gPlayer1Controller->buttonPressed & L_TRIG){
gWidescreen ^= 1;
save_file_set_widescreen_mode(gWidescreen);
+ if (gPlayer1Controller->buttonPressed & L_TRIG){
+ gWidescreen ^= 1;
+ save_file_set_widescreen_mode(gWidescreen);
+ }
#endif
if (gDialogTextAlpha < 250) {
gDialogTextAlpha += 25;
diff --git a/src/game/mario.c b/src/game/mario.c
index b381afa..7cb9549 100644
index c0b5f76..b6da9d4 100644
--- a/src/game/mario.c
+++ b/src/game/mario.c
@@ -1443,32 +1443,39 @@ void update_mario_inputs(struct MarioState *m) {
@@ -1460,32 +1460,39 @@ void update_mario_inputs(struct MarioState *m) {
void set_submerged_cam_preset_and_spawn_bubbles(struct MarioState *m) {
f32 heightBelowWater;
s16 camPreset;
@@ -550,7 +554,7 @@ index b27d869..7fbf045 100644
if (save_file_get_flags() & SAVE_FLAG_CAP_ON_GROUND) {
switch (gSaveBuffer.files[gCurrSaveFileNum - 1][0].capLevel) {
diff --git a/src/game/save_file.h b/src/game/save_file.h
index 00fc042..7062ead 100644
index 3ac0c4d..d46a7e1 100644
--- a/src/game/save_file.h
+++ b/src/game/save_file.h
@@ -62,6 +62,7 @@ struct MainMenuSaveData
@@ -560,7 +564,7 @@ index 00fc042..7062ead 100644
+ u8 cameraSpeedSetting: 3;
#ifdef VERSION_EU
u16 language;
u8 language: 2;
@@ -167,6 +168,8 @@ u16 save_file_get_sound_mode(void);
u8 save_file_get_widescreen_mode(void);
void save_file_set_widescreen_mode(u8 mode);

View File

@@ -10,7 +10,7 @@ endif
# Strip gzip header
$(BUILD_DIR)/%.szp: $(BUILD_DIR)/%.gz
$(call print,Converting:,$<,$@)
$(V)dd bs=10 skip=1 if=$< of=$(<:.gz=.gz.strip)
$(V)dd bs=10 skip=1 if=$< of=$(<:.gz=.gz.strip) status=none
$(V)$(FILESIZER) $(<:.gz=.gz.strip) $@ `stat --format="%s" $(<:.gz=.bin)`
# convert binary szp to object file

View File

@@ -84,8 +84,8 @@
//#define NO_FALL_DAMAGE_SOUND
// Number of coins to spawn the "100 coin" star. If you remove the define altogether, then there won't be a 100 coin star at all.
#define X_COIN_STAR 100
// Platform displacement 2 also known as momentum patch. Makes Mario keep the momemtum from moving platforms. Breaks treadmills.
//#define PLATFORM_DISPLACEMENT_2
// Platform displacement 2 also known as momentum patch. Makes Mario keep the momemtum from moving platforms. Doesn't break treadmills anymore!
#define PLATFORM_DISPLACEMENT_2
// Stars don't kick you out of the level
// #define NON_STOP_STARS
// Uncomment this if you want global star IDs (useful for creating an open world hack ala MVC)
@@ -109,6 +109,8 @@
#define EXPAND_AUDIO_HEAP
// Allow all surfaces types to have force, (doesn't require setting force, just allows it to be optional).
#define ALL_SURFACES_HAVE_FORCE
// Custom debug mode. Press DPAD left to show the debug UI. Press DPAD right to enter the noclip mode.
//#define CUSTOM_DEBUG
// BUG/GAME QOL FIXES
// Fix instant warp offset not working when warping across different areas

View File

@@ -28,23 +28,23 @@
#define RESPAWN_INFO_DONT_RESPAWN 0xFF
/* oFlags */
#define OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE (1 << 0) // 0x00000001
#define OBJ_FLAG_MOVE_XZ_USING_FVEL (1 << 1) // 0x00000002
#define OBJ_FLAG_MOVE_Y_WITH_TERMINAL_VEL (1 << 2) // 0x00000004
#define OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW (1 << 3) // 0x00000008
#define OBJ_FLAG_SET_FACE_ANGLE_TO_MOVE_ANGLE (1 << 4) // 0x00000010
#define OBJ_FLAG_0020 (1 << 5) // 0x00000020
#define OBJ_FLAG_COMPUTE_DIST_TO_MARIO (1 << 6) // 0x00000040
#define OBJ_FLAG_ACTIVE_FROM_AFAR (1 << 7) // 0x00000080
#define OBJ_FLAG_0100 (1 << 8) // 0x00000100
#define OBJ_FLAG_TRANSFORM_RELATIVE_TO_PARENT (1 << 9) // 0x00000200
#define OBJ_FLAG_HOLDABLE (1 << 10) // 0x00000400
#define OBJ_FLAG_SET_THROW_MATRIX_FROM_TRANSFORM (1 << 11) // 0x00000800
#define OBJ_FLAG_1000 (1 << 12) // 0x00001000
#define OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO (1 << 13) // 0x00002000
#define OBJ_FLAG_PERSISTENT_RESPAWN (1 << 14) // 0x00004000
#define OBJ_FLAG_8000 (1 << 15) // 0x00008000
#define OBJ_FLAG_30 (1 << 30) // 0x40000000
#define OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE (1 << 0) // 0x00000001
#define OBJ_FLAG_MOVE_XZ_USING_FVEL (1 << 1) // 0x00000002
#define OBJ_FLAG_MOVE_Y_WITH_TERMINAL_VEL (1 << 2) // 0x00000004
#define OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW (1 << 3) // 0x00000008
#define OBJ_FLAG_SET_FACE_ANGLE_TO_MOVE_ANGLE (1 << 4) // 0x00000010
#define OBJ_FLAG_UPDATE_TRANSFORM_FOR_THROW_MATRIX (1 << 5) // 0x00000020
#define OBJ_FLAG_COMPUTE_DIST_TO_MARIO (1 << 6) // 0x00000040
#define OBJ_FLAG_ACTIVE_FROM_AFAR (1 << 7) // 0x00000080
#define OBJ_FLAG_PLAYER (1 << 8) // 0x00000100
#define OBJ_FLAG_TRANSFORM_RELATIVE_TO_PARENT (1 << 9) // 0x00000200
#define OBJ_FLAG_HOLDABLE (1 << 10) // 0x00000400
#define OBJ_FLAG_SET_THROW_MATRIX_FROM_TRANSFORM (1 << 11) // 0x00000800
#define OBJ_FLAG_1000 (1 << 12) // 0x00001000
#define OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO (1 << 13) // 0x00002000
#define OBJ_FLAG_PERSISTENT_RESPAWN (1 << 14) // 0x00004000
#define OBJ_FLAG_8000 (1 << 15) // 0x00008000
#define OBJ_FLAG_HITBOX_WAS_SET (1 << 30) // 0x40000000
/* oHeldState */
#define HELD_FREE 0

View File

@@ -17,9 +17,6 @@
// Whether the node type has a function pointer of type GraphNodeFunc
#define GRAPH_NODE_TYPE_FUNCTIONAL 0x100
// Type used for Bowser and an unused geo function in obj_behaviors.c
#define GRAPH_NODE_TYPE_400 0x400
// The discriminant for different types of geo nodes
#define GRAPH_NODE_TYPE_ROOT 0x001
#define GRAPH_NODE_TYPE_ORTHO_PROJECTION 0x002

View File

@@ -98,8 +98,7 @@ void bobomb_act_chase_mario(void) {
}
void bobomb_act_launched(void) {
s16 collisionFlags = 0;
collisionFlags = object_step();
s16 collisionFlags = object_step();
if ((collisionFlags & OBJ_COL_FLAG_GROUNDED) == OBJ_COL_FLAG_GROUNDED)
o->oAction = BOBOMB_ACT_EXPLODE; /* bit 0 */
}
@@ -203,7 +202,7 @@ void bobomb_thrown_loop(void) {
o->header.gfx.node.flags &= ~GRAPH_RENDER_INVISIBLE;
o->oHeldState = 0;
o->oFlags &= ~0x8; /* bit 3 */
o->oFlags &= ~OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW; /* bit 3 */
o->oForwardVel = 25.0;
o->oVelY = 20.0;
o->oAction = BOBOMB_ACT_LAUNCHED;

View File

@@ -11,10 +11,8 @@ void bhv_big_boulder_init(void) {
}
void boulder_act_1(void) {
s16 sp1E;
sp1E = object_step_without_floor_orient();
if ((sp1E & 0x09) == 0x01 && o->oVelY > 10.0f) {
s16 collisionFlags = object_step_without_floor_orient();
if ((collisionFlags & OBJ_COL_FLAGS_LANDED) == OBJ_COL_FLAG_GROUNDED && o->oVelY > 10.0f) {
cur_obj_play_sound_2(SOUND_GENERAL_GRINDEL_ROLL);
spawn_mist_particles();
}

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