mirror of
https://github.com/n64decomp/sm64.git
synced 2024-11-05 17:05:09 -05:00
Refresh 14
This commit is contained in:
parent
ecd3d152fb
commit
f9982e0ef5
46
CHANGES
46
CHANGES
@ -1,3 +1,49 @@
|
||||
Refresh 14
|
||||
|
||||
1.) Label whomp and some object fields (#1174)
|
||||
2.) Generate MIO0 object files using binutils `ld` instead of `as` (#1173)
|
||||
3.) Bowser documentation (#1166)
|
||||
4.) Fix comment syntax in 00_sound_player.0 (#1172)
|
||||
5.) Rename in-game menu variables (#1163)
|
||||
6.) Document double red coin sound and JP sound glitch (#1170)
|
||||
7.) Document different bug in external.c (#1168)
|
||||
8.) updated names/types of octagonal platform data (#1164)
|
||||
9.) Label a number of unnamed variables. (#1169)
|
||||
10.) Document JP PU sound glitch (#1167)
|
||||
11.) Set model ids to spawn_triangle_break_particles (#1165)
|
||||
12.) Fix borders in clear_frame_buffer (#1162)
|
||||
13.) Fix seq header files for 64-bit (#1161)
|
||||
14.) Game_init.c remaining doc (#1158)
|
||||
15.) Label a couple static variables in sound_init.c (#1159)
|
||||
16.) Properly define dialog values (status, flags, cutscenes) (#1153)
|
||||
17.) Label all of amp's assets. (#1018)
|
||||
18.) Split audio/synthesis.c into Shindou/non-Shindou files (#1144)
|
||||
19.) Avoid CC_CHECK warnings when using gcc (#1157)
|
||||
20.) level_select_menu.c => title_screen.c (#1152)
|
||||
21.) Use C preprocessor on assembly files (#1126)
|
||||
22.) Replace output_level_headers.py with sed equivalent (#1109)
|
||||
23.) Fix CC_CHECK warnings related to unused symbols and UB (#1155)
|
||||
24.) Define remaining floor lower limit values (#1147)
|
||||
25.) use r+b mode for libultra.a patch tool (#1148)
|
||||
26.) Use proper values for gPrevFrameObjectCount ifs (#1146)
|
||||
27.) Some minor bowser.inc.c labelling. (#1150)
|
||||
28.) fix king bob-omb texture pointers (#1145)
|
||||
29.) Split audio/load.c into Shindou/non-Shindou files (#1143)
|
||||
30.) Small Shindou audio cleanups (#1142)
|
||||
31.) Fix endians in ALSeqData (#1141)
|
||||
32.) Document S8 decoder rsp operation and some more (#1139)
|
||||
33.) Fix Shindou synthesis_process_note fake match (#1140)
|
||||
34.) More audio documentation, for the new rsp code and other fixes (#1138)
|
||||
35.) Build fixes for macOS: cpp, clang, recomp, aiff_extract_codebook (#1135)
|
||||
36.) Add ENABLE_RUMBLE to config.h (#1122)
|
||||
37.) Reduce recomp memory consumption by using smaller disassembly blocks (#1128)
|
||||
38.) Makefile fixes (#1123)
|
||||
39.) Update README.md
|
||||
40.) Update README.md
|
||||
41.) Reflect current decompilation status
|
||||
42.) Allow both archives and ELF objects to be patched (#1127)
|
||||
43.) Remove WIP mention in README for sh version.
|
||||
|
||||
Refresh 13 2
|
||||
|
||||
- No more nonmatchings remain for all builds including Shindou.
|
||||
|
68
Makefile
68
Makefile
@ -304,12 +304,6 @@ else
|
||||
COPT := $(IDO_ROOT)/copt
|
||||
endif
|
||||
endif
|
||||
# Prefer gcc's cpp if installed on the system
|
||||
ifneq (,$(call find-command,cpp-10))
|
||||
CPP := cpp-10
|
||||
else
|
||||
CPP := cpp
|
||||
endif
|
||||
LD := $(CROSS)ld
|
||||
AR := $(CROSS)ar
|
||||
OBJDUMP := $(CROSS)objdump
|
||||
@ -328,6 +322,15 @@ endif
|
||||
C_DEFINES := $(foreach d,$(DEFINES),-D$(d))
|
||||
DEF_INC_CFLAGS := $(foreach i,$(INCLUDE_DIRS),-I$(i)) $(C_DEFINES)
|
||||
|
||||
# Prefer clang as C preprocessor if installed on the system
|
||||
ifneq (,$(call find-command,clang))
|
||||
CPP := clang
|
||||
CPPFLAGS := -E -P -x c -Wno-trigraphs $(DEF_INC_CFLAGS)
|
||||
else
|
||||
CPP := cpp
|
||||
CPPFLAGS := -P -Wno-trigraphs $(DEF_INC_CFLAGS)
|
||||
endif
|
||||
|
||||
# Check code syntax with host compiler
|
||||
CC_CHECK := gcc
|
||||
CC_CHECK_CFLAGS := -fsyntax-only -fsigned-char $(CC_CFLAGS) $(TARGET_CFLAGS) -std=gnu90 -Wall -Wextra -Wno-format-security -Wno-main -DNON_MATCHING -DAVOID_UB $(DEF_INC_CFLAGS)
|
||||
@ -343,9 +346,6 @@ endif
|
||||
ASFLAGS := -march=vr4300 -mabi=32 $(foreach i,$(INCLUDE_DIRS),-I$(i)) $(foreach d,$(DEFINES),--defsym $(d))
|
||||
RSPASMFLAGS := $(foreach d,$(DEFINES),-definelabel $(subst =, ,$(d)))
|
||||
|
||||
# C preprocessor flags
|
||||
CPPFLAGS := -P -Wno-trigraphs $(DEF_INC_CFLAGS)
|
||||
|
||||
ifeq ($(shell getconf LONG_BIT), 32)
|
||||
# Work around memory allocation bug in QEMU
|
||||
export QEMU_GUEST_BASE := 1
|
||||
@ -437,7 +437,7 @@ $(SOUND_BIN_DIR)/sound_data.o: $(SOUND_BIN_DIR)/sound_data.ctl.inc.c $(SO
|
||||
$(BUILD_DIR)/levels/scripts.o: $(BUILD_DIR)/include/level_headers.h
|
||||
|
||||
ifeq ($(VERSION),sh)
|
||||
$(BUILD_DIR)/src/audio/load.o: $(SOUND_BIN_DIR)/bank_sets.inc.c $(SOUND_BIN_DIR)/sequences_header.inc.c $(SOUND_BIN_DIR)/ctl_header.inc.c $(SOUND_BIN_DIR)/tbl_header.inc.c
|
||||
$(BUILD_DIR)/src/audio/load_sh.o: $(SOUND_BIN_DIR)/bank_sets.inc.c $(SOUND_BIN_DIR)/sequences_header.inc.c $(SOUND_BIN_DIR)/ctl_header.inc.c $(SOUND_BIN_DIR)/tbl_header.inc.c
|
||||
endif
|
||||
|
||||
$(CRASH_TEXTURE_C_FILES): TEXTURE_ENCODING := u32
|
||||
@ -521,11 +521,11 @@ $(BUILD_DIR)/levels/%/leveldata.elf: $(BUILD_DIR)/levels/%/leveldata.o $(BUILD_D
|
||||
$(V)$(LD) -e 0 -Ttext=$(SEGMENT_ADDRESS) -Map $@.map --just-symbols=$(BUILD_DIR)/bin/$(TEXTURE_BIN).elf -o $@ $<
|
||||
|
||||
$(BUILD_DIR)/%.bin: $(BUILD_DIR)/%.elf
|
||||
$(call print,Extracting compressionable data from:,$<,$@)
|
||||
$(call print,Extracting compressible data from:,$<,$@)
|
||||
$(V)$(EXTRACT_DATA_FOR_MIO) $< $@
|
||||
|
||||
$(BUILD_DIR)/levels/%/leveldata.bin: $(BUILD_DIR)/levels/%/leveldata.elf
|
||||
$(call print,Extracting compressionable data from:,$<,$@)
|
||||
$(call print,Extracting compressible data from:,$<,$@)
|
||||
$(V)$(EXTRACT_DATA_FOR_MIO) $< $@
|
||||
|
||||
# Compress binary file
|
||||
@ -536,7 +536,7 @@ $(BUILD_DIR)/%.mio0: $(BUILD_DIR)/%.bin
|
||||
# convert binary mio0 to object file
|
||||
$(BUILD_DIR)/%.mio0.o: $(BUILD_DIR)/%.mio0
|
||||
$(call print,Converting MIO0 to ELF:,$<,$@)
|
||||
$(V)printf ".section .data\n\n.incbin \"$<\"\n" | $(AS) $(ASFLAGS) -o $@
|
||||
$(V)$(LD) -r -b binary $< -o $@
|
||||
|
||||
|
||||
#==============================================================================#
|
||||
@ -548,7 +548,7 @@ $(BUILD_DIR)/%.table: %.aiff
|
||||
$(V)$(AIFF_EXTRACT_CODEBOOK) $< >$@
|
||||
|
||||
$(BUILD_DIR)/%.aifc: $(BUILD_DIR)/%.table %.aiff
|
||||
$(call print,Encoding VADPCM:,$<,$@)
|
||||
$(call print,Encoding ADPCM:,$(word 2,$^),$@)
|
||||
$(V)$(VADPCM_ENC) -c $^ $@
|
||||
|
||||
$(ENDIAN_BITWIDTH): $(TOOLS_DIR)/determine-endian-bitwidth.c
|
||||
@ -556,8 +556,8 @@ $(ENDIAN_BITWIDTH): $(TOOLS_DIR)/determine-endian-bitwidth.c
|
||||
$(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 > $@
|
||||
@$(RM) $@.dummy1
|
||||
@$(RM) $@.dummy2
|
||||
$(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"
|
||||
@ -593,7 +593,7 @@ $(SOUND_BIN_DIR)/%.m64: $(SOUND_BIN_DIR)/%.o
|
||||
|
||||
# Convert binary file to a comma-separated list of byte values for inclusion in C code
|
||||
$(BUILD_DIR)/%.inc.c: $(BUILD_DIR)/%
|
||||
$(call print,Piping:,$<,$@)
|
||||
$(call print,Converting to C:,$<,$@)
|
||||
$(V)hexdump -v -e '1/1 "0x%X,"' $< > $@
|
||||
$(V)echo >> $@
|
||||
|
||||
@ -624,7 +624,7 @@ $(BUILD_DIR)/text/%/define_text.inc.c: text/define_text.inc.c text/%/courses.h t
|
||||
# Level headers
|
||||
$(BUILD_DIR)/include/level_headers.h: levels/level_headers.h.in
|
||||
$(call print,Preprocessing level headers:,$<,$@)
|
||||
$(V)$(CPP) $(CPPFLAGS) -I . levels/level_headers.h.in | $(PYTHON) $(TOOLS_DIR)/output_level_headers.py > $(BUILD_DIR)/include/level_headers.h
|
||||
$(V)$(CPP) $(CPPFLAGS) -I . $< | sed -E 's|(.+)|#include "\1"|' > $@
|
||||
|
||||
# Run asm_processor on files that have NON_MATCHING code
|
||||
ifeq ($(NON_MATCHING),0)
|
||||
@ -667,46 +667,36 @@ ifeq ($(COMPILER),ido)
|
||||
$(BUILD_DIR)/lib/src/string.o: OPT_FLAGS := -O2
|
||||
$(BUILD_DIR)/lib/src/gu%.o: OPT_FLAGS := -O3
|
||||
$(BUILD_DIR)/lib/src/al%.o: OPT_FLAGS := -O3
|
||||
# For the asm-processor, since it doesn't support -O3. Probably not actually compiled with these flags.
|
||||
|
||||
ifeq ($(VERSION),sh)
|
||||
$(BUILD_DIR)/lib/src/unk_shindou_file.o: OPT_FLAGS := -O1
|
||||
$(BUILD_DIR)/lib/src/func_sh_80304D20.o: OPT_FLAGS := -O1
|
||||
$(BUILD_DIR)/lib/src/_Printf.o: OPT_FLAGS := -O3
|
||||
$(BUILD_DIR)/lib/src/contramread.o: OPT_FLAGS := -O1
|
||||
$(BUILD_DIR)/lib/src/osPfsIsPlug.o: OPT_FLAGS := -O1
|
||||
$(BUILD_DIR)/lib/src/osAiSetFrequency.o: OPT_FLAGS := -O1
|
||||
$(BUILD_DIR)/lib/src/contramwrite.o: OPT_FLAGS := -O1
|
||||
$(BUILD_DIR)/lib/src/sprintf.o: OPT_FLAGS := -O3
|
||||
$(BUILD_DIR)/lib/src/_Litob.o: OPT_FLAGS := -O3
|
||||
$(BUILD_DIR)/lib/src/_Ldtob.o: OPT_FLAGS := -O3
|
||||
$(BUILD_DIR)/lib/src/_Ldtob.o: OPT_FLAGS := -O3
|
||||
$(BUILD_DIR)/lib/src/_Litob.o: OPT_FLAGS := -O3
|
||||
$(BUILD_DIR)/lib/src/_Printf.o: OPT_FLAGS := -O3
|
||||
$(BUILD_DIR)/lib/src/sprintf.o: OPT_FLAGS := -O3
|
||||
$(BUILD_DIR)/lib/src/osDriveRomInit.o: OPT_FLAGS := -g
|
||||
endif
|
||||
ifeq ($(VERSION),eu)
|
||||
$(BUILD_DIR)/lib/src/_Litob.o: OPT_FLAGS := -O3
|
||||
$(BUILD_DIR)/lib/src/_Ldtob.o: OPT_FLAGS := -O3
|
||||
$(BUILD_DIR)/lib/src/_Litob.o: OPT_FLAGS := -O3
|
||||
$(BUILD_DIR)/lib/src/_Printf.o: OPT_FLAGS := -O3
|
||||
$(BUILD_DIR)/lib/src/sprintf.o: OPT_FLAGS := -O3
|
||||
|
||||
# Enable loop unrolling except for external.c (external.c might also have used
|
||||
# unrolling, but it makes one loop harder to match).
|
||||
# For all audio files other than external.c and port_eu.c, put string literals
|
||||
# in .data. (In Shindou, the port_eu.c string literals also moved to .data.)
|
||||
$(BUILD_DIR)/src/audio/%.o: OPT_FLAGS := -O2 -use_readwrite_const
|
||||
$(BUILD_DIR)/src/audio/port_eu.o: OPT_FLAGS := -O2
|
||||
$(BUILD_DIR)/src/audio/external.o: OPT_FLAGS := -O2 -Wo,-loopunroll,0
|
||||
endif
|
||||
ifeq ($(VERSION_JP_US),true)
|
||||
$(BUILD_DIR)/src/audio/%.o: OPT_FLAGS := -O2 -Wo,-loopunroll,0
|
||||
$(BUILD_DIR)/src/audio/load.o: OPT_FLAGS := -O2 -framepointer -Wo,-loopunroll,0
|
||||
endif
|
||||
ifeq ($(VERSION_JP_US),true)
|
||||
$(BUILD_DIR)/src/audio/load.o: OPT_FLAGS := -O2 -Wo,-loopunroll,0 -framepointer
|
||||
# The source-to-source optimizer copt is enabled for audio. This makes it use
|
||||
# acpp, which needs -Wp,-+ to handle C++-style comments.
|
||||
# All other files than external.c should really use copt, but only a few have
|
||||
# been matched so far.
|
||||
$(BUILD_DIR)/src/audio/effects.o: OPT_FLAGS := -O2 -Wo,-loopunroll,0 -sopt,-inline=sequence_channel_process_sound,-scalaroptimize=1 -Wp,-+
|
||||
$(BUILD_DIR)/src/audio/synthesis.o: OPT_FLAGS := -O2 -sopt,-scalaroptimize=1 -Wp,-+
|
||||
$(BUILD_DIR)/src/audio/synthesis.o: OPT_FLAGS := -O2 -Wo,-loopunroll,0 -sopt,-scalaroptimize=1 -Wp,-+
|
||||
endif
|
||||
$(BUILD_DIR)/src/audio/external.o: OPT_FLAGS := -O2 -Wo,-loopunroll,0
|
||||
|
||||
# Add a target for build/eu/src/audio/*.copt to make it easier to see debug
|
||||
$(BUILD_DIR)/src/audio/%.acpp: src/audio/%.c
|
||||
@ -720,7 +710,7 @@ endif
|
||||
# Assemble assembly code
|
||||
$(BUILD_DIR)/%.o: %.s
|
||||
$(call print,Assembling:,$<,$@)
|
||||
$(V)$(AS) $(ASFLAGS) -MD $(BUILD_DIR)/$*.d -o $@ $<
|
||||
$(V)$(CPP) $(CPPFLAGS) $< | $(AS) $(ASFLAGS) -MD $(BUILD_DIR)/$*.d -o $@
|
||||
|
||||
# Assemble RSP assembly code
|
||||
$(BUILD_DIR)/rsp/%.bin $(BUILD_DIR)/rsp/%_data.bin: rsp/%.s
|
||||
@ -736,7 +726,7 @@ $(BUILD_DIR)/$(LD_SCRIPT): $(LD_SCRIPT)
|
||||
$(BUILD_DIR)/libultra.a: $(ULTRA_O_FILES)
|
||||
@$(PRINT) "$(GREEN)Linking libultra: $(BLUE)$@ $(NO_COL)\n"
|
||||
$(V)$(AR) rcs -o $@ $(ULTRA_O_FILES)
|
||||
$(V)$(TOOLS_DIR)/patch_libultra_math $@
|
||||
$(V)$(TOOLS_DIR)/patch_elf_32bit $@
|
||||
|
||||
# Link libgoddard
|
||||
$(BUILD_DIR)/libgoddard.a: $(GODDARD_O_FILES)
|
||||
|
@ -161,8 +161,8 @@ endef
|
||||
ifneq ($(MAKECMDGOALS),clean)
|
||||
ifneq ($(MAKECMDGOALS),distclean)
|
||||
$(BUILD_DIR)/level_rules.mk: levels/level_rules.mk levels/level_defines.h
|
||||
@$(PRINT) "$(GREEN)Preprocessing level make rules: $(BLUE)$@ $(NO_COL)\n"
|
||||
@$(CPP) $(VERSION_CFLAGS) -I . -o $@ $<
|
||||
$(call print,Preprocessing level make rules:,$<,$@)
|
||||
$(V)$(CPP) $(CPPFLAGS) $(VERSION_CFLAGS) -I . -o $@ $<
|
||||
include $(BUILD_DIR)/level_rules.mk
|
||||
endif
|
||||
endif
|
||||
@ -179,11 +179,11 @@ $(eval $(call level_rules,menu,generic)) # Menu (File Select)
|
||||
|
||||
# Ending cake textures are generated in a special way
|
||||
$(BUILD_DIR)/levels/ending/cake_eu.inc.c: levels/ending/cake_eu.png
|
||||
@$(PRINT) "$(GREEN)Splitting $(YELLOW)$< $(GREEN)to: $(BLUE)$@ $(NO_COL)\n"
|
||||
@$(SKYCONV) --type cake-eu --split $^ $(BUILD_DIR)/levels/ending
|
||||
$(call print,Splitting:,$<,$@)
|
||||
$(V)$(SKYCONV) --type cake-eu --split $^ $(BUILD_DIR)/levels/ending
|
||||
$(BUILD_DIR)/levels/ending/cake.inc.c: levels/ending/cake.png
|
||||
@$(PRINT) "$(GREEN)Splitting $(YELLOW)$< $(GREEN)to: $(BLUE)$@ $(NO_COL)\n"
|
||||
@$(SKYCONV) --type cake --split $^ $(BUILD_DIR)/levels/ending
|
||||
$(call print,Splitting:,$<,$@)
|
||||
$(V)$(SKYCONV) --type cake --split $^ $(BUILD_DIR)/levels/ending
|
||||
|
||||
# --------------------------------------
|
||||
# Texture Bin Rules
|
||||
@ -250,8 +250,8 @@ $(BUILD_DIR)/bin/eu/translation_fr.elf: SEGMENT_ADDRESS := 0x19000000
|
||||
# --------------------------------------
|
||||
|
||||
$(BUILD_DIR)/bin/%_skybox.c: textures/skyboxes/%.png
|
||||
@$(PRINT) "$(GREEN)Splitting $(YELLOW)$< $(GREEN)to: $(BLUE)$@ $(NO_COL)\n"
|
||||
@$(SKYCONV) --type sky --split $^ $(BUILD_DIR)/bin
|
||||
$(call print,Splitting:,$<,$@)
|
||||
$(V)$(SKYCONV) --type sky --split $^ $(BUILD_DIR)/bin
|
||||
|
||||
$(BUILD_DIR)/bin/%_skybox.elf: SEGMENT_ADDRESS := 0x0A000000
|
||||
|
||||
|
@ -95,10 +95,10 @@ Resulting artifacts can be found in the `build` directory.
|
||||
|
||||
The full list of configurable variables are listed below, with the default being the first listed:
|
||||
|
||||
* ``VERSION``: ``us``, ``jp``, ``eu``, ``sh`` (WIP)
|
||||
* ``VERSION``: ``us``, ``jp``, ``eu``, ``sh``
|
||||
* ``GRUCODE``: ``f3d_old``, ``f3d_new``, ``f3dex``, ``f3dex2``, ``f3dzex``
|
||||
* ``COMPARE``: ``1`` (compare ROM hash), ``0`` (do not compare ROM hash)
|
||||
* ``NON_MATCHING``: Use functionally equivalent C implementations for non-matchings (Currently there aren't any non-matchings, but this will apply to Shindou and iQue). Also will avoid instances of undefined behavior.
|
||||
* ``NON_MATCHING``: Use functionally equivalent C implementations for non-matchings (Currently there aren't any non-matchings, but this will apply to iQue). Also will avoid instances of undefined behavior.
|
||||
* ``CROSS``: Cross-compiler tool prefix (Example: ``mips64-elf-``).
|
||||
|
||||
### macOS
|
||||
@ -111,7 +111,7 @@ With macOS, you may either use Homebrew or [Docker](#docker-installation).
|
||||
Install [Homebrew](https://brew.sh) and the following dependencies:
|
||||
```
|
||||
brew update
|
||||
brew install capstone coreutils gcc make pkg-config tehzz/n64-dev/mips64-elf-binutils
|
||||
brew install capstone coreutils make pkg-config tehzz/n64-dev/mips64-elf-binutils
|
||||
```
|
||||
|
||||
#### Step 2: Copy baserom(s) for asset extraction
|
||||
|
@ -1,5 +1,4 @@
|
||||
// 0x08003E30
|
||||
static const s16 amp_seg8_animvalue_08003E30[] = {
|
||||
static const s16 dAmpAnimValue[] = {
|
||||
0x0000, 0x0000, 0x0D79, 0x1AF2, 0x286B, 0x35E4, 0x435D, 0x50D6,
|
||||
0x5E50, 0x6BC9, 0x7942, 0x86BE, 0x9437, 0xA1B0, 0xAF2A, 0xBCA3,
|
||||
0xCA1C, 0xD795, 0xE50E, 0xF287, 0x1872, 0x0000, 0x1AF2, 0x35E4,
|
||||
@ -23,8 +22,7 @@ static const s16 amp_seg8_animvalue_08003E30[] = {
|
||||
0xC001, 0x3FFF,
|
||||
};
|
||||
|
||||
// 0x08003F74
|
||||
static const u16 amp_seg8_animindex_08003F74[] = {
|
||||
static const u16 dAmpAnimIndex[] = {
|
||||
0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,
|
||||
0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00A1,
|
||||
0x0001, 0x0000, 0x0013, 0x008D, 0x0001, 0x00A0,
|
||||
@ -40,15 +38,14 @@ static const u16 amp_seg8_animindex_08003F74[] = {
|
||||
0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x004E,
|
||||
};
|
||||
|
||||
// 0x0800401C
|
||||
static const struct Animation amp_seg8_anim_0800401C = {
|
||||
static const struct Animation dAmpAnimation = {
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0x13,
|
||||
ANIMINDEX_NUMPARTS(amp_seg8_animindex_08003F74),
|
||||
amp_seg8_animvalue_08003E30,
|
||||
amp_seg8_animindex_08003F74,
|
||||
ANIMINDEX_NUMPARTS(dAmpAnimIndex),
|
||||
dAmpAnimValue,
|
||||
dAmpAnimIndex,
|
||||
0,
|
||||
};
|
@ -1 +1 @@
|
||||
#include "anim_0800401C.inc.c"
|
||||
#include "animation.inc.c"
|
||||
|
@ -1,4 +1,3 @@
|
||||
// 0x08004034
|
||||
const struct Animation *const amp_seg8_anims_08004034[] = {
|
||||
&_seg8_anim_0800401C,
|
||||
const struct Animation *const dAmpAnimsList[] = {
|
||||
&dAmpAnimation,
|
||||
};
|
||||
|
@ -1,19 +1,18 @@
|
||||
// 0x0F000028
|
||||
const GeoLayout amp_geo[] = {
|
||||
const GeoLayout dAmpGeo[] = {
|
||||
GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0xC8, 100),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_SCALE(0x00, 16384),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, amp_seg8_dl_08002C88),
|
||||
GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, dAmpEyeDl),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_SWITCH_CASE(2, geo_switch_anim_state),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, amp_seg8_dl_08002BA0),
|
||||
GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, dAmpElectricityDl),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
@ -21,7 +20,7 @@ const GeoLayout amp_geo[] = {
|
||||
GEO_SWITCH_CASE(2, geo_switch_anim_state),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, amp_seg8_dl_08002BA0),
|
||||
GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, dAmpElectricityDl),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
@ -29,7 +28,7 @@ const GeoLayout amp_geo[] = {
|
||||
GEO_SWITCH_CASE(2, geo_switch_anim_state),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, amp_seg8_dl_08002BA0),
|
||||
GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, dAmpElectricityDl),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
@ -37,16 +36,16 @@ const GeoLayout amp_geo[] = {
|
||||
GEO_SWITCH_CASE(2, geo_switch_anim_state),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, amp_seg8_dl_08002BA0),
|
||||
GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, dAmpElectricityDl),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, amp_seg8_dl_08002D70),
|
||||
GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, dAmpMouthDl),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_BILLBOARD(),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_DISPLAY_LIST(LAYER_ALPHA, amp_seg8_dl_08002E58),
|
||||
GEO_DISPLAY_LIST(LAYER_ALPHA, dAmpBodyDl),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
|
@ -1,27 +1,22 @@
|
||||
// Amp
|
||||
|
||||
// 0x08000F18
|
||||
ALIGNED8 static const Texture amp_seg8_texture_08000F18[] = {
|
||||
ALIGNED8 static const Texture dAmpElectricityTexture[] = {
|
||||
#include "actors/amp/amp_electricity.rgba16.inc.c"
|
||||
};
|
||||
|
||||
// 0x08001318
|
||||
ALIGNED8 static const Texture amp_seg8_texture_08001318[] = {
|
||||
ALIGNED8 static const Texture dAmpEyesTexture[] = {
|
||||
#include "actors/amp/amp_eyes.rgba16.inc.c"
|
||||
};
|
||||
|
||||
// 0x08001B18
|
||||
ALIGNED8 static const Texture amp_seg8_texture_08001B18[] = {
|
||||
ALIGNED8 static const Texture dAmpBodyTexture[] = {
|
||||
#include "actors/amp/amp_body.rgba16.inc.c"
|
||||
};
|
||||
|
||||
// 0x08002318
|
||||
ALIGNED8 static const Texture amp_seg8_texture_08002318[] = {
|
||||
ALIGNED8 static const Texture dAmpMouthTexture[] = {
|
||||
#include "actors/amp/amp_mouth.rgba16.inc.c"
|
||||
};
|
||||
|
||||
// 0x08002B18
|
||||
static const Vtx amp_seg8_vertex_08002B18[] = {
|
||||
static const Vtx dAmpElectricityVertices[] = {
|
||||
{{{ 224, 0, -89}, 0, { 0, 480}, {0xff, 0xff, 0xff, 0xff}}},
|
||||
{{{ 187, 149, 0}, 0, { 223, 1078}, {0xff, 0xff, 0xff, 0xff}}},
|
||||
{{{ 224, 0, 90}, 0, { 479, 478}, {0xff, 0xff, 0xff, 0xff}}},
|
||||
@ -29,18 +24,16 @@ static const Vtx amp_seg8_vertex_08002B18[] = {
|
||||
{{{ 224, 0, -89}, 0, { 0, 478}, {0xff, 0xff, 0xff, 0xff}}},
|
||||
};
|
||||
|
||||
// 0x08002B68 - 0x08002BA0
|
||||
const Gfx amp_seg8_dl_08002B68[] = {
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, amp_seg8_texture_08000F18),
|
||||
const Gfx dAmpElectricitySubDl[] = {
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dAmpElectricityTexture),
|
||||
gsDPLoadSync(),
|
||||
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),
|
||||
gsSPVertex(amp_seg8_vertex_08002B18, 5, 0),
|
||||
gsSPVertex(dAmpElectricityVertices, 5, 0),
|
||||
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 4, 0x0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
// 0x08002BA0 - 0x08002C10
|
||||
const Gfx amp_seg8_dl_08002BA0[] = {
|
||||
const Gfx dAmpElectricityDl[] = {
|
||||
gsDPPipeSync(),
|
||||
gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),
|
||||
gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),
|
||||
@ -49,7 +42,7 @@ const Gfx amp_seg8_dl_08002BA0[] = {
|
||||
gsDPTileSync(),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 4, G_TX_NOLOD),
|
||||
gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),
|
||||
gsSPDisplayList(amp_seg8_dl_08002B68),
|
||||
gsSPDisplayList(dAmpElectricitySubDl),
|
||||
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
|
||||
gsDPPipeSync(),
|
||||
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
|
||||
@ -57,26 +50,23 @@ const Gfx amp_seg8_dl_08002BA0[] = {
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
// 0x08002C10
|
||||
static const Vtx amp_seg8_vertex_08002C10[] = {
|
||||
static const Vtx dAmpEyeVertices[] = {
|
||||
{{{ 68, 72, 158}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}},
|
||||
{{{ -27, -71, 164}, 0, { 990, 990}, {0xff, 0xff, 0xff, 0xff}}},
|
||||
{{{ 68, -71, 158}, 0, { 990, 0}, {0xff, 0xff, 0xff, 0xff}}},
|
||||
{{{ -27, 72, 164}, 0, { 0, 990}, {0xff, 0xff, 0xff, 0xff}}},
|
||||
};
|
||||
|
||||
// 0x08002C50 - 0x08002C88
|
||||
const Gfx amp_seg8_dl_08002C50[] = {
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, amp_seg8_texture_08001318),
|
||||
const Gfx dAmpEyeSubDl[] = {
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dAmpEyesTexture),
|
||||
gsDPLoadSync(),
|
||||
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
|
||||
gsSPVertex(amp_seg8_vertex_08002C10, 4, 0),
|
||||
gsSPVertex(dAmpEyeVertices, 4, 0),
|
||||
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
// 0x08002C88 - 0x08002CF8
|
||||
const Gfx amp_seg8_dl_08002C88[] = {
|
||||
const Gfx dAmpEyeDl[] = {
|
||||
gsDPPipeSync(),
|
||||
gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),
|
||||
gsSPClearGeometryMode(G_LIGHTING),
|
||||
@ -85,7 +75,7 @@ const Gfx amp_seg8_dl_08002C88[] = {
|
||||
gsDPTileSync(),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),
|
||||
gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),
|
||||
gsSPDisplayList(amp_seg8_dl_08002C50),
|
||||
gsSPDisplayList(dAmpEyeSubDl),
|
||||
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
|
||||
gsDPPipeSync(),
|
||||
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
|
||||
@ -93,26 +83,23 @@ const Gfx amp_seg8_dl_08002C88[] = {
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
// 0x08002CF8
|
||||
static const Vtx amp_seg8_vertex_08002CF8[] = {
|
||||
static const Vtx dAmpMouthVertices[] = {
|
||||
{{{ -29, 72, 164}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}},
|
||||
{{{ -124, -71, 121}, 0, { 990, 990}, {0xff, 0xff, 0xff, 0xff}}},
|
||||
{{{ -29, -71, 164}, 0, { 990, 0}, {0xff, 0xff, 0xff, 0xff}}},
|
||||
{{{ -124, 72, 121}, 0, { 0, 990}, {0xff, 0xff, 0xff, 0xff}}},
|
||||
};
|
||||
|
||||
// 0x08002D38 - 0x08002D70
|
||||
const Gfx amp_seg8_dl_08002D38[] = {
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, amp_seg8_texture_08002318),
|
||||
const Gfx dAmpMouthSubDl[] = {
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dAmpMouthTexture),
|
||||
gsDPLoadSync(),
|
||||
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
|
||||
gsSPVertex(amp_seg8_vertex_08002CF8, 4, 0),
|
||||
gsSPVertex(dAmpMouthVertices, 4, 0),
|
||||
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
// 0x08002D70 - 0x08002DE0
|
||||
const Gfx amp_seg8_dl_08002D70[] = {
|
||||
const Gfx dAmpMouthDl[] = {
|
||||
gsDPPipeSync(),
|
||||
gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),
|
||||
gsSPClearGeometryMode(G_LIGHTING),
|
||||
@ -121,7 +108,7 @@ const Gfx amp_seg8_dl_08002D70[] = {
|
||||
gsDPTileSync(),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),
|
||||
gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),
|
||||
gsSPDisplayList(amp_seg8_dl_08002D38),
|
||||
gsSPDisplayList(dAmpMouthSubDl),
|
||||
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
|
||||
gsDPPipeSync(),
|
||||
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
|
||||
@ -129,26 +116,23 @@ const Gfx amp_seg8_dl_08002D70[] = {
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
// 0x08002DE0
|
||||
static const Vtx amp_seg8_vertex_08002DE0[] = {
|
||||
static const Vtx dAmpBodyVertices[] = {
|
||||
{{{ -39, -39, 0}, 0, { 0, 990}, {0xff, 0xff, 0xff, 0xff}}},
|
||||
{{{ 40, 40, 0}, 0, { 990, 0}, {0xff, 0xff, 0xff, 0xff}}},
|
||||
{{{ -39, 40, 0}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}},
|
||||
{{{ 40, -39, 0}, 0, { 990, 990}, {0xff, 0xff, 0xff, 0xff}}},
|
||||
};
|
||||
|
||||
// 0x08002E20 - 0x08002E58
|
||||
const Gfx amp_seg8_dl_08002E20[] = {
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, amp_seg8_texture_08001B18),
|
||||
const Gfx dAmpBodySubDl[] = {
|
||||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dAmpBodyTexture),
|
||||
gsDPLoadSync(),
|
||||
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
|
||||
gsSPVertex(amp_seg8_vertex_08002DE0, 4, 0),
|
||||
gsSPVertex(dAmpBodyVertices, 4, 0),
|
||||
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
// 0x08002E58 - 0x08002EC8
|
||||
const Gfx amp_seg8_dl_08002E58[] = {
|
||||
const Gfx dAmpBodyDl[] = {
|
||||
gsDPPipeSync(),
|
||||
gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),
|
||||
gsSPClearGeometryMode(G_LIGHTING),
|
||||
@ -157,7 +141,7 @@ const Gfx amp_seg8_dl_08002E58[] = {
|
||||
gsDPTileSync(),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),
|
||||
gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),
|
||||
gsSPDisplayList(amp_seg8_dl_08002E20),
|
||||
gsSPDisplayList(dAmpBodySubDl),
|
||||
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
|
||||
gsDPPipeSync(),
|
||||
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
|
||||
@ -165,15 +149,18 @@ const Gfx amp_seg8_dl_08002E58[] = {
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
// 0x08002EC8
|
||||
static const Lights1 amp_seg8_lights_08002EC8 = gdSPDefLights1(
|
||||
/**
|
||||
* Everything beyond this point is unused, and seems to be an attempt at a 3D modelled
|
||||
* amp. The model and attempt are overall slightly buggy, with misread lights and a slightly
|
||||
* broken model.
|
||||
*/
|
||||
|
||||
UNUSED static const Lights1 dAmpUnused3DLights = gdSPDefLights1(
|
||||
0x33, 0x3f, 0x00,
|
||||
0xcf, 0xff, 0x00, 0x28, 0x28, 0x28
|
||||
);
|
||||
|
||||
// //! Another malformed entry: Vertex interpreted as light
|
||||
// 0x08002EE0
|
||||
static const Vtx amp_seg8_vertex_08002EE0[] = {
|
||||
UNUSED static const Vtx dAmpUnused3DVtx01[] = {
|
||||
{{{ 280, 0, 35}, 0, { 0, 0}, {0x7b, 0xe2, 0x00, 0x00}}},
|
||||
{{{ 240, -160, 0}, 0, { 0, 0}, {0x7b, 0xe2, 0x00, 0x00}}},
|
||||
{{{ 280, 0, -35}, 0, { 0, 0}, {0x7b, 0xe2, 0x00, 0x00}}},
|
||||
@ -182,8 +169,7 @@ static const Vtx amp_seg8_vertex_08002EE0[] = {
|
||||
{{{ 280, 0, 35}, 0, { 0, 0}, {0x7b, 0x1e, 0x00, 0xff}}},
|
||||
};
|
||||
|
||||
// 0x08002F40
|
||||
static const Vtx amp_seg8_vertex_08002F40[] = {
|
||||
UNUSED static const Vtx dAmpUnused3DVtx02[] = {
|
||||
{{{ 280, 0, 35}, 0, { 0, 0}, {0x7b, 0xe2, 0x00, 0x00}}},
|
||||
{{{ 240, -160, 0}, 0, { 0, 0}, {0x7b, 0xe2, 0x00, 0x00}}},
|
||||
{{{ 280, 0, -35}, 0, { 0, 0}, {0x7b, 0xe2, 0x00, 0x00}}},
|
||||
@ -192,8 +178,7 @@ static const Vtx amp_seg8_vertex_08002F40[] = {
|
||||
{{{ 280, 0, 35}, 0, { 0, 0}, {0x7b, 0x1e, 0x00, 0xff}}},
|
||||
};
|
||||
|
||||
// 0x08002FA0
|
||||
static const Vtx amp_seg8_vertex_08002FA0[] = {
|
||||
UNUSED static const Vtx dAmpUnused3DVtx03[] = {
|
||||
{{{ 280, 0, 35}, 0, { 0, 0}, {0x7b, 0xe2, 0x00, 0x00}}},
|
||||
{{{ 240, -160, 0}, 0, { 0, 0}, {0x7b, 0xe2, 0x00, 0x00}}},
|
||||
{{{ 280, 0, -35}, 0, { 0, 0}, {0x7b, 0xe2, 0x00, 0x00}}},
|
||||
@ -202,8 +187,7 @@ static const Vtx amp_seg8_vertex_08002FA0[] = {
|
||||
{{{ 280, 0, 35}, 0, { 0, 0}, {0x7b, 0x1e, 0x00, 0xff}}},
|
||||
};
|
||||
|
||||
// 0x08003000
|
||||
static const Vtx amp_seg8_vertex_08003000[] = {
|
||||
UNUSED static const Vtx dAmpUnused3DVtx04[] = {
|
||||
{{{ 280, 0, -35}, 0, { 0, 0}, {0x7b, 0x1e, 0x00, 0x00}}},
|
||||
{{{ 240, 160, 0}, 0, { 0, 0}, {0x7b, 0x1e, 0x00, 0x00}}},
|
||||
{{{ 280, 0, 35}, 0, { 0, 0}, {0x7b, 0x1e, 0x00, 0x00}}},
|
||||
@ -212,8 +196,7 @@ static const Vtx amp_seg8_vertex_08003000[] = {
|
||||
{{{ 280, 0, -35}, 0, { 0, 0}, {0x7b, 0xe2, 0x00, 0xff}}},
|
||||
};
|
||||
|
||||
// 0x08003060
|
||||
static const Vtx amp_seg8_vertex_08003060[] = {
|
||||
UNUSED static const Vtx dAmpUnused3DVtx05[] = {
|
||||
{{{ -184, -54, -54}, 0, { 0, 0}, {0x8b, 0xde, 0xde, 0x00}}},
|
||||
{{{ -184, -76, 0}, 0, { 0, 0}, {0x8b, 0xd0, 0x00, 0x00}}},
|
||||
{{{ -200, 0, 0}, 0, { 0, 0}, {0x81, 0x00, 0x00, 0x00}}},
|
||||
@ -232,8 +215,7 @@ static const Vtx amp_seg8_vertex_08003060[] = {
|
||||
{{{ 200, 0, 0}, 0, { 0, 0}, {0x7f, 0x00, 0x00, 0xff}}},
|
||||
};
|
||||
|
||||
// 0x08003160
|
||||
static const Vtx amp_seg8_vertex_08003160[] = {
|
||||
UNUSED static const Vtx dAmpUnused3DVtx06[] = {
|
||||
{{{ -184, 0, -76}, 0, { 0, 0}, {0x8b, 0x00, 0xd0, 0xff}}},
|
||||
{{{ -184, -54, -54}, 0, { 0, 0}, {0x8b, 0xde, 0xde, 0x00}}},
|
||||
{{{ -200, 0, 0}, 0, { 0, 0}, {0x81, 0x00, 0x00, 0x00}}},
|
||||
@ -252,8 +234,7 @@ static const Vtx amp_seg8_vertex_08003160[] = {
|
||||
{{{ 200, 0, 0}, 0, { 0, 0}, {0x7f, 0x00, 0x00, 0xff}}},
|
||||
};
|
||||
|
||||
// 0x08003260
|
||||
static const Vtx amp_seg8_vertex_08003260[] = {
|
||||
UNUSED static const Vtx dAmpUnused3DVtx07[] = {
|
||||
{{{ -184, 54, -54}, 0, { 0, 0}, {0x8b, 0x22, 0xde, 0xff}}},
|
||||
{{{ -184, 0, -76}, 0, { 0, 0}, {0x8b, 0x00, 0xd0, 0x00}}},
|
||||
{{{ -200, 0, 0}, 0, { 0, 0}, {0x81, 0x00, 0x00, 0x00}}},
|
||||
@ -272,8 +253,7 @@ static const Vtx amp_seg8_vertex_08003260[] = {
|
||||
{{{ 200, 0, 0}, 0, { 0, 0}, {0x7f, 0x00, 0x00, 0xff}}},
|
||||
};
|
||||
|
||||
// 0x08003360
|
||||
static const Vtx amp_seg8_vertex_08003360[] = {
|
||||
UNUSED static const Vtx dAmpUnused3DVtx08[] = {
|
||||
{{{ -184, 76, 0}, 0, { 0, 0}, {0x8b, 0x30, 0x00, 0xff}}},
|
||||
{{{ -184, 54, -54}, 0, { 0, 0}, {0x8b, 0x22, 0xde, 0x00}}},
|
||||
{{{ -200, 0, 0}, 0, { 0, 0}, {0x81, 0x00, 0x00, 0x00}}},
|
||||
@ -292,8 +272,7 @@ static const Vtx amp_seg8_vertex_08003360[] = {
|
||||
{{{ 200, 0, 0}, 0, { 0, 0}, {0x7f, 0x00, 0x00, 0xff}}},
|
||||
};
|
||||
|
||||
// 0x08003460
|
||||
static const Vtx amp_seg8_vertex_08003460[] = {
|
||||
UNUSED static const Vtx dAmpUnused3DVtx09[] = {
|
||||
{{{ -184, 54, 54}, 0, { 0, 0}, {0x8b, 0x22, 0x22, 0xff}}},
|
||||
{{{ -184, 76, 0}, 0, { 0, 0}, {0x8b, 0x30, 0x00, 0x00}}},
|
||||
{{{ -200, 0, 0}, 0, { 0, 0}, {0x81, 0x00, 0x00, 0x00}}},
|
||||
@ -312,8 +291,7 @@ static const Vtx amp_seg8_vertex_08003460[] = {
|
||||
{{{ 200, 0, 0}, 0, { 0, 0}, {0x7f, 0x00, 0x00, 0xff}}},
|
||||
};
|
||||
|
||||
// 0x08003560
|
||||
static const Vtx amp_seg8_vertex_08003560[] = {
|
||||
UNUSED static const Vtx dAmpUnused3DVtx10[] = {
|
||||
{{{ -184, 0, 76}, 0, { 0, 0}, {0x8b, 0x00, 0x30, 0xff}}},
|
||||
{{{ -184, 54, 54}, 0, { 0, 0}, {0x8b, 0x22, 0x22, 0x00}}},
|
||||
{{{ -200, 0, 0}, 0, { 0, 0}, {0x81, 0x00, 0x00, 0x00}}},
|
||||
@ -332,8 +310,7 @@ static const Vtx amp_seg8_vertex_08003560[] = {
|
||||
{{{ 200, 0, 0}, 0, { 0, 0}, {0x7f, 0x00, 0x00, 0xff}}},
|
||||
};
|
||||
|
||||
// 0x08003660
|
||||
static const Vtx amp_seg8_vertex_08003660[] = {
|
||||
UNUSED static const Vtx dAmpUnused3DVtx11[] = {
|
||||
{{{ -184, -54, 54}, 0, { 0, 0}, {0x8b, 0xde, 0x22, 0xff}}},
|
||||
{{{ -184, 0, 76}, 0, { 0, 0}, {0x8b, 0x00, 0x30, 0x00}}},
|
||||
{{{ -200, 0, 0}, 0, { 0, 0}, {0x81, 0x00, 0x00, 0x00}}},
|
||||
@ -352,8 +329,7 @@ static const Vtx amp_seg8_vertex_08003660[] = {
|
||||
{{{ 200, 0, 0}, 0, { 0, 0}, {0x7f, 0x00, 0x00, 0xff}}},
|
||||
};
|
||||
|
||||
// 0x08003760
|
||||
static const Vtx amp_seg8_vertex_08003760[] = {
|
||||
UNUSED static const Vtx dAmpUnused3DVtx12[] = {
|
||||
{{{ -184, -76, 0}, 0, { 0, 0}, {0x8b, 0xd0, 0x00, 0xff}}},
|
||||
{{{ -184, -54, 54}, 0, { 0, 0}, {0x8b, 0xde, 0x22, 0x00}}},
|
||||
{{{ -200, 0, 0}, 0, { 0, 0}, {0x81, 0x00, 0x00, 0x00}}},
|
||||
@ -372,70 +348,63 @@ static const Vtx amp_seg8_vertex_08003760[] = {
|
||||
{{{ 200, 0, 0}, 0, { 0, 0}, {0x7f, 0x00, 0x00, 0xff}}},
|
||||
};
|
||||
|
||||
// 0x08003860
|
||||
static const Vtx amp_seg8_vertex_08003860[] = {
|
||||
UNUSED static const Vtx dAmpUnused3DVtx13[] = {
|
||||
{{{ -37, 90, 205}, 0, { 0, 0}, {0xcc, 0x00, 0x73, 0x00}}},
|
||||
{{{ -129, 90, 163}, 0, { 0, 0}, {0xcc, 0x00, 0x73, 0x00}}},
|
||||
{{{ -129, -90, 163}, 0, { 0, 0}, {0xcc, 0x00, 0x73, 0x00}}},
|
||||
{{{ -37, -90, 205}, 0, { 0, 0}, {0xcc, 0x00, 0x73, 0xff}}},
|
||||
};
|
||||
|
||||
// 0x080038A0
|
||||
static const Vtx amp_seg8_vertex_080038A0[] = {
|
||||
UNUSED static const Vtx dAmpUnused3DVtx14[] = {
|
||||
{{{ 112, -7, 182}, 0, { 0, 0}, {0x4c, 0xd8, 0x5c, 0x00}}},
|
||||
{{{ 66, -139, 162}, 0, { 0, 0}, {0x4c, 0xd8, 0x5c, 0x00}}},
|
||||
{{{ 175, -77, 98}, 0, { 0, 0}, {0x4c, 0xd8, 0x5c, 0x00}}},
|
||||
};
|
||||
|
||||
// 0x080038D0
|
||||
static const Vtx amp_seg8_vertex_080038D0[] = {
|
||||
UNUSED static const Vtx dAmpUnused3DVtx15[] = {
|
||||
{{{ 63, 90, 198}, 0, { 0, 0}, {0x08, 0x00, 0x7e, 0x00}}},
|
||||
{{{ -35, 90, 205}, 0, { 0, 0}, {0x08, 0x00, 0x7e, 0x00}}},
|
||||
{{{ -35, -90, 205}, 0, { 0, 0}, {0x08, 0x00, 0x7e, 0x00}}},
|
||||
{{{ 63, -90, 198}, 0, { 0, 0}, {0x08, 0x00, 0x7e, 0xff}}},
|
||||
};
|
||||
|
||||
// 0x08003910 - 0x08003940
|
||||
const Gfx amp_seg8_dl_08003910[] = {
|
||||
gsSPLight(&_seg8_lights_08002EC8.l, 1),
|
||||
gsSPLight(&_seg8_lights_08002EC8.a, 2),
|
||||
gsSPVertex(amp_seg8_vertex_08002EE0, 6, 0),
|
||||
UNUSED const Gfx dAmpUnused3DElectricDl1[] = {
|
||||
gsSPLight(&dAmpUnused3DLights.l, 1),
|
||||
gsSPLight(&dAmpUnused3DLights.a, 2),
|
||||
gsSPVertex(dAmpUnused3DVtx01, 6, 0),
|
||||
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
// 0x08003940 - 0x08003970
|
||||
const Gfx amp_seg8_dl_08003940[] = {
|
||||
gsSPLight(&_seg8_lights_08002EC8.l, 1),
|
||||
gsSPLight(&_seg8_lights_08002EC8.a, 2),
|
||||
gsSPVertex(amp_seg8_vertex_08002F40, 6, 0),
|
||||
UNUSED const Gfx dAmpUnused3DElectricDl2[] = {
|
||||
gsSPLight(&dAmpUnused3DLights.l, 1),
|
||||
gsSPLight(&dAmpUnused3DLights.a, 2),
|
||||
gsSPVertex(dAmpUnused3DVtx02, 6, 0),
|
||||
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
// 0x08003970 - 0x080039A0
|
||||
const Gfx amp_seg8_dl_08003970[] = {
|
||||
gsSPLight(&_seg8_lights_08002EC8.l, 1),
|
||||
gsSPLight(&_seg8_lights_08002EC8.a, 2),
|
||||
gsSPVertex(amp_seg8_vertex_08002FA0, 6, 0),
|
||||
UNUSED const Gfx dAmpUnused3DElectricDl3[] = {
|
||||
gsSPLight(&dAmpUnused3DLights.l, 1),
|
||||
gsSPLight(&dAmpUnused3DLights.a, 2),
|
||||
gsSPVertex(dAmpUnused3DVtx03, 6, 0),
|
||||
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
// 0x080039A0 - 0x080039D0
|
||||
const Gfx amp_seg8_dl_080039A0[] = {
|
||||
gsSPLight(&_seg8_lights_08002EC8.l, 1),
|
||||
gsSPLight(&_seg8_lights_08002EC8.a, 2),
|
||||
gsSPVertex(amp_seg8_vertex_08003000, 6, 0),
|
||||
UNUSED const Gfx dAmpUnused3DElectricDl4[] = {
|
||||
gsSPLight(&dAmpUnused3DLights.l, 1),
|
||||
gsSPLight(&dAmpUnused3DLights.a, 2),
|
||||
gsSPVertex(dAmpUnused3DVtx04, 6, 0),
|
||||
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
// 0x080039D0 - 0x08003DA8
|
||||
const Gfx amp_seg8_dl_080039D0[] = {
|
||||
gsSPLight((const u8*)amp_seg8_vertex_08002EE0 + 0x8, 1),
|
||||
gsSPLight((const u8*)amp_seg8_vertex_08002EE0, 2),
|
||||
gsSPVertex(amp_seg8_vertex_08003060, 16, 0),
|
||||
UNUSED const Gfx dAmpUnused3DModelDl[] = {
|
||||
//! Vertex interpreted as light
|
||||
gsSPLight((const u8*)dAmpUnused3DVtx01 + 0x8, 1),
|
||||
gsSPLight((const u8*)dAmpUnused3DVtx01, 2),
|
||||
gsSPVertex(dAmpUnused3DVtx05, 16, 0),
|
||||
gsSP2Triangles( 0, 1, 2, 0x0, 1, 0, 3, 0x0),
|
||||
gsSP2Triangles( 1, 3, 4, 0x0, 4, 3, 5, 0x0),
|
||||
gsSP2Triangles( 4, 5, 6, 0x0, 6, 5, 7, 0x0),
|
||||
@ -443,7 +412,7 @@ const Gfx amp_seg8_dl_080039D0[] = {
|
||||
gsSP2Triangles( 8, 9, 10, 0x0, 10, 9, 11, 0x0),
|
||||
gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),
|
||||
gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),
|
||||
gsSPVertex(amp_seg8_vertex_08003160, 16, 0),
|
||||
gsSPVertex(dAmpUnused3DVtx06, 16, 0),
|
||||
gsSP2Triangles( 0, 1, 2, 0x0, 1, 0, 3, 0x0),
|
||||
gsSP2Triangles( 1, 3, 4, 0x0, 4, 3, 5, 0x0),
|
||||
gsSP2Triangles( 4, 5, 6, 0x0, 6, 5, 7, 0x0),
|
||||
@ -451,7 +420,7 @@ const Gfx amp_seg8_dl_080039D0[] = {
|
||||
gsSP2Triangles( 8, 9, 10, 0x0, 10, 9, 11, 0x0),
|
||||
gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),
|
||||
gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),
|
||||
gsSPVertex(amp_seg8_vertex_08003260, 16, 0),
|
||||
gsSPVertex(dAmpUnused3DVtx07, 16, 0),
|
||||
gsSP2Triangles( 0, 1, 2, 0x0, 1, 0, 3, 0x0),
|
||||
gsSP2Triangles( 1, 3, 4, 0x0, 4, 3, 5, 0x0),
|
||||
gsSP2Triangles( 4, 5, 6, 0x0, 6, 5, 7, 0x0),
|
||||
@ -459,7 +428,7 @@ const Gfx amp_seg8_dl_080039D0[] = {
|
||||
gsSP2Triangles( 8, 9, 10, 0x0, 10, 9, 11, 0x0),
|
||||
gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),
|
||||
gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),
|
||||
gsSPVertex(amp_seg8_vertex_08003360, 16, 0),
|
||||
gsSPVertex(dAmpUnused3DVtx08, 16, 0),
|
||||
gsSP2Triangles( 0, 1, 2, 0x0, 1, 0, 3, 0x0),
|
||||
gsSP2Triangles( 1, 3, 4, 0x0, 4, 3, 5, 0x0),
|
||||
gsSP2Triangles( 4, 5, 6, 0x0, 6, 5, 7, 0x0),
|
||||
@ -467,7 +436,7 @@ const Gfx amp_seg8_dl_080039D0[] = {
|
||||
gsSP2Triangles( 8, 9, 10, 0x0, 10, 9, 11, 0x0),
|
||||
gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),
|
||||
gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),
|
||||
gsSPVertex(amp_seg8_vertex_08003460, 16, 0),
|
||||
gsSPVertex(dAmpUnused3DVtx09, 16, 0),
|
||||
gsSP2Triangles( 0, 1, 2, 0x0, 1, 0, 3, 0x0),
|
||||
gsSP2Triangles( 1, 3, 4, 0x0, 4, 3, 5, 0x0),
|
||||
gsSP2Triangles( 4, 5, 6, 0x0, 6, 5, 7, 0x0),
|
||||
@ -475,7 +444,7 @@ const Gfx amp_seg8_dl_080039D0[] = {
|
||||
gsSP2Triangles( 8, 9, 10, 0x0, 10, 9, 11, 0x0),
|
||||
gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),
|
||||
gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),
|
||||
gsSPVertex(amp_seg8_vertex_08003560, 16, 0),
|
||||
gsSPVertex(dAmpUnused3DVtx10, 16, 0),
|
||||
gsSP2Triangles( 0, 1, 2, 0x0, 1, 0, 3, 0x0),
|
||||
gsSP2Triangles( 1, 3, 4, 0x0, 4, 3, 5, 0x0),
|
||||
gsSP2Triangles( 4, 5, 6, 0x0, 6, 5, 7, 0x0),
|
||||
@ -483,7 +452,7 @@ const Gfx amp_seg8_dl_080039D0[] = {
|
||||
gsSP2Triangles( 8, 9, 10, 0x0, 10, 9, 11, 0x0),
|
||||
gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),
|
||||
gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),
|
||||
gsSPVertex(amp_seg8_vertex_08003660, 16, 0),
|
||||
gsSPVertex(dAmpUnused3DVtx11, 16, 0),
|
||||
gsSP2Triangles( 0, 1, 2, 0x0, 1, 0, 3, 0x0),
|
||||
gsSP2Triangles( 1, 3, 4, 0x0, 4, 3, 5, 0x0),
|
||||
gsSP2Triangles( 4, 5, 6, 0x0, 6, 5, 7, 0x0),
|
||||
@ -491,7 +460,7 @@ const Gfx amp_seg8_dl_080039D0[] = {
|
||||
gsSP2Triangles( 8, 9, 10, 0x0, 10, 9, 11, 0x0),
|
||||
gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),
|
||||
gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),
|
||||
gsSPVertex(amp_seg8_vertex_08003760, 16, 0),
|
||||
gsSPVertex(dAmpUnused3DVtx12, 16, 0),
|
||||
gsSP2Triangles( 0, 1, 2, 0x0, 1, 0, 3, 0x0),
|
||||
gsSP2Triangles( 1, 3, 4, 0x0, 4, 3, 5, 0x0),
|
||||
gsSP2Triangles( 4, 5, 6, 0x0, 6, 5, 7, 0x0),
|
||||
@ -502,29 +471,29 @@ const Gfx amp_seg8_dl_080039D0[] = {
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
// 0x08003DA8 - 0x08003DD8
|
||||
const Gfx amp_seg8_dl_08003DA8[] = {
|
||||
gsSPLight((const u8*)amp_seg8_vertex_08002EE0 + 0x8, 1),
|
||||
gsSPLight((const u8*)amp_seg8_vertex_08002EE0, 2),
|
||||
gsSPVertex(amp_seg8_vertex_08003860, 4, 0),
|
||||
UNUSED const Gfx dAmpUnused3DElectricDl5[] = {
|
||||
//! Vertex interpreted as light
|
||||
gsSPLight((const u8*)dAmpUnused3DVtx01 + 0x8, 1),
|
||||
gsSPLight((const u8*)dAmpUnused3DVtx01, 2),
|
||||
gsSPVertex(dAmpUnused3DVtx13, 4, 0),
|
||||
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
// 0x08003DD8 - 0x08003E00
|
||||
const Gfx amp_seg8_dl_08003DD8[] = {
|
||||
gsSPLight((const u8*)amp_seg8_vertex_08002EE0 + 0x8, 1),
|
||||
gsSPLight((const u8*)amp_seg8_vertex_08002EE0, 2),
|
||||
gsSPVertex(amp_seg8_vertex_080038A0, 3, 0),
|
||||
UNUSED const Gfx dAmpUnused3DElectricDl6[] = {
|
||||
//! Vertex interpreted as light
|
||||
gsSPLight((const u8*)dAmpUnused3DVtx01 + 0x8, 1),
|
||||
gsSPLight((const u8*)dAmpUnused3DVtx01, 2),
|
||||
gsSPVertex(dAmpUnused3DVtx14, 3, 0),
|
||||
gsSP1Triangle( 0, 1, 2, 0x0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
// 0x08003E00 - 0x08003E30
|
||||
const Gfx amp_seg8_dl_08003E00[] = {
|
||||
gsSPLight((const u8*)amp_seg8_vertex_08002EE0 + 0x8, 1),
|
||||
gsSPLight((const u8*)amp_seg8_vertex_08002EE0, 2),
|
||||
gsSPVertex(amp_seg8_vertex_080038D0, 4, 0),
|
||||
UNUSED const Gfx dAmpUnused3DElectricDl7[] = {
|
||||
//! Vertex interpreted as light
|
||||
gsSPLight((const u8*)dAmpUnused3DVtx01 + 0x8, 1),
|
||||
gsSPLight((const u8*)dAmpUnused3DVtx01, 2),
|
||||
gsSPVertex(dAmpUnused3DVtx15, 4, 0),
|
||||
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
98
actors/bowser/flames_data.inc.c
Normal file
98
actors/bowser/flames_data.inc.c
Normal file
@ -0,0 +1,98 @@
|
||||
// 0x060576FC
|
||||
|
||||
const s16 dBowserFlamesOrientationValues[] = {
|
||||
// posX, posY, posZ, rotY, rotX
|
||||
0, 280, 80, 0x00E9, 0x1A96,
|
||||
0, 278, 83, 0x00EC, 0x1C7F,
|
||||
0, 273, 92, 0x00F9, 0x20BF,
|
||||
0, 268, 102, 0x010F, 0x2519,
|
||||
0, 263, 109, 0x011D, 0x2751,
|
||||
0, 263, 110, 0x011C, 0x2714,
|
||||
0, 265, 106, 0x0112, 0x2601,
|
||||
0, 268, 102, 0x0109, 0x24C0,
|
||||
0, 271, 96, 0x00FF, 0x2358,
|
||||
0, 274, 90, 0x00F7, 0x21CB,
|
||||
0, 277, 84, 0x00EE, 0x201C,
|
||||
0, 280, 78, 0x00E7, 0x1E4E,
|
||||
0, 284, 71, 0x00DF, 0x1C64,
|
||||
0, 288, 63, 0x00D9, 0x1A61,
|
||||
0, 291, 56, 0x00D3, 0x184B,
|
||||
0, 295, 48, 0x00CF, 0x1622,
|
||||
0, 298, 40, 0x00CA, 0x13E9,
|
||||
0, 301, 32, 0x00C7, 0x11A5,
|
||||
0, 304, 23, 0x00C4, 0x0F59,
|
||||
0, 308, 15, 0x00C1, 0x0D08,
|
||||
0, 311, 7, 0x00C0, 0x0AB5,
|
||||
0, 313, 0, 0x00C0, 0x0863,
|
||||
0, 315, -8, 0x00BF, 0x0615,
|
||||
0, 317, -15, 0x00CE, 0x03A3,
|
||||
0, 319, -22, 0x00F8, 0x00ED,
|
||||
0, 320, -29, 0x0131, 0xFFFF,
|
||||
0, 322, -36, 0x0172, 0xFFFF,
|
||||
0, 322, -40, 0x01B5, 0xFFFF,
|
||||
0, 323, -45, 0x01ED, 0xFFFF,
|
||||
0, 323, -48, 0x0213, 0xFFFF,
|
||||
0, 323, -51, 0x0219, 0xFFFF,
|
||||
0, 323, -52, 0x01F2, 0xFFFF,
|
||||
0, 323, -51, 0x018F, 0xFFFF,
|
||||
0, 323, -49, 0x00E5, 0xFFFF,
|
||||
0, 322, -45, 0xFFFF, 0xFFFF,
|
||||
0, 320, -35, 0xFFFF, 0xFFFF,
|
||||
0, 317, -23, 0xFFFF, 0xFFFF,
|
||||
0, 312, -7, 0xFFFF, 0xFFFF,
|
||||
0, 306, 11, 0xFFFF, 0xFFFF,
|
||||
0, 299, 31, 0xFFFF, 0xFFFF,
|
||||
0, 288, 51, 0xFFFF, 0xFFFF,
|
||||
0, 278, 70, 0xFFFF, 0xFFFF,
|
||||
0, 267, 89, 0xFFFF, 0xFFFF,
|
||||
0, 256, 106, 0xFFFF, 0x023A,
|
||||
0, 244, 120, 0xFFFF, 0x04AA,
|
||||
0, 236, 132, 0xFFFF, 0x069F,
|
||||
0, 229, 139, 0xFFFF, 0x0803,
|
||||
0, 224, 144, 0xFFFF, 0x08C0,
|
||||
0, 222, 147, 0xFFFF, 0x0928,
|
||||
0, 221, 148, 0xFFFF, 0x099D,
|
||||
0, 221, 149, 0xFFFF, 0x0A16,
|
||||
0, 221, 150, 0xFFFF, 0x0A8D,
|
||||
0, 221, 150, 0xFFFF, 0x0AF6,
|
||||
0, 222, 150, 0xFFFF, 0x0B4A,
|
||||
0, 222, 150, 0xFFFF, 0x0B84,
|
||||
0, 222, 149, 0x020A, 0x0BA0,
|
||||
0, 223, 149, 0x0524, 0x0B9E,
|
||||
0, 225, 148, 0x07EC, 0x0B84,
|
||||
0, 226, 147, 0x0A3F, 0x0B57,
|
||||
0, 227, 145, 0x0BFB, 0x0B1F,
|
||||
0, 228, 144, 0x0D00, 0x0AE5,
|
||||
0, 230, 142, 0x0D6F, 0x0AA0,
|
||||
0, 232, 140, 0x0D8B, 0x0A48,
|
||||
0, 233, 138, 0x0D5D, 0x09DE,
|
||||
0, 236, 136, 0x0CED, 0x096A,
|
||||
0, 238, 134, 0x0C49, 0x08EA,
|
||||
0, 239, 132, 0x0B76, 0x0863,
|
||||
0, 241, 130, 0x0A80, 0x07D9,
|
||||
0, 244, 128, 0x0970, 0x074E,
|
||||
0, 246, 125, 0x084E, 0x06C7,
|
||||
0, 248, 122, 0x0723, 0x0649,
|
||||
0, 251, 120, 0x05F8, 0x05D7,
|
||||
0, 253, 117, 0x04D6, 0x0579,
|
||||
0, 254, 114, 0x03C3, 0x0532,
|
||||
0, 256, 111, 0x02C9, 0x0509,
|
||||
0, 259, 108, 0x01F0, 0x0504,
|
||||
0, 261, 105, 0x0141, 0x0525,
|
||||
0, 262, 103, 0x00C3, 0x0572,
|
||||
0, 264, 100, 0x006E, 0x0619,
|
||||
0, 267, 97, 0x0032, 0x0734,
|
||||
0, 268, 95, 0x000C, 0x08AF,
|
||||
0, 269, 93, 0xFFFF, 0x0A74,
|
||||
0, 272, 90, 0xFFFF, 0x0C70,
|
||||
0, 273, 88, 0xFFFF, 0x0E8E,
|
||||
0, 274, 86, 0x0014, 0x10B6,
|
||||
0, 275, 84, 0x0032, 0x12DA,
|
||||
0, 277, 82, 0x0056, 0x14E1,
|
||||
0, 277, 82, 0x007E, 0x16B9,
|
||||
0, 278, 80, 0x00A4, 0x184B,
|
||||
0, 278, 80, 0x00C6, 0x1983,
|
||||
0, 279, 80, 0x00DF, 0x1A4D,
|
||||
0, 280, 80, 0x00E9, 0x1A96,
|
||||
0, 0, 0, 0x0000, 0x0000,
|
||||
};
|
@ -1,96 +0,0 @@
|
||||
// 0x060576FC
|
||||
const s16 bowser_seg6_unkmoveshorts_060576FC[] = {
|
||||
0x0000, 0x0118, 0x0050, 0x00E9, 0x1A96,
|
||||
0x0000, 0x0116, 0x0053, 0x00EC, 0x1C7F,
|
||||
0x0000, 0x0111, 0x005C, 0x00F9, 0x20BF,
|
||||
0x0000, 0x010C, 0x0066, 0x010F, 0x2519,
|
||||
0x0000, 0x0107, 0x006D, 0x011D, 0x2751,
|
||||
0x0000, 0x0107, 0x006E, 0x011C, 0x2714,
|
||||
0x0000, 0x0109, 0x006A, 0x0112, 0x2601,
|
||||
0x0000, 0x010C, 0x0066, 0x0109, 0x24C0,
|
||||
0x0000, 0x010F, 0x0060, 0x00FF, 0x2358,
|
||||
0x0000, 0x0112, 0x005A, 0x00F7, 0x21CB,
|
||||
0x0000, 0x0115, 0x0054, 0x00EE, 0x201C,
|
||||
0x0000, 0x0118, 0x004E, 0x00E7, 0x1E4E,
|
||||
0x0000, 0x011C, 0x0047, 0x00DF, 0x1C64,
|
||||
0x0000, 0x0120, 0x003F, 0x00D9, 0x1A61,
|
||||
0x0000, 0x0123, 0x0038, 0x00D3, 0x184B,
|
||||
0x0000, 0x0127, 0x0030, 0x00CF, 0x1622,
|
||||
0x0000, 0x012A, 0x0028, 0x00CA, 0x13E9,
|
||||
0x0000, 0x012D, 0x0020, 0x00C7, 0x11A5,
|
||||
0x0000, 0x0130, 0x0017, 0x00C4, 0x0F59,
|
||||
0x0000, 0x0134, 0x000F, 0x00C1, 0x0D08,
|
||||
0x0000, 0x0137, 0x0007, 0x00C0, 0x0AB5,
|
||||
0x0000, 0x0139, 0x0000, 0x00C0, 0x0863,
|
||||
0x0000, 0x013B, 0xFFF8, 0x00BF, 0x0615,
|
||||
0x0000, 0x013D, 0xFFF1, 0x00CE, 0x03A3,
|
||||
0x0000, 0x013F, 0xFFEA, 0x00F8, 0x00ED,
|
||||
0x0000, 0x0140, 0xFFE3, 0x0131, 0xFFFF,
|
||||
0x0000, 0x0142, 0xFFDC, 0x0172, 0xFFFF,
|
||||
0x0000, 0x0142, 0xFFD8, 0x01B5, 0xFFFF,
|
||||
0x0000, 0x0143, 0xFFD3, 0x01ED, 0xFFFF,
|
||||
0x0000, 0x0143, 0xFFD0, 0x0213, 0xFFFF,
|
||||
0x0000, 0x0143, 0xFFCD, 0x0219, 0xFFFF,
|
||||
0x0000, 0x0143, 0xFFCC, 0x01F2, 0xFFFF,
|
||||
0x0000, 0x0143, 0xFFCD, 0x018F, 0xFFFF,
|
||||
0x0000, 0x0143, 0xFFCF, 0x00E5, 0xFFFF,
|
||||
0x0000, 0x0142, 0xFFD3, 0xFFFF, 0xFFFF,
|
||||
0x0000, 0x0140, 0xFFDD, 0xFFFF, 0xFFFF,
|
||||
0x0000, 0x013D, 0xFFE9, 0xFFFF, 0xFFFF,
|
||||
0x0000, 0x0138, 0xFFF9, 0xFFFF, 0xFFFF,
|
||||
0x0000, 0x0132, 0x000B, 0xFFFF, 0xFFFF,
|
||||
0x0000, 0x012B, 0x001F, 0xFFFF, 0xFFFF,
|
||||
0x0000, 0x0120, 0x0033, 0xFFFF, 0xFFFF,
|
||||
0x0000, 0x0116, 0x0046, 0xFFFF, 0xFFFF,
|
||||
0x0000, 0x010B, 0x0059, 0xFFFF, 0xFFFF,
|
||||
0x0000, 0x0100, 0x006A, 0xFFFF, 0x023A,
|
||||
0x0000, 0x00F4, 0x0078, 0xFFFF, 0x04AA,
|
||||
0x0000, 0x00EC, 0x0084, 0xFFFF, 0x069F,
|
||||
0x0000, 0x00E5, 0x008B, 0xFFFF, 0x0803,
|
||||
0x0000, 0x00E0, 0x0090, 0xFFFF, 0x08C0,
|
||||
0x0000, 0x00DE, 0x0093, 0xFFFF, 0x0928,
|
||||
0x0000, 0x00DD, 0x0094, 0xFFFF, 0x099D,
|
||||
0x0000, 0x00DD, 0x0095, 0xFFFF, 0x0A16,
|
||||
0x0000, 0x00DD, 0x0096, 0xFFFF, 0x0A8D,
|
||||
0x0000, 0x00DD, 0x0096, 0xFFFF, 0x0AF6,
|
||||
0x0000, 0x00DE, 0x0096, 0xFFFF, 0x0B4A,
|
||||
0x0000, 0x00DE, 0x0096, 0xFFFF, 0x0B84,
|
||||
0x0000, 0x00DE, 0x0095, 0x020A, 0x0BA0,
|
||||
0x0000, 0x00DF, 0x0095, 0x0524, 0x0B9E,
|
||||
0x0000, 0x00E1, 0x0094, 0x07EC, 0x0B84,
|
||||
0x0000, 0x00E2, 0x0093, 0x0A3F, 0x0B57,
|
||||
0x0000, 0x00E3, 0x0091, 0x0BFB, 0x0B1F,
|
||||
0x0000, 0x00E4, 0x0090, 0x0D00, 0x0AE5,
|
||||
0x0000, 0x00E6, 0x008E, 0x0D6F, 0x0AA0,
|
||||
0x0000, 0x00E8, 0x008C, 0x0D8B, 0x0A48,
|
||||
0x0000, 0x00E9, 0x008A, 0x0D5D, 0x09DE,
|
||||
0x0000, 0x00EC, 0x0088, 0x0CED, 0x096A,
|
||||
0x0000, 0x00EE, 0x0086, 0x0C49, 0x08EA,
|
||||
0x0000, 0x00EF, 0x0084, 0x0B76, 0x0863,
|
||||
0x0000, 0x00F1, 0x0082, 0x0A80, 0x07D9,
|
||||
0x0000, 0x00F4, 0x0080, 0x0970, 0x074E,
|
||||
0x0000, 0x00F6, 0x007D, 0x084E, 0x06C7,
|
||||
0x0000, 0x00F8, 0x007A, 0x0723, 0x0649,
|
||||
0x0000, 0x00FB, 0x0078, 0x05F8, 0x05D7,
|
||||
0x0000, 0x00FD, 0x0075, 0x04D6, 0x0579,
|
||||
0x0000, 0x00FE, 0x0072, 0x03C3, 0x0532,
|
||||
0x0000, 0x0100, 0x006F, 0x02C9, 0x0509,
|
||||
0x0000, 0x0103, 0x006C, 0x01F0, 0x0504,
|
||||
0x0000, 0x0105, 0x0069, 0x0141, 0x0525,
|
||||
0x0000, 0x0106, 0x0067, 0x00C3, 0x0572,
|
||||
0x0000, 0x0108, 0x0064, 0x006E, 0x0619,
|
||||
0x0000, 0x010B, 0x0061, 0x0032, 0x0734,
|
||||
0x0000, 0x010C, 0x005F, 0x000C, 0x08AF,
|
||||
0x0000, 0x010D, 0x005D, 0xFFFF, 0x0A74,
|
||||
0x0000, 0x0110, 0x005A, 0xFFFF, 0x0C70,
|
||||
0x0000, 0x0111, 0x0058, 0xFFFF, 0x0E8E,
|
||||
0x0000, 0x0112, 0x0056, 0x0014, 0x10B6,
|
||||
0x0000, 0x0113, 0x0054, 0x0032, 0x12DA,
|
||||
0x0000, 0x0115, 0x0052, 0x0056, 0x14E1,
|
||||
0x0000, 0x0115, 0x0052, 0x007E, 0x16B9,
|
||||
0x0000, 0x0116, 0x0050, 0x00A4, 0x184B,
|
||||
0x0000, 0x0116, 0x0050, 0x00C6, 0x1983,
|
||||
0x0000, 0x0117, 0x0050, 0x00DF, 0x1A4D,
|
||||
0x0000, 0x0118, 0x0050, 0x00E9, 0x1A96,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
};
|
@ -110,10 +110,10 @@ const GeoLayout bowser_geo_0000D8[] = {
|
||||
const GeoLayout bowser_geo_000424[] = {
|
||||
GEO_SHADOW(SHADOW_CIRCLE_9_VERTS, 0x9B, 400),
|
||||
GEO_OPEN_NODE(),
|
||||
#ifdef VERSION_JP
|
||||
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_06040210),
|
||||
#else
|
||||
#if BUGFIX_BOWSER_FADING_OUT
|
||||
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_06040358),
|
||||
#else
|
||||
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_06040210),
|
||||
#endif
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_TRANSPARENT, -89, -2, -18, NULL),
|
||||
@ -200,10 +200,10 @@ const GeoLayout bowser_geo_000424[] = {
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_0603A4E8),
|
||||
GEO_CLOSE_NODE(),
|
||||
#ifdef VERSION_JP
|
||||
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_0603B8D0),
|
||||
#else
|
||||
#if BUGFIX_BOWSER_FADING_OUT
|
||||
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_0603B948),
|
||||
#else
|
||||
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_0603B8D0),
|
||||
#endif
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
@ -226,10 +226,10 @@ const GeoLayout bowser_geo_000424[] = {
|
||||
const GeoLayout bowser_geo_000770[] = {
|
||||
GEO_NODE_START(),
|
||||
GEO_OPEN_NODE(),
|
||||
#ifdef VERSION_JP
|
||||
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_06040210),
|
||||
#else
|
||||
#if BUGFIX_BOWSER_FADING_OUT
|
||||
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_06040358),
|
||||
#else
|
||||
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_06040210),
|
||||
#endif
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_TRANSPARENT, -89, -2, -18, NULL),
|
||||
@ -316,10 +316,10 @@ const GeoLayout bowser_geo_000770[] = {
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_0603A4E8),
|
||||
GEO_CLOSE_NODE(),
|
||||
#ifdef VERSION_JP
|
||||
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_0603B8D0),
|
||||
#else
|
||||
#if BUGFIX_BOWSER_FADING_OUT
|
||||
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_0603B948),
|
||||
#else
|
||||
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_0603B8D0),
|
||||
#endif
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
@ -341,7 +341,7 @@ const GeoLayout bowser_geo_000770[] = {
|
||||
#ifndef VERSION_JP
|
||||
// 0x0D000AB8
|
||||
const GeoLayout bowser_shadow_geo[] = {
|
||||
GEO_SHADOW(0x00, 0x9B, 400),
|
||||
GEO_SHADOW(SHADOW_CIRCLE_9_VERTS, 0x9B, 400),
|
||||
GEO_RETURN(),
|
||||
};
|
||||
#endif
|
||||
@ -351,11 +351,10 @@ const GeoLayout bowser_geo[] = {
|
||||
GEO_NODE_START(),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ASM(0, geo_update_layer_transparency),
|
||||
#ifdef VERSION_JP
|
||||
GEO_SWITCH_CASE(2, geo_switch_anim_state),
|
||||
#endif
|
||||
#ifndef VERSION_JP
|
||||
GEO_SWITCH_CASE(3, geo_switch_anim_state),
|
||||
#else
|
||||
GEO_SWITCH_CASE(2, geo_switch_anim_state),
|
||||
#endif
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_NODE_START(),
|
||||
@ -384,19 +383,16 @@ const GeoLayout bowser_geo[] = {
|
||||
};
|
||||
|
||||
// 0x0D000B18 / 0B40
|
||||
const GeoLayout bowser2_geo[] = {
|
||||
const GeoLayout bowser_geo_no_shadow[] = {
|
||||
GEO_NODE_START(),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ASM(0, geo_update_layer_transparency),
|
||||
|
||||
#ifdef VERSION_JP
|
||||
GEO_SWITCH_CASE(2, geo_switch_anim_state),
|
||||
#endif
|
||||
#ifndef VERSION_JP
|
||||
GEO_SWITCH_CASE(3, geo_switch_anim_state),
|
||||
#else
|
||||
GEO_SWITCH_CASE(2, geo_switch_anim_state),
|
||||
#endif
|
||||
GEO_OPEN_NODE(),
|
||||
|
||||
GEO_NODE_START(),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ASM(0, geo_bits_bowser_coloring),
|
||||
|
@ -1184,7 +1184,7 @@ const Gfx bowser_seg6_dl_0603B8D0[] = {
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
#ifndef VERSION_JP
|
||||
#if BUGFIX_BOWSER_FADING_OUT
|
||||
// 0x0603B948 - 0x0603B9C8
|
||||
const Gfx bowser_seg6_dl_0603B948[] = {
|
||||
gsDPPipeSync(),
|
||||
@ -2870,7 +2870,7 @@ const Gfx bowser_seg6_dl_06040210[] = {
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
#ifndef VERSION_JP
|
||||
#if BUGFIX_BOWSER_FADING_OUT
|
||||
// 0x06040358 - 0x06040428
|
||||
const Gfx bowser_seg6_dl_06040358[] = {
|
||||
gsDPPipeSync(),
|
||||
|
@ -4,24 +4,12 @@
|
||||
#include "types.h"
|
||||
|
||||
// amp
|
||||
extern const GeoLayout amp_geo[];
|
||||
extern const Gfx amp_seg8_dl_08002B68[];
|
||||
extern const Gfx amp_seg8_dl_08002BA0[];
|
||||
extern const Gfx amp_seg8_dl_08002C50[];
|
||||
extern const Gfx amp_seg8_dl_08002C88[];
|
||||
extern const Gfx amp_seg8_dl_08002D38[];
|
||||
extern const Gfx amp_seg8_dl_08002D70[];
|
||||
extern const Gfx amp_seg8_dl_08002E20[];
|
||||
extern const Gfx amp_seg8_dl_08002E58[];
|
||||
extern const Gfx amp_seg8_dl_08003910[];
|
||||
extern const Gfx amp_seg8_dl_08003940[];
|
||||
extern const Gfx amp_seg8_dl_08003970[];
|
||||
extern const Gfx amp_seg8_dl_080039A0[];
|
||||
extern const Gfx amp_seg8_dl_080039D0[];
|
||||
extern const Gfx amp_seg8_dl_08003DA8[];
|
||||
extern const Gfx amp_seg8_dl_08003DD8[];
|
||||
extern const Gfx amp_seg8_dl_08003E00[];
|
||||
extern const struct Animation *const amp_seg8_anims_08004034[];
|
||||
extern const GeoLayout dAmpGeo[];
|
||||
extern const Gfx dAmpElectricityDl[];
|
||||
extern const Gfx dAmpEyeDl[];
|
||||
extern const Gfx dAmpMouthDl[];
|
||||
extern const Gfx dAmpBodyDl[];
|
||||
extern const struct Animation *const dAmpAnimsList[];
|
||||
|
||||
// blue_coin_switch
|
||||
extern const GeoLayout blue_coin_switch_geo[];
|
||||
|
@ -18,7 +18,7 @@ UNUSED static const u64 binid_2 = 2;
|
||||
#include "bowser/model.inc.c"
|
||||
#include "bowser/anims/data.inc.c"
|
||||
#include "bowser/anims/table.inc.c"
|
||||
#include "bowser/flames_pos.inc.c"
|
||||
#include "bowser/flames_data.inc.c"
|
||||
UNUSED static const u64 binid_3 = 3;
|
||||
|
||||
#include "bomb/model.inc.c"
|
||||
|
@ -17,7 +17,7 @@ extern const GeoLayout bowser_geo_000424[];
|
||||
extern const GeoLayout bowser_geo_000770[];
|
||||
extern const GeoLayout bowser_shadow_geo[];
|
||||
extern const GeoLayout bowser_geo[];
|
||||
extern const GeoLayout bowser2_geo[];
|
||||
extern const GeoLayout bowser_geo_no_shadow[];
|
||||
extern const Gfx bowser_seg6_dl_06039110[];
|
||||
extern const Gfx bowser_seg6_dl_060391C8[];
|
||||
extern const Gfx bowser_seg6_dl_06039260[];
|
||||
@ -90,7 +90,7 @@ extern const Gfx bowser_seg6_dl_06043548[];
|
||||
extern const Gfx bowser_seg6_dl_06043648[];
|
||||
extern const Gfx bowser_seg6_dl_06043698[];
|
||||
extern const struct Animation *const bowser_seg6_anims_06057690[];
|
||||
extern const s16 bowser_seg6_unkmoveshorts_060576FC[];
|
||||
extern const s16 dBowserFlamesOrientationValues[];
|
||||
|
||||
// bowser_flame
|
||||
extern const GeoLayout bowser_flames_geo[];
|
||||
|
@ -55,6 +55,11 @@ ALIGNED8 static const Texture king_bobomb_seg5_texture_05004878[] = {
|
||||
#include "actors/king_bobomb/king_bob-omb_eyes.rgba16.inc.c"
|
||||
};
|
||||
|
||||
// 0x05005078 - Unused
|
||||
ALIGNED8 static const Texture king_bobomb_seg5_texture_05005078[] = {
|
||||
#include "actors/king_bobomb/king_bob-omb_eyes_blink.rgba16.inc.c"
|
||||
};
|
||||
|
||||
// 0x05005878
|
||||
ALIGNED8 static const Texture king_bobomb_seg5_texture_05005878[] = {
|
||||
#include "actors/king_bobomb/king_bob-omb_hand.rgba16.inc.c"
|
||||
|
22
asm/boot.s
22
asm/boot.s
@ -1,21 +1,21 @@
|
||||
# assembler directives
|
||||
.set noat # allow manual use of $at
|
||||
.set noreorder # don't insert nops after branches
|
||||
// assembler directives
|
||||
.set noat // allow manual use of $at
|
||||
.set noreorder // don't insert nops after branches
|
||||
.set gp=64
|
||||
|
||||
.include "macros.inc"
|
||||
#include "macros.inc"
|
||||
|
||||
# 0xA0000000-0xBFFFFFFF: KSEG1 direct map non-cache mirror of 0x00000000
|
||||
# 0xA4000000-0xA4000FFF: RSP DMEM
|
||||
// 0xA0000000-0xBFFFFFFF: KSEG1 direct map non-cache mirror of 0x00000000
|
||||
// 0xA4000000-0xA4000FFF: RSP DMEM
|
||||
|
||||
# 0xA4000000-0xA400003F: ROM header
|
||||
// 0xA4000000-0xA400003F: ROM header
|
||||
|
||||
.section .text, "ax"
|
||||
|
||||
# 0xA4000040-0xA4000B6F: IPL3
|
||||
// 0xA4000040-0xA4000B6F: IPL3
|
||||
|
||||
# IPL3 entry point jumped to from IPL2
|
||||
glabel ipl3_entry # 0xA4000040
|
||||
// IPL3 entry point jumped to from IPL2
|
||||
glabel ipl3_entry // 0xA4000040
|
||||
mtc0 $zero, $13
|
||||
mtc0 $zero, $9
|
||||
mtc0 $zero, $11
|
||||
@ -797,7 +797,7 @@ func_A4000AD0:
|
||||
nop
|
||||
nop
|
||||
|
||||
# 0xA4000B70-0xA4000FFF: IPL3 Font
|
||||
// 0xA4000B70-0xA4000FFF: IPL3 Font
|
||||
glabel ipl3_font
|
||||
.incbin "textures/ipl3_raw/ipl3_font_00.ia1"
|
||||
.incbin "textures/ipl3_raw/ipl3_font_01.ia1"
|
||||
|
@ -1,61 +1,17 @@
|
||||
# assembler directives
|
||||
.set noat # allow manual use of $at
|
||||
.set noreorder # don't insert nops after branches
|
||||
// assembler directives
|
||||
.set noat // allow manual use of $at
|
||||
.set noreorder // don't insert nops after branches
|
||||
.set gp=64
|
||||
|
||||
.include "macros.inc"
|
||||
#include "macros.inc"
|
||||
|
||||
|
||||
.section .text, "ax"
|
||||
|
||||
# This file is handwritten.
|
||||
// This file is handwritten.
|
||||
|
||||
glabel decompress
|
||||
.if VERSION_SH == 1
|
||||
lw $a3, 8($a0)
|
||||
lw $t9, 0xc($a0)
|
||||
lw $t8, 4($a0)
|
||||
add $a3, $a3, $a0
|
||||
add $t9, $t9, $a0
|
||||
move $a2, $zero
|
||||
addi $a0, $a0, 0x10
|
||||
add $t8, $t8, $a1
|
||||
.L802772C0:
|
||||
bnel $a2, $zero, .L802772D8
|
||||
slt $t1, $t0, $zero
|
||||
lw $t0, ($a0)
|
||||
li $a2, 32
|
||||
addi $a0, $a0, 4
|
||||
slt $t1, $t0, $zero
|
||||
.L802772D8:
|
||||
beql $t1, $zero, .L802772F8
|
||||
lhu $t2, ($a3)
|
||||
lb $t2, ($t9)
|
||||
addi $t9, $t9, 1
|
||||
addi $a1, $a1, 1
|
||||
b .L80277324
|
||||
sb $t2, -1($a1)
|
||||
lhu $t2, ($a3)
|
||||
.L802772F8:
|
||||
addi $a3, $a3, 2
|
||||
srl $t3, $t2, 0xc
|
||||
andi $t2, $t2, 0xfff
|
||||
sub $t1, $a1, $t2
|
||||
addi $t3, $t3, 3
|
||||
.L8027730C:
|
||||
lb $t2, -1($t1)
|
||||
addi $t3, $t3, -1
|
||||
addi $t1, $t1, 1
|
||||
addi $a1, $a1, 1
|
||||
bnez $t3, .L8027730C
|
||||
sb $t2, -1($a1)
|
||||
.L80277324:
|
||||
sll $t0, $t0, 1
|
||||
bne $a1, $t8, .L802772C0
|
||||
addi $a2, $a2, -1
|
||||
jr $ra
|
||||
nop
|
||||
.elseif VERSION_EU == 1
|
||||
#if defined(VERSION_EU) || defined(VERSION_SH)
|
||||
lw $a3, 8($a0)
|
||||
lw $t9, 0xc($a0)
|
||||
lw $t8, 4($a0)
|
||||
@ -99,7 +55,7 @@ glabel decompress
|
||||
addi $a2, $a2, -1
|
||||
jr $ra
|
||||
nop
|
||||
.else
|
||||
#else
|
||||
lw $t8, 4($a0)
|
||||
lw $a3, 8($a0)
|
||||
lw $t9, 0xc($a0)
|
||||
@ -146,4 +102,4 @@ glabel decompress
|
||||
nop
|
||||
jr $ra
|
||||
nop
|
||||
.endif
|
||||
#endif
|
||||
|
24
asm/entry.s
24
asm/entry.s
@ -1,29 +1,29 @@
|
||||
# assembler directives
|
||||
.set noat # allow manual use of $at
|
||||
.set noreorder # don't insert nops after branches
|
||||
// assembler directives
|
||||
.set noat // allow manual use of $at
|
||||
.set noreorder // don't insert nops after branches
|
||||
.set gp=64
|
||||
|
||||
.include "macros.inc"
|
||||
#include "macros.inc"
|
||||
|
||||
|
||||
.section .text, "ax"
|
||||
|
||||
glabel entry_point
|
||||
lui $t0, %hi(_mainSegmentNoloadStart) # $t0, 0x8034
|
||||
lui $t1, %lo(_mainSegmentNoloadSizeHi) # lui $t1, 2
|
||||
addiu $t0, %lo(_mainSegmentNoloadStart) # addiu $t0, $t0, -0x6df0
|
||||
ori $t1, %lo(_mainSegmentNoloadSizeLo) # ori $t1, $t1, 0xcee0
|
||||
lui $t0, %hi(_mainSegmentNoloadStart) // $t0, 0x8034
|
||||
lui $t1, %lo(_mainSegmentNoloadSizeHi) // lui $t1, 2
|
||||
addiu $t0, %lo(_mainSegmentNoloadStart) // addiu $t0, $t0, -0x6df0
|
||||
ori $t1, %lo(_mainSegmentNoloadSizeLo) // ori $t1, $t1, 0xcee0
|
||||
.L80246010:
|
||||
addi $t1, $t1, -8
|
||||
sw $zero, ($t0)
|
||||
sw $zero, 4($t0)
|
||||
bnez $t1, .L80246010
|
||||
addi $t0, $t0, 8
|
||||
lui $t2, %hi(main_func) # $t2, 0x8024
|
||||
lui $sp, %hi(gIdleThreadStack) # $sp, 0x8020
|
||||
addiu $t2, %lo(main_func) # addiu $t2, $t2, 0x6dc4
|
||||
lui $t2, %hi(main_func) // $t2, 0x8024
|
||||
lui $sp, %hi(gIdleThreadStack) // $sp, 0x8020
|
||||
addiu $t2, %lo(main_func) // addiu $t2, $t2, 0x6dc4
|
||||
jr $t2
|
||||
addiu $sp, %lo(gIdleThreadStack) # addiu $sp, $sp, 0xa00
|
||||
addiu $sp, %lo(gIdleThreadStack) // addiu $sp, $sp, 0xa00
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
|
@ -8,38 +8,39 @@
|
||||
.word entry_point /* Entrypoint */
|
||||
|
||||
/* Revision */
|
||||
.if VERSION_SH == 1
|
||||
#ifdef VERSION_SH
|
||||
.word 0x00001448
|
||||
.elseif VERSION_EU == 1
|
||||
#elif defined(VERSION_EU)
|
||||
.word 0x00001446
|
||||
.else /* NTSC-U and NTSC-J 1.0 */
|
||||
#else /* NTSC-U and NTSC-J 1.0 */
|
||||
.word 0x00001444
|
||||
.endif
|
||||
#endif
|
||||
|
||||
.word 0x4EAA3D0E /* Checksum 1 */
|
||||
.word 0x74757C24 /* Checksum 2 */
|
||||
.word 0x00000000 /* Unknown */
|
||||
.word 0x00000000 /* Unknown */
|
||||
.if VERSION_SH == 1
|
||||
#ifdef VERSION_SH
|
||||
.ascii "SUPERMARIO64 " /* Internal ROM name */
|
||||
.else
|
||||
#else
|
||||
.ascii "SUPER MARIO 64 " /* Internal ROM name */
|
||||
.endif
|
||||
#endif
|
||||
.word 0x00000000 /* Unknown */
|
||||
.word 0x0000004E /* Cartridge */
|
||||
.ascii "SM" /* Cartridge ID */
|
||||
|
||||
/* Region */
|
||||
.if VERSION_US == 1
|
||||
.ascii "E" /* NTSC-U (North America) */
|
||||
.elseif (VERSION_JP == 1 || VERSION_SH == 1)
|
||||
.ascii "J" /* NTSC-J (Japan) */
|
||||
.else
|
||||
#ifdef VERSION_EU
|
||||
.ascii "P" /* PAL (Europe) */
|
||||
.endif
|
||||
#elif defined(VERSION_US)
|
||||
.ascii "E" /* NTSC-U (North America) */
|
||||
#else
|
||||
.ascii "J" /* NTSC-J (Japan) */
|
||||
#endif
|
||||
|
||||
.if VERSION_SH == 1
|
||||
|
||||
#ifdef VERSION_SH
|
||||
.byte 0x03 /* Version (Shindou) */
|
||||
.else
|
||||
#else
|
||||
.byte 0x00 /* Version */
|
||||
.endif
|
||||
#endif
|
||||
|
@ -266,8 +266,9 @@
|
||||
"actors/king_bobomb/king_bob-omb_arm.rgba16.png": [32,32,2048,{"jp":[1257760,8312],"us":[1264928,8312],"eu":[1136896,8312],"sh":[1113408,8312]}],
|
||||
"actors/king_bobomb/king_bob-omb_body_unused.rgba16.png": [64,64,8192,{"jp":[1257760,10360],"us":[1264928,10360],"eu":[1136896,10360],"sh":[1113408,10360]}],
|
||||
"actors/king_bobomb/king_bob-omb_crown_rim.rgba16.png": [32,16,1024,{"jp":[1257760,24696],"us":[1264928,24696],"eu":[1136896,24696],"sh":[1113408,24696]}],
|
||||
"actors/king_bobomb/king_bob-omb_eyes.rgba16.png": [32,64,4096,{"jp":[1257760,18552],"us":[1264928,18552],"eu":[1136896,18552],"sh":[1113408,18552]}],
|
||||
"actors/king_bobomb/king_bob-omb_hand.rgba16.png": [32,32,2048,{"jp":[1215456,64],"us":[1222624,64],"eu":[1094592,64],"sh":[1071104,64]}],
|
||||
"actors/king_bobomb/king_bob-omb_eyes.rgba16.png": [32,32,2048,{"jp":[1257760,18552],"us":[1264928,18552],"eu":[1136896,18552],"sh":[1113408,18552]}],
|
||||
"actors/king_bobomb/king_bob-omb_eyes_blink.rgba16.png": [32,32,2048,{"jp":[1257760,20600],"us":[1264928,20600],"eu":[1136896,20600],"sh":[1113408,20600]}],
|
||||
"actors/king_bobomb/king_bob-omb_hand.rgba16.png": [32,32,2048,{"jp":[1257760,22648],"us":[1264928,22648],"eu":[1136896,22648],"sh":[1113408,22648]}],
|
||||
"actors/king_bobomb/king_bob-omb_left_side.rgba16.png": [32,64,4096,{"jp":[1257760,33912],"us":[1264928,33912],"eu":[1136896,33912],"sh":[1113408,33912]}],
|
||||
"actors/king_bobomb/king_bob-omb_right_side.rgba16.png": [32,64,4096,{"jp":[1257760,38008],"us":[1264928,38008],"eu":[1136896,38008],"sh":[1113408,38008]}],
|
||||
"actors/klepto/klepto_beak.rgba16.png": [32,64,4096,{"jp":[1327760,4104],"us":[1334928,4104],"eu":[1206896,4104],"sh":[1183408,4104]}],
|
||||
|
@ -2498,7 +2498,7 @@ const Texture texture_waterbox_lava[] = {
|
||||
};
|
||||
|
||||
// Unreferenced light group
|
||||
static const Lights1 segment2_lights_unused = gdSPDefLights1(
|
||||
UNUSED static const Lights1 segment2_lights_unused = gdSPDefLights1(
|
||||
0x40, 0x40, 0x40,
|
||||
0xff, 0xff, 0xff, 0x28, 0x28, 0x28
|
||||
);
|
||||
|
@ -1965,6 +1965,7 @@ const BehaviorScript bhvBowser[] = {
|
||||
SPAWN_CHILD(/*Model*/ MODEL_NONE, /*Behavior*/ bhvBowserBodyAnchor),
|
||||
SPAWN_CHILD(/*Model*/ MODEL_BOWSER_BOMB_CHILD_OBJ, /*Behavior*/ bhvBowserFlameSpawn),
|
||||
SPAWN_OBJ(/*Model*/ MODEL_NONE, /*Behavior*/ bhvBowserTailAnchor),
|
||||
// Beta leftover that spawn 50 coins when Bowser is defeated
|
||||
SET_INT(oNumLootCoins, 50),
|
||||
SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 0, /*Gravity*/ -400, /*Bounciness*/ -70, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),
|
||||
SET_HOME(),
|
||||
@ -3023,7 +3024,7 @@ const BehaviorScript bhvHiddenStaircaseStep[] = {
|
||||
END_LOOP(),
|
||||
};
|
||||
|
||||
const BehaviorScript bhvBooBossSpawnedBridge[] = {
|
||||
const BehaviorScript bhvBooStaircase[] = {
|
||||
BEGIN(OBJ_LIST_SURFACE),
|
||||
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
|
||||
LOAD_COLLISION_DATA(bbh_seg7_collision_staircase_step),
|
||||
@ -3031,7 +3032,7 @@ const BehaviorScript bhvBooBossSpawnedBridge[] = {
|
||||
SET_FLOAT(oCollisionDistance, 1000),
|
||||
SET_HOME(),
|
||||
BEGIN_LOOP(),
|
||||
CALL_NATIVE(bhv_boo_boss_spawned_bridge_loop),
|
||||
CALL_NATIVE(bhv_boo_staircase),
|
||||
CALL_NATIVE(load_object_collision_model),
|
||||
END_LOOP(),
|
||||
};
|
||||
@ -3141,7 +3142,7 @@ const BehaviorScript bhvUnusedFakeStar[] = {
|
||||
};
|
||||
|
||||
// What is this?
|
||||
static const BehaviorScript unused_1[] = {
|
||||
UNUSED static const BehaviorScript unused_1[] = {
|
||||
BREAK(),
|
||||
BREAK(),
|
||||
BREAK(),
|
||||
@ -3851,7 +3852,7 @@ const BehaviorScript bhvSignOnWall[] = {
|
||||
const BehaviorScript bhvHomingAmp[] = {
|
||||
BEGIN(OBJ_LIST_GENACTOR),
|
||||
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
|
||||
LOAD_ANIMATIONS(oAnimations, amp_seg8_anims_08004034),
|
||||
LOAD_ANIMATIONS(oAnimations, dAmpAnimsList),
|
||||
ANIMATE(0),
|
||||
SET_FLOAT(oGraphYOffset, 40),
|
||||
SET_INT(oIntangibleTimer, 0),
|
||||
@ -3864,7 +3865,7 @@ const BehaviorScript bhvHomingAmp[] = {
|
||||
const BehaviorScript bhvCirclingAmp[] = {
|
||||
BEGIN(OBJ_LIST_GENACTOR),
|
||||
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
|
||||
LOAD_ANIMATIONS(oAnimations, amp_seg8_anims_08004034),
|
||||
LOAD_ANIMATIONS(oAnimations, dAmpAnimsList),
|
||||
ANIMATE(0),
|
||||
SET_FLOAT(oGraphYOffset, 40),
|
||||
SET_INT(oIntangibleTimer, 0),
|
||||
|
@ -1,13 +1,13 @@
|
||||
diff --git a/asm/crash.s b/asm/crash.s
|
||||
new file mode 100644
|
||||
index 00000000..0b2a5574
|
||||
index 00000000..033bf952
|
||||
--- /dev/null
|
||||
+++ b/asm/crash.s
|
||||
@@ -0,0 +1,153 @@
|
||||
+# SM64 Crash Handler
|
||||
+# See Readme below.
|
||||
+// SM64 Crash Handler
|
||||
+// See Readme below.
|
||||
+
|
||||
+.include "macros.inc"
|
||||
+#include "macros.inc"
|
||||
+
|
||||
+/* ---------------------------------------------------------------
|
||||
+ * IMPORTANT README:
|
||||
@ -58,7 +58,7 @@ index 00000000..0b2a5574
|
||||
+ sw $a3, %lo(nAssertStopProgram)($at)
|
||||
+ beqz $a3, .end_2
|
||||
+ nop
|
||||
+ syscall # trigger crash screen
|
||||
+ syscall // trigger crash screen
|
||||
+.end_2:
|
||||
+ jr $ra
|
||||
+ nop
|
||||
@ -75,15 +75,15 @@ index 00000000..0b2a5574
|
||||
+ jr $ra
|
||||
+ mfc0 $v0, COP0_BADVADDR
|
||||
+
|
||||
+# If the error code field of cop0's cause register is non-zero,
|
||||
+# draw crash details to the screen and hang
|
||||
+#
|
||||
+# If there wasn't an error, continue to the original handler
|
||||
+// If the error code field of cop0's cause register is non-zero,
|
||||
+// draw crash details to the screen and hang
|
||||
+
|
||||
+// If there wasn't an error, continue to the original handler
|
||||
+
|
||||
+glabel __crash_handler_entry
|
||||
+ mfc0 $k1, COP0_CAUSE
|
||||
+ andi $k1, $k1, (0x1F << 2)
|
||||
+ beqzl $k1, .end2 # exit if ExCode is 0
|
||||
+ beqzl $k1, .end2 // exit if ExCode is 0
|
||||
+ lui $k0, %hi(__osException)
|
||||
+ la $k0, exceptionRegContext
|
||||
+ sd $zero, 0x018 ($k0)
|
||||
@ -116,7 +116,7 @@ index 00000000..0b2a5574
|
||||
+ sd $sp, 0x0F0 ($k0)
|
||||
+ sd $fp, 0x0F8 ($k0)
|
||||
+ sd $ra, 0x100 ($k0)
|
||||
+ # cop unusable exception fired twice on startup so we'll ignore it for now
|
||||
+ // cop unusable exception fired twice on startup so we'll ignore it for now
|
||||
+ li $t0, (0x0B << 2)
|
||||
+ beq $k1, $t0, .end
|
||||
+ nop
|
||||
@ -155,14 +155,14 @@ index 00000000..0b2a5574
|
||||
+ lui $k0, %hi(__osException)
|
||||
+ .end2:
|
||||
+ addiu $k0, $k0, %lo(__osException)
|
||||
+ jr $k0 # run the original handler
|
||||
+ jr $k0 // run the original handler
|
||||
+ nop
|
||||
diff --git a/lib/asm/__osExceptionPreamble.s b/lib/asm/__osExceptionPreamble.s
|
||||
index e14928ce..4d12129e 100644
|
||||
index c3b97993..c552a485 100644
|
||||
--- a/lib/asm/__osExceptionPreamble.s
|
||||
+++ b/lib/asm/__osExceptionPreamble.s
|
||||
@@ -18,8 +18,8 @@
|
||||
.endif
|
||||
@@ -11,8 +11,8 @@
|
||||
#endif
|
||||
|
||||
glabel __osExceptionPreamble
|
||||
- lui $k0, %hi(__osException)
|
||||
@ -173,10 +173,10 @@ index e14928ce..4d12129e 100644
|
||||
nop
|
||||
|
||||
diff --git a/sm64.ld b/sm64.ld
|
||||
index f80f5b4d..569344bc 100755
|
||||
index 7d9b5b4a..c7bb81b9 100755
|
||||
--- a/sm64.ld
|
||||
+++ b/sm64.ld
|
||||
@@ -116,6 +116,7 @@ SECTIONS
|
||||
@@ -117,6 +117,7 @@ SECTIONS
|
||||
BUILD_DIR/src/game/rendering_graph_node.o(.text);
|
||||
BUILD_DIR/src/game/profiler.o(.text);
|
||||
BUILD_DIR/asm/decompress.o(.text);
|
||||
|
@ -2,10 +2,10 @@ diff --git a/src/game/area.c b/src/game/area.c
|
||||
index af9d0156..c68a7f6e 100644
|
||||
--- a/src/game/area.c
|
||||
+++ b/src/game/area.c
|
||||
@@ -21,6 +21,7 @@
|
||||
#include "engine/geo_layout.h"
|
||||
@@ -22,6 +22,7 @@
|
||||
#include "save_file.h"
|
||||
#include "level_table.h"
|
||||
#include "dialog_ids.h"
|
||||
+#include "debug_box.h"
|
||||
|
||||
struct SpawnInfo gPlayerSpawnInfos[1];
|
||||
|
@ -1,10 +1,10 @@
|
||||
diff --git a/src/game/game_init.c b/src/game/game_init.c
|
||||
index b6334688..62ed106c 100644
|
||||
index b961ca52..531231cf 100644
|
||||
--- a/src/game/game_init.c
|
||||
+++ b/src/game/game_init.c
|
||||
@@ -59,6 +59,47 @@ struct DemoInput *gCurrDemoInput = NULL; // demo input sequence
|
||||
u16 gDemoInputListID = 0;
|
||||
struct DemoInput gRecordedDemoInput = { 0 }; // possibly removed in EU. TODO: Check
|
||||
@@ -82,6 +82,47 @@ struct DemoInput gRecordedDemoInput = { 0 };
|
||||
// Display
|
||||
// ----------------------------------------------------------------------------------------------------
|
||||
|
||||
+// SDK states that 1 cycle takes about 21.33 nanoseconds
|
||||
+#define SECONDS_PER_CYCLE 0.00000002133f
|
||||
@ -48,9 +48,9 @@ index b6334688..62ed106c 100644
|
||||
+}
|
||||
+
|
||||
/**
|
||||
* Initializes the Reality Display Processor (RDP).
|
||||
* This function initializes settings such as texture filtering mode,
|
||||
@@ -633,5 +674,7 @@ void thread5_game_loop(UNUSED void *arg) {
|
||||
* Sets the initial RDP (Reality Display Processor) rendering settings.
|
||||
*/
|
||||
@@ -694,5 +735,7 @@ void thread5_game_loop(UNUSED void *arg) {
|
||||
// amount of free space remaining.
|
||||
print_text_fmt_int(180, 20, "BUF %d", gGfxPoolEnd - (u8 *) gDisplayListHead);
|
||||
}
|
||||
|
@ -13,16 +13,16 @@ index 00000000..e60550ab
|
||||
+extern enum ConsoleType get_console_type(void);
|
||||
diff --git a/lib/asm/skGetId.s b/lib/asm/skGetId.s
|
||||
new file mode 100644
|
||||
index 00000000..8fb4c449
|
||||
index 00000000..58e7d4f9
|
||||
--- /dev/null
|
||||
+++ b/lib/asm/skGetId.s
|
||||
@@ -0,0 +1,18 @@
|
||||
+# Code by stuckpixel
|
||||
+// Code by stuckpixel
|
||||
+
|
||||
+.set noreorder
|
||||
+.set gp=64
|
||||
+
|
||||
+.include "macros.inc"
|
||||
+#include "macros.inc"
|
||||
+
|
||||
+glabel skGetId
|
||||
+ li $v0, 0
|
||||
@ -36,10 +36,10 @@ index 00000000..8fb4c449
|
||||
+ nop
|
||||
+ nop
|
||||
diff --git a/lib/src/__osViSwapContext.c b/lib/src/__osViSwapContext.c
|
||||
index b9d364b1..fa149b5d 100644
|
||||
index 990cb11f..22756e91 100644
|
||||
--- a/lib/src/__osViSwapContext.c
|
||||
+++ b/lib/src/__osViSwapContext.c
|
||||
@@ -52,7 +52,9 @@ void __osViSwapContext() {
|
||||
@@ -54,7 +54,9 @@ void __osViSwapContext() {
|
||||
HW_REG(VI_INTR_REG, u32) = s0->fldRegs[field].vIntr;
|
||||
HW_REG(VI_X_SCALE_REG, u32) = s1->unk20;
|
||||
HW_REG(VI_Y_SCALE_REG, u32) = s1->unk2c;
|
||||
@ -269,7 +269,7 @@ index 1a86477b..a94f8721 100644
|
||||
return sp34;
|
||||
}
|
||||
diff --git a/lib/src/osInitialize.c b/lib/src/osInitialize.c
|
||||
index ea247636..4adb45cb 100644
|
||||
index ba73024b..6deaf407 100644
|
||||
--- a/lib/src/osInitialize.c
|
||||
+++ b/lib/src/osInitialize.c
|
||||
@@ -1,6 +1,7 @@
|
||||
@ -280,7 +280,7 @@ index ea247636..4adb45cb 100644
|
||||
|
||||
#define PIF_ADDR_START (void *) 0x1FC007FC
|
||||
|
||||
@@ -54,6 +55,7 @@ void osInitialize(void) {
|
||||
@@ -51,6 +52,7 @@ void osInitialize(void) {
|
||||
UNUSED u32 eu_sp30;
|
||||
#endif
|
||||
UNUSED u32 sp2c;
|
||||
@ -289,24 +289,24 @@ index ea247636..4adb45cb 100644
|
||||
__osSetSR(__osGetSR() | 0x20000000);
|
||||
__osSetFpcCsr(0x01000800);
|
||||
diff --git a/sm64.ld b/sm64.ld
|
||||
index f80f5b4d..e53d4e40 100755
|
||||
index 7d9b5b4a..be853a3b 100755
|
||||
--- a/sm64.ld
|
||||
+++ b/sm64.ld
|
||||
@@ -300,6 +300,8 @@ SECTIONS
|
||||
#ifdef VERSION_SH
|
||||
BUILD_DIR/libultra.a:unk_shindou_file_3.o(.text)
|
||||
@@ -306,6 +306,8 @@ SECTIONS
|
||||
#if ENABLE_RUMBLE
|
||||
BUILD_DIR/libultra.a:unk_shindou_file_3.o(.text);
|
||||
#endif
|
||||
+ BUILD_DIR/libultra.a:consoleType.o(.text)
|
||||
+ BUILD_DIR/libultra.a:skGetId.o(.text)
|
||||
BUILD_DIR/lib/rsp.o(.text);
|
||||
#else
|
||||
BUILD_DIR/src/game*.o(.text);
|
||||
@@ -410,6 +412,8 @@ SECTIONS
|
||||
BUILD_DIR/libultra.a:__osGetCause.o(.text);
|
||||
BUILD_DIR/libultra.a:__osAtomicDec.o(.text);
|
||||
BUILD_DIR/libultra.a:guLookAtRef.o(.text); /* Fast3DEX2 only */
|
||||
+ BUILD_DIR/libultra.a:consoleType.o(.text);
|
||||
+ BUILD_DIR/libultra.a:skGetId.o(.text);
|
||||
@@ -428,6 +430,8 @@ SECTIONS
|
||||
#if ENABLE_RUMBLE
|
||||
BUILD_DIR/libultra.a:unk_shindou_file_3.o(.text);
|
||||
#endif
|
||||
+ BUILD_DIR/libultra.a:consoleType.o(.text)
|
||||
+ BUILD_DIR/libultra.a:skGetId.o(.text)
|
||||
BUILD_DIR/lib/rsp.o(.text);
|
||||
#endif
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
diff --git a/Makefile b/Makefile
|
||||
index f81fd27b..318140f2 100644
|
||||
index f50b7622..124c7ec6 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -419,6 +419,7 @@ $(BUILD_DIR)/include/text_strings.h: $(BUILD_DIR)/include/text_menu_strings.h
|
||||
@@ -478,6 +478,7 @@ $(BUILD_DIR)/include/text_strings.h: $(BUILD_DIR)/include/text_menu_strings.h
|
||||
$(BUILD_DIR)/src/menu/file_select.o: $(BUILD_DIR)/include/text_strings.h
|
||||
$(BUILD_DIR)/src/menu/star_select.o: $(BUILD_DIR)/include/text_strings.h
|
||||
$(BUILD_DIR)/src/game/ingame_menu.o: $(BUILD_DIR)/include/text_strings.h
|
||||
@ -11,12 +11,12 @@ index f81fd27b..318140f2 100644
|
||||
|
||||
#==============================================================================#
|
||||
diff --git a/include/segments.h b/include/segments.h
|
||||
index a8c1bf97..84c3d7a4 100644
|
||||
index a97d6ee8..186c968e 100644
|
||||
--- a/include/segments.h
|
||||
+++ b/include/segments.h
|
||||
@@ -1,6 +1,9 @@
|
||||
#ifndef SEGMENTS_H
|
||||
#define SEGMENTS_H
|
||||
@@ -3,6 +3,9 @@
|
||||
|
||||
#include "config.h"
|
||||
|
||||
+/* Use expansion pack RAM */
|
||||
+#define USE_EXT_RAM 1
|
||||
@ -58,7 +58,7 @@ index 17c773ed..677a5ae9 100644
|
||||
+ JUMP(/*target*/ level_script_entry_error_screen),
|
||||
+};
|
||||
diff --git a/levels/intro/geo.c b/levels/intro/geo.c
|
||||
index 7a297fe7..71b16442 100644
|
||||
index 30a87806..6bf7b79a 100644
|
||||
--- a/levels/intro/geo.c
|
||||
+++ b/levels/intro/geo.c
|
||||
@@ -15,6 +15,24 @@
|
||||
@ -100,7 +100,7 @@ index 99277e86..04797cd7 100644
|
||||
+
|
||||
#endif
|
||||
diff --git a/levels/intro/script.c b/levels/intro/script.c
|
||||
index a130cc04..926c0d09 100644
|
||||
index 04b8fc4c..ca9058c4 100644
|
||||
--- a/levels/intro/script.c
|
||||
+++ b/levels/intro/script.c
|
||||
@@ -18,6 +18,21 @@
|
||||
@ -138,7 +138,7 @@ index d41a91c8..7d047236 100644
|
||||
struct LevelCommand *level_script_execute(struct LevelCommand *cmd);
|
||||
|
||||
diff --git a/src/game/main.c b/src/game/main.c
|
||||
index 9615f25a..e2d7b3d4 100644
|
||||
index 1a9d9e7e..f4f7a9e5 100644
|
||||
--- a/src/game/main.c
|
||||
+++ b/src/game/main.c
|
||||
@@ -11,6 +11,7 @@
|
||||
@ -149,7 +149,7 @@ index 9615f25a..e2d7b3d4 100644
|
||||
|
||||
// Message IDs
|
||||
#define MESG_SP_COMPLETE 100
|
||||
@@ -127,6 +128,10 @@ void alloc_pool(void) {
|
||||
@@ -131,6 +132,10 @@ void alloc_pool(void) {
|
||||
void *start = (void *) SEG_POOL_START;
|
||||
void *end = (void *) SEG_POOL_END;
|
||||
|
||||
@ -160,7 +160,7 @@ index 9615f25a..e2d7b3d4 100644
|
||||
main_pool_init(start, end);
|
||||
gEffectsMemoryPool = mem_pool_init(0x4000, MEMORY_POOL_LEFT);
|
||||
}
|
||||
@@ -332,7 +337,10 @@ void thread3_main(UNUSED void *arg) {
|
||||
@@ -336,7 +341,10 @@ void thread3_main(UNUSED void *arg) {
|
||||
create_thread(&gSoundThread, 4, thread4_sound, NULL, gThread4Stack + 0x2000, 20);
|
||||
osStartThread(&gSoundThread);
|
||||
|
||||
@ -174,7 +174,7 @@ index 9615f25a..e2d7b3d4 100644
|
||||
while (TRUE) {
|
||||
diff --git a/src/game/mem_error_screen.c b/src/game/mem_error_screen.c
|
||||
new file mode 100644
|
||||
index 00000000..81efaf91
|
||||
index 00000000..f432927c
|
||||
--- /dev/null
|
||||
+++ b/src/game/mem_error_screen.c
|
||||
@@ -0,0 +1,104 @@
|
||||
@ -274,15 +274,14 @@ index 00000000..81efaf91
|
||||
+
|
||||
+ addr = segmented_to_virtual(level_script_entry_error_screen);
|
||||
+
|
||||
+ rendering_init();
|
||||
+ render_init();
|
||||
+
|
||||
+ while (1) {
|
||||
+ config_gfx_pool();
|
||||
+ select_gfx_pool();
|
||||
+ addr = level_script_execute(addr);
|
||||
+ display_and_vsync();
|
||||
+ }
|
||||
+}
|
||||
\ No newline at end of file
|
||||
diff --git a/src/game/mem_error_screen.h b/src/game/mem_error_screen.h
|
||||
new file mode 100644
|
||||
index 00000000..9fbff34c
|
||||
|
@ -1,5 +1,5 @@
|
||||
diff --git a/src/game/game_init.c b/src/game/game_init.c
|
||||
index b6334688..9363074b 100644
|
||||
index b961ca52..adfde049 100644
|
||||
--- a/src/game/game_init.c
|
||||
+++ b/src/game/game_init.c
|
||||
@@ -11,6 +11,7 @@
|
||||
@ -10,9 +10,9 @@ index b6334688..9363074b 100644
|
||||
#include "profiler.h"
|
||||
#include "save_file.h"
|
||||
#include "seq_ids.h"
|
||||
@@ -335,6 +336,45 @@ void display_and_vsync(void) {
|
||||
gGlobalTimer++;
|
||||
}
|
||||
@@ -386,6 +387,45 @@ void display_and_vsync(void) {
|
||||
// Controls
|
||||
// ----------------------------------------------------------------------------------------------------
|
||||
|
||||
+/*
|
||||
+ * This enhancement allows you to record gameplay demos for the mario head screen.
|
||||
@ -24,7 +24,7 @@ index b6334688..9363074b 100644
|
||||
+ *
|
||||
+*/
|
||||
+
|
||||
+#include "../src/game/mario.h"
|
||||
+#include "mario.h"
|
||||
+
|
||||
+#define DEMOREC_STATUS_NOT_RECORDING 0
|
||||
+#define DEMOREC_STATUS_PREPARING 1
|
||||
@ -53,15 +53,15 @@ index b6334688..9363074b 100644
|
||||
+struct DemoInput* gRecordedInputsPtr = (struct DemoInput*)gRecordedInputs;
|
||||
+struct DemoInput gRecordedDemoInputCopy;
|
||||
+
|
||||
// this function records distinct inputs over a 255-frame interval to RAM locations and was likely
|
||||
// used to record the demo sequences seen in the final game. This function is unused.
|
||||
static void record_demo(void) {
|
||||
@@ -368,6 +408,118 @@ static void record_demo(void) {
|
||||
/**
|
||||
* This function records distinct inputs over a 255-frame interval to RAM locations and was likely
|
||||
* used to record the demo sequences seen in the final game. This function is unused.
|
||||
@@ -420,6 +460,118 @@ UNUSED static void record_demo(void) {
|
||||
gRecordedDemoInput.timer++;
|
||||
}
|
||||
|
||||
+void record_new_demo_input(void) {
|
||||
+ if(gRecordedDemoInput.timer == 1 && gRecordedDemoInputCopy.timer > 0) {
|
||||
+ if (gRecordedDemoInput.timer == 1 && gRecordedDemoInputCopy.timer > 0) {
|
||||
+ gRecordedInputs[gNumOfRecordedInputs].timer = gRecordedDemoInputCopy.timer;
|
||||
+ gRecordedInputs[gNumOfRecordedInputs + 1].timer = 0;
|
||||
+ gRecordedInputs[gNumOfRecordedInputs].rawStickX = gRecordedDemoInputCopy.rawStickX;
|
||||
@ -86,13 +86,13 @@ index b6334688..9363074b 100644
|
||||
+void recording(void) {
|
||||
+
|
||||
+ // Force-stop when someone makes too many inputs.
|
||||
+ if(gNumOfRecordedInputs + 1 > DEMOREC_MAX_INPUTS) {
|
||||
+ if (gNumOfRecordedInputs + 1 > DEMOREC_MAX_INPUTS) {
|
||||
+ gRecordingStatus = DEMOREC_STATUS_STOPPING;
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ copy_gRecordedDemoInput();
|
||||
+ record_demo(); // Defined in game.c
|
||||
+ record_demo();
|
||||
+ record_new_demo_input();
|
||||
+}
|
||||
+
|
||||
@ -112,10 +112,10 @@ index b6334688..9363074b 100644
|
||||
+ case DEMOREC_STATUS_NOT_RECORDING:
|
||||
+ break;
|
||||
+ case DEMOREC_STATUS_PREPARING:
|
||||
+ if(gMarioObject != NULL && gCurrLevelNum >= 5) { // If the game is in an active level
|
||||
+ if (gMarioObject != NULL && gCurrLevelNum != LEVEL_NONE) { // If the game is in an active level
|
||||
+ gRecordingStatus = DEMOREC_STATUS_RECORDING;
|
||||
+
|
||||
+ // A bit of a hack, but it works.
|
||||
+ // First 4 values in demo inputs are used to define level ID
|
||||
+ gNumOfRecordedInputs = 1;
|
||||
+ gRecordedInputs[0].timer = gCurrLevelNum;
|
||||
+ gRecordedInputs[0].rawStickX = 0;
|
||||
@ -127,7 +127,7 @@ index b6334688..9363074b 100644
|
||||
+ recording();
|
||||
+ break;
|
||||
+ case DEMOREC_STATUS_DONE:
|
||||
+ if(gDoneDelay > DEMOREC_DONE_DELAY)
|
||||
+ if (gDoneDelay > DEMOREC_DONE_DELAY)
|
||||
+ gRecordingStatus = DEMOREC_STATUS_NOT_RECORDING;
|
||||
+ else
|
||||
+ gDoneDelay++;
|
||||
@ -159,8 +159,8 @@ index b6334688..9363074b 100644
|
||||
+ // so the debug level select is used for that.
|
||||
+ gDebugLevelSelect = TRUE;
|
||||
+
|
||||
+ if(gPlayer1Controller->buttonPressed & L_TRIG) {
|
||||
+ if(gRecordingStatus == DEMOREC_STATUS_NOT_RECORDING) {
|
||||
+ if (gPlayer1Controller->buttonPressed & L_TRIG) {
|
||||
+ if (gRecordingStatus == DEMOREC_STATUS_NOT_RECORDING) {
|
||||
+ gRecordingStatus = DEMOREC_STATUS_PREPARING;
|
||||
+ } else if (gRecordingStatus == DEMOREC_STATUS_RECORDING) {
|
||||
+ gRecordingStatus = DEMOREC_STATUS_STOPPING;
|
||||
@ -172,12 +172,12 @@ index b6334688..9363074b 100644
|
||||
+ print_status();
|
||||
+}
|
||||
+
|
||||
// take the updated controller struct and calculate
|
||||
// the new x, y, and distance floats.
|
||||
void adjust_analog_stick(struct Controller *controller) {
|
||||
@@ -623,6 +775,7 @@ void thread5_game_loop(UNUSED void *arg) {
|
||||
/**
|
||||
* Take the updated controller struct and calculate the new x, y, and distance floats.
|
||||
*/
|
||||
@@ -684,6 +836,7 @@ void thread5_game_loop(UNUSED void *arg) {
|
||||
audio_game_loop_tick();
|
||||
config_gfx_pool();
|
||||
select_gfx_pool();
|
||||
read_controller_inputs();
|
||||
+ recordingDemo();
|
||||
addr = level_script_execute(addr);
|
||||
|
@ -20,6 +20,8 @@ def read_local_asset_list(f):
|
||||
|
||||
|
||||
def asset_needs_update(asset, version):
|
||||
if version <= 6 and asset in ["actors/king_bobomb/king_bob-omb_eyes.rgba16.png", "actors/king_bobomb/king_bob-omb_hand.rgba16.png"]:
|
||||
return True
|
||||
if version <= 5 and asset == "textures/spooky/bbh_textures.00800.rgba16.png":
|
||||
return True
|
||||
if version <= 4 and asset in ["textures/mountain/ttm_textures.01800.rgba16.png", "textures/mountain/ttm_textures.05800.rgba16.png"]:
|
||||
@ -59,7 +61,7 @@ def clean_assets(local_asset_file):
|
||||
def main():
|
||||
# In case we ever need to change formats of generated files, we keep a
|
||||
# revision ID in the local asset file.
|
||||
new_version = 6
|
||||
new_version = 7
|
||||
|
||||
try:
|
||||
local_asset_file = open(".assets-local.txt")
|
||||
|
229
include/PR/abi.h
229
include/PR/abi.h
@ -56,13 +56,14 @@
|
||||
|
||||
#define A_ADDMIXER 4
|
||||
#define A_RESAMPLE_ZOH 6
|
||||
#define A_INTERL 17
|
||||
#define A_DMEMMOVE2 16
|
||||
#define A_DOWNSAMPLE_HALF 17
|
||||
#define A_ENVSETUP1 18
|
||||
#define A_ENVMIXER 19
|
||||
#define A_LOADBUFF 20
|
||||
#define A_SAVEBUFF 21
|
||||
#define A_ENVSETUP2 22
|
||||
#define A_UNK_23 23
|
||||
#define A_S8DEC 23
|
||||
#define A_HILOGAIN 24
|
||||
#define A_UNK_25 25
|
||||
#define A_DUPLICATE 26
|
||||
@ -306,6 +307,8 @@ typedef short ENVMIX_STATE[40];
|
||||
* address is later used as parameter, the 8 high bits will be an index
|
||||
* to the segment table and the lower 24 bits are added to the base address
|
||||
* stored in the segment table for this entry. The result is the physical address.
|
||||
* With the newer rsp audio code, this segment table is not used. The address is
|
||||
* used directly instead.
|
||||
*
|
||||
* Transfers to/from DRAM are executed using DMA and hence follow these restrictions:
|
||||
* All DRAM addresses should be aligned by 8 bytes, or they will be
|
||||
@ -349,14 +352,6 @@ typedef short ENVMIX_STATE[40];
|
||||
_a->words.w1 = (uintptr_t)(s); \
|
||||
}
|
||||
|
||||
#define aADPCM_23(pkt, f, s) \
|
||||
{ \
|
||||
Acmd *_a = (Acmd *)pkt; \
|
||||
\
|
||||
_a->words.w0 = _SHIFTL(A_UNK_23, 24, 8) | _SHIFTL(f, 16, 8); \
|
||||
_a->words.w1 = (uintptr_t)(s); \
|
||||
}
|
||||
|
||||
/*
|
||||
* Not used in SM64.
|
||||
*/
|
||||
@ -570,15 +565,6 @@ typedef short ENVMIX_STATE[40];
|
||||
_a->words.w1 = _SHIFTL(o, 16, 16) | _SHIFTL(c, 0, 16); \
|
||||
}
|
||||
|
||||
#define aInterl(pkt, f, i, o, c) \
|
||||
{ \
|
||||
Acmd *_a = (Acmd *)pkt; \
|
||||
\
|
||||
_a->words.w0 = (_SHIFTL(A_INTERL, 24, 8) | _SHIFTL(f, 16, 8) | \
|
||||
_SHIFTL(i, 0, 16)); \
|
||||
_a->words.w1 = _SHIFTL(o, 16, 16) | _SHIFTL(c, 0, 16); \
|
||||
}
|
||||
|
||||
/*
|
||||
* Sets internal volume parameters.
|
||||
* See aEnvMixer for more info.
|
||||
@ -663,12 +649,50 @@ typedef short ENVMIX_STATE[40];
|
||||
#undef aEnvMixer
|
||||
#undef aInterleave
|
||||
|
||||
// New or modified operations in the new audio microcode below
|
||||
|
||||
/**
|
||||
* Decompresses S8 data.
|
||||
* Possible flags: A_INIT and A_LOOP.
|
||||
*
|
||||
* First set up internal data in DMEM:
|
||||
* aSetLoop(cmd++, physicalAddressOfLoopState) (if A_LOOP is set)
|
||||
*
|
||||
* Then before this command, call:
|
||||
* aSetBuffer(cmd++, 0, in, out, count)
|
||||
*
|
||||
* Note: count will be rounded up to the nearest multiple of 32 bytes.
|
||||
*
|
||||
* S8 decompression works by expanding s8 bytes into s16 numbers,
|
||||
* by performing a left shift of 8 steps.
|
||||
*
|
||||
* Before the algorithm starts, the previous 16 samples are loaded according to flag:
|
||||
* A_INIT: all zeros
|
||||
* A_LOOP: the address set by aSetLoop
|
||||
* no flags: the DRAM address in the s parameter
|
||||
* These 16 samples are immediately copied to the destination address.
|
||||
*
|
||||
* The result of "count" bytes will be written after these 16 initial samples.
|
||||
* The last 16 samples written to the destination will also be written to
|
||||
* the state address in DRAM.
|
||||
*/
|
||||
#define aS8Dec(pkt, f, s) \
|
||||
{ \
|
||||
Acmd *_a = (Acmd *)pkt; \
|
||||
\
|
||||
_a->words.w0 = _SHIFTL(A_S8DEC, 24, 8) | _SHIFTL(f, 16, 8); \
|
||||
_a->words.w1 = (uintptr_t)(s); \
|
||||
}
|
||||
|
||||
/*
|
||||
* Mix two tracks by simple clamped addition.
|
||||
*
|
||||
* s: DMEM source track 1
|
||||
* d: DMEM source track 2 and destination
|
||||
* c: number of bytes to write (rounded down to 16 byte alignment)
|
||||
* c: number of bytes to write
|
||||
*
|
||||
* Note: count is first rounded down to the nearest multiple of 16 bytes
|
||||
* and then rounded up to the nearest multiple of 64 bytes.
|
||||
*/
|
||||
#define aAddMixer(pkt, s, d, c) \
|
||||
{ \
|
||||
@ -726,6 +750,28 @@ typedef short ENVMIX_STATE[40];
|
||||
_a->words.w1 = (_SHIFTL(d, 16, 16) | _SHIFTL(0x80, 0, 16)); \
|
||||
}
|
||||
|
||||
/*
|
||||
* Copies memory in DMEM, second version.
|
||||
*
|
||||
* Copies t * c bytes from address i to address o.
|
||||
*
|
||||
* Note: count is first rounded up to the nearest multiple of 32 bytes,
|
||||
* before the multiplication by t.
|
||||
*
|
||||
* Note: This acts as memcpy where 32 bytes are moved at a time, therefore
|
||||
* if input and output overlap, output address should be less than input address.
|
||||
*
|
||||
* Not used in SM64.
|
||||
*/
|
||||
#define aDMEMMove2(pkt, t, i, o, c) \
|
||||
{ \
|
||||
Acmd *_a = (Acmd *)pkt; \
|
||||
\
|
||||
_a->words.w0 = _SHIFTL(A_DMEMMOVE2, 24, 8) | \
|
||||
_SHIFTL(t, 16, 8) | _SHIFTL(i, 0, 16); \
|
||||
_a->words.w1 = _SHIFTL(o, 16, 16) | _SHIFTL(c, 0, 16); \
|
||||
}
|
||||
|
||||
/*
|
||||
* Fast resample.
|
||||
*
|
||||
@ -734,14 +780,37 @@ typedef short ENVMIX_STATE[40];
|
||||
*
|
||||
* This works like the other resample command but just takes the "nearest" sample,
|
||||
* instead of a function of the four nearest samples.
|
||||
*
|
||||
* Initially the current position is calculated as (in << 16) + startFract.
|
||||
* For every sample to create, the value is simply taken from the sample
|
||||
* at address ((position >> 17) << 1). Then the current position is incremented
|
||||
* by (pitch << 2).
|
||||
*
|
||||
* Note: count represents the number of output bytes to create, and is
|
||||
* rounded up to the nearest multiple of 8 bytes.
|
||||
*/
|
||||
#define aResampleZoh(pkt, pitch, start_fract) \
|
||||
#define aResampleZoh(pkt, pitch, startFract) \
|
||||
{ \
|
||||
Acmd *_a = (Acmd *)pkt; \
|
||||
\
|
||||
_a->words.w0 = (_SHIFTL(A_RESAMPLE_ZOH, 24, 8) | \
|
||||
_SHIFTL(pitch, 0, 16)); \
|
||||
_a->words.w1 = _SHIFTL(start_fract, 0, 16); \
|
||||
_a->words.w1 = _SHIFTL(startFract, 0, 16); \
|
||||
}
|
||||
|
||||
/*
|
||||
* Fast downsampling by taking every other sample, discarding others.
|
||||
*
|
||||
* Note: nSamples refers to the number of output samples to create, and
|
||||
* is first rounded up to the nearest multiple of 8.
|
||||
*/
|
||||
#define aDownsampleHalf(pkt, nSamples, i, o) \
|
||||
{ \
|
||||
Acmd *_a = (Acmd *)pkt; \
|
||||
\
|
||||
_a->words.w0 = (_SHIFTL(A_DOWNSAMPLE_HALF, 24, 8) | \
|
||||
_SHIFTL(nSamples, 0, 16)); \
|
||||
_a->words.w1 = _SHIFTL(i, 16, 16) | _SHIFTL(o, 0, 16); \
|
||||
}
|
||||
|
||||
/*
|
||||
@ -764,39 +833,87 @@ typedef short ENVMIX_STATE[40];
|
||||
_a->words.w1 = _SHIFTL(i, 16, 16) | _SHIFTL(o, 0, 16); \
|
||||
}
|
||||
|
||||
#define aEnvSetup1(pkt, a, b, c, d) \
|
||||
/*
|
||||
* See aEnvMixer for more info.
|
||||
*/
|
||||
#define aEnvSetup1(pkt, initialVolReverb, rampReverb, rampLeft, rampRight) \
|
||||
{ \
|
||||
Acmd *_a = (Acmd *)pkt; \
|
||||
\
|
||||
_a->words.w0 = (_SHIFTL(A_ENVSETUP1, 24, 8) | \
|
||||
_SHIFTL(a, 16, 8) | _SHIFTL(b, 0, 16)); \
|
||||
_a->words.w1 = _SHIFTL(c, 16, 16) | _SHIFTL(d, 0, 16); \
|
||||
_SHIFTL(initialVolReverb, 16, 8) | \
|
||||
_SHIFTL(rampReverb, 0, 16)); \
|
||||
_a->words.w1 = _SHIFTL(rampLeft, 16, 16) | \
|
||||
_SHIFTL(rampRight, 0, 16); \
|
||||
}
|
||||
|
||||
#define aEnvSetup2(pkt, volLeft, volRight) \
|
||||
/*
|
||||
* See aEnvMixer for more info.
|
||||
*/
|
||||
#define aEnvSetup2(pkt, initialVolLeft, initialVolRight) \
|
||||
{ \
|
||||
Acmd *_a = (Acmd *)pkt; \
|
||||
\
|
||||
_a->words.w0 = _SHIFTL(A_ENVSETUP2, 24, 8); \
|
||||
_a->words.w1 = _SHIFTL(volLeft, 16, 16) | \
|
||||
_SHIFTL(volRight, 0, 16); \
|
||||
_a->words.w1 = _SHIFTL(initialVolLeft, 16, 16) | \
|
||||
_SHIFTL(initialVolRight, 0, 16); \
|
||||
}
|
||||
|
||||
#define aEnvMixer(pkt, inBuf, nSamples, bit1, bit2, bit3, dryLeft, dryRight, wetLeft, wetRight) \
|
||||
/*
|
||||
* Mixes an envelope with mono sound into 4 channels.
|
||||
*
|
||||
* To allow for many parameters, a sequence of aEnvSetup1, aEnvSetup2,
|
||||
* aEnvMixer shall always be called.
|
||||
*
|
||||
* The function works in blocks of 8 samples.
|
||||
* However, nSamples is rounded up to the nearest multiple of 16 samples.
|
||||
*
|
||||
* For each sample in a block:
|
||||
* 1. sampleLeft = in * volLeft * (negLeft ? -1 : 1)
|
||||
* 2. sampleRight = in * volRight * (negRight ? -1 : 1)
|
||||
* 3. dryLeft += sampleLeft
|
||||
* 4. dryRight += sampleRight
|
||||
* 5. if swapReverb: swap sampleLeft and sampleRight
|
||||
* 6. wetLeft += sampleLeft * volReverb
|
||||
* 7. wetRight += sampleRight * volReverb
|
||||
*
|
||||
* After each block, all vol variables are added by their corresponding
|
||||
* ramp value.
|
||||
*
|
||||
* Each volume variable is treated as a UQ0.16 number. Make sure
|
||||
* the ramp additions don't overflow, or wrapping will occur.
|
||||
* The initialVolReverb parameter is only 8 bits, but will be left
|
||||
* shifted 8 bits by the rsp.
|
||||
*/
|
||||
#define aEnvMixer(pkt, inBuf, nSamples, swapReverb, negLeft, negRight, \
|
||||
dryLeft, dryRight, wetLeft, wetRight) \
|
||||
{ \
|
||||
Acmd *_a = (Acmd *)pkt; \
|
||||
\
|
||||
_a->words.w0 = (_SHIFTL(A_ENVMIXER, 24, 8) | \
|
||||
_SHIFTL((inBuf) >> 4, 16, 8) | \
|
||||
_SHIFTL(nSamples, 8, 8)) | \
|
||||
_SHIFTL(bit1, 2, 1) | _SHIFTL(bit2, 1, 1) | \
|
||||
_SHIFTL(bit3, 0, 1); \
|
||||
_SHIFTL(swapReverb, 2, 1) | _SHIFTL(negLeft, 1, 1) |\
|
||||
_SHIFTL(negRight, 0, 1); \
|
||||
_a->words.w1 = _SHIFTL((dryLeft) >> 4, 24, 8) | \
|
||||
_SHIFTL((dryRight) >> 4, 16, 8) | \
|
||||
_SHIFTL((wetLeft) >> 4, 8, 8) | \
|
||||
_SHIFTL((wetRight) >> 4, 0, 8); \
|
||||
}
|
||||
|
||||
/*
|
||||
* Interleaves two mono channels into stereo.
|
||||
*
|
||||
* The count refers to the size of each input. Hence 2 * count bytes
|
||||
* will be written out.
|
||||
*
|
||||
* A left sample will be placed before the right sample.
|
||||
* All addresses (output, left, right) are DMEM addresses.
|
||||
*
|
||||
* Note: count will be rounded up to the nearest multiple of 8 bytes.
|
||||
* The previous version of this function rounded up to the nearest
|
||||
* multiple of 16 bytes.
|
||||
*/
|
||||
#define aInterleave(pkt, o, l, r, c) \
|
||||
{ \
|
||||
Acmd *_a = (Acmd *)pkt; \
|
||||
@ -806,7 +923,26 @@ typedef short ENVMIX_STATE[40];
|
||||
_a->words.w1 = _SHIFTL(l, 16, 16) | _SHIFTL(r, 0, 16); \
|
||||
}
|
||||
|
||||
// countOrBuf meaning depends on flag
|
||||
/*
|
||||
* Linear filter function.
|
||||
*
|
||||
* Calculates out[i] = sum all elements in the vector in[i..i-7] * filter[0..7],
|
||||
* where "*" represents dot multiplication. The input/output contains s16
|
||||
* samples and filter contains Q1.15 signed fixed point numbers.
|
||||
* Every result sample is rounded and clamped.
|
||||
*
|
||||
* First initiate by calling with the flag f set to 2, countOrBuf contains
|
||||
* the length in bytes that shall be processed in the next call. The addr
|
||||
* parameter shall contain the DRAM address to the filter table (16 bytes).
|
||||
* The count will be rounded up to the nearest multiple of 16 bytes.
|
||||
*
|
||||
* The aFilter function shall then be called in direct succession, with flag
|
||||
* set to either 0 or 1. The countOrBuf parameter shall contain the DMEM
|
||||
* address for the input/output. The addr parameter shall contain the DRAM
|
||||
* address for the state, containing the last previous 8 input samples.
|
||||
* The state is always written to upon exit, but is only read at entry if
|
||||
* the flag is 0 (otherwise all-zero samples are used instead).
|
||||
*/
|
||||
#define aFilter(pkt, f, countOrBuf, addr) \
|
||||
{ \
|
||||
Acmd *_a = (Acmd *)pkt; \
|
||||
@ -816,22 +952,41 @@ typedef short ENVMIX_STATE[40];
|
||||
_a->words.w1 = (uintptr_t)(addr); \
|
||||
}
|
||||
|
||||
#define aHilogain(pkt, id, buflen, i) \
|
||||
/*
|
||||
* Modifies the volume of samples using a simple UQ4.4 gain multiplier.
|
||||
*
|
||||
* Performs the following:
|
||||
*
|
||||
* 1. Count c is rounded up to 32 byte alignment
|
||||
* 2. g is a u8 that contains a UQ4.4 number
|
||||
* 3. Modify each sample s, so that s = clamp_s16(s * g >> 4)
|
||||
*/
|
||||
#define aHiLoGain(pkt, g, buflen, i) \
|
||||
{ \
|
||||
Acmd *_a = (Acmd *)pkt; \
|
||||
\
|
||||
_a->words.w0 = _SHIFTL(A_HILOGAIN, 24, 8) | \
|
||||
_SHIFTL((id), 16, 8) | _SHIFTL((buflen), 0, 16); \
|
||||
_SHIFTL((g), 16, 8) | _SHIFTL((buflen), 0, 16); \
|
||||
_a->words.w1 = _SHIFTL((i), 16, 16); \
|
||||
}
|
||||
|
||||
#define aUnknown25(pkt, f, g, i, o) \
|
||||
/*
|
||||
* Performs the following:
|
||||
*
|
||||
* 1. Count c is rounded up to 64 byte alignment
|
||||
* 2. f is added to i
|
||||
* 3. i and o are from now treated as s16 pointers
|
||||
* 4. 32 s16 samples are loaded from i to tbl
|
||||
* 5. for (u32 idx = 0; idx * sizeof(s16) < c; idx++)
|
||||
* o[idx] = clamp_s16((s32)o[idx] * (s32)tbl[idx % 32]);
|
||||
*/
|
||||
#define aUnknown25(pkt, f, c, o, i) \
|
||||
{ \
|
||||
Acmd *_a = (Acmd *)pkt; \
|
||||
\
|
||||
_a->words.w0 = (_SHIFTL(A_UNK_25, 24, 8) | \
|
||||
_SHIFTL((f), 16, 8) | _SHIFTL((g), 0, 16)); \
|
||||
_a->words.w1 = _SHIFTL((i), 16, 16) | _SHIFTL((o), 0, 16); \
|
||||
_SHIFTL((f), 16, 8) | _SHIFTL((c), 0, 16)); \
|
||||
_a->words.w1 = _SHIFTL((o), 16, 16) | _SHIFTL((i), 0, 16); \
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -8,7 +8,8 @@ typedef struct
|
||||
u8 *offset;
|
||||
s32 len;
|
||||
#ifdef VERSION_SH
|
||||
s8 magic[2]; // tbl: 0x0204, otherwise: 0x0203
|
||||
s8 medium;
|
||||
s8 magic; // tbl: 0x04, otherwise: 0x03
|
||||
|
||||
// for ctl (else zeros):
|
||||
union {
|
||||
@ -38,7 +39,9 @@ typedef struct
|
||||
#ifdef VERSION_SH
|
||||
s16 unk2;
|
||||
u8 *data;
|
||||
#if !IS_64_BIT
|
||||
s32 pad[2];
|
||||
#endif
|
||||
#endif
|
||||
ALSeqData seqArray[1];
|
||||
} ALSeqFile;
|
||||
|
@ -261,7 +261,7 @@ extern const BehaviorScript bhvBoo[];
|
||||
extern const BehaviorScript bhvMerryGoRoundBoo[];
|
||||
extern const BehaviorScript bhvGhostHuntBoo[];
|
||||
extern const BehaviorScript bhvHiddenStaircaseStep[];
|
||||
extern const BehaviorScript bhvBooBossSpawnedBridge[];
|
||||
extern const BehaviorScript bhvBooStaircase[];
|
||||
extern const BehaviorScript bhvBbhTiltingTrapPlatform[];
|
||||
extern const BehaviorScript bhvHauntedBookshelf[];
|
||||
extern const BehaviorScript bhvMeshElevator[];
|
||||
|
@ -8,7 +8,7 @@
|
||||
*/
|
||||
|
||||
// Bug Fixes
|
||||
// --| US Version Nintendo Bug Fixes
|
||||
// --| Post-JP Version Nintendo Bug Fixes
|
||||
/// Fixes bug where obtaining over 999 coins sets the number of lives to 999 (or -25)
|
||||
#define BUGFIX_MAX_LIVES (0 || VERSION_US || VERSION_EU || VERSION_SH)
|
||||
/// Fixes bug where the Boss music won't fade out after defeating King Bob-omb
|
||||
@ -22,6 +22,17 @@
|
||||
#define BUGFIX_PIRANHA_PLANT_SLEEP_DAMAGE (0 || VERSION_US || VERSION_SH)
|
||||
/// Fixes bug where it shows a star when you grab a key in bowser battle stages
|
||||
#define BUGFIX_STAR_BOWSER_KEY (0 || VERSION_US || VERSION_EU || VERSION_SH)
|
||||
/// Fixes bug that enables Mario in time stop even if is not ready to speak
|
||||
#define BUGFIX_DIALOG_TIME_STOP (0 || VERSION_US || VERSION_EU || VERSION_SH)
|
||||
/// Fixes bug that causes Mario to still collide with Bowser in BITS after his defeat
|
||||
#define BUGFIX_BOWSER_COLLIDE_BITS_DEAD (0 || VERSION_US || VERSION_EU || VERSION_SH)
|
||||
/// Fixes bug where Bowser wouldn't reset his speed when fallen off (and adds missing checks)
|
||||
#define BUGFIX_BOWSER_FALLEN_OFF_STAGE (0 || VERSION_US || VERSION_EU || VERSION_SH)
|
||||
/// Fixes bug where Bowser would look weird while fading out
|
||||
#define BUGFIX_BOWSER_FADING_OUT (0 || VERSION_US || VERSION_EU || VERSION_SH)
|
||||
|
||||
// Support Rumble Pak
|
||||
#define ENABLE_RUMBLE (0 || VERSION_SH)
|
||||
|
||||
// Screen Size Defines
|
||||
#define SCREEN_WIDTH 320
|
||||
|
@ -2,6 +2,7 @@
|
||||
#define DIALOG_IDS_H
|
||||
|
||||
enum DialogId {
|
||||
DIALOG_NONE = -1,
|
||||
DIALOG_000,
|
||||
DIALOG_001,
|
||||
DIALOG_002,
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Assembly Macros
|
||||
// Assembly Macros
|
||||
|
||||
.set K0BASE, 0x80000000
|
||||
.set K1BASE, 0xA0000000
|
||||
|
@ -410,12 +410,12 @@
|
||||
|
||||
// second set of actor bins, (0x64-0x73)
|
||||
// group 12
|
||||
#define MODEL_BOWSER 0x64 // bowser_geo - 2nd geo loaded is bowser_geo_000424, starts with shadow command
|
||||
#define MODEL_BOWSER 0x64 // bowser_geo
|
||||
#define MODEL_BOWSER_BOMB_CHILD_OBJ 0x65 // bowser_bomb_geo - Spawns as a chill object in bowser's behavior command, causing an explosion if it touches a bomb
|
||||
#define MODEL_BOWSER_SMOKE 0x66 // bowser_impact_smoke_geo
|
||||
#define MODEL_BOWSER_FLAMES 0x67 // bowser_flames_geo
|
||||
#define MODEL_BOWSER_WAVE 0x68 // invisible_bowser_accessory_geo
|
||||
#define MODEL_BOWSER2 0x69 // bowser2_geo - 2nd geo loaded is bowser_geo_000770, starts with node command, only difference
|
||||
#define MODEL_BOWSER_NO_SHADOW 0x69 // bowser_geo_no_shadow
|
||||
|
||||
// group 13
|
||||
#define MODEL_BUB 0x64 // cheep_cheep_geo
|
||||
@ -531,7 +531,7 @@
|
||||
#define MODEL_KOOPA_WITHOUT_SHELL 0xBF // koopa_without_shell_geo
|
||||
#define MODEL_GOOMBA 0xC0 // goomba_geo
|
||||
#define MODEL_SEAWEED 0xC1 // seaweed_geo
|
||||
#define MODEL_AMP 0xC2 // amp_geo
|
||||
#define MODEL_AMP 0xC2 // dAmpGeo
|
||||
#define MODEL_BOBOMB_BUDDY 0xC3 // bobomb_buddy_geo
|
||||
// find me
|
||||
// find me
|
||||
|
@ -53,23 +53,18 @@
|
||||
#define HELD_DROPPED 3
|
||||
|
||||
/* oDialogState */
|
||||
#define DIALOG_UNK1_ENABLE_TIME_STOP 0
|
||||
#define DIALOG_UNK1_INTERRUPT_MARIO_ACTION 1
|
||||
#define DIALOG_UNK1_BEGIN_DIALOG 2
|
||||
#define DIALOG_UNK1_AWAIT_DIALOG 3
|
||||
#define DIALOG_UNK1_DISABLE_TIME_STOP 4
|
||||
#define DIALOG_STATUS_ENABLE_TIME_STOP 0
|
||||
#define DIALOG_STATUS_INTERRUPT 1
|
||||
#define DIALOG_STATUS_START_DIALOG 2
|
||||
#define DIALOG_STATUS_STOP_DIALOG 3
|
||||
#define DIALOG_STATUS_DISABLE_TIME_STOP 4
|
||||
|
||||
#define DIALOG_UNK1_FLAG_DEFAULT (1 << 1) // 0x02
|
||||
#define DIALOG_UNK1_FLAG_RESPONSE (1 << 2) // 0x04
|
||||
#define DIALOG_UNK1_FLAG_4 (1 << 4) // 0x10
|
||||
|
||||
#define DIALOG_UNK2_ENABLE_TIME_STOP 0
|
||||
#define DIALOG_UNK2_TURN_AND_INTERRUPT_MARIO_ACTION 1
|
||||
#define DIALOG_UNK2_AWAIT_DIALOG 2
|
||||
#define DIALOG_UNK2_END_DIALOG 3
|
||||
|
||||
#define DIALOG_UNK2_FLAG_0 (1 << 0) // 0x01
|
||||
#define DIALOG_UNK2_LEAVE_TIME_STOP_ENABLED (1 << 4) // 0x10
|
||||
#define DIALOG_FLAG_NONE 0
|
||||
#define DIALOG_FLAG_TURN_TO_MARIO (1 << 0) // 0x01 // cutscene only
|
||||
#define DIALOG_FLAG_TEXT_DEFAULT (1 << 1) // 0x02
|
||||
#define DIALOG_FLAG_TEXT_RESPONSE (1 << 2) // 0x04 // non-cutscene only
|
||||
#define DIALOG_FLAG_UNK_CAPSWITCH (1 << 3) // 0x08 // not defined
|
||||
#define DIALOG_FLAG_TIME_STOP_ENABLED (1 << 4) // 0x10
|
||||
|
||||
/* oMoveFlags */
|
||||
#define OBJ_MOVE_LANDED (1 << 0) // 0x0001
|
||||
@ -191,6 +186,112 @@
|
||||
#define BOBOMB_BUDDY_HAS_NOT_TALKED 0
|
||||
#define BOBOMB_BUDDY_HAS_TALKED 2
|
||||
|
||||
/* Bowser */
|
||||
/* Tail oAction */
|
||||
#define BOWSER_ACT_TAIL_DEFAULT 0
|
||||
#define BOWSER_ACT_TAIL_THROWN 1
|
||||
#define BOWSER_ACT_TAIL_TOUCHED_MARIO 2
|
||||
/* oAction */
|
||||
#define BOWSER_ACT_DEFAULT 0
|
||||
#define BOWSER_ACT_THROWN 1
|
||||
#define BOWSER_ACT_JUMP_ONTO_STAGE 2
|
||||
#define BOWSER_ACT_DANCE 3
|
||||
#define BOWSER_ACT_DEAD 4
|
||||
#define BOWSER_ACT_WAIT 5
|
||||
#define BOWSER_ACT_INTRO_WALK 6
|
||||
#define BOWSER_ACT_CHARGE_MARIO 7
|
||||
#define BOWSER_ACT_SPIT_FIRE_INTO_SKY 8
|
||||
#define BOWSER_ACT_SPIT_FIRE_ONTO_FLOOR 9
|
||||
#define BOWSER_ACT_HIT_EDGE 10
|
||||
#define BOWSER_ACT_TURN_FROM_EDGE 11
|
||||
#define BOWSER_ACT_HIT_MINE 12
|
||||
#define BOWSER_ACT_BIG_JUMP 13
|
||||
#define BOWSER_ACT_WALK_TO_MARIO 14
|
||||
#define BOWSER_ACT_BREATH_FIRE 15
|
||||
#define BOWSER_ACT_TELEPORT 16
|
||||
#define BOWSER_ACT_QUICK_JUMP 17
|
||||
#define BOWSER_ACT_UNUSED_SLOW_WALK 18
|
||||
#define BOWSER_ACT_TILT_LAVA_PLATFORM 19
|
||||
/* Animations */
|
||||
#define BOWSER_ANIM_STAND_UP 0
|
||||
#define BOWSER_ANIM_STAND_UP_UNUSED 1 // slightly different
|
||||
#define BOWSER_ANIM_SHAKING 2
|
||||
#define BOWSER_ANIM_GRABBED 3
|
||||
#define BOWSER_ANIM_BROKEN 4 // broken animation
|
||||
#define BOWSER_ANIM_FALL_DOWN 5 // unused
|
||||
#define BOWSER_ANIM_BREATH 6
|
||||
#define BOWSER_ANIM_JUMP 7 // unused, short jump, replaced by start/stop
|
||||
#define BOWSER_ANIM_JUMP_STOP 8
|
||||
#define BOWSER_ANIM_JUMP_START 9
|
||||
#define BOWSER_ANIM_DANCE 10
|
||||
#define BOWSER_ANIM_BREATH_UP 11
|
||||
#define BOWSER_ANIM_IDLE 12
|
||||
#define BOWSER_ANIM_SLOW_GAIT 13
|
||||
#define BOWSER_ANIM_LOOK_DOWN_STOP_WALK 14
|
||||
#define BOWSER_ANIM_LOOK_UP_START_WALK 15
|
||||
#define BOWSER_ANIM_FLIP_DOWN 16
|
||||
#define BOWSER_ANIM_LAY_DOWN 17
|
||||
#define BOWSER_ANIM_RUN_START 18
|
||||
#define BOWSER_ANIM_RUN 19
|
||||
#define BOWSER_ANIM_RUN_STOP 20
|
||||
#define BOWSER_ANIM_RUN_SLIP 21
|
||||
#define BOWSER_ANIM_BREATH_QUICK 22
|
||||
#define BOWSER_ANIM_EDGE_MOVE 23
|
||||
#define BOWSER_ANIM_EDGE_STOP 24
|
||||
#define BOWSER_ANIM_FLIP 25
|
||||
#define BOWSER_ANIM_STAND_UP_FROM_FLIP 26
|
||||
/* oBehParams2ndByte */
|
||||
#define BOWSER_BP_BITDW 0
|
||||
#define BOWSER_BP_BITFS 1
|
||||
#define BOWSER_BP_BITS 2
|
||||
/* oBowserCamAct */
|
||||
#define BOWSER_CAM_ACT_IDLE 0
|
||||
#define BOWSER_CAM_ACT_WALK 1
|
||||
#define BOWSER_CAM_ACT_END 2
|
||||
/* oBowserStatus */
|
||||
#define BOWSER_STATUS_ANGLE_MARIO (1 << 1) // 0x00000002
|
||||
#define BOWSER_STATUS_ANGLE_CENTRE (1 << 2) // 0x00000004
|
||||
#define BOWSER_STATUS_DIST_MARIO (1 << 3) // 0x00000008
|
||||
#define BOWSER_STATUS_DIST_CENTRE (1 << 4) // 0x00000010
|
||||
#define BOWSER_STATUS_BIG_JUMP (1 << 16) // 0x00010000
|
||||
#define BOWSER_STATUS_FIRE_SKY (1 << 17) // 0x00020000
|
||||
/* oBowserGrabbedStatus */
|
||||
#define BOWSER_GRAB_STATUS_NONE 0
|
||||
#define BOWSER_GRAB_STATUS_GRABBED 1
|
||||
#define BOWSER_GRAB_STATUS_HOLDING 2
|
||||
/* oSubAction */
|
||||
#define BOWSER_SUB_ACT_DEAD_FLY_BACK 0
|
||||
#define BOWSER_SUB_ACT_DEAD_BOUNCE 1
|
||||
#define BOWSER_SUB_ACT_DEAD_WAIT 2
|
||||
#define BOWSER_SUB_ACT_DEAD_DEFAULT_END 3
|
||||
#define BOWSER_SUB_ACT_DEAD_DEFAULT_END_OVER 4
|
||||
#define BOWSER_SUB_ACT_DEAD_FINAL_END 10
|
||||
#define BOWSER_SUB_ACT_DEAD_FINAL_END_OVER 11
|
||||
|
||||
#define BOWSER_SUB_ACT_CHARGE_START 0
|
||||
#define BOWSER_SUB_ACT_CHARGE_RUN 1
|
||||
#define BOWSER_SUB_ACT_CHARGE_END 2
|
||||
#define BOWSER_SUB_ACT_CHARGE_SLIP 3
|
||||
|
||||
#define BOWSER_SUB_ACT_TELEPORT_START 0
|
||||
#define BOWSER_SUB_ACT_TELEPORT_MOVE 1
|
||||
#define BOWSER_SUB_ACT_TELEPORT_STOP 2
|
||||
|
||||
#define BOWSER_SUB_ACT_HIT_MINE_START 0
|
||||
#define BOWSER_SUB_ACT_HIT_MINE_FALL 1
|
||||
#define BOWSER_SUB_ACT_HIT_MINE_STOP 2
|
||||
|
||||
#define BOWSER_SUB_ACT_JUMP_ON_STAGE_IDLE 0
|
||||
#define BOWSER_SUB_ACT_JUMP_ON_STAGE_START 1
|
||||
#define BOWSER_SUB_ACT_JUMP_ON_STAGE_LAND 2
|
||||
#define BOWSER_SUB_ACT_JUMP_ON_STAGE_STOP 3
|
||||
|
||||
/* Bowser Bits Platform*/
|
||||
/* oAction */
|
||||
#define BOWSER_BITS_PLAT_ACT_START 0
|
||||
#define BOWSER_BITS_PLAT_ACT_CHECK 1
|
||||
#define BOWSER_BITS_PLAT_ACT_FALL 2
|
||||
|
||||
/* Fish Spawer */
|
||||
/* oAction */
|
||||
#define FISH_SPAWNER_ACT_SPAWN 0
|
||||
|
@ -65,8 +65,8 @@
|
||||
#define /*0x0B4*/ oVelZ OBJECT_FIELD_F32(0x0B)
|
||||
#define /*0x0B8*/ oForwardVel OBJECT_FIELD_F32(0x0C)
|
||||
#define /*0x0B8*/ oForwardVelS32 OBJECT_FIELD_S32(0x0C)
|
||||
#define /*0x0BC*/ oUnkBC OBJECT_FIELD_F32(0x0D)
|
||||
#define /*0x0C0*/ oUnkC0 OBJECT_FIELD_F32(0x0E)
|
||||
#define /*0x0BC*/ oLeftVel OBJECT_FIELD_F32(0x0D)
|
||||
#define /*0x0C0*/ oUpVel OBJECT_FIELD_F32(0x0E)
|
||||
#define /*0x0C4*/ O_MOVE_ANGLE_INDEX 0x0F
|
||||
#define /*0x0C4*/ O_MOVE_ANGLE_PITCH_INDEX (O_MOVE_ANGLE_INDEX + 0)
|
||||
#define /*0x0C4*/ O_MOVE_ANGLE_YAW_INDEX (O_MOVE_ANGLE_INDEX + 1)
|
||||
@ -274,24 +274,24 @@
|
||||
#define /*0x0FC*/ oBBallSpawnerPeriodMinus1 OBJECT_FIELD_S32(0x1D)
|
||||
|
||||
/* Bowser */
|
||||
#define /*0x088*/ oBowserUnk88 OBJECT_FIELD_S32(0x00)
|
||||
#define /*0x0F4*/ oBowserUnkF4 OBJECT_FIELD_S32(0x1B)
|
||||
#define /*0x0F8*/ oBowserUnkF8 OBJECT_FIELD_S32(0x1C)
|
||||
#define /*0x088*/ oBowserCamAct OBJECT_FIELD_S32(0x00)
|
||||
#define /*0x0F4*/ oBowserStatus OBJECT_FIELD_S32(0x1B)
|
||||
#define /*0x0F8*/ oBowserTimer OBJECT_FIELD_S32(0x1C)
|
||||
#define /*0x0FC*/ oBowserDistToCentre OBJECT_FIELD_F32(0x1D)
|
||||
#define /*0x106*/ oBowserUnk106 OBJECT_FIELD_S16(0x1F, 1)
|
||||
#define /*0x108*/ oBowserUnk108 OBJECT_FIELD_S16(0x20, 0)
|
||||
#define /*0x106*/ oBowserBitsJustJump OBJECT_FIELD_S16(0x1F, 1)
|
||||
#define /*0x108*/ oBowserRandSplitFloor OBJECT_FIELD_S16(0x20, 0)
|
||||
#define /*0x10A*/ oBowserHeldAnglePitch OBJECT_FIELD_S16(0x20, 1)
|
||||
#define /*0x10D*/ oBowserHeldAngleVelYaw OBJECT_FIELD_S16(0x21, 0)
|
||||
#define /*0x10E*/ oBowserUnk10E OBJECT_FIELD_S16(0x21, 1)
|
||||
#define /*0x110*/ oBowserUnk110 OBJECT_FIELD_S16(0x22, 0)
|
||||
#define /*0x10E*/ oBowserGrabbedStatus OBJECT_FIELD_S16(0x21, 1)
|
||||
#define /*0x110*/ oBowserIsReacting OBJECT_FIELD_S16(0x22, 0)
|
||||
#define /*0x112*/ oBowserAngleToCentre OBJECT_FIELD_S16(0x22, 1)
|
||||
#define /*0x1AC*/ oBowserUnk1AC OBJECT_FIELD_S16(0x49, 0)
|
||||
#define /*0x1AE*/ oBowserUnk1AE OBJECT_FIELD_S16(0x49, 1)
|
||||
#define /*0x1AC*/ oBowserTargetOpacity OBJECT_FIELD_S16(0x49, 0)
|
||||
#define /*0x1AE*/ oBowserEyesTimer OBJECT_FIELD_S16(0x49, 1)
|
||||
#define /*0x1B0*/ oBowserEyesShut OBJECT_FIELD_S16(0x4A, 0)
|
||||
#define /*0x1B2*/ oBowserUnk1B2 OBJECT_FIELD_S16(0x4A, 1)
|
||||
#define /*0x1B2*/ oBowserRainbowLight OBJECT_FIELD_S16(0x4A, 1)
|
||||
|
||||
/* Bowser Shockwave */
|
||||
#define /*0x0F4*/ oBowserShockWaveUnkF4 OBJECT_FIELD_F32(0x1B)
|
||||
#define /*0x0F4*/ oBowserShockWaveScale OBJECT_FIELD_F32(0x1B)
|
||||
|
||||
/* Black Smoke Bowser */
|
||||
#define /*0x0F4*/ oBlackSmokeBowserUnkF4 OBJECT_FIELD_F32(0x1B)
|
||||
@ -497,7 +497,7 @@
|
||||
/* Flame */
|
||||
#define /*0x0F4*/ oFlameScale OBJECT_FIELD_F32(0x1B)
|
||||
#define /*0x0F8*/ oFlameSpeedTimerOffset OBJECT_FIELD_S32(0x1C)
|
||||
#define /*0x0FC*/ oFlameUnkFC OBJECT_FIELD_F32(0x1D)
|
||||
#define /*0x0FC*/ oFlameUnusedRand OBJECT_FIELD_F32(0x1D)
|
||||
#define /*0x100*/ oFlameBowser OBJECT_FIELD_OBJ(0x1E)
|
||||
|
||||
/* Blue Flame */
|
||||
@ -626,7 +626,7 @@
|
||||
#define /*0x0F4*/ oKoopaRaceEndpointRaceBegun OBJECT_FIELD_S32(0x1B)
|
||||
#define /*0x0F8*/ oKoopaRaceEndpointKoopaFinished OBJECT_FIELD_S32(0x1C)
|
||||
#define /*0x0FC*/ oKoopaRaceEndpointRaceStatus OBJECT_FIELD_S32(0x1D)
|
||||
#define /*0x100*/ oKoopaRaceEndpointUnk100 OBJECT_FIELD_S32(0x1E)
|
||||
#define /*0x100*/ oKoopaRaceEndpointDialog OBJECT_FIELD_S32(0x1E)
|
||||
#define /*0x104*/ oKoopaRaceEndpointRaceEnded OBJECT_FIELD_S32(0x1F)
|
||||
|
||||
/* Koopa Shell Flame */
|
||||
@ -770,10 +770,14 @@
|
||||
#define /*0x0F8*/ oPitouneUnkF8 OBJECT_FIELD_F32(0x1C)
|
||||
#define /*0x0FC*/ oPitouneUnkFC OBJECT_FIELD_F32(0x1D)
|
||||
|
||||
/* Platform */
|
||||
#define /*0x0F4*/ oPlatformTimer OBJECT_FIELD_S32(0x1B)
|
||||
#define /*0x0F8*/ oPlatformUnkF8 OBJECT_FIELD_OBJ(0x1C)
|
||||
#define /*0x0FC*/ oPlatformUnkFC OBJECT_FIELD_S32(0x1D)
|
||||
/* Falling Rising Bitfs Platform */
|
||||
#define /*0x0F4*/ oBitfsPlatformTimer OBJECT_FIELD_S32(0x1B)
|
||||
|
||||
/* Falling Bowser Bits Platform */
|
||||
#define /*0x0F8*/ oBitsPlatformBowser OBJECT_FIELD_OBJ(0x1C)
|
||||
#define /*0x0FC*/ oBitsPlatformTimer OBJECT_FIELD_S32(0x1D)
|
||||
|
||||
/* WF Platform */
|
||||
#define /*0x10C*/ oPlatformUnk10C OBJECT_FIELD_F32(0x21)
|
||||
#define /*0x110*/ oPlatformUnk110 OBJECT_FIELD_F32(0x22)
|
||||
|
||||
@ -877,7 +881,7 @@
|
||||
// 0x1D-0x21 reserved for pathing
|
||||
|
||||
/* Snowman's Head */
|
||||
#define /*0x0F4*/ oSnowmansHeadUnkF4 OBJECT_FIELD_S32(0x1B)
|
||||
#define /*0x0F4*/ oSnowmansHeadDialogActive OBJECT_FIELD_S32(0x1B)
|
||||
|
||||
/* Snowman Wind Blowing */
|
||||
#define /*0x0F4*/ oSLSnowmanWindOriginalYaw OBJECT_FIELD_S32(0x1B)
|
||||
|
@ -1,6 +1,8 @@
|
||||
#ifndef SEGMENTS_H
|
||||
#define SEGMENTS_H
|
||||
|
||||
#include "config.h"
|
||||
|
||||
/*
|
||||
* Memory addresses for segments. Ideally, this header file would not be
|
||||
* needed, and the addresses would be defined in sm64.ld and linker-inserted
|
||||
@ -20,10 +22,10 @@
|
||||
|
||||
#define SEG_BUFFERS 0x801C1000
|
||||
|
||||
#ifdef VERSION_EU
|
||||
#define SEG_MAIN 0x80241800 // TODO: Investigate why it's different?
|
||||
#elif defined(VERSION_SH)
|
||||
#if defined(VERSION_SH) || ENABLE_RUMBLE
|
||||
#define SEG_MAIN 0x80249000
|
||||
#elif defined(VERSION_EU)
|
||||
#define SEG_MAIN 0x80241800 // TODO: Investigate why it's different?
|
||||
#else
|
||||
#define SEG_MAIN 0x80246000
|
||||
#endif
|
||||
|
@ -6,6 +6,8 @@
|
||||
#define SEQ_BASE_ID 0x7f
|
||||
#define SEQ_VARIATION 0x80
|
||||
|
||||
#define SEQ_MENU_GAME_OVER (SEQ_MENU_TITLE_SCREEN | SEQ_VARIATION)
|
||||
|
||||
enum SeqId {
|
||||
SEQ_SOUND_PLAYER, // 0x00
|
||||
SEQ_EVENT_CUTSCENE_COLLECT_STAR, // 0x01
|
||||
|
@ -1,7 +1,7 @@
|
||||
# Macros for disassembled sequence files. This file was automatically generated by seq_decoder.py.
|
||||
# To regenerate it, run: ./tools/seq_decoder.py --emit-asm-macros >seq_macros.inc
|
||||
// Macros for disassembled sequence files. This file was automatically generated by seq_decoder.py.
|
||||
// To regenerate it, run: ./tools/seq_decoder.py --emit-asm-macros > include/seq_macros.inc
|
||||
|
||||
# seq commands
|
||||
// seq commands
|
||||
|
||||
.macro seq_testchdisabled a
|
||||
.byte 0x0 + \a
|
||||
@ -155,7 +155,7 @@
|
||||
.byte 0xff
|
||||
.endm
|
||||
|
||||
.ifdef VERSION_SH
|
||||
#ifdef VERSION_SH
|
||||
|
||||
.macro seq_unreservenotes
|
||||
.byte 0xf0
|
||||
@ -166,9 +166,9 @@
|
||||
.byte \a
|
||||
.endm
|
||||
|
||||
.else
|
||||
#else
|
||||
|
||||
.ifdef VERSION_EU
|
||||
#ifdef VERSION_EU
|
||||
|
||||
.macro seq_unreservenotes
|
||||
.byte 0xf0
|
||||
@ -179,7 +179,7 @@
|
||||
.byte \a
|
||||
.endm
|
||||
|
||||
.else
|
||||
#else
|
||||
|
||||
.macro seq_unreservenotes
|
||||
.byte 0xf1
|
||||
@ -190,11 +190,11 @@
|
||||
.byte \a
|
||||
.endm
|
||||
|
||||
.endif
|
||||
#endif
|
||||
|
||||
.endif
|
||||
#endif
|
||||
|
||||
# chan commands
|
||||
// chan commands
|
||||
|
||||
.macro chan_startchannel a, b
|
||||
.byte 0x10 + \a
|
||||
@ -462,7 +462,7 @@
|
||||
var_long \a
|
||||
.endm
|
||||
|
||||
.ifdef VERSION_SH
|
||||
#ifdef VERSION_SH
|
||||
|
||||
.macro chan_setnotepriority a
|
||||
.byte 0xe9
|
||||
@ -495,7 +495,7 @@
|
||||
.byte 0x90 + \a
|
||||
.endm
|
||||
|
||||
.else
|
||||
#else
|
||||
|
||||
.macro chan_testlayerfinished a
|
||||
.byte 0x0 + \a
|
||||
@ -514,7 +514,7 @@
|
||||
.byte 0xa0 + \a
|
||||
.endm
|
||||
|
||||
.ifdef VERSION_EU
|
||||
#ifdef VERSION_EU
|
||||
|
||||
.macro chan_setnotepriority a
|
||||
.byte 0xe9
|
||||
@ -530,7 +530,7 @@
|
||||
.byte \a
|
||||
.endm
|
||||
|
||||
.else
|
||||
#else
|
||||
|
||||
.macro chan_setnotepriority a
|
||||
.byte 0x60 + \a
|
||||
@ -545,11 +545,11 @@
|
||||
.byte \a
|
||||
.endm
|
||||
|
||||
.endif
|
||||
#endif
|
||||
|
||||
.endif
|
||||
#endif
|
||||
|
||||
# layer commands
|
||||
// layer commands
|
||||
|
||||
.macro layer_note0 a, b, c, d
|
||||
.byte 0x0 + \a
|
||||
@ -659,7 +659,7 @@
|
||||
.byte \c
|
||||
.endm
|
||||
|
||||
# envelope commands
|
||||
// envelope commands
|
||||
|
||||
.macro envelope_disable a
|
||||
.byte 0x0, 0x0
|
||||
@ -686,7 +686,7 @@
|
||||
.byte \b >> 8, \b & 0xff
|
||||
.endm
|
||||
|
||||
# other commands
|
||||
// other commands
|
||||
|
||||
.macro var_long x
|
||||
.byte (0x80 | (\x & 0x7f00) >> 8), (\x & 0xff)
|
||||
|
@ -59,7 +59,7 @@
|
||||
#define INPUT_A_DOWN 0x0080
|
||||
#define INPUT_IN_POISON_GAS 0x0100
|
||||
#define INPUT_IN_WATER 0x0200
|
||||
#define INPUT_UNKNOWN_10 0x0400
|
||||
#define INPUT_STOMPED 0x0400
|
||||
#define INPUT_INTERACT_OBJ_GRABBABLE 0x0800
|
||||
#define INPUT_UNKNOWN_12 0x1000
|
||||
#define INPUT_B_PRESSED 0x2000
|
||||
|
@ -386,7 +386,7 @@
|
||||
#define SOUND_ENV_UNK12 /* 0x40120000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV, 0x12, 0x00, 0) // unverified, unused
|
||||
#define SOUND_ENV_SLIDING /* 0x40130000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV, 0x13, 0x00, 0) // unverified
|
||||
#define SOUND_ENV_STAR /* 0x40140010 */ SOUND_ARG_LOAD(SOUND_BANK_ENV, 0x14, 0x00, SOUND_LOWER_BACKGROUND_MUSIC) // unverified
|
||||
#define SOUND_ENV_UNKNOWN4 /* 0x41150000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV, 0x15, 0x00, SOUND_NO_VOLUME_LOSS) // unverified
|
||||
#define SOUND_ENV_MOVING_BIG_PLATFORM /* 0x41150000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV, 0x15, 0x00, SOUND_NO_VOLUME_LOSS) // unverified
|
||||
#define SOUND_ENV_WATER_DRAIN /* 0x41160000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV, 0x16, 0x00, SOUND_NO_VOLUME_LOSS) // unverified
|
||||
#define SOUND_ENV_METAL_BOX_PUSH /* 0x40178000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV, 0x17, 0x80, 0) // unverified
|
||||
#define SOUND_ENV_SINK_QUICKSAND /* 0x40188000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV, 0x18, 0x80, 0) // unverified
|
||||
|
@ -6,6 +6,7 @@
|
||||
|
||||
#include <ultra64.h>
|
||||
#include "macros.h"
|
||||
#include "config.h"
|
||||
|
||||
|
||||
// Certain functions are marked as having return values, but do not
|
||||
@ -30,8 +31,8 @@ struct Controller
|
||||
/*0x12*/ u16 buttonPressed;
|
||||
/*0x14*/ OSContStatus *statusData;
|
||||
/*0x18*/ OSContPad *controllerData;
|
||||
#ifdef VERSION_SH
|
||||
/*0x1C*/ int port;
|
||||
#if ENABLE_RUMBLE
|
||||
/*0x1C*/ s32 port;
|
||||
#endif
|
||||
};
|
||||
|
||||
@ -261,27 +262,6 @@ struct MarioBodyState
|
||||
u8 padding[4];
|
||||
};
|
||||
|
||||
struct OffsetSizePair
|
||||
{
|
||||
u32 offset;
|
||||
u32 size;
|
||||
};
|
||||
|
||||
struct MarioAnimDmaRelatedThing
|
||||
{
|
||||
u32 count;
|
||||
u8 *srcAddr;
|
||||
struct OffsetSizePair anim[1]; // dynamic size
|
||||
};
|
||||
|
||||
struct MarioAnimation
|
||||
{
|
||||
struct MarioAnimDmaRelatedThing *animDmaTable;
|
||||
u8 *currentAnimAddr;
|
||||
struct Animation *targetAnim;
|
||||
u8 padding[4];
|
||||
};
|
||||
|
||||
struct MarioState
|
||||
{
|
||||
/*0x00*/ u16 unk00;
|
||||
@ -327,7 +307,7 @@ struct MarioState
|
||||
/*0x94*/ struct PlayerCameraState *statusForCamera;
|
||||
/*0x98*/ struct MarioBodyState *marioBodyState;
|
||||
/*0x9C*/ struct Controller *controller;
|
||||
/*0xA0*/ struct MarioAnimation *animation;
|
||||
/*0xA0*/ struct DmaHandlerList *animList;
|
||||
/*0xA4*/ u32 collidedObjInteractTypes;
|
||||
/*0xA8*/ s16 numCoins;
|
||||
/*0xAA*/ s16 numStars;
|
||||
|
@ -8,7 +8,7 @@
|
||||
|
||||
#include "game/area.h"
|
||||
#include "game/level_update.h"
|
||||
#include "menu/level_select_menu.h"
|
||||
#include "menu/title_screen.h"
|
||||
|
||||
#include "levels/scripts.h"
|
||||
#include "levels/menu/header.h"
|
||||
@ -33,7 +33,7 @@ const LevelScript level_intro_splash_screen[] = {
|
||||
// Start animation
|
||||
LOAD_AREA(/*area*/ 1),
|
||||
|
||||
CALL(/*arg*/ 0, /*func*/ lvl_intro_update),
|
||||
CALL(/*arg*/ LVL_INTRO_PLAY_ITS_A_ME_MARIO, /*func*/ lvl_intro_update),
|
||||
SLEEP(/*frames*/ 75),
|
||||
TRANSITION(/*transType*/ WARP_TRANSITION_FADE_INTO_COLOR, /*time*/ 16, /*color*/ 0x00, 0x00, 0x00),
|
||||
SLEEP(/*frames*/ 16),
|
||||
@ -59,10 +59,10 @@ const LevelScript level_intro_mario_head_regular[] = {
|
||||
SLEEP(/*frames*/ 2),
|
||||
BLACKOUT(/*active*/ FALSE),
|
||||
LOAD_AREA(/*area*/ 1),
|
||||
SET_MENU_MUSIC(/*seq*/ 0x0002),
|
||||
SET_MENU_MUSIC(/*seq*/ SEQ_MENU_TITLE_SCREEN),
|
||||
TRANSITION(/*transType*/ WARP_TRANSITION_FADE_FROM_STAR, /*time*/ 20, /*color*/ 0x00, 0x00, 0x00),
|
||||
SLEEP(/*frames*/ 20),
|
||||
CALL_LOOP(/*arg*/ 1, /*func*/ lvl_intro_update),
|
||||
CALL_LOOP(/*arg*/ LVL_INTRO_REGULAR, /*func*/ lvl_intro_update),
|
||||
JUMP_IF(/*op*/ OP_EQ, /*arg*/ 100, script_intro_L1),
|
||||
JUMP_IF(/*op*/ OP_EQ, /*arg*/ 101, script_intro_L2),
|
||||
JUMP(script_intro_L4),
|
||||
@ -84,10 +84,10 @@ const LevelScript level_intro_mario_head_dizzy[] = {
|
||||
SLEEP(/*frames*/ 2),
|
||||
BLACKOUT(/*active*/ FALSE),
|
||||
LOAD_AREA(/*area*/ 1),
|
||||
SET_MENU_MUSIC(/*seq*/ 0x0082),
|
||||
SET_MENU_MUSIC(/*seq*/ SEQ_MENU_GAME_OVER),
|
||||
TRANSITION(/*transType*/ WARP_TRANSITION_FADE_FROM_STAR, /*time*/ 20, /*color*/ 0x00, 0x00, 0x00),
|
||||
SLEEP(/*frames*/ 20),
|
||||
CALL_LOOP(/*arg*/ 2, /*func*/ lvl_intro_update),
|
||||
CALL_LOOP(/*arg*/ LVL_INTRO_GAME_OVER, /*func*/ lvl_intro_update),
|
||||
JUMP_IF(/*op*/ OP_EQ, /*arg*/ 100, script_intro_L1),
|
||||
JUMP_IF(/*op*/ OP_EQ, /*arg*/ 101, script_intro_L2),
|
||||
JUMP(script_intro_L4),
|
||||
@ -106,10 +106,10 @@ const LevelScript level_intro_entry_4[] = {
|
||||
|
||||
FREE_LEVEL_POOL(),
|
||||
LOAD_AREA(/*area*/ 1),
|
||||
SET_MENU_MUSIC(/*seq*/ 0x0002),
|
||||
SET_MENU_MUSIC(/*seq*/ SEQ_MENU_TITLE_SCREEN),
|
||||
TRANSITION(/*transType*/ WARP_TRANSITION_FADE_FROM_COLOR, /*time*/ 16, /*color*/ 0xFF, 0xFF, 0xFF),
|
||||
SLEEP(/*frames*/ 16),
|
||||
CALL_LOOP(/*arg*/ 3, /*func*/ lvl_intro_update),
|
||||
CALL_LOOP(/*arg*/ LVL_INTRO_LEVEL_SELECT, /*func*/ lvl_intro_update),
|
||||
JUMP_IF(/*op*/ OP_EQ, /*arg*/ -1, script_intro_L5),
|
||||
JUMP(script_intro_L3),
|
||||
};
|
||||
|
@ -43,7 +43,7 @@ const LevelScript level_main_menu_entry_1[] = {
|
||||
|
||||
FREE_LEVEL_POOL(),
|
||||
LOAD_AREA(/*area*/ 1),
|
||||
SET_MENU_MUSIC(/*seq*/ 0x0021),
|
||||
SET_MENU_MUSIC(/*seq*/ SEQ_MENU_FILE_SELECT),
|
||||
TRANSITION(/*transType*/ WARP_TRANSITION_FADE_FROM_COLOR, /*time*/ 16, /*color*/ 0xFF, 0xFF, 0xFF),
|
||||
CALL(/*arg*/ 0, /*func*/ lvl_init_menu_values_and_cursor_pos),
|
||||
CALL_LOOP(/*arg*/ 0, /*func*/ lvl_update_obj_and_load_file_selected),
|
||||
|
@ -171,7 +171,7 @@ static const LevelScript script_exec_ ## folder [] = { \
|
||||
|
||||
const LevelScript script_func_global_1[] = {
|
||||
LOAD_MODEL_FROM_GEO(MODEL_BLUE_COIN_SWITCH, blue_coin_switch_geo),
|
||||
LOAD_MODEL_FROM_GEO(MODEL_AMP, amp_geo),
|
||||
LOAD_MODEL_FROM_GEO(MODEL_AMP, dAmpGeo),
|
||||
LOAD_MODEL_FROM_GEO(MODEL_PURPLE_SWITCH, purple_switch_geo),
|
||||
LOAD_MODEL_FROM_GEO(MODEL_CHECKERBOARD_PLATFORM, checkerboard_platform_geo),
|
||||
LOAD_MODEL_FROM_GEO(MODEL_BREAKABLE_BOX, breakable_box_geo),
|
||||
@ -297,7 +297,7 @@ const LevelScript script_func_global_13[] = {
|
||||
LOAD_MODEL_FROM_GEO(MODEL_BOWSER_SMOKE, bowser_impact_smoke_geo),
|
||||
LOAD_MODEL_FROM_GEO(MODEL_BOWSER_FLAMES, bowser_flames_geo),
|
||||
LOAD_MODEL_FROM_GEO(MODEL_BOWSER_WAVE, invisible_bowser_accessory_geo),
|
||||
LOAD_MODEL_FROM_GEO(MODEL_BOWSER2, bowser2_geo),
|
||||
LOAD_MODEL_FROM_GEO(MODEL_BOWSER_NO_SHADOW, bowser_geo_no_shadow),
|
||||
RETURN(),
|
||||
};
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
.set noreorder # don't insert nops after branches
|
||||
.set noreorder // don't insert nops after branches
|
||||
.set gp=64
|
||||
|
||||
.include "macros.inc"
|
||||
#include "macros.inc"
|
||||
|
||||
|
||||
.section .text, "ax"
|
||||
|
@ -1,21 +1,14 @@
|
||||
.set noat # allow manual use of $at
|
||||
.set noreorder # don't insert nops after branches
|
||||
.set noat // allow manual use of $at
|
||||
.set noreorder // don't insert nops after branches
|
||||
.set gp=64
|
||||
|
||||
.include "macros.inc"
|
||||
|
||||
.ifdef VERSION_EU
|
||||
.set VERSION_EU_SH, 1
|
||||
.endif
|
||||
.ifdef VERSION_SH
|
||||
.set VERSION_EU_SH, 1
|
||||
.endif
|
||||
#include "macros.inc"
|
||||
|
||||
.section .text, "ax"
|
||||
|
||||
.ifdef AVOID_UB
|
||||
#ifdef AVOID_UB
|
||||
.set D_80334890, D_80334890_fix
|
||||
.endif
|
||||
#endif
|
||||
|
||||
glabel __osExceptionPreamble
|
||||
lui $k0, %hi(__osException)
|
||||
@ -37,7 +30,7 @@ glabel __osException
|
||||
sd $t2, 0x68($k0)
|
||||
sw $zero, 0x18($k0)
|
||||
mfc0 $t0, $13
|
||||
.ifndef VERSION_EU_SH
|
||||
#if !defined(VERSION_EU) && !defined(VERSION_SH)
|
||||
andi $t1, $t0, 0x7c
|
||||
li $t2, 0
|
||||
bne $t1, $t2, .L80326750
|
||||
@ -62,11 +55,11 @@ glabel __osException
|
||||
lui $at, %hi(D_80334934)
|
||||
sw $zero, %lo(D_80334934)($at)
|
||||
lui $at, %hi(D_80334938)
|
||||
.endif
|
||||
#endif
|
||||
move $t0, $k0
|
||||
.ifndef VERSION_EU_SH
|
||||
#if !defined(VERSION_EU) && !defined(VERSION_SH)
|
||||
sw $zero, %lo(D_80334938)($at)
|
||||
.endif
|
||||
#endif
|
||||
lui $k0, %hi(D_80334890 + 0x10)
|
||||
lw $k0, %lo(D_80334890 + 0x10)($k0)
|
||||
ld $t1, 0x20($t0)
|
||||
@ -79,17 +72,17 @@ glabel __osException
|
||||
sd $t1, 0x60($k0)
|
||||
ld $t1, 0x68($t0)
|
||||
sd $t1, 0x68($k0)
|
||||
.ifdef VERSION_EU_SH
|
||||
#if defined(VERSION_EU) || defined(VERSION_SH)
|
||||
lw $k1, 0x118($k0)
|
||||
.else
|
||||
#else
|
||||
.L80326794:
|
||||
.endif
|
||||
#endif
|
||||
mflo $t0
|
||||
sd $t0, 0x108($k0)
|
||||
mfhi $t0
|
||||
.ifdef VERSION_EU_SH
|
||||
#if defined(VERSION_EU) || defined(VERSION_SH)
|
||||
andi $t1, $k1, 0xff00
|
||||
.endif
|
||||
#endif
|
||||
sd $v0, 0x28($k0)
|
||||
sd $v1, 0x30($k0)
|
||||
sd $a0, 0x38($k0)
|
||||
@ -115,31 +108,31 @@ glabel __osException
|
||||
sd $sp, 0xf0($k0)
|
||||
sd $fp, 0xf8($k0)
|
||||
sd $ra, 0x100($k0)
|
||||
.ifdef VERSION_EU_SH
|
||||
#if defined(VERSION_EU) || defined(VERSION_SH)
|
||||
beqz $t1, .L802F3A18
|
||||
sd $t0, 0x110($k0)
|
||||
lui $t0, %hi(__OSGlobalIntMask)
|
||||
addiu $t0, %lo(__OSGlobalIntMask)
|
||||
lw $t0, ($t0)
|
||||
li $at, -1
|
||||
.ifdef VERSION_EU
|
||||
#ifdef VERSION_EU
|
||||
xor $t0, $t0, $at
|
||||
.else
|
||||
#else
|
||||
xor $t2, $t0, $at
|
||||
.endif
|
||||
#endif
|
||||
lui $at, (0xFFFF00FF >> 16)
|
||||
.ifdef VERSION_EU
|
||||
#ifdef VERSION_EU
|
||||
andi $t0, $t0, 0xFF00
|
||||
.else
|
||||
#else
|
||||
andi $t2, $t2, 0xFF00
|
||||
.endif
|
||||
#endif
|
||||
ori $at, (0xFFFF00FF & 0xFFFF)
|
||||
.ifdef VERSION_EU
|
||||
#ifdef VERSION_EU
|
||||
or $t1, $t1, $t0
|
||||
and $k1, $k1, $at
|
||||
or $k1, $k1, $t1
|
||||
sw $k1, 0x118($k0)
|
||||
.else
|
||||
#else
|
||||
or $t4, $t1, $t2
|
||||
and $t3, $k1, $at
|
||||
andi $t0, $t0, 0xFF00
|
||||
@ -148,7 +141,7 @@ glabel __osException
|
||||
and $k1, $k1, $at
|
||||
sw $t3, 0x118($k0)
|
||||
or $k1, $k1, $t1
|
||||
.endif
|
||||
#endif
|
||||
|
||||
.L802F3A18:
|
||||
lui $t1, %hi(MI_INTR_MASK_REG)
|
||||
@ -167,9 +160,9 @@ glabel __osException
|
||||
or $t1, $t1, $t0
|
||||
.L802F3A50:
|
||||
sw $t1, 0x128($k0)
|
||||
.else
|
||||
#else
|
||||
sd $t0, 0x110($k0)
|
||||
.endif
|
||||
#endif
|
||||
mfc0 $t0, $14
|
||||
sw $t0, 0x11c($k0)
|
||||
lw $t0, 0x18($k0)
|
||||
@ -197,14 +190,14 @@ glabel __osException
|
||||
.L80326868:
|
||||
mfc0 $t0, $13
|
||||
sw $t0, 0x120($k0)
|
||||
.ifndef VERSION_EU_SH
|
||||
#if !defined(VERSION_EU) && !defined(VERSION_SH)
|
||||
lui $t1, %hi(MI_INTR_MASK_REG)
|
||||
lw $t1, %lo(MI_INTR_MASK_REG)($t1)
|
||||
sw $t1, 0x128($k0)
|
||||
.endif
|
||||
#endif
|
||||
li $t1, 2
|
||||
sh $t1, 0x10($k0)
|
||||
.ifndef VERSION_EU_SH
|
||||
#if !defined(VERSION_EU) && !defined(VERSION_SH)
|
||||
lui $t1, %hi(D_80334934)
|
||||
lw $t1, %lo(D_80334934)($t1)
|
||||
beqz $t1, .L803268B4
|
||||
@ -239,7 +232,7 @@ glabel __osException
|
||||
b .L80326E08
|
||||
sw $t1, %lo(D_80334A44)($at)
|
||||
.L80326900:
|
||||
.endif
|
||||
#endif
|
||||
andi $t1, $t0, 0x7c
|
||||
li $t2, 36
|
||||
beq $t1, $t2, .L80326B84
|
||||
@ -267,7 +260,7 @@ glabel __osException
|
||||
lw $t2, %lo(jtbl_80338630)($at)
|
||||
jr $t2
|
||||
nop
|
||||
.ifdef VERSION_EU_SH
|
||||
#if defined(VERSION_EU) || defined(VERSION_SH)
|
||||
glabel L802F3B28
|
||||
li $at, -8193
|
||||
b .L8032692C
|
||||
@ -276,7 +269,7 @@ glabel L802F3B34
|
||||
li $at, -16385
|
||||
b .L8032692C
|
||||
and $s0, $s0, $at
|
||||
.endif
|
||||
#endif
|
||||
glabel L80326964
|
||||
mfc0 $t1, $11
|
||||
mtc0 $t1, $11
|
||||
@ -287,62 +280,62 @@ glabel L80326964
|
||||
b .L8032692C
|
||||
and $s0, $s0, $at
|
||||
glabel L80326984
|
||||
.ifdef VERSION_EU_SH
|
||||
#if defined(VERSION_EU) || defined(VERSION_SH)
|
||||
li $at, -2049
|
||||
and $s0, $s0, $at
|
||||
.endif
|
||||
#endif
|
||||
li $t2, 4
|
||||
lui $at, %hi(D_80334920)
|
||||
addu $at, $at, $t2
|
||||
lw $t2, %lo(D_80334920)($at)
|
||||
.ifdef VERSION_EU_SH
|
||||
#if defined(VERSION_EU) || defined(VERSION_SH)
|
||||
lui $sp, %hi(leoDiskStack)
|
||||
addiu $sp, %lo(leoDiskStack)
|
||||
li $a0, 16
|
||||
beqz $t2, .L803269A4
|
||||
addiu $sp, $sp, 0xff0
|
||||
.else
|
||||
#else
|
||||
beqz $t2, .L803269A4
|
||||
nop
|
||||
.endif
|
||||
#endif
|
||||
jalr $t2
|
||||
nop
|
||||
.ifdef VERSION_EU_SH
|
||||
#if defined(VERSION_EU) || defined(VERSION_SH)
|
||||
beqz $v0, .L803269A4
|
||||
.ifdef VERSION_SH
|
||||
#ifdef VERSION_SH
|
||||
li $a0, 0x10
|
||||
.else
|
||||
#else
|
||||
nop
|
||||
.endif
|
||||
#endif
|
||||
b .L80326B9C
|
||||
nop
|
||||
.endif
|
||||
#endif
|
||||
.L803269A4:
|
||||
jal send_mesg
|
||||
.ifdef VERSION_EU_SH
|
||||
#if defined(VERSION_EU) || defined(VERSION_SH)
|
||||
nop
|
||||
b .L8032692C
|
||||
nop
|
||||
.else
|
||||
#else
|
||||
li $a0, 16
|
||||
li $at, -2049
|
||||
b .L8032692C
|
||||
and $s0, $s0, $at
|
||||
.endif
|
||||
#endif
|
||||
glabel L803269B8
|
||||
.ifdef VERSION_EU_SH
|
||||
#if defined(VERSION_EU) || defined(VERSION_SH)
|
||||
lui $t0, %hi(__OSGlobalIntMask)
|
||||
addiu $t0, %lo(__OSGlobalIntMask)
|
||||
lw $t0, ($t0)
|
||||
.endif
|
||||
#endif
|
||||
lui $s1, %hi(MI_INTR_REG)
|
||||
lw $s1, %lo(MI_INTR_REG)($s1)
|
||||
.ifdef VERSION_EU_SH
|
||||
#if defined(VERSION_EU) || defined(VERSION_SH)
|
||||
srl $t0, $t0, 0x10
|
||||
and $s1, $s1, $t0
|
||||
.else
|
||||
#else
|
||||
andi $s1, $s1, 0x3f
|
||||
.endif
|
||||
#endif
|
||||
andi $t1, $s1, 1
|
||||
beqz $t1, .L80326A18
|
||||
nop
|
||||
@ -609,7 +602,7 @@ glabel __osEnqueueAndYield
|
||||
sw $k1, 0x12c($a1)
|
||||
|
||||
.L80326D70:
|
||||
.ifdef VERSION_EU_SH
|
||||
#if defined(VERSION_EU) || defined(VERSION_SH)
|
||||
lw $k1, 0x118($a1)
|
||||
andi $t1, $k1, 0xff00
|
||||
beqz $t1, .L802F3FBC
|
||||
@ -627,10 +620,10 @@ glabel __osEnqueueAndYield
|
||||
or $k1, $k1, $t1
|
||||
sw $k1, 0x118($a1)
|
||||
.L802F3FBC:
|
||||
.endif
|
||||
#endif
|
||||
lui $k1, %hi(MI_INTR_MASK_REG)
|
||||
lw $k1, %lo(MI_INTR_MASK_REG)($k1)
|
||||
.ifdef VERSION_EU_SH
|
||||
#if defined(VERSION_EU) || defined(VERSION_SH)
|
||||
beqz $k1, .L802F3FF4
|
||||
nop
|
||||
lui $k0, %hi(__OSGlobalIntMask)
|
||||
@ -644,7 +637,7 @@ glabel __osEnqueueAndYield
|
||||
and $k0, $k0, $t0
|
||||
or $k1, $k1, $k0
|
||||
.L802F3FF4:
|
||||
.endif
|
||||
#endif
|
||||
beqz $a0, .L80326D88
|
||||
sw $k1, 0x128($a1)
|
||||
jal __osEnqueueThread
|
||||
@ -653,7 +646,7 @@ glabel __osEnqueueAndYield
|
||||
j __osDispatchThread
|
||||
nop
|
||||
|
||||
#enqueue and pop look like compiled functions? but there's no easy way to extract them
|
||||
// enqueue and pop look like compiled functions? but there's no easy way to extract them
|
||||
glabel __osEnqueueThread
|
||||
lw $t8, ($a0)
|
||||
lw $t7, 4($a1)
|
||||
@ -691,7 +684,7 @@ glabel __osDispatchThread
|
||||
li $t0, 4
|
||||
sh $t0, 0x10($v0)
|
||||
move $k0, $v0
|
||||
.ifdef VERSION_EU_SH
|
||||
#if defined(VERSION_EU) || defined(VERSION_SH)
|
||||
lui $t0, %hi(__OSGlobalIntMask)
|
||||
lw $k1, 0x118($k0)
|
||||
addiu $t0, %lo(__OSGlobalIntMask)
|
||||
@ -704,7 +697,7 @@ glabel __osDispatchThread
|
||||
and $k1, $k1, $at
|
||||
or $k1, $k1, $t1
|
||||
mtc0 $k1, $12
|
||||
.endif
|
||||
#endif
|
||||
.L80326E08:
|
||||
ld $k1, 0x108($k0)
|
||||
ld $at, 0x20($k0)
|
||||
@ -741,10 +734,10 @@ glabel __osDispatchThread
|
||||
ld $ra, 0x100($k0)
|
||||
lw $k1, 0x11c($k0)
|
||||
mtc0 $k1, $14
|
||||
.ifndef VERSION_EU_SH
|
||||
#if !defined(VERSION_EU) && !defined(VERSION_SH)
|
||||
lw $k1, 0x118($k0)
|
||||
mtc0 $k1, $12
|
||||
.endif
|
||||
#endif
|
||||
lw $k1, 0x18($k0)
|
||||
beqz $k1, .L80326EF0
|
||||
nop
|
||||
@ -768,13 +761,13 @@ glabel __osDispatchThread
|
||||
ldc1 $f30, 0x1a8($k0)
|
||||
.L80326EF0:
|
||||
lw $k1, 0x128($k0)
|
||||
.ifdef VERSION_EU_SH
|
||||
#if defined(VERSION_EU) || defined(VERSION_SH)
|
||||
lui $k0, %hi(__OSGlobalIntMask)
|
||||
addiu $k0, %lo(__OSGlobalIntMask)
|
||||
lw $k0, ($k0)
|
||||
srl $k0, $k0, 0x10
|
||||
and $k1, $k1, $k0
|
||||
.endif
|
||||
#endif
|
||||
sll $k1, $k1, 1
|
||||
lui $k0, %hi(D_803386D0)
|
||||
addiu $k0, %lo(D_803386D0)
|
||||
@ -820,13 +813,13 @@ glabel jtbl_80338630
|
||||
.word L803269B8
|
||||
.word L80326984
|
||||
.word L80326AE8
|
||||
.ifdef VERSION_EU_SH
|
||||
#if defined(VERSION_EU) || defined(VERSION_SH)
|
||||
.word L802F3B28
|
||||
.word L802F3B34
|
||||
.else
|
||||
#else
|
||||
.word L80326BE8
|
||||
.word L80326BE8
|
||||
.endif
|
||||
#endif
|
||||
.word L80326964
|
||||
.word 0
|
||||
.word 0
|
||||
|
@ -1,7 +1,7 @@
|
||||
.set noreorder # don't insert nops after branches
|
||||
.set noreorder // don't insert nops after branches
|
||||
.set gp=64
|
||||
|
||||
.include "macros.inc"
|
||||
#include "macros.inc"
|
||||
|
||||
|
||||
.section .text, "ax"
|
||||
|
@ -1,7 +1,7 @@
|
||||
.set noreorder # don't insert nops after branches
|
||||
.set noreorder // don't insert nops after branches
|
||||
.set gp=64
|
||||
|
||||
.include "macros.inc"
|
||||
#include "macros.inc"
|
||||
|
||||
|
||||
.section .text, "ax"
|
||||
|
@ -1,8 +1,8 @@
|
||||
.set noat # allow manual use of $at
|
||||
.set noreorder # don't insert nops after branches
|
||||
.set noat // allow manual use of $at
|
||||
.set noreorder // don't insert nops after branches
|
||||
.set gp=64
|
||||
|
||||
.include "macros.inc"
|
||||
#include "macros.inc"
|
||||
|
||||
|
||||
.section .text, "ax"
|
||||
@ -44,8 +44,8 @@ glabel __osProbeTLB
|
||||
andi $t5, $v0, 2
|
||||
beqz $t5, .L8032A0D8
|
||||
nop
|
||||
lui $at, (0x3FFFFFC0 >> 16) # lui $at, 0x3fff
|
||||
ori $at, (0x3FFFFFC0 & 0xFFFF) # ori $at, $at, 0xffc0
|
||||
lui $at, (0x3FFFFFC0 >> 16) // lui $at, 0x3fff
|
||||
ori $at, (0x3FFFFFC0 & 0xFFFF) // ori $at, $at, 0xffc0
|
||||
and $v0, $v0, $at
|
||||
sll $v0, $v0, 6
|
||||
and $t5, $a0, $t3
|
||||
|
@ -1,7 +1,7 @@
|
||||
.set noreorder # don't insert nops after branches
|
||||
.set noreorder // don't insert nops after branches
|
||||
.set gp=64
|
||||
|
||||
.include "macros.inc"
|
||||
#include "macros.inc"
|
||||
|
||||
|
||||
.section .text, "ax"
|
||||
|
@ -1,7 +1,7 @@
|
||||
.set noreorder # don't insert nops after branches
|
||||
.set noreorder // don't insert nops after branches
|
||||
.set gp=64
|
||||
|
||||
.include "macros.inc"
|
||||
#include "macros.inc"
|
||||
|
||||
|
||||
.section .text, "ax"
|
||||
|
@ -1,7 +1,7 @@
|
||||
.set noreorder # don't insert nops after branches
|
||||
.set noreorder // don't insert nops after branches
|
||||
.set gp=64
|
||||
|
||||
.include "macros.inc"
|
||||
#include "macros.inc"
|
||||
|
||||
|
||||
.section .text, "ax"
|
||||
|
@ -1,7 +1,7 @@
|
||||
.set noreorder # don't insert nops after branches
|
||||
.set noreorder // don't insert nops after branches
|
||||
.set gp=64
|
||||
|
||||
.include "macros.inc"
|
||||
#include "macros.inc"
|
||||
|
||||
|
||||
.section .text, "ax"
|
||||
|
@ -1,12 +1,12 @@
|
||||
.set noreorder # don't insert nops after branches
|
||||
.set noreorder // don't insert nops after branches
|
||||
.set gp=64
|
||||
.set noat
|
||||
|
||||
.include "macros.inc"
|
||||
#include "macros.inc"
|
||||
|
||||
|
||||
.section .text, "ax"
|
||||
# cache related
|
||||
// cache related
|
||||
glabel __os_eu_802ef550
|
||||
lui $t0,0x8000
|
||||
li $t2,0x2000
|
||||
|
@ -1,8 +1,8 @@
|
||||
.set noat # allow manual use of $at
|
||||
.set noreorder # don't insert nops after branches
|
||||
.set noat // allow manual use of $at
|
||||
.set noreorder // don't insert nops after branches
|
||||
.set gp=64
|
||||
|
||||
.include "macros.inc"
|
||||
#include "macros.inc"
|
||||
|
||||
|
||||
.section .text, "ax"
|
||||
|
@ -1,9 +1,9 @@
|
||||
.set noreorder # don't insert nops after branches
|
||||
.set noreorder // don't insert nops after branches
|
||||
.set gp=64
|
||||
|
||||
.include "macros.inc"
|
||||
#include "macros.inc"
|
||||
|
||||
#this file is probably handwritten
|
||||
// this file is probably handwritten
|
||||
|
||||
.section .text, "ax"
|
||||
|
||||
|
@ -1,9 +1,9 @@
|
||||
# assembler directives
|
||||
.set noat # allow manual use of $at
|
||||
.set noreorder # don't insert nops after branches
|
||||
// assembler directives
|
||||
.set noat // allow manual use of $at
|
||||
.set noreorder // don't insert nops after branches
|
||||
.set gp=64
|
||||
|
||||
.include "macros.inc"
|
||||
#include "macros.inc"
|
||||
|
||||
|
||||
.section .text, "ax"
|
||||
|
@ -1,7 +1,7 @@
|
||||
.set noreorder # don't insert nops after branches
|
||||
.set noreorder // don't insert nops after branches
|
||||
.set gp=64
|
||||
|
||||
.include "macros.inc"
|
||||
#include "macros.inc"
|
||||
|
||||
|
||||
.section .text, "ax"
|
||||
|
@ -1,8 +1,8 @@
|
||||
.set noat # allow manual use of $at
|
||||
.set noreorder # don't insert nops after branches
|
||||
.set noat // allow manual use of $at
|
||||
.set noreorder // don't insert nops after branches
|
||||
.set gp=64
|
||||
|
||||
.include "macros.inc"
|
||||
#include "macros.inc"
|
||||
|
||||
|
||||
.section .text, "ax"
|
||||
|
@ -1,8 +1,8 @@
|
||||
.set noat # allow manual use of $at
|
||||
.set noreorder # don't insert nops after branches
|
||||
.set noat // allow manual use of $at
|
||||
.set noreorder // don't insert nops after branches
|
||||
.set gp=64
|
||||
|
||||
.include "macros.inc"
|
||||
#include "macros.inc"
|
||||
|
||||
|
||||
.section .text, "ax"
|
||||
|
@ -1,14 +1,14 @@
|
||||
.set noreorder # don't insert nops after branches
|
||||
.set noreorder // don't insert nops after branches
|
||||
.set gp=64
|
||||
|
||||
.include "macros.inc"
|
||||
#include "macros.inc"
|
||||
|
||||
|
||||
.section .text, "ax"
|
||||
|
||||
# This file is handwritten
|
||||
// This file is handwritten
|
||||
|
||||
#void osMapTLB(s32 index, OSPageMask pm, void *vaddr, u32 evenpaddr, u32 oddpaddr, s32 asid);
|
||||
// void osMapTLB(s32 index, OSPageMask pm, void *vaddr, u32 evenpaddr, u32 oddpaddr, s32 asid);
|
||||
glabel osMapTLB
|
||||
mfc0 $t0, $10
|
||||
mtc0 $a0, $0
|
||||
|
@ -1,8 +1,8 @@
|
||||
.set noat # allow manual use of $at
|
||||
.set noreorder # don't insert nops after branches
|
||||
.set noat // allow manual use of $at
|
||||
.set noreorder // don't insert nops after branches
|
||||
.set gp=64
|
||||
|
||||
.include "macros.inc"
|
||||
#include "macros.inc"
|
||||
|
||||
|
||||
.section .text, "ax"
|
||||
|
@ -1,38 +1,31 @@
|
||||
.set noat # allow manual use of $at
|
||||
.set noreorder # don't insert nops after branches
|
||||
.set noat // allow manual use of $at
|
||||
.set noreorder // don't insert nops after branches
|
||||
.set gp=64
|
||||
|
||||
.include "macros.inc"
|
||||
#include "macros.inc"
|
||||
|
||||
.eqv MI_INTR_MASK_REG, 0xA430000C
|
||||
|
||||
.ifdef VERSION_EU
|
||||
.set VERSION_EU_SH, 1
|
||||
.endif
|
||||
.ifdef VERSION_SH
|
||||
.set VERSION_EU_SH, 1
|
||||
.endif
|
||||
|
||||
.section .text, "ax"
|
||||
|
||||
glabel osSetIntMask
|
||||
.ifdef VERSION_EU_SH
|
||||
#if defined(VERSION_EU) || defined(VERSION_SH)
|
||||
mfc0 $t4, $12
|
||||
andi $v0, $t4, 0xff01
|
||||
lui $t0, %hi(__OSGlobalIntMask) # $t0, 0x8030
|
||||
addiu $t0, %lo(__OSGlobalIntMask) # addiu $t0, $t0, 0x208c
|
||||
lui $t0, %hi(__OSGlobalIntMask) // $t0, 0x8030
|
||||
addiu $t0, %lo(__OSGlobalIntMask) // addiu $t0, $t0, 0x208c
|
||||
lw $t3, ($t0)
|
||||
li $at, -1
|
||||
xor $t0, $t3, $at
|
||||
andi $t0, $t0, 0xff00
|
||||
or $v0, $v0, $t0
|
||||
.else
|
||||
#else
|
||||
mfc0 $t1, $12
|
||||
andi $v0, $t1, 0xff01
|
||||
.endif
|
||||
lui $t2, %hi(MI_INTR_MASK_REG) # $t2, 0xa430
|
||||
#endif
|
||||
lui $t2, %hi(MI_INTR_MASK_REG) // $t2, 0xa430
|
||||
lw $t2, %lo(MI_INTR_MASK_REG)($t2)
|
||||
.ifdef VERSION_EU_SH
|
||||
#if defined(VERSION_EU) || defined(VERSION_SH)
|
||||
beqz $t2, .L80200074
|
||||
srl $t1, $t3, 0x10
|
||||
li $at, -1
|
||||
@ -40,36 +33,36 @@ glabel osSetIntMask
|
||||
andi $t1, $t1, 0x3f
|
||||
or $t2, $t2, $t1
|
||||
.L80200074:
|
||||
.endif
|
||||
#endif
|
||||
sll $t2, $t2, 0x10
|
||||
or $v0, $v0, $t2
|
||||
lui $at, 0x3f
|
||||
and $t0, $a0, $at
|
||||
.ifdef VERSION_EU_SH
|
||||
#if defined(VERSION_EU) || defined(VERSION_SH)
|
||||
and $t0, $t0, $t3
|
||||
.endif
|
||||
#endif
|
||||
srl $t0, $t0, 0xf
|
||||
lui $t2, %hi(D_803386D0)
|
||||
addu $t2, $t2, $t0
|
||||
lhu $t2, %lo(D_803386D0)($t2)
|
||||
lui $at, %hi(MI_INTR_MASK_REG) # $at, 0xa430
|
||||
lui $at, %hi(MI_INTR_MASK_REG) // $at, 0xa430
|
||||
sw $t2, %lo(MI_INTR_MASK_REG)($at)
|
||||
andi $t0, $a0, 0xff01
|
||||
.ifdef VERSION_EU_SH
|
||||
#if defined(VERSION_EU) || defined(VERSION_SH)
|
||||
andi $t1, $t3, 0xff00
|
||||
and $t0, $t0, $t1
|
||||
.endif
|
||||
lui $at, (0xFFFF00FF >> 16) # lui $at, 0xffff
|
||||
ori $at, (0xFFFF00FF & 0xFFFF) # ori $at, $at, 0xff
|
||||
.ifdef VERSION_EU_SH
|
||||
#endif
|
||||
lui $at, (0xFFFF00FF >> 16) // lui $at, 0xffff
|
||||
ori $at, (0xFFFF00FF & 0xFFFF) // ori $at, $at, 0xff
|
||||
#if defined(VERSION_EU) || defined(VERSION_SH)
|
||||
and $t4, $t4, $at
|
||||
or $t4, $t4, $t0
|
||||
mtc0 $t4, $12
|
||||
.else
|
||||
#else
|
||||
and $t1, $t1, $at
|
||||
or $t1, $t1, $t0
|
||||
mtc0 $t1, $12
|
||||
.endif
|
||||
#endif
|
||||
nop
|
||||
nop
|
||||
jr $ra
|
||||
|
@ -1,7 +1,7 @@
|
||||
.set noreorder # don't insert nops after branches
|
||||
.set noreorder // don't insert nops after branches
|
||||
.set gp=64
|
||||
|
||||
.include "macros.inc"
|
||||
#include "macros.inc"
|
||||
|
||||
|
||||
.section .text, "ax"
|
||||
|
@ -1,7 +1,7 @@
|
||||
.set noreorder # don't insert nops after branches
|
||||
.set noreorder // don't insert nops after branches
|
||||
.set gp=64
|
||||
|
||||
.include "macros.inc"
|
||||
#include "macros.inc"
|
||||
|
||||
|
||||
.section .text, "ax"
|
||||
@ -34,6 +34,6 @@ glabel osWritebackDCache
|
||||
.L80324E4C:
|
||||
cache 1, ($t0)
|
||||
bltu $t0, $t1, .L80324E4C
|
||||
addiu $t0, 0x10 # addiu $t0, $t0, 0x10
|
||||
addiu $t0, 0x10 // addiu $t0, $t0, 0x10
|
||||
jr $ra
|
||||
nop
|
||||
|
@ -1,8 +1,8 @@
|
||||
.set noat # allow manual use of $at
|
||||
.set noreorder # don't insert nops after branches
|
||||
.set noat // allow manual use of $at
|
||||
.set noreorder // don't insert nops after branches
|
||||
.set gp=64
|
||||
|
||||
.include "macros.inc"
|
||||
#include "macros.inc"
|
||||
|
||||
|
||||
.section .text, "ax"
|
||||
|
@ -1,10 +1,10 @@
|
||||
.macro gsymbol sym addr
|
||||
.global \sym
|
||||
.set \sym, \addr
|
||||
.ifndef VERSION_JP
|
||||
#ifndef VERSION_JP
|
||||
nop
|
||||
nop
|
||||
.endif
|
||||
#endif
|
||||
.endm
|
||||
|
||||
.text
|
||||
@ -16,7 +16,7 @@ gsymbol osCiCId 0x80000310
|
||||
gsymbol osVersion 0x80000314
|
||||
gsymbol osMemSize 0x80000318
|
||||
gsymbol osAppNmiBuffer 0x8000031C
|
||||
.ifdef VERSION_SH
|
||||
#ifdef VERSION_SH
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
@ -25,4 +25,4 @@ nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
.endif
|
||||
#endif
|
||||
|
@ -1,8 +1,8 @@
|
||||
.set noat # allow manual use of $at
|
||||
.set noreorder # don't insert nops after branches
|
||||
.set noat // allow manual use of $at
|
||||
.set noreorder // don't insert nops after branches
|
||||
.set gp=64
|
||||
|
||||
.include "macros.inc"
|
||||
#include "macros.inc"
|
||||
|
||||
.section .text, "ax"
|
||||
|
||||
|
110
lib/rsp.s
110
lib/rsp.s
@ -1,4 +1,4 @@
|
||||
.include "macros.inc"
|
||||
#include "macros.inc"
|
||||
.set UCODE_SIZE, 0x800
|
||||
|
||||
.section .text
|
||||
@ -10,22 +10,22 @@ glabel rspF3DBootStart
|
||||
glabel rspF3DBootEnd
|
||||
|
||||
.balign 16
|
||||
.ifndef F3DEX_GBI_SHARED
|
||||
#ifndef F3DEX_GBI_SHARED
|
||||
glabel rspF3DStart /* Use regular Fast3D bins (default) */
|
||||
.incbin "rsp/fast3d.bin"
|
||||
glabel rspF3DEnd
|
||||
|
||||
.else /* Use one of the Fast3DEX series grucodes. */
|
||||
#else /* Use one of the Fast3DEX series grucodes. */
|
||||
glabel rspF3DStart
|
||||
.if F3DZEX_GBI_2 == 1
|
||||
#ifdef F3DZEX_GBI_2
|
||||
.incbin "lib/PR/f3dex2/F3DZEX_NoN.bin"
|
||||
.elseif F3DEX_GBI == 1
|
||||
#elif defined(F3DEX_GBI)
|
||||
.incbin "lib/PR/f3dex/F3DEX.bin"
|
||||
.elseif F3DEX_GBI_2 == 1
|
||||
#elif defined(F3DEX_GBI_2)
|
||||
.incbin "lib/PR/f3dex2/F3DEX2.bin"
|
||||
.endif
|
||||
#endif
|
||||
glabel rspF3DEnd
|
||||
.endif
|
||||
#endif
|
||||
|
||||
/* Audio Bins */
|
||||
|
||||
@ -40,107 +40,107 @@ glabel rspAspMainEnd
|
||||
*/
|
||||
|
||||
/* Fast3DEX NoN Text */
|
||||
.ifdef F3DEX_NON_GBI
|
||||
#ifdef F3DEX_NON_GBI
|
||||
glabel rspF3DEXNoNStart
|
||||
.balign 16
|
||||
.incbin "lib/PR/f3dex/F3DEX_NoN.bin"
|
||||
glabel rspF3DEXNoNEnd
|
||||
.endif
|
||||
#endif
|
||||
|
||||
/* Fast3DLX Text */
|
||||
.ifdef F3DLX_GBI
|
||||
#ifdef F3DLX_GBI
|
||||
glabel rspF3DLXStart
|
||||
.incbin "lib/PR/f3dex/F3DLX.bin"
|
||||
glabel rspF3DLXEnd
|
||||
.endif
|
||||
#endif
|
||||
|
||||
/* Fast3DLX NoN Text */
|
||||
.ifdef F3DLX_NON_GBI
|
||||
#ifdef F3DLX_NON_GBI
|
||||
glabel rspF3DLXNoNStart
|
||||
.balign 16
|
||||
.incbin "lib/PR/f3dex/F3DLX_NoN.bin"
|
||||
glabel rspF3DLXNoNEnd
|
||||
.endif
|
||||
#endif
|
||||
|
||||
/* Fast3DLX Rej Text */
|
||||
.ifdef F3DLX_REJ_GBI
|
||||
#ifdef F3DLX_REJ_GBI
|
||||
glabel rspF3DLXRejStart
|
||||
.balign 16
|
||||
.incbin "lib/PR/f3dex/F3DLX_Rej.bin"
|
||||
glabel rspF3DLXRejEnd
|
||||
.endif
|
||||
#endif
|
||||
|
||||
/* Line3DEX Text */
|
||||
.ifdef L3DEX_GBI
|
||||
#ifdef L3DEX_GBI
|
||||
glabel rspL3DEXStart
|
||||
.balign 16
|
||||
.incbin "lib/PR/f3dex/L3DEX.bin"
|
||||
glabel rspL3DEXEnd
|
||||
.endif
|
||||
#endif
|
||||
|
||||
/* S2DEX Text */
|
||||
.ifdef S2DEX_GBI
|
||||
#ifdef S2DEX_GBI
|
||||
glabel rspS2DEXStart
|
||||
.balign 16
|
||||
.incbin "lib/PR/s2dex/S2DEX.bin"
|
||||
glabel rspS2DEXEnd
|
||||
.endif
|
||||
#endif
|
||||
|
||||
/* Fast3DEX2 series */
|
||||
|
||||
/* Fast3DEX2 NoN Text */
|
||||
.ifdef F3DEX2_NON_GBI
|
||||
#ifdef F3DEX2_NON_GBI
|
||||
.balign 16
|
||||
glabel rspF3DEX2NoNStart
|
||||
.incbin "lib/PR/f3dex2/F3DEX2_NoN.bin"
|
||||
glabel rspF3DEX2NoNEnd
|
||||
.endif
|
||||
#endif
|
||||
|
||||
/* Fast3DEX2 Rej Text */
|
||||
.ifdef F3DEX2_REJ_GBI
|
||||
#ifdef F3DEX2_REJ_GBI
|
||||
.balign 16
|
||||
glabel rspF3DEX2RejStart
|
||||
.incbin "lib/PR/f3dex2/F3DEX2_Rej.bin"
|
||||
glabel rspF3DEX2RejEnd
|
||||
.endif
|
||||
#endif
|
||||
|
||||
/* Line3DEX2 Text */
|
||||
.ifdef L3DEX2_GBI
|
||||
#ifdef L3DEX2_GBI
|
||||
.balign 16
|
||||
glabel rspL3DEX2Start
|
||||
.incbin "lib/PR/f3dex2/L3DEX2.bin"
|
||||
glabel rspL3DEX2End
|
||||
.endif
|
||||
#endif
|
||||
|
||||
/* S2DEX2 Text */
|
||||
.ifdef S2DEX_GBI_2
|
||||
#ifdef S2DEX_GBI_2
|
||||
.balign 16
|
||||
glabel rspS2DEXStart
|
||||
.incbin "lib/PR/s2dex/S2DEX2.bin"
|
||||
glabel rspS2DEXEnd
|
||||
.endif
|
||||
#endif
|
||||
|
||||
/* DATA SECTION START */
|
||||
|
||||
.section .rodata
|
||||
|
||||
.balign 16
|
||||
.ifndef F3DEX_GBI_SHARED /* Use regular Fast3D data (default) */
|
||||
#ifndef F3DEX_GBI_SHARED /* Use regular Fast3D data (default) */
|
||||
glabel rspF3DDataStart
|
||||
.incbin "rsp/fast3d_data.bin"
|
||||
glabel rspF3DDataEnd
|
||||
|
||||
.else /* Using one of the Fast3DEX series grucodes */
|
||||
#else /* Using one of the Fast3DEX series grucodes */
|
||||
glabel rspF3DDataStart
|
||||
.if F3DZEX_GBI_2 == 1
|
||||
#ifdef F3DZEX_GBI_2
|
||||
.incbin "lib/PR/f3dex2/F3DZEX_NoN_data.bin"
|
||||
.elseif F3DEX_GBI == 1
|
||||
#elseif F3DEX_GBI
|
||||
.incbin "lib/PR/f3dex/F3DEX_data.bin"
|
||||
.elseif F3DEX_GBI_2 == 1
|
||||
#elseif F3DEX_GBI_2
|
||||
.incbin "lib/PR/f3dex2/F3DEX2_data.bin"
|
||||
.endif
|
||||
#endif
|
||||
glabel rspF3DDataEnd
|
||||
.endif
|
||||
#endif
|
||||
|
||||
/* Audio Data */
|
||||
|
||||
@ -154,83 +154,83 @@ glabel rspAspMainDataEnd
|
||||
/* Fast3DEX Series */
|
||||
|
||||
/* Fast3DEX NoN Data */
|
||||
.ifdef F3DEX_NON_GBI
|
||||
#ifdef F3DEX_NON_GBI
|
||||
.balign 16
|
||||
glabel rspF3DEXNoNDataStart
|
||||
.incbin "lib/PR/f3dex/F3DEX_NoN_data.bin"
|
||||
glabel rspF3DEXNoNDataEnd
|
||||
.endif
|
||||
#endif
|
||||
|
||||
/* Fast3DLX Data */
|
||||
.ifdef F3DLX_GBI
|
||||
#ifdef F3DLX_GBI
|
||||
.balign 16
|
||||
glabel rspF3DLXDataStart
|
||||
.incbin "lib/PR/f3dex/F3DLX_data.bin"
|
||||
glabel rspF3DLXDataEnd
|
||||
.endif
|
||||
#endif
|
||||
|
||||
/* Fast3DLX NoN Data */
|
||||
.ifdef F3DLX_NON_GBI
|
||||
#ifdef F3DLX_NON_GBI
|
||||
.balign 16
|
||||
glabel rspF3DLXNoNDataStart
|
||||
.incbin "lib/PR/f3dex/F3DLX_NoN_data.bin"
|
||||
glabel rspF3DLXNoNDataEnd
|
||||
.endif
|
||||
#endif
|
||||
|
||||
/* Fast3DLX Rej Data */
|
||||
.ifdef F3DLX_REJ_GBI
|
||||
#ifdef F3DLX_REJ_GBI
|
||||
.balign 16
|
||||
glabel rspF3DLXRejDataStart
|
||||
.incbin "lib/PR/f3dex/F3DLX_Rej_data.bin"
|
||||
glabel rspF3DLXRejDataEnd
|
||||
.endif
|
||||
#endif
|
||||
|
||||
/* Line3DEX Data */
|
||||
.ifdef L3DEX_GBI
|
||||
#ifdef L3DEX_GBI
|
||||
.balign 16
|
||||
glabel rspL3DEXDataStart
|
||||
.incbin "lib/PR/f3dex/L3DEX_data.bin"
|
||||
glabel rspL3DEXDataEnd
|
||||
.endif
|
||||
#endif
|
||||
|
||||
/* S2DEX Data */
|
||||
.ifdef S2DEX_GBI
|
||||
#ifdef S2DEX_GBI
|
||||
.balign 16
|
||||
glabel rspS2DEXDataStart
|
||||
.incbin "lib/PR/s2dex/S2DEX_data.bin"
|
||||
glabel rspS2DEXDataEnd
|
||||
.endif
|
||||
#endif
|
||||
|
||||
/* Fast3DEX2 Series */
|
||||
|
||||
/* Fast3DEX2 NoN Data */
|
||||
.ifdef F3DEX2_NON_GBI
|
||||
#ifdef F3DEX2_NON_GBI
|
||||
.balign 16
|
||||
glabel rspF3DEX2NoNStart
|
||||
.incbin "lib/PR/f3dex2/F3DEX2_NoN_data.bin"
|
||||
glabel rspF3DEX2NoNEnd
|
||||
.endif
|
||||
#endif
|
||||
|
||||
/* Fast3DEX2 Rej Data */
|
||||
.ifdef F3DEX2_REJ_GBI
|
||||
#ifdef F3DEX2_REJ_GBI
|
||||
.balign 16
|
||||
glabel rspF3DEX2RejStart
|
||||
.incbin "lib/PR/f3dex2/F3DEX2_Rej_data.bin"
|
||||
glabel rspF3DEX2RejEnd
|
||||
.endif
|
||||
#endif
|
||||
|
||||
/* Line3DEX2 Data */
|
||||
.ifdef L3DEX2_GBI
|
||||
#ifdef L3DEX2_GBI
|
||||
.balign 16
|
||||
glabel rspL3DEX2Start
|
||||
.incbin "lib/PR/f3dex2/L3DEX2_data.bin"
|
||||
glabel rspL3DEX2End
|
||||
.endif
|
||||
#endif
|
||||
|
||||
/* S2DEX2 Data */
|
||||
.ifdef S2DEX_GBI_2
|
||||
#ifdef S2DEX_GBI_2
|
||||
.balign 16
|
||||
glabel rspS2DEXStart
|
||||
.incbin "lib/PR/s2dex/S2DEX2_data.bin"
|
||||
glabel rspS2DEXEnd
|
||||
.endif
|
||||
#endif
|
||||
|
@ -10,7 +10,7 @@ void __osDevMgrMain(void *args) {
|
||||
OSMesg dummy;
|
||||
s32 ret;
|
||||
OSMgrArgs *sp34;
|
||||
#ifndef VERSION_SH
|
||||
#ifdef VERSION_EU
|
||||
UNUSED u32 sp30;
|
||||
#endif
|
||||
u32 sp2c;
|
||||
@ -19,7 +19,7 @@ void __osDevMgrMain(void *args) {
|
||||
#ifdef VERSION_SH
|
||||
u32 tmp;
|
||||
#endif
|
||||
#ifndef VERSION_SH
|
||||
#ifdef VERSION_EU
|
||||
sp30 = 0;
|
||||
#endif
|
||||
sp2c = 0;
|
||||
@ -108,7 +108,7 @@ void __osDevMgrMain(void *args) {
|
||||
}
|
||||
if (ret == 0) {
|
||||
osRecvMesg(sp34->eventQueue, &em, OS_MESG_BLOCK);
|
||||
#ifndef VERSION_SH
|
||||
#ifdef VERSION_EU
|
||||
sp30 =
|
||||
#endif
|
||||
osSendMesg(mb->hdr.retQueue, mb, OS_MESG_NOBLOCK);
|
||||
|
@ -2,7 +2,6 @@
|
||||
#include "PR/rcp.h"
|
||||
#include "controller.h"
|
||||
|
||||
#ifdef VERSION_SH
|
||||
extern s32 func_8030A5C0(OSMesgQueue *, s32);
|
||||
void __osPackRamReadData(int channel, u16 address);
|
||||
|
||||
@ -87,4 +86,3 @@ void __osPackRamReadData(int channel, u16 address) {
|
||||
ptr += sizeof(__OSContRamReadFormat);
|
||||
ptr[0] = CONT_CMD_END;
|
||||
}
|
||||
#endif
|
||||
|
@ -2,7 +2,6 @@
|
||||
#include "PR/rcp.h"
|
||||
#include "controller.h"
|
||||
|
||||
#ifdef VERSION_SH
|
||||
extern s32 func_8030A5C0(OSMesgQueue *, s32);
|
||||
void __osPackRamWriteData(int channel, u16 address, u8 *buffer);
|
||||
|
||||
@ -87,4 +86,3 @@ void __osPackRamWriteData(int channel, u16 address, u8 *buffer) {
|
||||
ptr += sizeof(__OSContRamReadFormat);
|
||||
ptr[0] = CONT_CMD_END;
|
||||
}
|
||||
#endif
|
||||
|
@ -1,7 +1,7 @@
|
||||
#ifndef _CONTROLLER_H
|
||||
#define _CONTROLLER_H
|
||||
#include "PR/os_internal.h"
|
||||
#include "os.h"
|
||||
#include "PR/os.h"
|
||||
#include "PR/rcp.h"
|
||||
|
||||
//should go somewhere else but
|
||||
|
@ -1,6 +1,5 @@
|
||||
#include "libultra_internal.h"
|
||||
|
||||
#ifdef VERSION_SH
|
||||
u8 __osContAddressCrc(u16 addr) {
|
||||
u8 temp;
|
||||
u8 temp2;
|
||||
@ -45,4 +44,3 @@ u8 __osContDataCrc(u8 *data) {
|
||||
}
|
||||
return temp;
|
||||
}
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
#ifdef VERSION_SH
|
||||
|
||||
#include "PR/os_internal.h"
|
||||
#include "piint.h"
|
||||
|
||||
@ -21,4 +22,5 @@ s32 osEPiStartDma(OSPiHandle *pihandle, OSIoMesg *mb, s32 direction) {
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -1,7 +1,7 @@
|
||||
#ifndef _HARDWARE_H_
|
||||
#define _HARDWARE_H_
|
||||
|
||||
#define HW_REG(reg, type) *(volatile type *)(uintptr_t)(reg | 0xa0000000)
|
||||
#define HW_REG(reg, type) *(volatile type *)(uintptr_t)((reg) | 0xa0000000)
|
||||
|
||||
#define AI_DRAM_ADDR_REG 0x04500000
|
||||
#define AI_LEN_REG 0x04500004
|
||||
|
@ -1,5 +1,5 @@
|
||||
#include "libultra_internal.h"
|
||||
|
||||
#if !defined(VERSION_SH) && !defined(VERSION_EU)
|
||||
#if defined(VERSION_JP) || defined(VERSION_US)
|
||||
u8 D_80365E40[0x100];
|
||||
#endif
|
||||
|
@ -4,9 +4,10 @@
|
||||
#include "piint.h"
|
||||
#include "osint.h"
|
||||
|
||||
u8 leoDiskStack[OS_PIM_STACKSIZE]; //technically should have a OS_LEO_STACKSIZE or something..
|
||||
u8 leoDiskStack[OS_PIM_STACKSIZE]; // technically should have a OS_LEO_STACKSIZE or something..
|
||||
|
||||
#ifdef VERSION_SH
|
||||
|
||||
// TODO: so many magic constants :'(
|
||||
static void __osLeoResume(void);
|
||||
static void __osLeoAbnormalResume(void);
|
||||
@ -179,4 +180,5 @@ static void __osLeoResume(void) {
|
||||
__osEnqueueThread(&D_80334898, __osPopThread(&mq->mtqueue));
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -1,6 +1,7 @@
|
||||
#include "libultra_internal.h"
|
||||
#include "osAi.h"
|
||||
#include "hardware.h"
|
||||
#include "macros.h"
|
||||
|
||||
extern s32 osViClock;
|
||||
|
||||
@ -29,9 +30,9 @@ s32 osAiSetFrequency(u32 freq) {
|
||||
|
||||
#ifndef VERSION_SH
|
||||
// put some extra jr $ra's down there please
|
||||
static void filler1(void) {
|
||||
UNUSED static void filler1(void) {
|
||||
}
|
||||
|
||||
static void filler2(void) {
|
||||
UNUSED static void filler2(void) {
|
||||
}
|
||||
#endif
|
||||
|
@ -2,9 +2,9 @@
|
||||
#include "PR/R4300.h"
|
||||
#include "PR/rcp.h"
|
||||
#include "PR/os_pi.h"
|
||||
#include "os.h"
|
||||
#include "PR/os.h"
|
||||
#include "libultra_internal.h"
|
||||
|
||||
#ifdef VERSION_SH
|
||||
OSPiHandle CartRomHandle;
|
||||
|
||||
OSPiHandle *osCartRomInit(void) {
|
||||
@ -36,4 +36,3 @@ OSPiHandle *osCartRomInit(void) {
|
||||
|
||||
return &CartRomHandle;
|
||||
}
|
||||
#endif
|
||||
|
@ -12,7 +12,7 @@ OSMgrArgs __osPiDevMgr = { 0 };
|
||||
OSPiHandle *__osPiTable = NULL;
|
||||
#endif
|
||||
#ifdef VERSION_SH
|
||||
OSPiHandle *__osCurrentHandle[2] = { &CartRomHandle, &LeoDiskHandle };
|
||||
OSPiHandle **__osCurrentHandle[2] = { &CartRomHandle, &LeoDiskHandle };
|
||||
#endif
|
||||
OSThread piMgrThread;
|
||||
u32 piMgrStack[0x400]; // stack bottom
|
||||
|
@ -7,7 +7,7 @@
|
||||
extern OSPiHandle *__osPiTable;
|
||||
extern OSPiHandle DriveRomHandle;
|
||||
|
||||
OSPiHandle *osDriveRomInit() { // Why is this compiled with -g???
|
||||
OSPiHandle *osDriveRomInit(void) { // Why is this compiled with -g???
|
||||
UNUSED s32 sp1c = 0;
|
||||
u32 saveMask;
|
||||
|
||||
@ -32,4 +32,3 @@ OSPiHandle *osDriveRomInit() { // Why is this compiled with -g???
|
||||
|
||||
return &DriveRomHandle;
|
||||
}
|
||||
|
||||
|
@ -96,4 +96,7 @@ s32 __osPackEepReadData(u8 address) {
|
||||
*(unkStruct2 *) sp14 = sp8;
|
||||
sp14 += 0xc;
|
||||
*sp14 = 254;
|
||||
#ifdef AVOID_UB
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
@ -108,6 +108,9 @@ s32 __osPackEepWriteData(u8 address, u8 *buffer) {
|
||||
*(unkStruct2 *) sp14 = sp8;
|
||||
sp14 += 0xc;
|
||||
*sp14 = 254;
|
||||
#ifdef AVOID_UB
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
s32 __osEepStatus(OSMesgQueue *a0, unkStruct *a1) {
|
||||
|
@ -9,7 +9,6 @@ extern OSPiHandle *__osPiTable;
|
||||
OSPiHandle LeoDiskHandle;
|
||||
OSPiHandle *__osDiskHandle;
|
||||
|
||||
// some kind of piHandle init function, maybe osDriveRomInit or osCartRomInit
|
||||
OSPiHandle *osLeoDiskInit(void) {
|
||||
s32 sp1c;
|
||||
LeoDiskHandle.type = 2;
|
||||
|
@ -1,8 +1,7 @@
|
||||
#include "PR/os_pi.h"
|
||||
#include "libultra_internal.h"
|
||||
#include "controller.h"
|
||||
//#include "siint.h"
|
||||
|
||||
#ifdef VERSION_SH
|
||||
OSPifRam __osPfsPifRam;
|
||||
|
||||
s32 osPfsIsPlug(OSMesgQueue *queue, u8 *pattern) {
|
||||
@ -94,4 +93,3 @@ void __osPfsGetInitData(u8 *pattern, OSContStatus *data) {
|
||||
}
|
||||
*pattern = bits;
|
||||
}
|
||||
#endif
|
||||
|
@ -31,7 +31,7 @@ void osSpTaskLoad(OSTask *task) {
|
||||
task->t.flags &= ~M_TASK_FLAG0;
|
||||
#ifdef VERSION_SH
|
||||
if (physicalTask->t.flags & M_TASK_FLAG2) {
|
||||
physicalTask->t.ucode = HW_REG((uintptr_t)task->t.yield_data_ptr + 0xBFC, u64*);
|
||||
physicalTask->t.ucode = (u64*)HW_REG((uintptr_t)task->t.yield_data_ptr + 0xBFC, u64*);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
@ -3,7 +3,7 @@
|
||||
#include "PR/os_internal.h"
|
||||
#include "PR/rcp.h"
|
||||
#include "PR/os_pi.h"
|
||||
#include "os.h"
|
||||
#include "PR/os.h"
|
||||
|
||||
//https://github.com/LuigiBlood/64dd/wiki/Memory-Map
|
||||
|
||||
|
@ -1,7 +1,6 @@
|
||||
#include "libultra_internal.h"
|
||||
#include "controller.h"
|
||||
|
||||
#ifdef VERSION_SH
|
||||
s32 func_8030A5C0(OSMesgQueue *arg0, s32 arg1) { // TODO: This is almost certainly __osPfsGetStatus.
|
||||
s32 sp34 = 0;
|
||||
OSMesg sp30;
|
||||
@ -25,4 +24,3 @@ s32 func_8030A5C0(OSMesgQueue *arg0, s32 arg1) { // TODO: This is almost certain
|
||||
return sp34;
|
||||
|
||||
}
|
||||
#endif
|
||||
|
@ -10,4 +10,4 @@ fi
|
||||
|
||||
#echo "Replace $1 with $2?"
|
||||
#read
|
||||
grep -rl "$1" text/**/*.{c,h} assets/**/*.c enhancements/*.patch lib/**/*.{c,h,s} asm/**/*.s bin/**/*.c data/*.c levels/**/*.{c,h} actors/**/*.c src/**/*.{c,h} include/**/*.{h,in} undefined_syms.txt | xargs sed -i "s/\b$1\b/$2/g"
|
||||
grep -rl "$1" text/**/*.{c,h} assets/**/*.c enhancements/*.patch lib/**/*.{c,h,s} asm/**/*.s bin/**/*.c data/*.c levels/**/*.{c,h} actors/**/*.{c,h} src/**/*.{c,h} include/**/*.{h,in} undefined_syms.txt | xargs sed -i "s/\b$1\b/$2/g"
|
||||
|
40
rsp/audio.s
40
rsp/audio.s
@ -53,15 +53,15 @@ dispatchTable:
|
||||
jumpTableEntry cmd_SPNOOP
|
||||
jumpTableEntry cmd_SETLOOP
|
||||
|
||||
jumpTableEntry cmd_17e4
|
||||
jumpTableEntry cmd_INTERL
|
||||
jumpTableEntry cmd_DMEMMOVE2
|
||||
jumpTableEntry cmd_DOWNSAMPLE_HALF
|
||||
jumpTableEntry cmd_ENVSETUP1
|
||||
jumpTableEntry cmd_ENVMIXER
|
||||
|
||||
jumpTableEntry cmd_LOADBUFF
|
||||
jumpTableEntry cmd_SAVEBUFF
|
||||
jumpTableEntry cmd_ENVSETUP2
|
||||
jumpTableEntry cmd_1b78
|
||||
jumpTableEntry cmd_S8DEC
|
||||
|
||||
jumpTableEntry cmd_HILOGAIN
|
||||
jumpTableEntry cmd_1c7c
|
||||
@ -938,12 +938,12 @@ cmd_RESAMPLE:
|
||||
.endif
|
||||
addi $8, $8, -8
|
||||
.ifdef VERSION_SH
|
||||
sdv $v16[0], 0x00($8)
|
||||
sdv $v16[0], 0x00($8)
|
||||
.endif
|
||||
@@audio_c410c:
|
||||
lsv $v23[14], 0x08($23) // saved pitch_accumulator
|
||||
.ifdef VERSION_SH
|
||||
ldv $v16[0], 0x00($8)
|
||||
ldv $v16[0], 0x00($8)
|
||||
.else
|
||||
ldv $v16[0], 0x00($23) // saved next 4 unprocessed samples
|
||||
sdv $v16[0], 0x00($8) // store them before the input samples
|
||||
@ -1100,8 +1100,8 @@ cmd_RESAMPLE:
|
||||
mtc0 $zero, SP_SEMAPHORE
|
||||
|
||||
.ifdef VERSION_SH
|
||||
cmd_17e4:
|
||||
srl $t7, $k0, 16
|
||||
cmd_DMEMMOVE2:
|
||||
srl $t7, $k0, 16
|
||||
andi $t7, $t7, 0xff
|
||||
andi $t5, $k0, 0xffff
|
||||
srl $t6, $t9, 0x10
|
||||
@ -1150,7 +1150,7 @@ cmd_DUPLICATE:
|
||||
j cmd_SPNOOP
|
||||
nop
|
||||
|
||||
cmd_INTERL:
|
||||
cmd_DOWNSAMPLE_HALF:
|
||||
andi $t4, $k0, 0xffff
|
||||
andi $t6, $t9, 0xffff
|
||||
srl $t5, $t9, 0x10
|
||||
@ -1606,24 +1606,24 @@ cmd_MIXER:
|
||||
j cmd_SPNOOP
|
||||
nop
|
||||
|
||||
cmd_1b78:
|
||||
lhu $13, 0x0(r24)
|
||||
cmd_S8DEC:
|
||||
lhu $13, (audio_in_buf)(r24)
|
||||
vxor $v2, $v2, $v2
|
||||
lhu $14, 0x2(r24)
|
||||
lhu $14, (audio_out_buf)(r24)
|
||||
vxor $v3, $v3, $v3
|
||||
lhu $12, 0x4(r24)
|
||||
lhu $12, (audio_count)(r24)
|
||||
sll $17, $25, 8
|
||||
srl $17, $17, 8
|
||||
sqv $v2[0], 0x0(r14)
|
||||
srl $17, $17, 8 // state addr
|
||||
sqv $v2[0], 0x0(r14) // store 0 to first 16 samples if A_INIT
|
||||
sqv $v3[0], 0x10(r14)
|
||||
srl $1, $26, 16
|
||||
andi $1, $1, 0x1
|
||||
bgtz $1, @audio_4001bd8
|
||||
bgtz $1, @audio_4001bd8 // A_INIT
|
||||
srl $1, $26, 16
|
||||
andi $1, $1, 0x2
|
||||
beq $0, $1, @audio_4001bbc
|
||||
beq $0, $1, @audio_4001bbc // A_LOOP
|
||||
addi $2, $17, 0x0
|
||||
lw $2, 0x10(r24)
|
||||
lw $2, (audio_loop_value)(r24)
|
||||
@audio_4001bbc:
|
||||
addi $1, $14, 0x0
|
||||
jal dma_read_start
|
||||
@ -1635,10 +1635,10 @@ cmd_1b78:
|
||||
mtc0 $0, sp_semaphore
|
||||
@audio_4001bd8:
|
||||
addi $14, $14, 0x20
|
||||
beq $12, $0, @audio_4001c04
|
||||
beq $12, $0, @audio_4001c04 // this of very few ops allows count=0
|
||||
nop
|
||||
@audio_4001be4:
|
||||
lpv $v2[0], 0x0(r13)
|
||||
lpv $v2[0], 0x0(r13) // load each byte to upper 8 bits per elem
|
||||
lpv $v3[0], 0x8(r13)
|
||||
addi $13, $13, 0x10
|
||||
addi $12, $12, 0xffe0
|
||||
@ -1647,7 +1647,7 @@ cmd_1b78:
|
||||
bgtz $12, @audio_4001be4
|
||||
addi $14, $14, 0x20
|
||||
@audio_4001c04:
|
||||
addi $1, $14, 0xffe0
|
||||
addi $1, $14, 0xffe0 // write last 16 samples to the state
|
||||
addi $2, $17, 0x0
|
||||
jal dma_write_start
|
||||
addi $3, $0, 0x1f
|
||||
|
281
sm64.ld
281
sm64.ld
@ -3,6 +3,7 @@ OUTPUT_ARCH (mips)
|
||||
/* include/segments.h defines SEG_POOL_START, SEG_POOL_END, SEG_BUFFERS,
|
||||
* SEG_GODDARD, SEG_MAIN, SEG_ENGINE, SEG_FRAMEBUFFERS */
|
||||
#include "segments.h"
|
||||
#include "config.h"
|
||||
|
||||
#define BEGIN_SEG(name, addr) \
|
||||
_##name##SegmentStart = ADDR(.name); \
|
||||
@ -94,7 +95,7 @@ SECTIONS
|
||||
BUILD_DIR/src/game/main.o(.text);
|
||||
BUILD_DIR/src/game/game_init.o(.text);
|
||||
BUILD_DIR/src/game/sound_init.o(.text);
|
||||
#ifdef VERSION_SH
|
||||
#if ENABLE_RUMBLE
|
||||
BUILD_DIR/src/game/rumble_init.o(.text);
|
||||
#endif
|
||||
BUILD_DIR/src/game/level_update.o(.text);
|
||||
@ -144,11 +145,16 @@ SECTIONS
|
||||
BUILD_DIR/src/game/hud.o(.text);
|
||||
BUILD_DIR/src/game/obj_behaviors.o(.text);
|
||||
BUILD_DIR/src/game/obj_behaviors_2.o(.text);
|
||||
#ifdef VERSION_SH
|
||||
BUILD_DIR/src/audio/synthesis_sh.o(.text);
|
||||
#else
|
||||
BUILD_DIR/src/audio/synthesis.o(.text);
|
||||
#endif
|
||||
BUILD_DIR/src/audio/heap.o(.text);
|
||||
BUILD_DIR/src/audio/load.o(.text);
|
||||
#ifdef VERSION_SH
|
||||
BUILD_DIR/src/audio/unk_shindou_audio_file.o(.text);
|
||||
BUILD_DIR/src/audio/load_sh.o(.text);
|
||||
BUILD_DIR/src/audio/port_sh.o(.text);
|
||||
#endif
|
||||
BUILD_DIR/src/audio/playback.o(.text);
|
||||
BUILD_DIR/src/audio/effects.o(.text);
|
||||
@ -194,114 +200,115 @@ SECTIONS
|
||||
BUILD_DIR/libultra.a:osContStartReadData.o(.text);
|
||||
BUILD_DIR/libultra.a:osContInit.o(.text);
|
||||
BUILD_DIR/libultra.a:osEepromProbe.o(.text);
|
||||
#ifdef VERSION_SH
|
||||
#if ENABLE_RUMBLE
|
||||
BUILD_DIR/libultra.a:motor.o(.text);
|
||||
#endif
|
||||
BUILD_DIR/libultra.a:osInvalDCache.o(.text);
|
||||
BUILD_DIR/libultra.a:osPiStartDma.o(.text);
|
||||
BUILD_DIR/libultra.a:bzero.o(.text)
|
||||
BUILD_DIR/libultra.a:osInvalICache.o(.text)
|
||||
BUILD_DIR/libultra.a:osEepromLongRead.o(.text)
|
||||
BUILD_DIR/libultra.a:osEepromLongWrite.o(.text)
|
||||
BUILD_DIR/libultra.a:bcopy.o(.text)
|
||||
BUILD_DIR/libultra.a:guOrthoF.o(.text)
|
||||
BUILD_DIR/libultra.a:guPerspectiveF.o(.text)
|
||||
BUILD_DIR/libultra.a:llconv.o(.text)
|
||||
BUILD_DIR/libultra.a:cosf.o(.text)
|
||||
BUILD_DIR/libultra.a:sinf.o(.text)
|
||||
BUILD_DIR/libultra.a:guTranslateF.o(.text)
|
||||
BUILD_DIR/libultra.a:guRotateF.o(.text)
|
||||
BUILD_DIR/libultra.a:guScaleF.o(.text)
|
||||
BUILD_DIR/libultra.a:osAiSetFrequency.o(.text)
|
||||
BUILD_DIR/libultra.a:bzero.o(.text);
|
||||
BUILD_DIR/libultra.a:osInvalICache.o(.text);
|
||||
BUILD_DIR/libultra.a:osEepromLongRead.o(.text);
|
||||
BUILD_DIR/libultra.a:osEepromLongWrite.o(.text);
|
||||
BUILD_DIR/libultra.a:bcopy.o(.text);
|
||||
BUILD_DIR/libultra.a:guOrthoF.o(.text);
|
||||
BUILD_DIR/libultra.a:guPerspectiveF.o(.text);
|
||||
BUILD_DIR/libultra.a:llconv.o(.text);
|
||||
BUILD_DIR/libultra.a:cosf.o(.text);
|
||||
BUILD_DIR/libultra.a:sinf.o(.text);
|
||||
BUILD_DIR/libultra.a:guTranslateF.o(.text);
|
||||
BUILD_DIR/libultra.a:guRotateF.o(.text);
|
||||
BUILD_DIR/libultra.a:guScaleF.o(.text);
|
||||
BUILD_DIR/libultra.a:osAiSetFrequency.o(.text);
|
||||
#ifdef VERSION_SH
|
||||
BUILD_DIR/libultra.a:osCartRomInit.o(.text)
|
||||
BUILD_DIR/libultra.a:epidma.o(.text)
|
||||
#else
|
||||
BUILD_DIR/libultra.a:alBnkfNew.o(.text)
|
||||
BUILD_DIR/libultra.a:osCartRomInit.o(.text);
|
||||
BUILD_DIR/libultra.a:epidma.o(.text);
|
||||
#endif
|
||||
BUILD_DIR/libultra.a:osAiGetLength.o(.text)
|
||||
BUILD_DIR/libultra.a:osAiSetNextBuffer.o(.text)
|
||||
#ifdef VERSION_SH
|
||||
BUILD_DIR/libultra.a:osGetCount.o(.text)
|
||||
BUILD_DIR/libultra.a:__osDisableInt.o(.text)
|
||||
BUILD_DIR/libultra.a:__osRestoreInt.o(.text)
|
||||
#endif
|
||||
BUILD_DIR/libultra.a:_Litob.o(.text)
|
||||
BUILD_DIR/libultra.a:_Ldtob.o(.text)
|
||||
BUILD_DIR/libultra.a:__osSetSR.o(.text)
|
||||
BUILD_DIR/libultra.a:__osGetSR.o(.text)
|
||||
BUILD_DIR/libultra.a:__osSetFpcCsr.o(.text)
|
||||
BUILD_DIR/libultra.a:__osSiRawReadIo.o(.text)
|
||||
BUILD_DIR/libultra.a:__osSiRawWriteIo.o(.text)
|
||||
BUILD_DIR/libultra.a:__osExceptionPreamble.o(.text)
|
||||
BUILD_DIR/libultra.a:osWritebackDCache.o(.text)
|
||||
BUILD_DIR/libultra.a:osMapTLBRdb.o(.text)
|
||||
BUILD_DIR/libultra.a:osPiRawReadIo.o(.text)
|
||||
BUILD_DIR/libultra.a:EU_D_802f4330.o(.text)
|
||||
BUILD_DIR/libultra.a:D_802F4380.o(.text)
|
||||
BUILD_DIR/libultra.a:func_802F4A20.o(.text)
|
||||
BUILD_DIR/libultra.a:osTimer.o(.text)
|
||||
#ifdef VERSION_EU
|
||||
BUILD_DIR/libultra.a:__osDisableInt.o(.text)
|
||||
BUILD_DIR/libultra.a:__osRestoreInt.o(.text)
|
||||
BUILD_DIR/libultra.a:osGetCount.o(.text)
|
||||
BUILD_DIR/libultra.a:alBnkfNew.o(.text);
|
||||
#endif
|
||||
BUILD_DIR/libultra.a:__osViInit.o(.text)
|
||||
BUILD_DIR/libultra.a:__osDequeueThread.o(.text)
|
||||
BUILD_DIR/libultra.a:osVirtualToPhysical.o(.text)
|
||||
BUILD_DIR/libultra.a:__osSpSetStatus.o(.text)
|
||||
BUILD_DIR/libultra.a:__osSpSetPc.o(.text)
|
||||
BUILD_DIR/libultra.a:__osSpRawStartDma.o(.text)
|
||||
BUILD_DIR/libultra.a:__osSpDeviceBusy.o(.text)
|
||||
BUILD_DIR/libultra.a:__osSpGetStatus.o(.text)
|
||||
BUILD_DIR/libultra.a:osGetThreadPri.o(.text)
|
||||
BUILD_DIR/libultra.a:osAiGetLength.o(.text);
|
||||
BUILD_DIR/libultra.a:osAiSetNextBuffer.o(.text);
|
||||
#ifdef VERSION_SH
|
||||
BUILD_DIR/libultra.a:osGetCount.o(.text);
|
||||
BUILD_DIR/libultra.a:__osDisableInt.o(.text);
|
||||
BUILD_DIR/libultra.a:__osRestoreInt.o(.text);
|
||||
#endif
|
||||
BUILD_DIR/libultra.a:_Litob.o(.text);
|
||||
BUILD_DIR/libultra.a:_Ldtob.o(.text);
|
||||
BUILD_DIR/libultra.a:__osSetSR.o(.text);
|
||||
BUILD_DIR/libultra.a:__osGetSR.o(.text);
|
||||
BUILD_DIR/libultra.a:__osSetFpcCsr.o(.text);
|
||||
BUILD_DIR/libultra.a:__osSiRawReadIo.o(.text);
|
||||
BUILD_DIR/libultra.a:__osSiRawWriteIo.o(.text);
|
||||
BUILD_DIR/libultra.a:__osExceptionPreamble.o(.text);
|
||||
BUILD_DIR/libultra.a:osWritebackDCache.o(.text);
|
||||
BUILD_DIR/libultra.a:osMapTLBRdb.o(.text);
|
||||
BUILD_DIR/libultra.a:osPiRawReadIo.o(.text);
|
||||
BUILD_DIR/libultra.a:EU_D_802f4330.o(.text);
|
||||
BUILD_DIR/libultra.a:D_802F4380.o(.text);
|
||||
BUILD_DIR/libultra.a:func_802F4A20.o(.text);
|
||||
BUILD_DIR/libultra.a:osTimer.o(.text);
|
||||
#ifdef VERSION_EU
|
||||
BUILD_DIR/libultra.a:__osDisableInt.o(.text);
|
||||
BUILD_DIR/libultra.a:__osRestoreInt.o(.text);
|
||||
BUILD_DIR/libultra.a:osGetCount.o(.text);
|
||||
#endif
|
||||
BUILD_DIR/libultra.a:__osViInit.o(.text);
|
||||
BUILD_DIR/libultra.a:__osDequeueThread.o(.text);
|
||||
BUILD_DIR/libultra.a:osVirtualToPhysical.o(.text);
|
||||
BUILD_DIR/libultra.a:__osSpSetStatus.o(.text);
|
||||
BUILD_DIR/libultra.a:__osSpSetPc.o(.text);
|
||||
BUILD_DIR/libultra.a:__osSpRawStartDma.o(.text);
|
||||
BUILD_DIR/libultra.a:__osSpDeviceBusy.o(.text);
|
||||
BUILD_DIR/libultra.a:__osSpGetStatus.o(.text);
|
||||
BUILD_DIR/libultra.a:osGetThreadPri.o(.text);
|
||||
BUILD_DIR/libultra.a:__osViGetCurrentContext.o(.text);
|
||||
BUILD_DIR/libultra.a:__osViSwapContext.o(.text)
|
||||
BUILD_DIR/libultra.a:__osViSwapContext.o(.text);
|
||||
#ifdef VERSION_SH
|
||||
BUILD_DIR/libultra.a:osLeoDiskInit.o(.text)
|
||||
BUILD_DIR/libultra.a:osLeoDiskInit.o(.text);
|
||||
#endif
|
||||
BUILD_DIR/libultra.a:__osPiCreateAccessQueue.o(.text)
|
||||
BUILD_DIR/libultra.a:osPiRawStartDma.o(.text)
|
||||
BUILD_DIR/libultra.a:osEPiRawStartDma.o(.text)
|
||||
BUILD_DIR/libultra.a:__osDevMgrMain.o(.text)
|
||||
BUILD_DIR/libultra.a:__osSiCreateAccessQueue.o(.text)
|
||||
BUILD_DIR/libultra.a:__osSiRawStartDma.o(.text)
|
||||
BUILD_DIR/libultra.a:osSetTimer.o(.text)
|
||||
BUILD_DIR/libultra.a:osEepromWrite.o(.text)
|
||||
#ifdef VERSION_SH
|
||||
BUILD_DIR/libultra.a:osPfsIsPlug.o(.text)
|
||||
BUILD_DIR/libultra.a:crc.o(.text)
|
||||
BUILD_DIR/libultra.a:contramwrite.o(.text)
|
||||
BUILD_DIR/libultra.a:contramread.o(.text)
|
||||
BUILD_DIR/libultra.a:__osPiCreateAccessQueue.o(.text);
|
||||
BUILD_DIR/libultra.a:osPiRawStartDma.o(.text);
|
||||
BUILD_DIR/libultra.a:osEPiRawStartDma.o(.text);
|
||||
BUILD_DIR/libultra.a:__osDevMgrMain.o(.text);
|
||||
BUILD_DIR/libultra.a:__osSiCreateAccessQueue.o(.text);
|
||||
BUILD_DIR/libultra.a:__osSiRawStartDma.o(.text);
|
||||
BUILD_DIR/libultra.a:osSetTimer.o(.text);
|
||||
BUILD_DIR/libultra.a:osEepromWrite.o(.text);
|
||||
#if ENABLE_RUMBLE
|
||||
BUILD_DIR/libultra.a:osPfsIsPlug.o(.text);
|
||||
BUILD_DIR/libultra.a:crc.o(.text);
|
||||
BUILD_DIR/libultra.a:contramwrite.o(.text);
|
||||
BUILD_DIR/libultra.a:contramread.o(.text);
|
||||
#endif
|
||||
BUILD_DIR/libultra.a:osJamMesg.o(.text)
|
||||
BUILD_DIR/libultra.a:osPiGetCmdQueue.o(.text)
|
||||
BUILD_DIR/libultra.a:osEepromRead.o(.text)
|
||||
BUILD_DIR/libultra.a:guMtxF2L.o(.text)
|
||||
BUILD_DIR/libultra.a:guNormalize.o(.text)
|
||||
BUILD_DIR/libultra.a:osJamMesg.o(.text);
|
||||
BUILD_DIR/libultra.a:osPiGetCmdQueue.o(.text);
|
||||
BUILD_DIR/libultra.a:osEepromRead.o(.text);
|
||||
BUILD_DIR/libultra.a:guMtxF2L.o(.text);
|
||||
BUILD_DIR/libultra.a:guNormalize.o(.text);
|
||||
BUILD_DIR/libultra.a:__osAiDeviceBusy.o(.text);
|
||||
BUILD_DIR/libultra.a:ldiv.o(.text)
|
||||
BUILD_DIR/libultra.a:ldiv.o(.text);
|
||||
BUILD_DIR/libultra.a:__osSiDeviceBusy.o(.text);
|
||||
#ifdef VERSION_SH
|
||||
BUILD_DIR/libultra.a:leointerrupt.o(.text)
|
||||
BUILD_DIR/libultra.a:leointerrupt.o(.text);
|
||||
#endif
|
||||
BUILD_DIR/libultra.a:osSetIntMask.o(.text)
|
||||
BUILD_DIR/libultra.a:osDestroyThread.o(.text)
|
||||
#ifndef VERSION_SH
|
||||
BUILD_DIR/libultra.a:osLeoDiskInit.o(.text)
|
||||
BUILD_DIR/libultra.a:osSetIntMask.o(.text);
|
||||
BUILD_DIR/libultra.a:osDestroyThread.o(.text);
|
||||
#ifdef VERSION_EU
|
||||
BUILD_DIR/libultra.a:osLeoDiskInit.o(.text);
|
||||
#endif
|
||||
BUILD_DIR/libultra.a:__osSetCompare.o(.text)
|
||||
BUILD_DIR/libultra.a:__osDequeueThread.o(.text)
|
||||
BUILD_DIR/libultra.a:__osProbeTLB.o(.text)
|
||||
BUILD_DIR/libultra.a:__osResetGlobalIntMask.o(.text)
|
||||
BUILD_DIR/libultra.a:__osEPiRawWriteIo.o(.text)
|
||||
BUILD_DIR/libultra.a:__osSetCompare.o(.text);
|
||||
BUILD_DIR/libultra.a:__osDequeueThread.o(.text);
|
||||
BUILD_DIR/libultra.a:__osProbeTLB.o(.text);
|
||||
BUILD_DIR/libultra.a:__osResetGlobalIntMask.o(.text);
|
||||
BUILD_DIR/libultra.a:__osEPiRawWriteIo.o(.text);
|
||||
#ifdef VERSION_SH
|
||||
BUILD_DIR/libultra.a:__osEPiRawReadIo.o(.text)
|
||||
BUILD_DIR/libultra.a:__osSetGlobalIntMask.o(.text)
|
||||
BUILD_DIR/libultra.a:__osEPiRawReadIo.o(.text);
|
||||
BUILD_DIR/libultra.a:__osSetGlobalIntMask.o(.text);
|
||||
#endif
|
||||
BUILD_DIR/libultra.a:func_802F71F0.o(.text)
|
||||
#ifdef VERSION_SH
|
||||
BUILD_DIR/libultra.a:unk_shindou_file_3.o(.text)
|
||||
BUILD_DIR/libultra.a:func_802F71F0.o(.text);
|
||||
#if ENABLE_RUMBLE
|
||||
BUILD_DIR/libultra.a:unk_shindou_file_3.o(.text);
|
||||
#endif
|
||||
BUILD_DIR/lib/rsp.o(.text);
|
||||
#else
|
||||
@ -335,6 +342,9 @@ SECTIONS
|
||||
BUILD_DIR/libultra.a:osContStartReadData.o(.text);
|
||||
BUILD_DIR/libultra.a:osContInit.o(.text);
|
||||
BUILD_DIR/libultra.a:osEepromProbe.o(.text);
|
||||
#if ENABLE_RUMBLE
|
||||
BUILD_DIR/libultra.a:motor.o(.text);
|
||||
#endif
|
||||
BUILD_DIR/libultra.a:llmuldiv.o(.text);
|
||||
BUILD_DIR/libultra.a:llmuldiv_gcc.o(.text);
|
||||
BUILD_DIR/libultra.a:osInvalDCache.o(.text);
|
||||
@ -393,6 +403,12 @@ SECTIONS
|
||||
BUILD_DIR/libultra.a:__osSiRawStartDma.o(.text);
|
||||
BUILD_DIR/libultra.a:osSetTimer.o(.text);
|
||||
BUILD_DIR/libultra.a:osEepromWrite.o(.text);
|
||||
#if ENABLE_RUMBLE
|
||||
BUILD_DIR/libultra.a:osPfsIsPlug.o(.text);
|
||||
BUILD_DIR/libultra.a:crc.o(.text);
|
||||
BUILD_DIR/libultra.a:contramwrite.o(.text);
|
||||
BUILD_DIR/libultra.a:contramread.o(.text);
|
||||
#endif
|
||||
BUILD_DIR/libultra.a:osJamMesg.o(.text);
|
||||
BUILD_DIR/libultra.a:osPiGetCmdQueue.o(.text);
|
||||
BUILD_DIR/libultra.a:osEepromRead.o(.text);
|
||||
@ -413,6 +429,9 @@ SECTIONS
|
||||
BUILD_DIR/libultra.a:__osGetCause.o(.text);
|
||||
BUILD_DIR/libultra.a:__osAtomicDec.o(.text);
|
||||
BUILD_DIR/libultra.a:guLookAtRef.o(.text); /* Fast3DEX2 only */
|
||||
#if ENABLE_RUMBLE
|
||||
BUILD_DIR/libultra.a:unk_shindou_file_3.o(.text);
|
||||
#endif
|
||||
BUILD_DIR/lib/rsp.o(.text);
|
||||
#endif
|
||||
|
||||
@ -421,7 +440,7 @@ SECTIONS
|
||||
BUILD_DIR/src/game/main.o(.data*);
|
||||
BUILD_DIR/src/game/game_init.o(.data*);
|
||||
BUILD_DIR/src/game/sound_init.o(.data*);
|
||||
#ifdef VERSION_SH
|
||||
#if ENABLE_RUMBLE
|
||||
BUILD_DIR/src/game/rumble_init.o(.data*);
|
||||
#endif
|
||||
BUILD_DIR/src/game/level_update.o(.data*);
|
||||
@ -465,18 +484,20 @@ SECTIONS
|
||||
/* wildcard doesn't match on EU due to files being moved to engine/ */
|
||||
BUILD_DIR/src/game*.o(.data*);
|
||||
#endif
|
||||
#ifdef VERSION_SH
|
||||
BUILD_DIR/src/audio/synthesis_sh.o(.data*);
|
||||
#else
|
||||
BUILD_DIR/src/audio/synthesis.o(.data*);
|
||||
BUILD_DIR/src/audio/heap.o(.data*);
|
||||
#ifndef VERSION_SH
|
||||
BUILD_DIR/src/audio/load.o(.data*);
|
||||
#endif
|
||||
BUILD_DIR/src/audio/heap.o(.data*);
|
||||
BUILD_DIR/src/audio/load.o(.data*);
|
||||
BUILD_DIR/src/audio/playback.o(.data*);
|
||||
BUILD_DIR/src/audio/effects.o(.data*);
|
||||
BUILD_DIR/src/audio/seqplayer.o(.data*);
|
||||
#ifdef VERSION_SH
|
||||
BUILD_DIR/src/audio/data.o(.data*);
|
||||
BUILD_DIR/src/audio/shindou_debug_prints.o(.data*);
|
||||
BUILD_DIR/src/audio/unk_shindou_audio_file.o(.data*);
|
||||
BUILD_DIR/src/audio/port_sh.o(.data*);
|
||||
BUILD_DIR/src/audio/external.o(.data*);
|
||||
BUILD_DIR/src/audio/audio_session_presets_sh.o(.data*);
|
||||
#else
|
||||
@ -492,7 +513,7 @@ SECTIONS
|
||||
BUILD_DIR/libultra.a:osViTable.o(.data*);
|
||||
BUILD_DIR/libultra.a:osCreatePiManager.o(.data*);
|
||||
BUILD_DIR/libultra.a:osContInit.o(.data*);
|
||||
#ifdef VERSION_SH
|
||||
#if ENABLE_RUMBLE
|
||||
BUILD_DIR/libultra.a:motor.o(.data*);
|
||||
#endif
|
||||
BUILD_DIR/libultra.a:osAiSetNextBuffer.o(.data*);
|
||||
@ -510,6 +531,9 @@ SECTIONS
|
||||
BUILD_DIR/libultra.a:osCreatePiManager.o(.data*);
|
||||
BUILD_DIR/libultra.a:osInitialize.o(.data*);
|
||||
BUILD_DIR/libultra.a:osContInit.o(.data*);
|
||||
#if ENABLE_RUMBLE
|
||||
BUILD_DIR/libultra.a:motor.o(.data*);
|
||||
#endif
|
||||
BUILD_DIR/libultra.a:osAiSetNextBuffer.o(.data*);
|
||||
BUILD_DIR/libultra.a:osTimer.o(.data*);
|
||||
BUILD_DIR/libultra.a:_Printf.o(.data*);
|
||||
@ -556,8 +580,8 @@ SECTIONS
|
||||
BUILD_DIR/src/game/object_collision.o(.rodata*);
|
||||
BUILD_DIR/src/game/spawn_object.o(.rodata*);
|
||||
#endif
|
||||
BUILD_DIR/libultra.a:__osDisableInt.o(.text)
|
||||
BUILD_DIR/libultra.a:__osRestoreInt.o(.text)
|
||||
BUILD_DIR/libultra.a:__osDisableInt.o(.text);
|
||||
BUILD_DIR/libultra.a:__osRestoreInt.o(.text);
|
||||
BUILD_DIR/src/game/spawn_sound.o(.rodata*);
|
||||
BUILD_DIR/src/game/debug.o(.rodata*);
|
||||
BUILD_DIR/src/game/screen_transition.o(.rodata*);
|
||||
@ -577,11 +601,15 @@ SECTIONS
|
||||
#if defined(VERSION_JP) || defined(VERSION_US)
|
||||
BUILD_DIR/src/game*.o(.rodata*);
|
||||
#endif
|
||||
#ifdef VERSION_SH
|
||||
BUILD_DIR/src/audio/synthesis_sh.o(.rodata*);
|
||||
BUILD_DIR/src/audio/heap.o(.rodata*);
|
||||
BUILD_DIR/src/audio/load_sh.o(.rodata*);
|
||||
BUILD_DIR/src/audio/port_sh.o(.rodata*);
|
||||
#else
|
||||
BUILD_DIR/src/audio/synthesis.o(.rodata*);
|
||||
BUILD_DIR/src/audio/heap.o(.rodata*);
|
||||
BUILD_DIR/src/audio/load.o(.rodata*);
|
||||
#ifdef VERSION_SH
|
||||
BUILD_DIR/src/audio/unk_shindou_audio_file.o(.rodata*);
|
||||
#endif
|
||||
BUILD_DIR/src/audio/playback.o(.rodata*);
|
||||
BUILD_DIR/src/audio/effects.o(.rodata*);
|
||||
@ -619,8 +647,9 @@ SECTIONS
|
||||
#ifndef VERSION_EU
|
||||
BUILD_DIR/libultra.a:*.o(.rodata*);
|
||||
#endif
|
||||
/* audio blobs, should really be moved into a separate file */
|
||||
#ifdef VERSION_SH
|
||||
BUILD_DIR/src/audio/load.o(.data*);
|
||||
BUILD_DIR/src/audio/load_sh.o(.data*);
|
||||
#endif
|
||||
BUILD_DIR/lib/rsp.o(.rodata*);
|
||||
}
|
||||
@ -631,7 +660,7 @@ SECTIONS
|
||||
BUILD_DIR/src/game/main.o(.bss*);
|
||||
BUILD_DIR/src/game/game_init.o(.bss*);
|
||||
BUILD_DIR/src/game/sound_init.o(.bss*);
|
||||
#ifdef VERSION_SH
|
||||
#if ENABLE_RUMBLE
|
||||
BUILD_DIR/src/game/rumble_init.o(.bss*);
|
||||
#endif
|
||||
BUILD_DIR/src/game/level_update.o(.bss*);
|
||||
@ -662,7 +691,7 @@ SECTIONS
|
||||
BUILD_DIR/src/game/ingame_menu.o(.bss*);
|
||||
BUILD_DIR/src/game/envfx_snow.o(.bss*);
|
||||
BUILD_DIR/src/game/envfx_bubbles.o(.bss*);
|
||||
BUILD_DIR/src/game/macro_special_objects.o(.bss*)
|
||||
BUILD_DIR/src/game/macro_special_objects.o(.bss*);
|
||||
BUILD_DIR/src/game/hud.o(.bss*);
|
||||
BUILD_DIR/src/game/obj_behaviors.o(.bss*);
|
||||
BUILD_DIR/src/game/obj_behaviors_2.o(.bss*);
|
||||
@ -675,9 +704,9 @@ SECTIONS
|
||||
#endif
|
||||
#ifdef VERSION_SH
|
||||
BUILD_DIR/src/audio/globals_start.o(.bss*);
|
||||
BUILD_DIR/src/audio/synthesis.o(.bss*);
|
||||
BUILD_DIR/src/audio/synthesis_sh.o(.bss*);
|
||||
BUILD_DIR/src/audio/heap.o(.bss*);
|
||||
BUILD_DIR/src/audio/load.o(.bss*);
|
||||
BUILD_DIR/src/audio/load_sh.o(.bss*);
|
||||
BUILD_DIR/src/audio/data.o(.bss*);
|
||||
#endif
|
||||
|
||||
@ -689,23 +718,23 @@ SECTIONS
|
||||
BUILD_DIR/libultra.a:osCreatePiManager.o(.bss*);
|
||||
BUILD_DIR/libultra.a:osContStartReadData.o(.bss*);
|
||||
BUILD_DIR/libultra.a:osContInit.o(.bss*);
|
||||
#ifdef VERSION_SH
|
||||
#if ENABLE_RUMBLE
|
||||
BUILD_DIR/libultra.a:motor.o(.bss*);
|
||||
#endif
|
||||
BUILD_DIR/libultra.a:guRotateF.o(.bss*);
|
||||
#ifdef VERSION_SH
|
||||
BUILD_DIR/libultra.a:osCartRomInit.o(.bss*);
|
||||
#endif
|
||||
#ifndef VERSION_SH
|
||||
#ifdef VERSION_EU
|
||||
BUILD_DIR/libultra.a:leointerrupt.o(.bss*);
|
||||
#endif
|
||||
BUILD_DIR/libultra.a:osTimer.o(.bss*);
|
||||
#ifdef VERSION_SH
|
||||
BUILD_DIR/libultra.a:osLeoDiskInit.o(.bss*)
|
||||
BUILD_DIR/libultra.a:osLeoDiskInit.o(.bss*);
|
||||
#endif
|
||||
BUILD_DIR/libultra.a:__osPiCreateAccessQueue.o(.bss*);
|
||||
BUILD_DIR/libultra.a:__osSiCreateAccessQueue.o(.bss*);
|
||||
#ifdef VERSION_SH
|
||||
#if ENABLE_RUMBLE
|
||||
BUILD_DIR/libultra.a:osPfsIsPlug.o(.bss*);
|
||||
#endif
|
||||
BUILD_DIR/libultra.a:osEepromWrite.o(.bss*);
|
||||
@ -713,8 +742,8 @@ SECTIONS
|
||||
#ifdef VERSION_SH
|
||||
BUILD_DIR/libultra.a:leointerrupt.o(.bss*);
|
||||
#endif
|
||||
#ifndef VERSION_SH
|
||||
BUILD_DIR/libultra.a:osLeoDiskInit.o(.bss*)
|
||||
#ifdef VERSION_EU
|
||||
BUILD_DIR/libultra.a:osLeoDiskInit.o(.bss*);
|
||||
#endif
|
||||
BUILD_DIR/libultra.a:_Printf.o(.bss*);
|
||||
BUILD_DIR/libultra.a:osAiSetNextBuffer.o(.bss*);
|
||||
@ -727,11 +756,17 @@ SECTIONS
|
||||
BUILD_DIR/libultra.a:osInitialize.o(.bss*);
|
||||
BUILD_DIR/libultra.a:osContStartReadData.o(.bss*);
|
||||
BUILD_DIR/libultra.a:osContInit.o(.bss*);
|
||||
#if ENABLE_RUMBLE
|
||||
BUILD_DIR/libultra.a:motor.o(.bss*);
|
||||
#endif
|
||||
BUILD_DIR/libultra.a:guRotateF.o(.bss*);
|
||||
BUILD_DIR/libultra.a:osTimer.o(.bss*);
|
||||
BUILD_DIR/libultra.a:_Printf.o(.bss*);
|
||||
BUILD_DIR/libultra.a:__osPiCreateAccessQueue.o(.bss*);
|
||||
BUILD_DIR/libultra.a:__osSiCreateAccessQueue.o(.bss*);
|
||||
#if ENABLE_RUMBLE
|
||||
BUILD_DIR/libultra.a:osPfsIsPlug.o(.bss*);
|
||||
#endif
|
||||
BUILD_DIR/libultra.a:osEepromWrite.o(.bss*);
|
||||
BUILD_DIR/libultra.a:kdebugserver_stack.o(.bss*);
|
||||
BUILD_DIR/libultra.a:kdebugserver.o(.bss*);
|
||||
@ -816,7 +851,6 @@ SECTIONS
|
||||
__expansionRamStart = 0x80400000;
|
||||
ASSERT((. <= __expansionRamStart), "Error: RDRAM expanded into Expansion RAM, despite Expansion RAM not being defined.")
|
||||
|
||||
|
||||
BEGIN_SEG(entry, 0x10000000)
|
||||
{
|
||||
BUILD_DIR/levels/entry.o(.data);
|
||||
@ -867,7 +901,7 @@ SECTIONS
|
||||
/* 0x8016F000 21D7D0-255EC0 [386F0] */
|
||||
BEGIN_SEG(goddard, SEG_GODDARD)
|
||||
{
|
||||
BUILD_DIR/src/menu/level_select_menu.o(.text);
|
||||
BUILD_DIR/src/menu/title_screen.o(.text);
|
||||
BUILD_DIR/src/menu/intro_geo.o(.text);
|
||||
BUILD_DIR/src/menu/file_select.o(.text);
|
||||
BUILD_DIR/src/menu/star_select.o(.text);
|
||||
@ -889,8 +923,8 @@ SECTIONS
|
||||
BUILD_DIR/libgoddard.a:renderer.o(.text);
|
||||
BUILD_DIR/libgoddard.a:*.o(.text);
|
||||
/* data, rodata, per file */
|
||||
BUILD_DIR/src/menu/level_select_menu.o(.data*);
|
||||
BUILD_DIR/src/menu/level_select_menu.o(.rodata*);
|
||||
BUILD_DIR/src/menu/title_screen.o(.data*);
|
||||
BUILD_DIR/src/menu/title_screen.o(.rodata*);
|
||||
BUILD_DIR/src/menu/intro_geo.o(.data*);
|
||||
BUILD_DIR/src/menu/file_select.o(.data*);
|
||||
BUILD_DIR/src/menu/file_select.o(.rodata*);
|
||||
@ -956,14 +990,12 @@ SECTIONS
|
||||
{
|
||||
BUILD_DIR/src/buffers/buffers.o(.bss*);
|
||||
BUILD_DIR/src/audio/globals_start.o(.bss*);
|
||||
#ifndef VERSION_SH
|
||||
#ifdef VERSION_SH
|
||||
BUILD_DIR/src/audio/port_sh.o(.bss*);
|
||||
#else
|
||||
BUILD_DIR/src/audio/synthesis.o(.bss*);
|
||||
BUILD_DIR/src/audio/heap.o(.bss*);
|
||||
#endif
|
||||
BUILD_DIR/src/audio/load.o(.bss*);
|
||||
#ifdef VERSION_SH
|
||||
BUILD_DIR/src/audio/unk_shindou_audio_file.o(.bss*);
|
||||
#else
|
||||
BUILD_DIR/src/audio/data.o(.bss*);
|
||||
#endif
|
||||
BUILD_DIR/src/audio*.o(.bss*);
|
||||
@ -974,15 +1006,14 @@ SECTIONS
|
||||
. = ALIGN(0x1000);
|
||||
#endif
|
||||
#ifdef VERSION_SH
|
||||
. = . + 0xB000;
|
||||
. += 0xB000;
|
||||
#endif
|
||||
BUILD_DIR/src/buffers/gfx_output_buffer.o(.bss*);
|
||||
}
|
||||
END_NOLOAD(buffers)
|
||||
|
||||
#ifndef VERSION_SH
|
||||
ASSERT((. <= SEG_MAIN), "Error: buffers segment extended into main")
|
||||
#endif
|
||||
|
||||
/* 0x268020 0x268020-0 [0] */
|
||||
BEGIN_SEG(intro, 0x14000000)
|
||||
{
|
||||
@ -1094,5 +1125,3 @@ SECTIONS
|
||||
*(*);
|
||||
}
|
||||
}
|
||||
EXTERN(osPfsIsPlug)
|
||||
EXTERN(__osLeoInterrupt)
|
||||
|
@ -1,22 +1,16 @@
|
||||
.include "seq_macros.inc"
|
||||
#include "seq_macros.inc"
|
||||
|
||||
.section .rodata
|
||||
.align 0
|
||||
|
||||
sequence_start:
|
||||
|
||||
.ifdef VERSION_SH
|
||||
.set VERSION_EU_SH, 1
|
||||
.endif
|
||||
.ifdef VERSION_EU
|
||||
.set VERSION_EU_SH, 1
|
||||
.endif
|
||||
|
||||
seq_setmutebhv 0x60
|
||||
seq_setmutescale 0
|
||||
.ifdef VERSION_SH
|
||||
#ifdef VERSION_SH
|
||||
seq_setvol 100
|
||||
.else
|
||||
#else
|
||||
seq_setvol 127
|
||||
.endif
|
||||
#endif
|
||||
seq_settempo 120
|
||||
seq_initchannels 0x3ff
|
||||
seq_startchannel 0, .channel0
|
||||
@ -77,7 +71,7 @@ chan_stereoheadseteffects 1
|
||||
chan_setdyntable .channel59_table
|
||||
chan_jump .main_loop_023589
|
||||
|
||||
# Main loop for standard, non-continuous sound effects
|
||||
// Main loop for standard, non-continuous sound effects
|
||||
.main_loop_023589:
|
||||
chan_delay1
|
||||
chan_ioreadval 0
|
||||
@ -91,17 +85,17 @@ chan_iowriteval 5
|
||||
chan_ioreadval 4
|
||||
chan_dyncall
|
||||
|
||||
# keep looping until layer 0 finishes or we are told to stop or to play something else
|
||||
// keep looping until layer 0 finishes or we are told to stop or to play something else
|
||||
.poll_023589:
|
||||
chan_delay1
|
||||
chan_ioreadval 0
|
||||
chan_bltz .skip_023589 # if we have a signal:
|
||||
chan_beqz .force_stop_023589 # told to stop
|
||||
chan_jump .start_playing_023589 # told to play something else
|
||||
chan_bltz .skip_023589 // if we have a signal:
|
||||
chan_beqz .force_stop_023589 // told to stop
|
||||
chan_jump .start_playing_023589 // told to play something else
|
||||
.skip_023589:
|
||||
chan_testlayerfinished 0
|
||||
chan_beqz .poll_023589 # if layer 0 hasn't finished, keep polling
|
||||
chan_jump .main_loop_023589 # otherwise go back to the main loop
|
||||
chan_beqz .poll_023589 // if layer 0 hasn't finished, keep polling
|
||||
chan_jump .main_loop_023589 // otherwise go back to the main loop
|
||||
.force_stop_023589:
|
||||
chan_freelayer 0
|
||||
chan_freelayer 1
|
||||
@ -144,7 +138,7 @@ chan_stereoheadseteffects 1
|
||||
chan_setdyntable .channel6_table
|
||||
chan_jump .main_loop_146
|
||||
|
||||
# Main loop for moving, env and air sound effects, which play continuously
|
||||
// Main loop for moving, env and air sound effects, which play continuously
|
||||
.main_loop_146:
|
||||
chan_delay1
|
||||
chan_ioreadval 0
|
||||
@ -159,7 +153,7 @@ chan_iowriteval 5
|
||||
chan_ioreadval 4
|
||||
chan_dyncall
|
||||
|
||||
# keep looping until we are told to stop or to play something else
|
||||
// keep looping until we are told to stop or to play something else
|
||||
.poll_146:
|
||||
chan_delay1
|
||||
chan_ioreadval 0
|
||||
@ -181,7 +175,7 @@ chan_iowriteval 5
|
||||
chan_stereoheadseteffects 1
|
||||
chan_setdyntable .channel7_table
|
||||
|
||||
# Loop for menu sound effects
|
||||
// Loop for menu sound effects
|
||||
.main_loop_7:
|
||||
chan_delay1
|
||||
chan_ioreadval 0
|
||||
@ -198,19 +192,19 @@ chan_setpanmix 127
|
||||
chan_ioreadval 4
|
||||
chan_dyncall
|
||||
|
||||
# keep looping until layer 0 finishes or we are told to stop or to play something else
|
||||
// keep looping until layer 0 finishes or we are told to stop or to play something else
|
||||
.poll_7:
|
||||
chan_delay1
|
||||
chan_ioreadval 0
|
||||
chan_bltz .skip_7 # if we have a signal:
|
||||
chan_beqz .force_stop_7 # told to stop
|
||||
chan_bltz .skip_7 // if we have a signal:
|
||||
chan_beqz .force_stop_7 // told to stop
|
||||
chan_unreservenotes
|
||||
chan_jump .start_playing_7 # told to play something else
|
||||
chan_jump .start_playing_7 // told to play something else
|
||||
.skip_7:
|
||||
chan_testlayerfinished 0
|
||||
chan_beqz .poll_7 # if layer 0 hasn't finished, keep polling
|
||||
chan_beqz .poll_7 // if layer 0 hasn't finished, keep polling
|
||||
chan_unreservenotes
|
||||
chan_jump .main_loop_7 # otherwise go back to the main loop
|
||||
chan_jump .main_loop_7 // otherwise go back to the main loop
|
||||
.force_stop_7:
|
||||
chan_freelayer 0
|
||||
chan_freelayer 1
|
||||
@ -218,7 +212,7 @@ chan_freelayer 2
|
||||
chan_unreservenotes
|
||||
chan_jump .main_loop_7
|
||||
|
||||
# Delay for a number of ticks (1-255) in an interruptible manner.
|
||||
// Delay for a number of ticks (1-255) in an interruptible manner.
|
||||
.delay:
|
||||
chan_writeseq_nextinstr 0, 1
|
||||
chan_loop 20
|
||||
@ -233,15 +227,15 @@ chan_end
|
||||
chan_setpanmix 127
|
||||
chan_setvolscale 127
|
||||
chan_setvibratoextent 0
|
||||
chan_ioreadval 1 # IO slots 0-3 are reset to -1 when read; restore the value
|
||||
chan_ioreadval 1 // IO slots 0-3 are reset to -1 when read; restore the value
|
||||
chan_iowriteval 0
|
||||
chan_break # break out of the loop
|
||||
chan_break # force the caller to return immediately
|
||||
chan_break // break out of the loop
|
||||
chan_break // force the caller to return immediately
|
||||
chan_end
|
||||
|
||||
# Set reverb in way that takes area echo level and volume into account. This
|
||||
# is done by writing to IO slot 5 and letting get_sound_reverb in external.c
|
||||
# do the necessary math.
|
||||
// Set reverb in way that takes area echo level and volume into account. This
|
||||
// is done by writing to IO slot 5 and letting get_sound_reverb in external.c
|
||||
// do the necessary math.
|
||||
.set_reverb:
|
||||
chan_writeseq_nextinstr 0, 1
|
||||
chan_setreverb 10
|
||||
@ -342,15 +336,15 @@ sound_ref .sound_action_bounce_off_object
|
||||
sound_ref .chan_7ED
|
||||
sound_ref .sound_action_read_sign
|
||||
sound_ref .chan_810
|
||||
.ifdef VERSION_JP
|
||||
#ifdef VERSION_JP
|
||||
sound_ref .sound_action_jump_default
|
||||
sound_ref .sound_action_jump_default
|
||||
sound_ref .sound_action_jump_default
|
||||
.else
|
||||
#else
|
||||
sound_ref .chan_828
|
||||
sound_ref .sound_action_intro_unk45e
|
||||
sound_ref .sound_action_intro_unk45f
|
||||
.endif
|
||||
#endif
|
||||
sound_ref .sound_action_heavy_landing_default
|
||||
sound_ref .sound_action_heavy_landing_grass
|
||||
sound_ref .sound_action_heavy_landing_water
|
||||
@ -988,7 +982,7 @@ layer_portamento 0x81, 42, 255
|
||||
layer_note1 37, 0x1e, 105
|
||||
layer_end
|
||||
|
||||
.sound_action_climb_down_tree: # unused
|
||||
.sound_action_climb_down_tree: // unused
|
||||
chan_setbank 0
|
||||
chan_setinstr 1
|
||||
chan_setlayer 0, .layer_579
|
||||
@ -999,7 +993,7 @@ layer_portamento 0x81, 44, 255
|
||||
layer_note1 40, 0xb4, 100
|
||||
layer_end
|
||||
|
||||
.chan_582: # unused
|
||||
.chan_582: // unused
|
||||
chan_setbank 0
|
||||
chan_setinstr 2
|
||||
chan_setlayer 0, .layer_58A
|
||||
@ -1418,8 +1412,8 @@ layer_note1 39, 0xa, 127
|
||||
layer_note1 42, 0x8, 127
|
||||
layer_end
|
||||
|
||||
.ifndef VERSION_JP
|
||||
.chan_828: # unused
|
||||
#ifndef VERSION_JP
|
||||
.chan_828: // unused
|
||||
chan_setbank 7
|
||||
chan_setinstr 3
|
||||
chan_setlayer 0, .layer_83C
|
||||
@ -1464,7 +1458,7 @@ layer_end
|
||||
.layer_871:
|
||||
layer_transpose 8
|
||||
layer_jump .layer_776
|
||||
.endif
|
||||
#endif
|
||||
|
||||
.sound_action_heavy_landing_default:
|
||||
chan_call .heavy_landing_common
|
||||
@ -2029,7 +2023,7 @@ sound_ref .sound_mario_punch_wah
|
||||
sound_ref .sound_mario_uh
|
||||
sound_ref .sound_mario_hrmm
|
||||
sound_ref .sound_mario_wah2
|
||||
.ifdef VERSION_JP
|
||||
#ifdef VERSION_JP
|
||||
sound_ref .sound_mario_jump_hoo
|
||||
sound_ref .sound_mario_jump_hoo
|
||||
sound_ref .sound_mario_jump_hoo
|
||||
@ -2046,7 +2040,7 @@ sound_ref .sound_mario_wah2
|
||||
sound_ref .sound_mario_jump_hoo
|
||||
sound_ref .sound_mario_jump_hoo
|
||||
sound_ref .sound_mario_jump_hoo
|
||||
.else
|
||||
#else
|
||||
sound_ref .sound_peach_dear_mario
|
||||
sound_ref .sound_mario_jump_hoo
|
||||
sound_ref .sound_mario_jump_hoo
|
||||
@ -2071,7 +2065,7 @@ sound_ref .sound_mario_wah2
|
||||
sound_ref .sound_peach_bake_a_cake
|
||||
sound_ref .sound_peach_for_mario
|
||||
sound_ref .sound_peach_mario2
|
||||
.endif
|
||||
#endif
|
||||
|
||||
.sound_mario_jump_hoo:
|
||||
chan_setbank 8
|
||||
@ -2080,9 +2074,9 @@ chan_setlayer 0, .layer_C3C
|
||||
chan_end
|
||||
|
||||
.layer_C3C:
|
||||
.ifdef VERSION_EU_SH
|
||||
#if defined(VERSION_EU) || defined(VERSION_SH)
|
||||
layer_transpose 2
|
||||
.endif
|
||||
#endif
|
||||
layer_portamento 0x82, 41, 127
|
||||
layer_note1 37, 0x14, 127
|
||||
layer_end
|
||||
@ -2119,9 +2113,9 @@ chan_setlayer 0, .layer_C6C
|
||||
chan_end
|
||||
|
||||
.layer_C6C:
|
||||
.ifdef VERSION_EU_SH
|
||||
#if defined(VERSION_EU) || defined(VERSION_SH)
|
||||
layer_transpose 1
|
||||
.endif
|
||||
#endif
|
||||
layer_portamento 0x82, 44, 200
|
||||
layer_note1 39, 0x30, 127
|
||||
layer_end
|
||||
@ -2482,7 +2476,7 @@ chan_end
|
||||
layer_transpose -1
|
||||
layer_jump .layer_C4E
|
||||
|
||||
.ifndef VERSION_JP
|
||||
#ifndef VERSION_JP
|
||||
.sound_peach_dear_mario:
|
||||
chan_setbank 10
|
||||
chan_setinstr 15
|
||||
@ -2697,9 +2691,9 @@ layer_jump .layer_C4E
|
||||
.layer_F8A:
|
||||
layer_note1 39, 0x50, 127
|
||||
layer_end
|
||||
.endif
|
||||
#endif
|
||||
|
||||
.ifdef VERSION_EU_SH
|
||||
#if defined(VERSION_EU) || defined(VERSION_SH)
|
||||
.chan_unused_F9A_eu:
|
||||
chan_setbank 8
|
||||
chan_setinstr 0
|
||||
@ -2709,7 +2703,7 @@ layer_jump .layer_C4E
|
||||
.layer_FA2_eu:
|
||||
layer_delay 0x5
|
||||
layer_end
|
||||
.endif
|
||||
#endif
|
||||
|
||||
.channel38_table:
|
||||
sound_ref .sound_general_activate_cap_switch
|
||||
@ -2830,7 +2824,7 @@ sound_ref .sound_general_boing3
|
||||
sound_ref .sound_general_grand_star
|
||||
sound_ref .sound_general_grand_star_jump
|
||||
sound_ref .sound_general_boat_rock
|
||||
.ifdef VERSION_JP
|
||||
#ifdef VERSION_JP
|
||||
sound_ref .sound_menu_enter_hole
|
||||
sound_ref .sound_menu_enter_hole
|
||||
sound_ref .sound_menu_enter_hole
|
||||
@ -2841,7 +2835,7 @@ sound_ref .sound_general_boat_rock
|
||||
sound_ref .sound_general_bubbles
|
||||
sound_ref .sound_menu_enter_hole
|
||||
sound_ref .sound_menu_enter_hole
|
||||
.else
|
||||
#else
|
||||
sound_ref .sound_general_vanish_sfx
|
||||
sound_ref .sound_menu_enter_hole
|
||||
sound_ref .sound_general_red_coin
|
||||
@ -2852,7 +2846,7 @@ sound_ref .sound_general_boat_rock
|
||||
sound_ref .sound_general_boing2
|
||||
sound_ref .sound_general_yoshi_walk
|
||||
sound_ref .sound_general_enemy_alert1
|
||||
.endif
|
||||
#endif
|
||||
|
||||
.sound_general_activate_cap_switch:
|
||||
chan_setbank 5
|
||||
@ -3408,17 +3402,17 @@ chan_setbank 9
|
||||
chan_setinstr 3
|
||||
chan_setval 40
|
||||
chan_call .set_reverb
|
||||
.ifdef VERSION_SH
|
||||
#ifdef VERSION_SH
|
||||
chan_setreverb 40
|
||||
.endif
|
||||
#endif
|
||||
chan_setlayer 0, .layer_141A
|
||||
chan_end
|
||||
|
||||
.layer_141A:
|
||||
layer_transpose 24
|
||||
.ifdef VERSION_SH
|
||||
#ifdef VERSION_SH
|
||||
layer_note1 51, 0xc, 90
|
||||
.endif
|
||||
#endif
|
||||
layer_note1 39, 0x4, 90
|
||||
layer_note1 51, 0xc, 90
|
||||
layer_note1 39, 0x4, 50
|
||||
@ -3487,18 +3481,18 @@ layer_end
|
||||
|
||||
.sound_general_chain_chomp2:
|
||||
chan_setbank 7
|
||||
.ifdef VERSION_JP
|
||||
#ifdef VERSION_JP
|
||||
chan_setinstr 8
|
||||
.else
|
||||
#else
|
||||
chan_setinstr 14
|
||||
.endif
|
||||
#endif
|
||||
chan_setval 15
|
||||
chan_call .set_reverb
|
||||
chan_setlayer 0, .layer_14C6
|
||||
chan_setlayer 1, .layer_14E3
|
||||
.ifndef VERSION_JP
|
||||
#ifndef VERSION_JP
|
||||
chan_setlayer 2, .layer_14E3
|
||||
.endif
|
||||
#endif
|
||||
chan_setval 1
|
||||
chan_call .delay
|
||||
chan_setenvelope .envelope_3368
|
||||
@ -3507,11 +3501,11 @@ chan_setinstr 7
|
||||
chan_setval 13
|
||||
chan_call .delay
|
||||
chan_setbank 7
|
||||
.ifdef VERSION_JP
|
||||
#ifdef VERSION_JP
|
||||
chan_setinstr 8
|
||||
.else
|
||||
#else
|
||||
chan_setinstr 14
|
||||
.endif
|
||||
#endif
|
||||
chan_end
|
||||
|
||||
.layer_14C6:
|
||||
@ -3527,12 +3521,12 @@ layer_end
|
||||
|
||||
.layer_14E3:
|
||||
layer_loop 2
|
||||
.ifdef VERSION_JP
|
||||
#ifdef VERSION_JP
|
||||
layer_portamento 0x81, 36, 255
|
||||
layer_note1 24, 0x18, 127
|
||||
.else
|
||||
#else
|
||||
layer_note1 34, 0x19, 100
|
||||
.endif
|
||||
#endif
|
||||
layer_loopend
|
||||
layer_end
|
||||
|
||||
@ -4154,24 +4148,27 @@ layer_note1 31, 0x14, 127
|
||||
layer_end
|
||||
|
||||
.sound_general_red_coin:
|
||||
.ifdef VERSION_JP
|
||||
#ifdef VERSION_JP
|
||||
chan_setbank 9
|
||||
chan_setinstr 3
|
||||
chan_setlayer 0, .layer_1909
|
||||
chan_setlayer 1, .layer_1902
|
||||
chan_setlayer 2, .layer_1907
|
||||
.else
|
||||
.ifdef VERSION_EU_SH
|
||||
#else
|
||||
#if defined(VERSION_EU) || defined(VERSION_SH)
|
||||
chan_setbank 9
|
||||
chan_setinstr 3
|
||||
.else
|
||||
#else
|
||||
chan_setinstr 128
|
||||
.endif
|
||||
#endif
|
||||
chan_setenvelope .envelope_3378
|
||||
// Small bugfix: .main_loop_023589 expects layer 0 to live the longest.
|
||||
// I don't think this actually makes any audible difference given the
|
||||
// silence at the end.
|
||||
chan_setlayer 0, .layer_1907
|
||||
chan_setlayer 1, .layer_1902
|
||||
chan_setlayer 2, .layer_1909
|
||||
.endif
|
||||
#endif
|
||||
chan_end
|
||||
|
||||
.layer_1902:
|
||||
@ -4191,6 +4188,12 @@ layer_note0 58, 0x10, 100, 80
|
||||
layer_note0 58, 0x10, 60, 80
|
||||
layer_note0 58, 0x10, 40, 80
|
||||
layer_note0 58, 0x10, 25, 80
|
||||
// This small delay should not have any effect, but decreases the probability of
|
||||
// encountering double red coin glitch. Without it, layer 0 finishes in 1.04
|
||||
// seconds, and with some bad luck around scheduling/lag the sound spawner with
|
||||
// a lifetime of 30 frames that creates the sound may deactivate on the same
|
||||
// frame. That leads to double sound glitch on JP, see src/audio/external.c.
|
||||
// With the delay, the same thing can still happen but requires more CPU lag.
|
||||
layer_delay 0xa
|
||||
layer_end
|
||||
|
||||
@ -4422,7 +4425,7 @@ layer_portamento 0x81, 36, 40
|
||||
layer_note1 41, 0xc, 127
|
||||
layer_end
|
||||
|
||||
.ifdef VERSION_JP
|
||||
#ifdef VERSION_JP
|
||||
.sound_general_boat_rock:
|
||||
chan_setbank 9
|
||||
chan_setinstr 0
|
||||
@ -4438,7 +4441,7 @@ layer_end
|
||||
layer_portamento 0x1, 32, 0x7f
|
||||
layer_note1 60, 0x28, 100
|
||||
layer_end
|
||||
.else
|
||||
#else
|
||||
.sound_general_boat_rock:
|
||||
chan_setbank 4
|
||||
chan_setinstr 2
|
||||
@ -4476,7 +4479,7 @@ layer_end
|
||||
layer_portamento 0x81, 19, 255
|
||||
layer_note1 31, 0x32, 115
|
||||
layer_end
|
||||
.endif
|
||||
#endif
|
||||
|
||||
.channel4_table:
|
||||
sound_ref .sound_env_waterfall1
|
||||
@ -4525,21 +4528,21 @@ chan_setbank 5
|
||||
chan_setinstr 1
|
||||
chan_setval 25
|
||||
chan_call .set_reverb
|
||||
.ifdef VERSION_JP
|
||||
#ifdef VERSION_JP
|
||||
chan_setenvelope .envelope_32E4
|
||||
.else
|
||||
#else
|
||||
chan_setenvelope .envelope_32C4
|
||||
.endif
|
||||
#endif
|
||||
chan_setlayer 0, .layer_1B53
|
||||
chan_end
|
||||
|
||||
.layer_1B53:
|
||||
layer_somethingon
|
||||
.ifdef VERSION_JP
|
||||
#ifdef VERSION_JP
|
||||
layer_delay 0x6
|
||||
.else
|
||||
#else
|
||||
layer_delay 0x4
|
||||
.endif
|
||||
#endif
|
||||
.layer_1B56:
|
||||
layer_note1 41, 0x12c, 95
|
||||
layer_jump .layer_1B56
|
||||
@ -4694,11 +4697,11 @@ chan_end
|
||||
|
||||
.layer_1C69:
|
||||
layer_portamento 0x81, 15, 255
|
||||
.ifdef VERSION_JP
|
||||
#ifdef VERSION_JP
|
||||
layer_note1 11, 0x1f4, 100
|
||||
.else
|
||||
#else
|
||||
layer_note1 11, 0x1f4, 127
|
||||
.endif
|
||||
#endif
|
||||
layer_end
|
||||
|
||||
.sound_env_elevator3:
|
||||
@ -5374,11 +5377,11 @@ chan_end
|
||||
|
||||
.layer_20D2:
|
||||
layer_portamento 0x81, 44, 255
|
||||
.ifdef VERSION_JP
|
||||
#ifdef VERSION_JP
|
||||
layer_note1 36, 0x18, 90
|
||||
.else
|
||||
#else
|
||||
layer_note1 36, 0x18, 115
|
||||
.endif
|
||||
#endif
|
||||
layer_delay 0x32
|
||||
layer_end
|
||||
|
||||
@ -5398,13 +5401,13 @@ layer_note1 31, 0x26, 127
|
||||
layer_end
|
||||
|
||||
.layer_20F4:
|
||||
.ifdef VERSION_JP
|
||||
#ifdef VERSION_JP
|
||||
layer_note1 38, 0x8, 120
|
||||
layer_note1 33, 0x1e, 120
|
||||
.else
|
||||
#else
|
||||
layer_note1 38, 0x8, 127
|
||||
layer_note1 33, 0x1e, 127
|
||||
.endif
|
||||
#endif
|
||||
layer_end
|
||||
|
||||
.sound_obj_bully_metal:
|
||||
@ -6989,7 +6992,7 @@ sound_ref .sound_menu_thank_you_playing_my_game
|
||||
sound_ref .sound_menu_read_a_sign
|
||||
sound_ref .sound_menu_exit_a_sign
|
||||
sound_ref .sound_menu_mario_castle_warp2
|
||||
.ifdef VERSION_JP
|
||||
#ifdef VERSION_JP
|
||||
sound_ref .sound_menu_message_next_page
|
||||
sound_ref .sound_menu_coin_its_a_me_mario
|
||||
sound_ref .sound_menu_yoshi_gain_lives
|
||||
@ -7003,7 +7006,7 @@ sound_ref .sound_menu_mario_castle_warp2
|
||||
sound_ref .sound_menu_mario_castle_warp
|
||||
sound_ref .sound_menu_star_sound
|
||||
sound_ref .sound_menu_change_select
|
||||
.else
|
||||
#else
|
||||
sound_ref .sound_menu_star_sound_okey_dokey
|
||||
sound_ref .sound_menu_star_sound_lets_a_go
|
||||
sound_ref .sound_menu_yoshi_gain_lives
|
||||
@ -7033,7 +7036,7 @@ sound_ref .sound_menu_mario_castle_warp2
|
||||
sound_ref .sound_menu_power_meter
|
||||
sound_ref .sound_menu_camera_buzz
|
||||
sound_ref .sound_menu_camera_turn
|
||||
.endif
|
||||
#endif
|
||||
|
||||
.sound_menu_change_select:
|
||||
chan_setbank 9
|
||||
@ -7506,13 +7509,13 @@ layer_end
|
||||
chan_reservenotes 4
|
||||
chan_setbank 9
|
||||
chan_setinstr 2
|
||||
.ifdef VERSION_SH
|
||||
#ifdef VERSION_SH
|
||||
chan_setval 15
|
||||
.set EXIT_PIPE_NOTE_VELOCITY, 106
|
||||
.else
|
||||
#else
|
||||
chan_setval 30
|
||||
.set EXIT_PIPE_NOTE_VELOCITY, 126
|
||||
.endif
|
||||
#endif
|
||||
chan_call .set_reverb
|
||||
chan_setenvelope .envelope_3464
|
||||
chan_setdecayrelease 220
|
||||
@ -7774,7 +7777,7 @@ chan_setlayer 0, .layer_3041
|
||||
chan_setlayer 1, .layer_2FC9
|
||||
chan_end
|
||||
|
||||
.ifndef VERSION_JP
|
||||
#ifndef VERSION_JP
|
||||
.sound_menu_star_sound_okey_dokey:
|
||||
chan_setbank 4
|
||||
chan_setinstr 14
|
||||
@ -7828,33 +7831,33 @@ chan_end
|
||||
.layer_3146:
|
||||
layer_delay 0x6
|
||||
|
||||
.ifdef VERSION_SH
|
||||
#ifdef VERSION_SH
|
||||
.set RED_COIN_NOTE_VELOCITY_SUB, 10
|
||||
.else
|
||||
#else
|
||||
.set RED_COIN_NOTE_VELOCITY_SUB, 0
|
||||
.endif
|
||||
#endif
|
||||
|
||||
.layer_3148:
|
||||
layer_call .transpose_by_coin_index
|
||||
layer_note0 46, 0xc, 75 - RED_COIN_NOTE_VELOCITY_SUB, 20
|
||||
layer_note0 45, 0xc, 75 - RED_COIN_NOTE_VELOCITY_SUB, 20
|
||||
layer_note0 46, 0xc, 75 - RED_COIN_NOTE_VELOCITY_SUB, 20
|
||||
layer_note0 58, 0x10, 80 - RED_COIN_NOTE_VELOCITY_SUB, 80
|
||||
layer_note0 58, 0x10, 45 - RED_COIN_NOTE_VELOCITY_SUB, 80
|
||||
layer_note0 58, 0x10, 20 - RED_COIN_NOTE_VELOCITY_SUB, 80
|
||||
layer_note0 58, 0x10, 15 - RED_COIN_NOTE_VELOCITY_SUB, 80
|
||||
layer_note0 46, 0xc, (75 - RED_COIN_NOTE_VELOCITY_SUB), 20
|
||||
layer_note0 45, 0xc, (75 - RED_COIN_NOTE_VELOCITY_SUB), 20
|
||||
layer_note0 46, 0xc, (75 - RED_COIN_NOTE_VELOCITY_SUB), 20
|
||||
layer_note0 58, 0x10, (80 - RED_COIN_NOTE_VELOCITY_SUB), 80
|
||||
layer_note0 58, 0x10, (45 - RED_COIN_NOTE_VELOCITY_SUB), 80
|
||||
layer_note0 58, 0x10, (20 - RED_COIN_NOTE_VELOCITY_SUB), 80
|
||||
layer_note0 58, 0x10, (15 - RED_COIN_NOTE_VELOCITY_SUB), 80
|
||||
|
||||
layer_end
|
||||
|
||||
.layer_3168:
|
||||
layer_call .transpose_by_coin_index
|
||||
layer_note0 41, 0xc, 75 - RED_COIN_NOTE_VELOCITY_SUB, 20
|
||||
layer_note0 40, 0xc, 75 - RED_COIN_NOTE_VELOCITY_SUB, 20
|
||||
layer_note0 41, 0xc, 75 - RED_COIN_NOTE_VELOCITY_SUB, 20
|
||||
layer_note0 53, 0x10, 80 - RED_COIN_NOTE_VELOCITY_SUB, 80
|
||||
layer_note0 53, 0x10, 45 - RED_COIN_NOTE_VELOCITY_SUB, 80
|
||||
layer_note0 53, 0x10, 20 - RED_COIN_NOTE_VELOCITY_SUB, 80
|
||||
layer_note0 53, 0x10, 15 - RED_COIN_NOTE_VELOCITY_SUB, 80
|
||||
layer_note0 41, 0xc, (75 - RED_COIN_NOTE_VELOCITY_SUB), 20
|
||||
layer_note0 40, 0xc, (75 - RED_COIN_NOTE_VELOCITY_SUB), 20
|
||||
layer_note0 41, 0xc, (75 - RED_COIN_NOTE_VELOCITY_SUB), 20
|
||||
layer_note0 53, 0x10, (80 - RED_COIN_NOTE_VELOCITY_SUB), 80
|
||||
layer_note0 53, 0x10, (45 - RED_COIN_NOTE_VELOCITY_SUB), 80
|
||||
layer_note0 53, 0x10, (20 - RED_COIN_NOTE_VELOCITY_SUB), 80
|
||||
layer_note0 53, 0x10, (15 - RED_COIN_NOTE_VELOCITY_SUB), 80
|
||||
layer_end
|
||||
|
||||
.transpose_by_coin_index:
|
||||
@ -7877,7 +7880,7 @@ chan_end
|
||||
layer_transpose 0
|
||||
layer_note1 32, 0x7f, 115
|
||||
layer_end
|
||||
.endif
|
||||
#endif
|
||||
|
||||
.sound_general_bird_chirp2:
|
||||
chan_setbank 5
|
||||
@ -8084,14 +8087,14 @@ envelope_line 1 32700
|
||||
envelope_line 10 0
|
||||
envelope_goto 2
|
||||
|
||||
.ifndef VERSION_JP
|
||||
#ifndef VERSION_JP
|
||||
.envelope_3378:
|
||||
envelope_line 3 32700
|
||||
envelope_line 10 30000
|
||||
envelope_line 10 10000
|
||||
envelope_line 100 0
|
||||
envelope_goto 3
|
||||
.endif
|
||||
#endif
|
||||
|
||||
.envelope_338C:
|
||||
envelope_line 1 32700
|
||||
@ -8150,11 +8153,11 @@ envelope_goto 2
|
||||
.envelope_341C:
|
||||
envelope_line 25 32760
|
||||
envelope_line 60 10000
|
||||
.ifdef VERSION_SH
|
||||
#ifdef VERSION_SH
|
||||
envelope_hang
|
||||
.else
|
||||
#else
|
||||
envelope_goto 2
|
||||
.endif
|
||||
#endif
|
||||
|
||||
.envelope_3428:
|
||||
envelope_line 1 10000
|
||||
|
@ -877,12 +877,6 @@ u16 unk_sh_data_4[] = {
|
||||
0x5FFF, 0x9001,
|
||||
0x7FFF, 0x8001
|
||||
};
|
||||
|
||||
char shindouDebugPrint1[] = "Terminate-Canceled Channel %d,Phase %d\n";
|
||||
char shindouDebugPrint2[] = "S->W\n";
|
||||
char shindouDebugPrint3[] = "W->S\n";
|
||||
char shindouDebugPrint4[] = "S-Resample Pitch %x (old %d -> delay %d)\n";
|
||||
// These debug prints are continued in shindou_debug_prints_1.c.
|
||||
#endif
|
||||
|
||||
#ifndef VERSION_SH
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user