mirror of
https://github.com/HarbourMasters/2ship2harkinian.git
synced 2024-11-24 06:29:59 +00:00
merge master
This commit is contained in:
commit
e0606f5cbe
13
Makefile
13
Makefile
@ -117,6 +117,7 @@ MKLDSCRIPT := tools/buildtools/mkldscript
|
||||
YAZ0 := tools/buildtools/yaz0
|
||||
ZAPD := tools/ZAPD/ZAPD.out
|
||||
FADO := tools/fado/fado.elf
|
||||
MAKEYAR := tools/buildtools/makeyar
|
||||
|
||||
OPTFLAGS := -O2 -g3
|
||||
ASFLAGS := -march=vr4300 -32 -Iinclude
|
||||
@ -184,9 +185,11 @@ C_FILES := $(foreach dir,$(SRC_DIRS) $(ASSET_BIN_DIRS_C_FILES),$(wildcard
|
||||
S_FILES := $(shell grep -F "build/asm" spec | sed 's/.*build\/// ; s/\.o\".*/.s/') \
|
||||
$(shell grep -F "build/data" spec | sed 's/.*build\/// ; s/\.o\".*/.s/')
|
||||
BASEROM_FILES := $(shell grep -F "build/baserom" spec | sed 's/.*build\/// ; s/\.o\".*//')
|
||||
ARCHIVES_O := $(shell grep -F ".yar.o" spec | sed 's/.*include "// ; s/\.o\".*/.o/')
|
||||
O_FILES := $(foreach f,$(S_FILES:.s=.o),build/$f) \
|
||||
$(foreach f,$(C_FILES:.c=.o),build/$f) \
|
||||
$(foreach f,$(BASEROM_FILES),build/$f.o)
|
||||
$(foreach f,$(BASEROM_FILES),build/$f.o) \
|
||||
$(ARCHIVES_O)
|
||||
|
||||
OVL_RELOC_FILES := $(shell $(CPP) $(CPPFLAGS) $(SPEC) | grep -o '[^"]*_reloc.o' )
|
||||
|
||||
@ -303,6 +306,7 @@ setup:
|
||||
$(MAKE) -C tools
|
||||
python3 tools/fixbaserom.py
|
||||
python3 tools/extract_baserom.py
|
||||
python3 tools/decompress_yars.py
|
||||
|
||||
assets:
|
||||
python3 extract_assets.py -j $(N_THREADS)
|
||||
@ -344,6 +348,10 @@ build/assets/%.o: assets/%.c
|
||||
$(OBJCOPY_BIN)
|
||||
$(RM_MDEBUG)
|
||||
|
||||
build/assets/archives/%.yar.o: build/assets/archives/%.o
|
||||
$(MAKEYAR) $< $(@:.yar.o=.yar.bin) $(@:.yar.o=.symbols.o)
|
||||
$(OBJCOPY) -I binary -O elf32-big $(@:.yar.o=.yar.bin) $@
|
||||
|
||||
build/baserom/%.o: baserom/%
|
||||
$(OBJCOPY) -I binary -O elf32-big $< $@
|
||||
|
||||
@ -392,3 +400,6 @@ build/assets/%.jpg.inc.c: assets/%.jpg
|
||||
$(ZAPD) bren -eh -i $< -o $@
|
||||
|
||||
-include $(DEP_FILES)
|
||||
|
||||
# Print target for debugging
|
||||
print-% : ; $(info $* is a $(flavor $*) variable set to [$($*)]) @true
|
||||
|
18
assets/xml/archives/icon_item_24_static.xml
Normal file
18
assets/xml/archives/icon_item_24_static.xml
Normal file
@ -0,0 +1,18 @@
|
||||
<Root>
|
||||
<File Name="icon_item_24_static_yar.unarchive" Segment="9">
|
||||
<Blob Name="icon_item_24_static_yar_Blob_000000" Size="0x0900" Offset="0x0" />
|
||||
<Blob Name="icon_item_24_static_yar_Blob_000900" Size="0x0900" Offset="0x900" />
|
||||
<Blob Name="icon_item_24_static_yar_Blob_001200" Size="0x0900" Offset="0x1200" />
|
||||
<Blob Name="icon_item_24_static_yar_Blob_001B00" Size="0x0900" Offset="0x1B00" />
|
||||
<Blob Name="icon_item_24_static_yar_Blob_002400" Size="0x0900" Offset="0x2400" />
|
||||
<Blob Name="icon_item_24_static_yar_Blob_002D00" Size="0x0900" Offset="0x2D00" />
|
||||
<Blob Name="icon_item_24_static_yar_Blob_003600" Size="0x0900" Offset="0x3600" />
|
||||
<Blob Name="icon_item_24_static_yar_Blob_003F00" Size="0x0900" Offset="0x3F00" />
|
||||
<Blob Name="icon_item_24_static_yar_Blob_004800" Size="0x0900" Offset="0x4800" />
|
||||
<Blob Name="icon_item_24_static_yar_Blob_005100" Size="0x0900" Offset="0x5100" />
|
||||
<Blob Name="icon_item_24_static_yar_Blob_005A00" Size="0x0900" Offset="0x5A00" />
|
||||
<Blob Name="icon_item_24_static_yar_Blob_006300" Size="0x0900" Offset="0x6300" />
|
||||
<Blob Name="icon_item_24_static_yar_Blob_006C00" Size="0x0900" Offset="0x6C00" />
|
||||
<Blob Name="icon_item_24_static_yar_Blob_007500" Size="0x0200" Offset="0x7500" />
|
||||
</File>
|
||||
</Root>
|
194
assets/xml/archives/icon_item_static.xml
Normal file
194
assets/xml/archives/icon_item_static.xml
Normal file
@ -0,0 +1,194 @@
|
||||
<Root>
|
||||
<File Name="icon_item_static_yar.unarchive" Segment="8">
|
||||
<Blob Name="icon_item_static_yar_Blob_000000" Size="0x1000" Offset="0x0" />
|
||||
<Blob Name="icon_item_static_yar_Blob_001000" Size="0x1000" Offset="0x1000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_002000" Size="0x1000" Offset="0x2000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_003000" Size="0x1000" Offset="0x3000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_004000" Size="0x1000" Offset="0x4000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_005000" Size="0x1000" Offset="0x5000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_006000" Size="0x1000" Offset="0x6000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_007000" Size="0x1000" Offset="0x7000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_008000" Size="0x1000" Offset="0x8000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_009000" Size="0x1000" Offset="0x9000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_00A000" Size="0x1000" Offset="0xA000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_00B000" Size="0x1000" Offset="0xB000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_00C000" Size="0x1000" Offset="0xC000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_00D000" Size="0x1000" Offset="0xD000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_00E000" Size="0x1000" Offset="0xE000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_00F000" Size="0x1000" Offset="0xF000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_010000" Size="0x1000" Offset="0x10000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_011000" Size="0x1000" Offset="0x11000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_012000" Size="0x1000" Offset="0x12000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_013000" Size="0x1000" Offset="0x13000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_014000" Size="0x1000" Offset="0x14000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_015000" Size="0x1000" Offset="0x15000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_016000" Size="0x1000" Offset="0x16000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_017000" Size="0x1000" Offset="0x17000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_018000" Size="0x1000" Offset="0x18000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_019000" Size="0x1000" Offset="0x19000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_01A000" Size="0x1000" Offset="0x1A000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_01B000" Size="0x1000" Offset="0x1B000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_01C000" Size="0x1000" Offset="0x1C000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_01D000" Size="0x1000" Offset="0x1D000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_01E000" Size="0x1000" Offset="0x1E000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_01F000" Size="0x1000" Offset="0x1F000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_020000" Size="0x1000" Offset="0x20000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_021000" Size="0x1000" Offset="0x21000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_022000" Size="0x1000" Offset="0x22000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_023000" Size="0x1000" Offset="0x23000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_024000" Size="0x1000" Offset="0x24000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_025000" Size="0x1000" Offset="0x25000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_026000" Size="0x1000" Offset="0x26000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_027000" Size="0x1000" Offset="0x27000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_028000" Size="0x1000" Offset="0x28000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_029000" Size="0x1000" Offset="0x29000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_02A000" Size="0x1000" Offset="0x2A000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_02B000" Size="0x1000" Offset="0x2B000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_02C000" Size="0x1000" Offset="0x2C000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_02D000" Size="0x1000" Offset="0x2D000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_02E000" Size="0x1000" Offset="0x2E000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_02F000" Size="0x1000" Offset="0x2F000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_030000" Size="0x1000" Offset="0x30000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_031000" Size="0x1000" Offset="0x31000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_032000" Size="0x1000" Offset="0x32000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_033000" Size="0x1000" Offset="0x33000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_034000" Size="0x1000" Offset="0x34000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_035000" Size="0x1000" Offset="0x35000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_036000" Size="0x1000" Offset="0x36000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_037000" Size="0x1000" Offset="0x37000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_038000" Size="0x1000" Offset="0x38000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_039000" Size="0x1000" Offset="0x39000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_03A000" Size="0x1000" Offset="0x3A000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_03B000" Size="0x1000" Offset="0x3B000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_03C000" Size="0x1000" Offset="0x3C000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_03D000" Size="0x1000" Offset="0x3D000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_03E000" Size="0x1000" Offset="0x3E000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_03F000" Size="0x1000" Offset="0x3F000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_040000" Size="0x1000" Offset="0x40000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_041000" Size="0x1000" Offset="0x41000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_042000" Size="0x1000" Offset="0x42000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_043000" Size="0x1000" Offset="0x43000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_044000" Size="0x1000" Offset="0x44000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_045000" Size="0x1000" Offset="0x45000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_046000" Size="0x1000" Offset="0x46000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_047000" Size="0x1000" Offset="0x47000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_048000" Size="0x1000" Offset="0x48000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_049000" Size="0x1000" Offset="0x49000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_04A000" Size="0x1000" Offset="0x4A000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_04B000" Size="0x1000" Offset="0x4B000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_04C000" Size="0x1000" Offset="0x4C000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_04D000" Size="0x1000" Offset="0x4D000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_04E000" Size="0x1000" Offset="0x4E000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_04F000" Size="0x1000" Offset="0x4F000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_050000" Size="0x1000" Offset="0x50000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_051000" Size="0x1000" Offset="0x51000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_052000" Size="0x1000" Offset="0x52000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_053000" Size="0x1000" Offset="0x53000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_054000" Size="0x1000" Offset="0x54000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_055000" Size="0x1000" Offset="0x55000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_056000" Size="0x1000" Offset="0x56000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_057000" Size="0x1000" Offset="0x57000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_058000" Size="0x1000" Offset="0x58000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_059000" Size="0x1000" Offset="0x59000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_05A000" Size="0x1000" Offset="0x5A000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_05B000" Size="0x1000" Offset="0x5B000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_05C000" Size="0x1000" Offset="0x5C000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_05D000" Size="0x1000" Offset="0x5D000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_05E000" Size="0x1000" Offset="0x5E000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_05F000" Size="0x1000" Offset="0x5F000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_060000" Size="0x1000" Offset="0x60000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_061000" Size="0x1000" Offset="0x61000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_062000" Size="0x0180" Offset="0x62000" />
|
||||
<Blob Name="icon_item_static_yar_Blob_062180" Size="0x0900" Offset="0x62180" />
|
||||
<Blob Name="icon_item_static_yar_Blob_062A80" Size="0x0900" Offset="0x62A80" />
|
||||
<Blob Name="icon_item_static_yar_Blob_063380" Size="0x0900" Offset="0x63380" />
|
||||
<Blob Name="icon_item_static_yar_Blob_063C80" Size="0x0480" Offset="0x63C80" />
|
||||
<Blob Name="icon_item_static_yar_Blob_064100" Size="0x0240" Offset="0x64100" />
|
||||
<Blob Name="icon_item_static_yar_Blob_064340" Size="0x0100" Offset="0x64340" />
|
||||
<Blob Name="icon_item_static_yar_Blob_064440" Size="0x0A00" Offset="0x64440" />
|
||||
<Blob Name="icon_item_static_yar_Blob_064E40" Size="0x0A00" Offset="0x64E40" />
|
||||
<Blob Name="icon_item_static_yar_Blob_065840" Size="0x0A00" Offset="0x65840" />
|
||||
<Blob Name="icon_item_static_yar_Blob_066240" Size="0x0A00" Offset="0x66240" />
|
||||
<Blob Name="icon_item_static_yar_Blob_066C40" Size="0x0A00" Offset="0x66C40" />
|
||||
<Blob Name="icon_item_static_yar_Blob_067640" Size="0x0A00" Offset="0x67640" />
|
||||
<Blob Name="icon_item_static_yar_Blob_068040" Size="0x0A00" Offset="0x68040" />
|
||||
<Blob Name="icon_item_static_yar_Blob_068A40" Size="0x0A00" Offset="0x68A40" />
|
||||
<Blob Name="icon_item_static_yar_Blob_069440" Size="0x0A00" Offset="0x69440" />
|
||||
<Blob Name="icon_item_static_yar_Blob_069E40" Size="0x0A00" Offset="0x69E40" />
|
||||
<Blob Name="icon_item_static_yar_Blob_06A840" Size="0x0A00" Offset="0x6A840" />
|
||||
<Blob Name="icon_item_static_yar_Blob_06B240" Size="0x0A00" Offset="0x6B240" />
|
||||
<Blob Name="icon_item_static_yar_Blob_06BC40" Size="0x0A00" Offset="0x6BC40" />
|
||||
<Blob Name="icon_item_static_yar_Blob_06C640" Size="0x0A00" Offset="0x6C640" />
|
||||
<Blob Name="icon_item_static_yar_Blob_06D040" Size="0x0A00" Offset="0x6D040" />
|
||||
<Blob Name="icon_item_static_yar_Blob_06DA40" Size="0x0A00" Offset="0x6DA40" />
|
||||
<Blob Name="icon_item_static_yar_Blob_06E440" Size="0x0A00" Offset="0x6E440" />
|
||||
<Blob Name="icon_item_static_yar_Blob_06EE40" Size="0x0A00" Offset="0x6EE40" />
|
||||
<Blob Name="icon_item_static_yar_Blob_06F840" Size="0x0A00" Offset="0x6F840" />
|
||||
<Blob Name="icon_item_static_yar_Blob_070240" Size="0x0A00" Offset="0x70240" />
|
||||
<Blob Name="icon_item_static_yar_Blob_070C40" Size="0x0A00" Offset="0x70C40" />
|
||||
<Blob Name="icon_item_static_yar_Blob_071640" Size="0x0A00" Offset="0x71640" />
|
||||
<Blob Name="icon_item_static_yar_Blob_072040" Size="0x0A00" Offset="0x72040" />
|
||||
<Blob Name="icon_item_static_yar_Blob_072A40" Size="0x0A00" Offset="0x72A40" />
|
||||
<Blob Name="icon_item_static_yar_Blob_073440" Size="0x0A00" Offset="0x73440" />
|
||||
<Blob Name="icon_item_static_yar_Blob_073E40" Size="0x0A00" Offset="0x73E40" />
|
||||
<Blob Name="icon_item_static_yar_Blob_074840" Size="0x0A00" Offset="0x74840" />
|
||||
<Blob Name="icon_item_static_yar_Blob_075240" Size="0x0A00" Offset="0x75240" />
|
||||
<Blob Name="icon_item_static_yar_Blob_075C40" Size="0x0A00" Offset="0x75C40" />
|
||||
<Blob Name="icon_item_static_yar_Blob_076640" Size="0x0A00" Offset="0x76640" />
|
||||
<Blob Name="icon_item_static_yar_Blob_077040" Size="0x0A00" Offset="0x77040" />
|
||||
<Blob Name="icon_item_static_yar_Blob_077A40" Size="0x0A00" Offset="0x77A40" />
|
||||
<Blob Name="icon_item_static_yar_Blob_078440" Size="0x0A00" Offset="0x78440" />
|
||||
<Blob Name="icon_item_static_yar_Blob_078E40" Size="0x0A00" Offset="0x78E40" />
|
||||
<Blob Name="icon_item_static_yar_Blob_079840" Size="0x0A00" Offset="0x79840" />
|
||||
<Blob Name="icon_item_static_yar_Blob_07A240" Size="0x0A00" Offset="0x7A240" />
|
||||
<Blob Name="icon_item_static_yar_Blob_07AC40" Size="0x0A00" Offset="0x7AC40" />
|
||||
<Blob Name="icon_item_static_yar_Blob_07B640" Size="0x0A00" Offset="0x7B640" />
|
||||
<Blob Name="icon_item_static_yar_Blob_07C040" Size="0x0A00" Offset="0x7C040" />
|
||||
<Blob Name="icon_item_static_yar_Blob_07CA40" Size="0x0A00" Offset="0x7CA40" />
|
||||
<Blob Name="icon_item_static_yar_Blob_07D440" Size="0x0A00" Offset="0x7D440" />
|
||||
<Blob Name="icon_item_static_yar_Blob_07DE40" Size="0x0A00" Offset="0x7DE40" />
|
||||
<Blob Name="icon_item_static_yar_Blob_07E840" Size="0x0A00" Offset="0x7E840" />
|
||||
<Blob Name="icon_item_static_yar_Blob_07F240" Size="0x0A00" Offset="0x7F240" />
|
||||
<Blob Name="icon_item_static_yar_Blob_07FC40" Size="0x0A00" Offset="0x7FC40" />
|
||||
<Blob Name="icon_item_static_yar_Blob_080640" Size="0x0A00" Offset="0x80640" />
|
||||
<Blob Name="icon_item_static_yar_Blob_081040" Size="0x0A00" Offset="0x81040" />
|
||||
<Blob Name="icon_item_static_yar_Blob_081A40" Size="0x0A00" Offset="0x81A40" />
|
||||
<Blob Name="icon_item_static_yar_Blob_082440" Size="0x0A00" Offset="0x82440" />
|
||||
<Blob Name="icon_item_static_yar_Blob_082E40" Size="0x0A00" Offset="0x82E40" />
|
||||
<Blob Name="icon_item_static_yar_Blob_083840" Size="0x0A00" Offset="0x83840" />
|
||||
<Blob Name="icon_item_static_yar_Blob_084240" Size="0x0A00" Offset="0x84240" />
|
||||
<Blob Name="icon_item_static_yar_Blob_084C40" Size="0x0A00" Offset="0x84C40" />
|
||||
<Blob Name="icon_item_static_yar_Blob_085640" Size="0x0A00" Offset="0x85640" />
|
||||
<Blob Name="icon_item_static_yar_Blob_086040" Size="0x0A00" Offset="0x86040" />
|
||||
<Blob Name="icon_item_static_yar_Blob_086A40" Size="0x0A00" Offset="0x86A40" />
|
||||
<Blob Name="icon_item_static_yar_Blob_087440" Size="0x0A00" Offset="0x87440" />
|
||||
<Blob Name="icon_item_static_yar_Blob_087E40" Size="0x0A00" Offset="0x87E40" />
|
||||
<Blob Name="icon_item_static_yar_Blob_088840" Size="0x0A00" Offset="0x88840" />
|
||||
<Blob Name="icon_item_static_yar_Blob_089240" Size="0x0A00" Offset="0x89240" />
|
||||
<Blob Name="icon_item_static_yar_Blob_089C40" Size="0x0A00" Offset="0x89C40" />
|
||||
<Blob Name="icon_item_static_yar_Blob_08A640" Size="0x0A00" Offset="0x8A640" />
|
||||
<Blob Name="icon_item_static_yar_Blob_08B040" Size="0x0A00" Offset="0x8B040" />
|
||||
<Blob Name="icon_item_static_yar_Blob_08BA40" Size="0x0A00" Offset="0x8BA40" />
|
||||
<Blob Name="icon_item_static_yar_Blob_08C440" Size="0x0A00" Offset="0x8C440" />
|
||||
<Blob Name="icon_item_static_yar_Blob_08CE40" Size="0x0A00" Offset="0x8CE40" />
|
||||
<Blob Name="icon_item_static_yar_Blob_08D840" Size="0x0A00" Offset="0x8D840" />
|
||||
<Blob Name="icon_item_static_yar_Blob_08E240" Size="0x0A00" Offset="0x8E240" />
|
||||
<Blob Name="icon_item_static_yar_Blob_08EC40" Size="0x0A00" Offset="0x8EC40" />
|
||||
<Blob Name="icon_item_static_yar_Blob_08F640" Size="0x0A00" Offset="0x8F640" />
|
||||
<Blob Name="icon_item_static_yar_Blob_090040" Size="0x0A00" Offset="0x90040" />
|
||||
<Blob Name="icon_item_static_yar_Blob_090A40" Size="0x0A00" Offset="0x90A40" />
|
||||
<Blob Name="icon_item_static_yar_Blob_091440" Size="0x0A00" Offset="0x91440" />
|
||||
<Blob Name="icon_item_static_yar_Blob_091E40" Size="0x0A00" Offset="0x91E40" />
|
||||
<Blob Name="icon_item_static_yar_Blob_092840" Size="0x0A00" Offset="0x92840" />
|
||||
<Blob Name="icon_item_static_yar_Blob_093240" Size="0x0A00" Offset="0x93240" />
|
||||
<Blob Name="icon_item_static_yar_Blob_093C40" Size="0x0180" Offset="0x93C40" />
|
||||
<Blob Name="icon_item_static_yar_Blob_093DC0" Size="0x0180" Offset="0x93DC0" />
|
||||
<Blob Name="icon_item_static_yar_Blob_093F40" Size="0x0300" Offset="0x93F40" />
|
||||
<Blob Name="icon_item_static_yar_Blob_094240" Size="0x06C0" Offset="0x94240" />
|
||||
<Blob Name="icon_item_static_yar_Blob_094900" Size="0x06C0" Offset="0x94900" />
|
||||
<Blob Name="icon_item_static_yar_Blob_094FC0" Size="0x0300" Offset="0x94FC0" />
|
||||
<Blob Name="icon_item_static_yar_Blob_0952C0" Size="0x0300" Offset="0x952C0" />
|
||||
<Blob Name="icon_item_static_yar_Blob_0955C0" Size="0x0500" Offset="0x955C0" />
|
||||
<Blob Name="icon_item_static_yar_Blob_095AC0" Size="0x0400" Offset="0x95AC0" />
|
||||
</File>
|
||||
</Root>
|
124
assets/xml/archives/item_name_static.xml
Normal file
124
assets/xml/archives/item_name_static.xml
Normal file
@ -0,0 +1,124 @@
|
||||
<Root>
|
||||
<File Name="item_name_static.unarchive">
|
||||
<Blob Name="item_name_static_Blob_000000" Size="0x0400" Offset="0x0" />
|
||||
<Blob Name="item_name_static_Blob_000400" Size="0x0400" Offset="0x400" />
|
||||
<Blob Name="item_name_static_Blob_000800" Size="0x0400" Offset="0x800" />
|
||||
<Blob Name="item_name_static_Blob_000C00" Size="0x0400" Offset="0xC00" />
|
||||
<Blob Name="item_name_static_Blob_001000" Size="0x0400" Offset="0x1000" />
|
||||
<Blob Name="item_name_static_Blob_001400" Size="0x0400" Offset="0x1400" />
|
||||
<Blob Name="item_name_static_Blob_001800" Size="0x0400" Offset="0x1800" />
|
||||
<Blob Name="item_name_static_Blob_001C00" Size="0x0400" Offset="0x1C00" />
|
||||
<Blob Name="item_name_static_Blob_002000" Size="0x0400" Offset="0x2000" />
|
||||
<Blob Name="item_name_static_Blob_002400" Size="0x0400" Offset="0x2400" />
|
||||
<Blob Name="item_name_static_Blob_002800" Size="0x0400" Offset="0x2800" />
|
||||
<Blob Name="item_name_static_Blob_002C00" Size="0x0400" Offset="0x2C00" />
|
||||
<Blob Name="item_name_static_Blob_003000" Size="0x0400" Offset="0x3000" />
|
||||
<Blob Name="item_name_static_Blob_003400" Size="0x0400" Offset="0x3400" />
|
||||
<Blob Name="item_name_static_Blob_003800" Size="0x0400" Offset="0x3800" />
|
||||
<Blob Name="item_name_static_Blob_003C00" Size="0x0400" Offset="0x3C00" />
|
||||
<Blob Name="item_name_static_Blob_004000" Size="0x0400" Offset="0x4000" />
|
||||
<Blob Name="item_name_static_Blob_004400" Size="0x0400" Offset="0x4400" />
|
||||
<Blob Name="item_name_static_Blob_004800" Size="0x0400" Offset="0x4800" />
|
||||
<Blob Name="item_name_static_Blob_004C00" Size="0x0400" Offset="0x4C00" />
|
||||
<Blob Name="item_name_static_Blob_005000" Size="0x0400" Offset="0x5000" />
|
||||
<Blob Name="item_name_static_Blob_005400" Size="0x0400" Offset="0x5400" />
|
||||
<Blob Name="item_name_static_Blob_005800" Size="0x0400" Offset="0x5800" />
|
||||
<Blob Name="item_name_static_Blob_005C00" Size="0x0400" Offset="0x5C00" />
|
||||
<Blob Name="item_name_static_Blob_006000" Size="0x0400" Offset="0x6000" />
|
||||
<Blob Name="item_name_static_Blob_006400" Size="0x0400" Offset="0x6400" />
|
||||
<Blob Name="item_name_static_Blob_006800" Size="0x0400" Offset="0x6800" />
|
||||
<Blob Name="item_name_static_Blob_006C00" Size="0x0400" Offset="0x6C00" />
|
||||
<Blob Name="item_name_static_Blob_007000" Size="0x0400" Offset="0x7000" />
|
||||
<Blob Name="item_name_static_Blob_007400" Size="0x0400" Offset="0x7400" />
|
||||
<Blob Name="item_name_static_Blob_007800" Size="0x0400" Offset="0x7800" />
|
||||
<Blob Name="item_name_static_Blob_007C00" Size="0x0400" Offset="0x7C00" />
|
||||
<Blob Name="item_name_static_Blob_008000" Size="0x0400" Offset="0x8000" />
|
||||
<Blob Name="item_name_static_Blob_008400" Size="0x0400" Offset="0x8400" />
|
||||
<Blob Name="item_name_static_Blob_008800" Size="0x0400" Offset="0x8800" />
|
||||
<Blob Name="item_name_static_Blob_008C00" Size="0x0400" Offset="0x8C00" />
|
||||
<Blob Name="item_name_static_Blob_009000" Size="0x0400" Offset="0x9000" />
|
||||
<Blob Name="item_name_static_Blob_009400" Size="0x0400" Offset="0x9400" />
|
||||
<Blob Name="item_name_static_Blob_009800" Size="0x0400" Offset="0x9800" />
|
||||
<Blob Name="item_name_static_Blob_009C00" Size="0x0400" Offset="0x9C00" />
|
||||
<Blob Name="item_name_static_Blob_00A000" Size="0x0400" Offset="0xA000" />
|
||||
<Blob Name="item_name_static_Blob_00A400" Size="0x0400" Offset="0xA400" />
|
||||
<Blob Name="item_name_static_Blob_00A800" Size="0x0400" Offset="0xA800" />
|
||||
<Blob Name="item_name_static_Blob_00AC00" Size="0x0400" Offset="0xAC00" />
|
||||
<Blob Name="item_name_static_Blob_00B000" Size="0x0400" Offset="0xB000" />
|
||||
<Blob Name="item_name_static_Blob_00B400" Size="0x0400" Offset="0xB400" />
|
||||
<Blob Name="item_name_static_Blob_00B800" Size="0x0400" Offset="0xB800" />
|
||||
<Blob Name="item_name_static_Blob_00BC00" Size="0x0400" Offset="0xBC00" />
|
||||
<Blob Name="item_name_static_Blob_00C000" Size="0x0400" Offset="0xC000" />
|
||||
<Blob Name="item_name_static_Blob_00C400" Size="0x0400" Offset="0xC400" />
|
||||
<Blob Name="item_name_static_Blob_00C800" Size="0x0400" Offset="0xC800" />
|
||||
<Blob Name="item_name_static_Blob_00CC00" Size="0x0400" Offset="0xCC00" />
|
||||
<Blob Name="item_name_static_Blob_00D000" Size="0x0400" Offset="0xD000" />
|
||||
<Blob Name="item_name_static_Blob_00D400" Size="0x0400" Offset="0xD400" />
|
||||
<Blob Name="item_name_static_Blob_00D800" Size="0x0400" Offset="0xD800" />
|
||||
<Blob Name="item_name_static_Blob_00DC00" Size="0x0400" Offset="0xDC00" />
|
||||
<Blob Name="item_name_static_Blob_00E000" Size="0x0400" Offset="0xE000" />
|
||||
<Blob Name="item_name_static_Blob_00E400" Size="0x0400" Offset="0xE400" />
|
||||
<Blob Name="item_name_static_Blob_00E800" Size="0x0400" Offset="0xE800" />
|
||||
<Blob Name="item_name_static_Blob_00EC00" Size="0x0400" Offset="0xEC00" />
|
||||
<Blob Name="item_name_static_Blob_00F000" Size="0x0400" Offset="0xF000" />
|
||||
<Blob Name="item_name_static_Blob_00F400" Size="0x0400" Offset="0xF400" />
|
||||
<Blob Name="item_name_static_Blob_00F800" Size="0x0400" Offset="0xF800" />
|
||||
<Blob Name="item_name_static_Blob_00FC00" Size="0x0400" Offset="0xFC00" />
|
||||
<Blob Name="item_name_static_Blob_010000" Size="0x0400" Offset="0x10000" />
|
||||
<Blob Name="item_name_static_Blob_010400" Size="0x0400" Offset="0x10400" />
|
||||
<Blob Name="item_name_static_Blob_010800" Size="0x0400" Offset="0x10800" />
|
||||
<Blob Name="item_name_static_Blob_010C00" Size="0x0400" Offset="0x10C00" />
|
||||
<Blob Name="item_name_static_Blob_011000" Size="0x0400" Offset="0x11000" />
|
||||
<Blob Name="item_name_static_Blob_011400" Size="0x0400" Offset="0x11400" />
|
||||
<Blob Name="item_name_static_Blob_011800" Size="0x0400" Offset="0x11800" />
|
||||
<Blob Name="item_name_static_Blob_011C00" Size="0x0400" Offset="0x11C00" />
|
||||
<Blob Name="item_name_static_Blob_012000" Size="0x0400" Offset="0x12000" />
|
||||
<Blob Name="item_name_static_Blob_012400" Size="0x0400" Offset="0x12400" />
|
||||
<Blob Name="item_name_static_Blob_012800" Size="0x0400" Offset="0x12800" />
|
||||
<Blob Name="item_name_static_Blob_012C00" Size="0x0400" Offset="0x12C00" />
|
||||
<Blob Name="item_name_static_Blob_013000" Size="0x0400" Offset="0x13000" />
|
||||
<Blob Name="item_name_static_Blob_013400" Size="0x0400" Offset="0x13400" />
|
||||
<Blob Name="item_name_static_Blob_013800" Size="0x0400" Offset="0x13800" />
|
||||
<Blob Name="item_name_static_Blob_013C00" Size="0x0400" Offset="0x13C00" />
|
||||
<Blob Name="item_name_static_Blob_014000" Size="0x0400" Offset="0x14000" />
|
||||
<Blob Name="item_name_static_Blob_014400" Size="0x0400" Offset="0x14400" />
|
||||
<Blob Name="item_name_static_Blob_014800" Size="0x0400" Offset="0x14800" />
|
||||
<Blob Name="item_name_static_Blob_014C00" Size="0x0400" Offset="0x14C00" />
|
||||
<Blob Name="item_name_static_Blob_015000" Size="0x0400" Offset="0x15000" />
|
||||
<Blob Name="item_name_static_Blob_015400" Size="0x0400" Offset="0x15400" />
|
||||
<Blob Name="item_name_static_Blob_015800" Size="0x0400" Offset="0x15800" />
|
||||
<Blob Name="item_name_static_Blob_015C00" Size="0x0400" Offset="0x15C00" />
|
||||
<Blob Name="item_name_static_Blob_016000" Size="0x0400" Offset="0x16000" />
|
||||
<Blob Name="item_name_static_Blob_016400" Size="0x0400" Offset="0x16400" />
|
||||
<Blob Name="item_name_static_Blob_016800" Size="0x0400" Offset="0x16800" />
|
||||
<Blob Name="item_name_static_Blob_016C00" Size="0x0400" Offset="0x16C00" />
|
||||
<Blob Name="item_name_static_Blob_017000" Size="0x0400" Offset="0x17000" />
|
||||
<Blob Name="item_name_static_Blob_017400" Size="0x0400" Offset="0x17400" />
|
||||
<Blob Name="item_name_static_Blob_017800" Size="0x0400" Offset="0x17800" />
|
||||
<Blob Name="item_name_static_Blob_017C00" Size="0x0400" Offset="0x17C00" />
|
||||
<Blob Name="item_name_static_Blob_018000" Size="0x0400" Offset="0x18000" />
|
||||
<Blob Name="item_name_static_Blob_018400" Size="0x0400" Offset="0x18400" />
|
||||
<Blob Name="item_name_static_Blob_018800" Size="0x0400" Offset="0x18800" />
|
||||
<Blob Name="item_name_static_Blob_018C00" Size="0x0400" Offset="0x18C00" />
|
||||
<Blob Name="item_name_static_Blob_019000" Size="0x0400" Offset="0x19000" />
|
||||
<Blob Name="item_name_static_Blob_019400" Size="0x0400" Offset="0x19400" />
|
||||
<Blob Name="item_name_static_Blob_019800" Size="0x0400" Offset="0x19800" />
|
||||
<Blob Name="item_name_static_Blob_019C00" Size="0x0400" Offset="0x19C00" />
|
||||
<Blob Name="item_name_static_Blob_01A000" Size="0x0400" Offset="0x1A000" />
|
||||
<Blob Name="item_name_static_Blob_01A400" Size="0x0400" Offset="0x1A400" />
|
||||
<Blob Name="item_name_static_Blob_01A800" Size="0x0400" Offset="0x1A800" />
|
||||
<Blob Name="item_name_static_Blob_01AC00" Size="0x0400" Offset="0x1AC00" />
|
||||
<Blob Name="item_name_static_Blob_01B000" Size="0x0400" Offset="0x1B000" />
|
||||
<Blob Name="item_name_static_Blob_01B400" Size="0x0400" Offset="0x1B400" />
|
||||
<Blob Name="item_name_static_Blob_01B800" Size="0x0400" Offset="0x1B800" />
|
||||
<Blob Name="item_name_static_Blob_01BC00" Size="0x0400" Offset="0x1BC00" />
|
||||
<Blob Name="item_name_static_Blob_01C000" Size="0x0400" Offset="0x1C000" />
|
||||
<Blob Name="item_name_static_Blob_01C400" Size="0x0400" Offset="0x1C400" />
|
||||
<Blob Name="item_name_static_Blob_01C800" Size="0x0400" Offset="0x1C800" />
|
||||
<Blob Name="item_name_static_Blob_01CC00" Size="0x0400" Offset="0x1CC00" />
|
||||
<Blob Name="item_name_static_Blob_01D000" Size="0x0400" Offset="0x1D000" />
|
||||
<Blob Name="item_name_static_Blob_01D400" Size="0x0400" Offset="0x1D400" />
|
||||
<Blob Name="item_name_static_Blob_01D800" Size="0x0400" Offset="0x1D800" />
|
||||
<Blob Name="item_name_static_Blob_01DC00" Size="0x0400" Offset="0x1DC00" />
|
||||
</File>
|
||||
</Root>
|
102
assets/xml/archives/map_grand_static.xml
Normal file
102
assets/xml/archives/map_grand_static.xml
Normal file
@ -0,0 +1,102 @@
|
||||
<Root>
|
||||
<File Name="map_grand_static.unarchive">
|
||||
<Blob Name="map_grand_static_Blob_000000" Size="0x0FF0" Offset="0x0" />
|
||||
<Blob Name="map_grand_static_Blob_000FF0" Size="0x0FF0" Offset="0xFF0" />
|
||||
<Blob Name="map_grand_static_Blob_001FE0" Size="0x0FF0" Offset="0x1FE0" />
|
||||
<Blob Name="map_grand_static_Blob_002FD0" Size="0x0FF0" Offset="0x2FD0" />
|
||||
<Blob Name="map_grand_static_Blob_003FC0" Size="0x0FF0" Offset="0x3FC0" />
|
||||
<Blob Name="map_grand_static_Blob_004FB0" Size="0x0B40" Offset="0x4FB0" />
|
||||
<Blob Name="map_grand_static_Blob_005AF0" Size="0x0FF0" Offset="0x5AF0" />
|
||||
<Blob Name="map_grand_static_Blob_006AE0" Size="0x0FF0" Offset="0x6AE0" />
|
||||
<Blob Name="map_grand_static_Blob_007AD0" Size="0x0FF0" Offset="0x7AD0" />
|
||||
<Blob Name="map_grand_static_Blob_008AC0" Size="0x0FF0" Offset="0x8AC0" />
|
||||
<Blob Name="map_grand_static_Blob_009AB0" Size="0x0420" Offset="0x9AB0" />
|
||||
<Blob Name="map_grand_static_Blob_009ED0" Size="0x0FF0" Offset="0x9ED0" />
|
||||
<Blob Name="map_grand_static_Blob_00AEC0" Size="0x0450" Offset="0xAEC0" />
|
||||
<Blob Name="map_grand_static_Blob_00B310" Size="0x07A0" Offset="0xB310" />
|
||||
<Blob Name="map_grand_static_Blob_00BAB0" Size="0x0FF0" Offset="0xBAB0" />
|
||||
<Blob Name="map_grand_static_Blob_00CAA0" Size="0x0FF0" Offset="0xCAA0" />
|
||||
<Blob Name="map_grand_static_Blob_00DA90" Size="0x0FF0" Offset="0xDA90" />
|
||||
<Blob Name="map_grand_static_Blob_00EA80" Size="0x0780" Offset="0xEA80" />
|
||||
<Blob Name="map_grand_static_Blob_00F200" Size="0x0800" Offset="0xF200" />
|
||||
<Blob Name="map_grand_static_Blob_00FA00" Size="0x0850" Offset="0xFA00" />
|
||||
<Blob Name="map_grand_static_Blob_010250" Size="0x0510" Offset="0x10250" />
|
||||
<Blob Name="map_grand_static_Blob_010760" Size="0x0710" Offset="0x10760" />
|
||||
<Blob Name="map_grand_static_Blob_010E70" Size="0x0AE0" Offset="0x10E70" />
|
||||
<Blob Name="map_grand_static_Blob_011950" Size="0x0660" Offset="0x11950" />
|
||||
<Blob Name="map_grand_static_Blob_011FB0" Size="0x0C60" Offset="0x11FB0" />
|
||||
<Blob Name="map_grand_static_Blob_012C10" Size="0x0E10" Offset="0x12C10" />
|
||||
<Blob Name="map_grand_static_Blob_013A20" Size="0x03E0" Offset="0x13A20" />
|
||||
<Blob Name="map_grand_static_Blob_013E00" Size="0x05A0" Offset="0x13E00" />
|
||||
<Blob Name="map_grand_static_Blob_0143A0" Size="0x0820" Offset="0x143A0" />
|
||||
<Blob Name="map_grand_static_Blob_014BC0" Size="0x0440" Offset="0x14BC0" />
|
||||
<Blob Name="map_grand_static_Blob_015000" Size="0x0590" Offset="0x15000" />
|
||||
<Blob Name="map_grand_static_Blob_015590" Size="0x05A0" Offset="0x15590" />
|
||||
<Blob Name="map_grand_static_Blob_015B30" Size="0x07A0" Offset="0x15B30" />
|
||||
<Blob Name="map_grand_static_Blob_0162D0" Size="0x07A0" Offset="0x162D0" />
|
||||
<Blob Name="map_grand_static_Blob_016A70" Size="0x0DF0" Offset="0x16A70" />
|
||||
<Blob Name="map_grand_static_Blob_017860" Size="0x0850" Offset="0x17860" />
|
||||
<Blob Name="map_grand_static_Blob_0180B0" Size="0x09C0" Offset="0x180B0" />
|
||||
<Blob Name="map_grand_static_Blob_018A70" Size="0x0880" Offset="0x18A70" />
|
||||
<Blob Name="map_grand_static_Blob_0192F0" Size="0x0660" Offset="0x192F0" />
|
||||
<Blob Name="map_grand_static_Blob_019950" Size="0x0360" Offset="0x19950" />
|
||||
<Blob Name="map_grand_static_Blob_019CB0" Size="0x0260" Offset="0x19CB0" />
|
||||
<Blob Name="map_grand_static_Blob_019F10" Size="0x0960" Offset="0x19F10" />
|
||||
<Blob Name="map_grand_static_Blob_01A870" Size="0x0350" Offset="0x1A870" />
|
||||
<Blob Name="map_grand_static_Blob_01ABC0" Size="0x09B0" Offset="0x1ABC0" />
|
||||
<Blob Name="map_grand_static_Blob_01B570" Size="0x0980" Offset="0x1B570" />
|
||||
<Blob Name="map_grand_static_Blob_01BEF0" Size="0x0FF0" Offset="0x1BEF0" />
|
||||
<Blob Name="map_grand_static_Blob_01CEE0" Size="0x0B20" Offset="0x1CEE0" />
|
||||
<Blob Name="map_grand_static_Blob_01DA00" Size="0x0DA0" Offset="0x1DA00" />
|
||||
<Blob Name="map_grand_static_Blob_01E7A0" Size="0x0820" Offset="0x1E7A0" />
|
||||
<Blob Name="map_grand_static_Blob_01EFC0" Size="0x03E0" Offset="0x1EFC0" />
|
||||
<Blob Name="map_grand_static_Blob_01F3A0" Size="0x0980" Offset="0x1F3A0" />
|
||||
<Blob Name="map_grand_static_Blob_01FD20" Size="0x0960" Offset="0x1FD20" />
|
||||
<Blob Name="map_grand_static_Blob_020680" Size="0x0760" Offset="0x20680" />
|
||||
<Blob Name="map_grand_static_Blob_020DE0" Size="0x0960" Offset="0x20DE0" />
|
||||
<Blob Name="map_grand_static_Blob_021740" Size="0x01D0" Offset="0x21740" />
|
||||
<Blob Name="map_grand_static_Blob_021910" Size="0x0630" Offset="0x21910" />
|
||||
<Blob Name="map_grand_static_Blob_021F40" Size="0x0680" Offset="0x21F40" />
|
||||
<Blob Name="map_grand_static_Blob_0225C0" Size="0x07D0" Offset="0x225C0" />
|
||||
<Blob Name="map_grand_static_Blob_022D90" Size="0x0870" Offset="0x22D90" />
|
||||
<Blob Name="map_grand_static_Blob_023600" Size="0x0E60" Offset="0x23600" />
|
||||
<Blob Name="map_grand_static_Blob_024460" Size="0x0710" Offset="0x24460" />
|
||||
<Blob Name="map_grand_static_Blob_024B70" Size="0x0620" Offset="0x24B70" />
|
||||
<Blob Name="map_grand_static_Blob_025190" Size="0x0620" Offset="0x25190" />
|
||||
<Blob Name="map_grand_static_Blob_0257B0" Size="0x0680" Offset="0x257B0" />
|
||||
<Blob Name="map_grand_static_Blob_025E30" Size="0x0620" Offset="0x25E30" />
|
||||
<Blob Name="map_grand_static_Blob_026450" Size="0x0210" Offset="0x26450" />
|
||||
<Blob Name="map_grand_static_Blob_026660" Size="0x04B0" Offset="0x26660" />
|
||||
<Blob Name="map_grand_static_Blob_026B10" Size="0x0680" Offset="0x26B10" />
|
||||
<Blob Name="map_grand_static_Blob_027190" Size="0x0350" Offset="0x27190" />
|
||||
<Blob Name="map_grand_static_Blob_0274E0" Size="0x0660" Offset="0x274E0" />
|
||||
<Blob Name="map_grand_static_Blob_027B40" Size="0x0350" Offset="0x27B40" />
|
||||
<Blob Name="map_grand_static_Blob_027E90" Size="0x0500" Offset="0x27E90" />
|
||||
<Blob Name="map_grand_static_Blob_028390" Size="0x06A0" Offset="0x28390" />
|
||||
<Blob Name="map_grand_static_Blob_028A30" Size="0x05E0" Offset="0x28A30" />
|
||||
<Blob Name="map_grand_static_Blob_029010" Size="0x0680" Offset="0x29010" />
|
||||
<Blob Name="map_grand_static_Blob_029690" Size="0x0480" Offset="0x29690" />
|
||||
<Blob Name="map_grand_static_Blob_029B10" Size="0x0AE0" Offset="0x29B10" />
|
||||
<Blob Name="map_grand_static_Blob_02A5F0" Size="0x02D0" Offset="0x2A5F0" />
|
||||
<Blob Name="map_grand_static_Blob_02A8C0" Size="0x0B90" Offset="0x2A8C0" />
|
||||
<Blob Name="map_grand_static_Blob_02B450" Size="0x0DA0" Offset="0x2B450" />
|
||||
<Blob Name="map_grand_static_Blob_02C1F0" Size="0x08C0" Offset="0x2C1F0" />
|
||||
<Blob Name="map_grand_static_Blob_02CAB0" Size="0x0A30" Offset="0x2CAB0" />
|
||||
<Blob Name="map_grand_static_Blob_02D4E0" Size="0x0130" Offset="0x2D4E0" />
|
||||
<Blob Name="map_grand_static_Blob_02D610" Size="0x0C30" Offset="0x2D610" />
|
||||
<Blob Name="map_grand_static_Blob_02E240" Size="0x08A0" Offset="0x2E240" />
|
||||
<Blob Name="map_grand_static_Blob_02EAE0" Size="0x0F50" Offset="0x2EAE0" />
|
||||
<Blob Name="map_grand_static_Blob_02FA30" Size="0x09B0" Offset="0x2FA30" />
|
||||
<Blob Name="map_grand_static_Blob_0303E0" Size="0x07B0" Offset="0x303E0" />
|
||||
<Blob Name="map_grand_static_Blob_030B90" Size="0x0960" Offset="0x30B90" />
|
||||
<Blob Name="map_grand_static_Blob_0314F0" Size="0x0740" Offset="0x314F0" />
|
||||
<Blob Name="map_grand_static_Blob_031C30" Size="0x0A00" Offset="0x31C30" />
|
||||
<Blob Name="map_grand_static_Blob_032630" Size="0x0640" Offset="0x32630" />
|
||||
<Blob Name="map_grand_static_Blob_032C70" Size="0x0A30" Offset="0x32C70" />
|
||||
<Blob Name="map_grand_static_Blob_0336A0" Size="0x03D0" Offset="0x336A0" />
|
||||
<Blob Name="map_grand_static_Blob_033A70" Size="0x0D00" Offset="0x33A70" />
|
||||
<Blob Name="map_grand_static_Blob_034770" Size="0x0440" Offset="0x34770" />
|
||||
<Blob Name="map_grand_static_Blob_034BB0" Size="0x03A0" Offset="0x34BB0" />
|
||||
<Blob Name="map_grand_static_Blob_034F50" Size="0x0960" Offset="0x34F50" />
|
||||
</File>
|
||||
</Root>
|
62
assets/xml/archives/map_i_static.xml
Normal file
62
assets/xml/archives/map_i_static.xml
Normal file
@ -0,0 +1,62 @@
|
||||
<Root>
|
||||
<File Name="map_i_static.unarchive">
|
||||
<Blob Name="map_i_static_Blob_000000" Size="0x0FF0" Offset="0x0" />
|
||||
<Blob Name="map_i_static_Blob_000FF0" Size="0x0FF0" Offset="0xFF0" />
|
||||
<Blob Name="map_i_static_Blob_001FE0" Size="0x0FF0" Offset="0x1FE0" />
|
||||
<Blob Name="map_i_static_Blob_002FD0" Size="0x0FF0" Offset="0x2FD0" />
|
||||
<Blob Name="map_i_static_Blob_003FC0" Size="0x0FF0" Offset="0x3FC0" />
|
||||
<Blob Name="map_i_static_Blob_004FB0" Size="0x01D0" Offset="0x4FB0" />
|
||||
<Blob Name="map_i_static_Blob_005180" Size="0x01B0" Offset="0x5180" />
|
||||
<Blob Name="map_i_static_Blob_005330" Size="0x01E0" Offset="0x5330" />
|
||||
<Blob Name="map_i_static_Blob_005510" Size="0x0100" Offset="0x5510" />
|
||||
<Blob Name="map_i_static_Blob_005610" Size="0x0060" Offset="0x5610" />
|
||||
<Blob Name="map_i_static_Blob_005670" Size="0x01B0" Offset="0x5670" />
|
||||
<Blob Name="map_i_static_Blob_005820" Size="0x0070" Offset="0x5820" />
|
||||
<Blob Name="map_i_static_Blob_005890" Size="0x0130" Offset="0x5890" />
|
||||
<Blob Name="map_i_static_Blob_0059C0" Size="0x01A0" Offset="0x59C0" />
|
||||
<Blob Name="map_i_static_Blob_005B60" Size="0x0100" Offset="0x5B60" />
|
||||
<Blob Name="map_i_static_Blob_005C60" Size="0x01B0" Offset="0x5C60" />
|
||||
<Blob Name="map_i_static_Blob_005E10" Size="0x0120" Offset="0x5E10" />
|
||||
<Blob Name="map_i_static_Blob_005F30" Size="0x0120" Offset="0x5F30" />
|
||||
<Blob Name="map_i_static_Blob_006050" Size="0x0260" Offset="0x6050" />
|
||||
<Blob Name="map_i_static_Blob_0062B0" Size="0x0150" Offset="0x62B0" />
|
||||
<Blob Name="map_i_static_Blob_006400" Size="0x0220" Offset="0x6400" />
|
||||
<Blob Name="map_i_static_Blob_006620" Size="0x0300" Offset="0x6620" />
|
||||
<Blob Name="map_i_static_Blob_006920" Size="0x0110" Offset="0x6920" />
|
||||
<Blob Name="map_i_static_Blob_006A30" Size="0x0110" Offset="0x6A30" />
|
||||
<Blob Name="map_i_static_Blob_006B40" Size="0x0150" Offset="0x6B40" />
|
||||
<Blob Name="map_i_static_Blob_006C90" Size="0x0120" Offset="0x6C90" />
|
||||
<Blob Name="map_i_static_Blob_006DB0" Size="0x00C0" Offset="0x6DB0" />
|
||||
<Blob Name="map_i_static_Blob_006E70" Size="0x00D0" Offset="0x6E70" />
|
||||
<Blob Name="map_i_static_Blob_006F40" Size="0x0230" Offset="0x6F40" />
|
||||
<Blob Name="map_i_static_Blob_007170" Size="0x00A0" Offset="0x7170" />
|
||||
<Blob Name="map_i_static_Blob_007210" Size="0x01C0" Offset="0x7210" />
|
||||
<Blob Name="map_i_static_Blob_0073D0" Size="0x0100" Offset="0x73D0" />
|
||||
<Blob Name="map_i_static_Blob_0074D0" Size="0x0180" Offset="0x74D0" />
|
||||
<Blob Name="map_i_static_Blob_007650" Size="0x0150" Offset="0x7650" />
|
||||
<Blob Name="map_i_static_Blob_0077A0" Size="0x00B0" Offset="0x77A0" />
|
||||
<Blob Name="map_i_static_Blob_007850" Size="0x0050" Offset="0x7850" />
|
||||
<Blob Name="map_i_static_Blob_0078A0" Size="0x0040" Offset="0x78A0" />
|
||||
<Blob Name="map_i_static_Blob_0078E0" Size="0x0170" Offset="0x78E0" />
|
||||
<Blob Name="map_i_static_Blob_007A50" Size="0x0080" Offset="0x7A50" />
|
||||
<Blob Name="map_i_static_Blob_007AD0" Size="0x0090" Offset="0x7AD0" />
|
||||
<Blob Name="map_i_static_Blob_007B60" Size="0x00C0" Offset="0x7B60" />
|
||||
<Blob Name="map_i_static_Blob_007C20" Size="0x0080" Offset="0x7C20" />
|
||||
<Blob Name="map_i_static_Blob_007CA0" Size="0x00F0" Offset="0x7CA0" />
|
||||
<Blob Name="map_i_static_Blob_007D90" Size="0x0110" Offset="0x7D90" />
|
||||
<Blob Name="map_i_static_Blob_007EA0" Size="0x0100" Offset="0x7EA0" />
|
||||
<Blob Name="map_i_static_Blob_007FA0" Size="0x0050" Offset="0x7FA0" />
|
||||
<Blob Name="map_i_static_Blob_007FF0" Size="0x0090" Offset="0x7FF0" />
|
||||
<Blob Name="map_i_static_Blob_008080" Size="0x0110" Offset="0x8080" />
|
||||
<Blob Name="map_i_static_Blob_008190" Size="0x0060" Offset="0x8190" />
|
||||
<Blob Name="map_i_static_Blob_0081F0" Size="0x0110" Offset="0x81F0" />
|
||||
<Blob Name="map_i_static_Blob_008300" Size="0x0060" Offset="0x8300" />
|
||||
<Blob Name="map_i_static_Blob_008360" Size="0x0090" Offset="0x8360" />
|
||||
<Blob Name="map_i_static_Blob_0083F0" Size="0x0110" Offset="0x83F0" />
|
||||
<Blob Name="map_i_static_Blob_008500" Size="0x00F0" Offset="0x8500" />
|
||||
<Blob Name="map_i_static_Blob_0085F0" Size="0x0090" Offset="0x85F0" />
|
||||
<Blob Name="map_i_static_Blob_008680" Size="0x0080" Offset="0x8680" />
|
||||
<Blob Name="map_i_static_Blob_008700" Size="0x00F0" Offset="0x8700" />
|
||||
<Blob Name="map_i_static_Blob_0087F0" Size="0x0050" Offset="0x87F0" />
|
||||
</File>
|
||||
</Root>
|
20
assets/xml/archives/map_name_static.xml
Normal file
20
assets/xml/archives/map_name_static.xml
Normal file
@ -0,0 +1,20 @@
|
||||
<Root>
|
||||
<File Name="map_name_static.unarchive">
|
||||
<Blob Name="map_name_static_Blob_000000" Size="0x0400" Offset="0x0" />
|
||||
<Blob Name="map_name_static_Blob_000400" Size="0x0400" Offset="0x400" />
|
||||
<Blob Name="map_name_static_Blob_000800" Size="0x0400" Offset="0x800" />
|
||||
<Blob Name="map_name_static_Blob_000C00" Size="0x0400" Offset="0xC00" />
|
||||
<Blob Name="map_name_static_Blob_001000" Size="0x0400" Offset="0x1000" />
|
||||
<Blob Name="map_name_static_Blob_001400" Size="0x0400" Offset="0x1400" />
|
||||
<Blob Name="map_name_static_Blob_001800" Size="0x0400" Offset="0x1800" />
|
||||
<Blob Name="map_name_static_Blob_001C00" Size="0x0400" Offset="0x1C00" />
|
||||
<Blob Name="map_name_static_Blob_002000" Size="0x0400" Offset="0x2000" />
|
||||
<Blob Name="map_name_static_Blob_002400" Size="0x0400" Offset="0x2400" />
|
||||
<Blob Name="map_name_static_Blob_002800" Size="0x0400" Offset="0x2800" />
|
||||
<Blob Name="map_name_static_Blob_002C00" Size="0x0400" Offset="0x2C00" />
|
||||
<Blob Name="map_name_static_Blob_003000" Size="0x0400" Offset="0x3000" />
|
||||
<Blob Name="map_name_static_Blob_003400" Size="0x0400" Offset="0x3400" />
|
||||
<Blob Name="map_name_static_Blob_003800" Size="0x0400" Offset="0x3800" />
|
||||
<Blob Name="map_name_static_Blob_003C00" Size="0x0400" Offset="0x3C00" />
|
||||
</File>
|
||||
</Root>
|
28
assets/xml/archives/schedule_dma_static.xml
Normal file
28
assets/xml/archives/schedule_dma_static.xml
Normal file
@ -0,0 +1,28 @@
|
||||
<Root>
|
||||
<File Name="schedule_dma_static_yar.unarchive" Segment="7">
|
||||
<Blob Name="schedule_dma_static_yar_Blob_000000" Size="0x0800" Offset="0x0" />
|
||||
<Blob Name="schedule_dma_static_yar_Blob_000800" Size="0x0800" Offset="0x800" />
|
||||
<Blob Name="schedule_dma_static_yar_Blob_001000" Size="0x0800" Offset="0x1000" />
|
||||
<Blob Name="schedule_dma_static_yar_Blob_001800" Size="0x0800" Offset="0x1800" />
|
||||
<Blob Name="schedule_dma_static_yar_Blob_002000" Size="0x0800" Offset="0x2000" />
|
||||
<Blob Name="schedule_dma_static_yar_Blob_002800" Size="0x0800" Offset="0x2800" />
|
||||
<Blob Name="schedule_dma_static_yar_Blob_003000" Size="0x0800" Offset="0x3000" />
|
||||
<Blob Name="schedule_dma_static_yar_Blob_003800" Size="0x0800" Offset="0x3800" />
|
||||
<Blob Name="schedule_dma_static_yar_Blob_004000" Size="0x0800" Offset="0x4000" />
|
||||
<Blob Name="schedule_dma_static_yar_Blob_004800" Size="0x0800" Offset="0x4800" />
|
||||
<Blob Name="schedule_dma_static_yar_Blob_005000" Size="0x0800" Offset="0x5000" />
|
||||
<Blob Name="schedule_dma_static_yar_Blob_005800" Size="0x0800" Offset="0x5800" />
|
||||
<Blob Name="schedule_dma_static_yar_Blob_006000" Size="0x0800" Offset="0x6000" />
|
||||
<Blob Name="schedule_dma_static_yar_Blob_006800" Size="0x0800" Offset="0x6800" />
|
||||
<Blob Name="schedule_dma_static_yar_Blob_007000" Size="0x0800" Offset="0x7000" />
|
||||
<Blob Name="schedule_dma_static_yar_Blob_007800" Size="0x0800" Offset="0x7800" />
|
||||
<Blob Name="schedule_dma_static_yar_Blob_008000" Size="0x0800" Offset="0x8000" />
|
||||
<Blob Name="schedule_dma_static_yar_Blob_008800" Size="0x0800" Offset="0x8800" />
|
||||
<Blob Name="schedule_dma_static_yar_Blob_009000" Size="0x0800" Offset="0x9000" />
|
||||
<Blob Name="schedule_dma_static_yar_Blob_009800" Size="0x0800" Offset="0x9800" />
|
||||
<Blob Name="schedule_dma_static_yar_Blob_00A000" Size="0x0800" Offset="0xA000" />
|
||||
<Blob Name="schedule_dma_static_yar_Blob_00A800" Size="0x0400" Offset="0xA800" />
|
||||
<Blob Name="schedule_dma_static_yar_Blob_00AC00" Size="0x02A0" Offset="0xAC00" />
|
||||
<Blob Name="schedule_dma_static_yar_Blob_00AEA0" Size="0x0380" Offset="0xAEA0" />
|
||||
</File>
|
||||
</Root>
|
@ -1,54 +1,83 @@
|
||||
<Root>
|
||||
<File Name="object_firefly" Segment="6">
|
||||
<Animation Name="object_firefly_Anim_00017C" Offset="0x17C" /> <!-- Original name is "firefly_foot_fly" -->
|
||||
<Texture Name="object_firefly_Tex_000190" OutName="tex_000190" Format="rgba16" Width="8" Height="8" Offset="0x190" />
|
||||
<Texture Name="object_firefly_Tex_000210" OutName="tex_000210" Format="rgba16" Width="8" Height="8" Offset="0x210" />
|
||||
<Texture Name="object_firefly_Tex_000290" OutName="tex_000290" Format="rgba16" Width="8" Height="8" Offset="0x290" />
|
||||
<Texture Name="object_firefly_Tex_000310" OutName="tex_000310" Format="rgba16" Width="16" Height="8" Offset="0x310" />
|
||||
<Texture Name="object_firefly_Tex_000410" OutName="tex_000410" Format="rgba16" Width="8" Height="16" Offset="0x410" />
|
||||
<Texture Name="object_firefly_Tex_000510" OutName="tex_000510" Format="rgba16" Width="4" Height="16" Offset="0x510" />
|
||||
<Texture Name="object_firefly_Tex_000590" OutName="tex_000590" Format="rgba16" Width="8" Height="8" Offset="0x590" />
|
||||
<Texture Name="object_firefly_Tex_000610" OutName="tex_000610" Format="rgba16" Width="8" Height="16" Offset="0x610" />
|
||||
<Texture Name="object_firefly_Tex_000710" OutName="tex_000710" Format="rgba16" Width="4" Height="16" Offset="0x710" />
|
||||
<Texture Name="object_firefly_Tex_000790" OutName="tex_000790" Format="rgba16" Width="16" Height="8" Offset="0x790" />
|
||||
<DList Name="object_firefly_DL_000D30" Offset="0xD30" />
|
||||
<DList Name="object_firefly_DL_000F40" Offset="0xF40" />
|
||||
<DList Name="object_firefly_DL_001038" Offset="0x1038" />
|
||||
<DList Name="object_firefly_DL_001100" Offset="0x1100" />
|
||||
<DList Name="object_firefly_DL_0011C8" Offset="0x11C8" />
|
||||
<DList Name="object_firefly_DL_001290" Offset="0x1290" />
|
||||
<DList Name="object_firefly_DL_001358" Offset="0x1358" />
|
||||
<DList Name="object_firefly_DL_001420" Offset="0x1420" />
|
||||
<DList Name="object_firefly_DL_0014E8" Offset="0x14E8" />
|
||||
<DList Name="object_firefly_DL_0015B0" Offset="0x15B0" />
|
||||
<DList Name="object_firefly_DL_001678" Offset="0x1678" />
|
||||
<Limb Name="object_firefly_Standardlimb_001708" Type="Standard" EnumName="OBJECT_FIREFLY_LIMB_01" Offset="0x1708" />
|
||||
<Limb Name="object_firefly_Standardlimb_001714" Type="Standard" EnumName="OBJECT_FIREFLY_LIMB_02" Offset="0x1714" />
|
||||
<Limb Name="object_firefly_Standardlimb_001720" Type="Standard" EnumName="OBJECT_FIREFLY_LIMB_03" Offset="0x1720" />
|
||||
<Limb Name="object_firefly_Standardlimb_00172C" Type="Standard" EnumName="OBJECT_FIREFLY_LIMB_04" Offset="0x172C" />
|
||||
<Limb Name="object_firefly_Standardlimb_001738" Type="Standard" EnumName="OBJECT_FIREFLY_LIMB_05" Offset="0x1738" />
|
||||
<Limb Name="object_firefly_Standardlimb_001744" Type="Standard" EnumName="OBJECT_FIREFLY_LIMB_06" Offset="0x1744" />
|
||||
<Limb Name="object_firefly_Standardlimb_001750" Type="Standard" EnumName="OBJECT_FIREFLY_LIMB_07" Offset="0x1750" />
|
||||
<Limb Name="object_firefly_Standardlimb_00175C" Type="Standard" EnumName="OBJECT_FIREFLY_LIMB_08" Offset="0x175C" />
|
||||
<Limb Name="object_firefly_Standardlimb_001768" Type="Standard" EnumName="OBJECT_FIREFLY_LIMB_09" Offset="0x1768" />
|
||||
<Limb Name="object_firefly_Standardlimb_001774" Type="Standard" EnumName="OBJECT_FIREFLY_LIMB_0A" Offset="0x1774" />
|
||||
<Limb Name="object_firefly_Standardlimb_001780" Type="Standard" EnumName="OBJECT_FIREFLY_LIMB_0B" Offset="0x1780" />
|
||||
<Limb Name="object_firefly_Standardlimb_00178C" Type="Standard" EnumName="OBJECT_FIREFLY_LIMB_0C" Offset="0x178C" />
|
||||
<Limb Name="object_firefly_Standardlimb_001798" Type="Standard" EnumName="OBJECT_FIREFLY_LIMB_0D" Offset="0x1798" />
|
||||
<Limb Name="object_firefly_Standardlimb_0017A4" Type="Standard" EnumName="OBJECT_FIREFLY_LIMB_0E" Offset="0x17A4" />
|
||||
<Limb Name="object_firefly_Standardlimb_0017B0" Type="Standard" EnumName="OBJECT_FIREFLY_LIMB_0F" Offset="0x17B0" />
|
||||
<Limb Name="object_firefly_Standardlimb_0017BC" Type="Standard" EnumName="OBJECT_FIREFLY_LIMB_10" Offset="0x17BC" />
|
||||
<Limb Name="object_firefly_Standardlimb_0017C8" Type="Standard" EnumName="OBJECT_FIREFLY_LIMB_11" Offset="0x17C8" />
|
||||
<Limb Name="object_firefly_Standardlimb_0017D4" Type="Standard" EnumName="OBJECT_FIREFLY_LIMB_12" Offset="0x17D4" />
|
||||
<Limb Name="object_firefly_Standardlimb_0017E0" Type="Standard" EnumName="OBJECT_FIREFLY_LIMB_13" Offset="0x17E0" />
|
||||
<Limb Name="object_firefly_Standardlimb_0017EC" Type="Standard" EnumName="OBJECT_FIREFLY_LIMB_14" Offset="0x17EC" />
|
||||
<Limb Name="object_firefly_Standardlimb_0017F8" Type="Standard" EnumName="OBJECT_FIREFLY_LIMB_15" Offset="0x17F8" />
|
||||
<Limb Name="object_firefly_Standardlimb_001804" Type="Standard" EnumName="OBJECT_FIREFLY_LIMB_16" Offset="0x1804" />
|
||||
<Limb Name="object_firefly_Standardlimb_001810" Type="Standard" EnumName="OBJECT_FIREFLY_LIMB_17" Offset="0x1810" />
|
||||
<Limb Name="object_firefly_Standardlimb_00181C" Type="Standard" EnumName="OBJECT_FIREFLY_LIMB_18" Offset="0x181C" />
|
||||
<Limb Name="object_firefly_Standardlimb_001828" Type="Standard" EnumName="OBJECT_FIREFLY_LIMB_19" Offset="0x1828" />
|
||||
<Limb Name="object_firefly_Standardlimb_001834" Type="Standard" EnumName="OBJECT_FIREFLY_LIMB_1A" Offset="0x1834" />
|
||||
<Limb Name="object_firefly_Standardlimb_001840" Type="Standard" EnumName="OBJECT_FIREFLY_LIMB_1B" Offset="0x1840" />
|
||||
<Skeleton Name="object_firefly_Skel_0018B8" Type="Normal" LimbType="Standard" LimbNone="OBJECT_FIREFLY_LIMB_NONE" LimbMax="OBJECT_FIREFLY_LIMB_MAX" EnumName="ObjectFireflyLimb" Offset="0x18B8" />
|
||||
|
||||
<!-- Assets for the Fire Keese-->
|
||||
|
||||
<!-- Fire Keese Flying Animation-->
|
||||
<Animation Name="gFireKeeseFlyAnim" Offset="0x17C" /> <!-- Original name is "firefly_foot_fly" -->
|
||||
|
||||
<!--Fire Keese Textures-->
|
||||
<Texture Name="gFireKeeseBodyTex" OutName="fire_keese_body" Format="rgba16" Width="8" Height="8" Offset="0x210" />
|
||||
<Texture Name="gFireKeeseEyeTex" OutName="fire_keese_eye" Format="rgba16" Width="8" Height="8" Offset="0x290" />
|
||||
<Texture Name="gFireKeeseEarTex" OutName="fire_keese_ear" Format="rgba16" Width="16" Height="8" Offset="0x310" />
|
||||
<Texture Name="gFireKeeseTalonTex" OutName="fire_keese_talon" Format="rgba16" Width="8" Height="16" Offset="0x410" />
|
||||
<Texture Name="gFireKeeseWingTex" OutName="fire_keese_wing" Format="rgba16" Width="4" Height="16" Offset="0x510" />
|
||||
|
||||
<!--Regular Keese Textures-->
|
||||
<Texture Name="gKeeseRedEyeTex" OutName="keese_red_eye" Format="rgba16" Width="8" Height="8" Offset="0x190" />
|
||||
<Texture Name="gKeeseBodyTex" OutName="keese_body" Format="rgba16" Width="8" Height="8" Offset="0x590" />
|
||||
<Texture Name="gKeeseTalonTex" OutName="keese_talon" Format="rgba16" Width="8" Height="16" Offset="0x610" />
|
||||
<Texture Name="gKeeseWingTex" OutName="keese_wing" Format="rgba16" Width="4" Height="16" Offset="0x710" />
|
||||
<Texture Name="gKeeseEarTex" OutName="keese_ear" Format="rgba16" Width="16" Height="8" Offset="0x790" />
|
||||
|
||||
<!--DLists-->
|
||||
<DList Name="gFireKeeseHeadDL" Offset="0xD30" />
|
||||
<DList Name="gFireKeeseBodyDL" Offset="0xF40" />
|
||||
<DList Name="gFireKeeseLeftFootDL" Offset="0x1038" />
|
||||
<DList Name="gFireKeeseRightFootDL" Offset="0x1100" />
|
||||
<DList Name="gFireKeeseRightWingStartDL" Offset="0x11C8" />
|
||||
<DList Name="gFireKeeseRightWingMidDL" Offset="0x1290" />
|
||||
<DList Name="gFireKeeseRightWingEndDL" Offset="0x1358" />
|
||||
<DList Name="gFireKeeseLeftWingEndDL" Offset="0x1420" />
|
||||
<DList Name="gFireKeeseLeftWingMidDL" Offset="0x14E8" />
|
||||
<DList Name="gFireKeeseLeftWingStartDL" Offset="0x15B0" />
|
||||
<DList Name="gKeeseRedEyesDL" Offset="0x1678" />
|
||||
|
||||
<!--Limbs for the whole thing-->
|
||||
<Limb Name="gFireKeeseRootLimb" Type="Standard" EnumName="FIRE_KEESE_LIMB_ROOT" Offset="0x1708" />
|
||||
<Limb Name="gFireKeeseRootWrapperLimb" Type="Standard" EnumName="FIRE_KEESE_LIMB_ROOT_WRAPPER" Offset="0x1714" />
|
||||
|
||||
<!--Root Limb for all feet-->
|
||||
<Limb Name="gFireKeeseFeetRootLimb" Type="Standard" EnumName="FIRE_KEESE_LIMB_FEET_ROOT" Offset="0x1720" />
|
||||
|
||||
<!--Right Foot Limbs-->
|
||||
<Limb Name="gFireKeeseRightFootRootLimb" Type="Standard" EnumName="FIRE_KEESE_LIMB_RIGHT_FOOT_ROOT" Offset="0x172C" />
|
||||
<Limb Name="gFirekeeseRightFootWrapperLimb" Type="Standard" EnumName="FIRE_KEESE_LIMB_RIGHT_FOOT_WRAPPER" Offset="0x1738" />
|
||||
<Limb Name="gFireKeeseRightFootLimb" Type="Standard" EnumName="FIRE_KEESE_LIMB_RIGHT_FOOT" Offset="0x1744" />
|
||||
|
||||
<!--Left Foot Limbs-->
|
||||
<Limb Name="gFireKeeseLeftFootRootLimb" Type="Standard" EnumName="FIRE_KEESE_LIMB_LEFT_FOOT_ROOT" Offset="0x1750" />
|
||||
<Limb Name="gFireKeeseLeftFootWrapperLimb" Type="Standard" EnumName="FIRE_KEESE_LIMB_LEFT_FOOT_WRAPPER" Offset="0x175C" />
|
||||
<Limb Name="gFireKeeseLeftFootLimb" Type="Standard" EnumName="FIRE_KEESE_LIMB_LEFT_FOOT" Offset="0x1768" />
|
||||
|
||||
<!--Body Limb-->
|
||||
<Limb Name="gFireKeeseBodyLimb" Type="Standard" EnumName="FIRE_KEESE_LIMB_BODY" Offset="0x1774" />
|
||||
|
||||
<!--Left Wing Limbs-->
|
||||
<Limb Name="gFireKeeseLeftWingRootLimb" Type="Standard" EnumName="FIRE_KEESE_LIMB_LEFT_WING_ROOT" Offset="0x1780" />
|
||||
<Limb Name="gFireKeeseLeftWingWrapperLimb" Type="Standard" EnumName="FIRE_KEESE_LIMB_LEFT_WING_WRAPPER" Offset="0x178C" />
|
||||
<Limb Name="gFireKeeseLeftWingEndMidRootLimb" Type="Standard" EnumName="FIRE_KEESE_LIMB_LEFT_WING_END_MID_ROOT" Offset="0x1798" />
|
||||
<Limb Name="gFireKeeseLeftWingEndRootLimb" Type="Standard" EnumName="FIRE_KEESE_LIMB_LEFT_WING_END_ROOT" Offset="0x17A4" />
|
||||
<Limb Name="gFireKeeseLeftWingEndLimb" Type="Standard" EnumName="FIRE_KEESE_LIMB_LEFT_WING_END" Offset="0x17B0" />
|
||||
<Limb Name="gFireKeeseLeftWingMidLimb" Type="Standard" EnumName="FIRE_KEESE_LIMB_LEFT_WING_MID" Offset="0x17BC" />
|
||||
<Limb Name="gFireKeeseLeftWingStartLimb" Type="Standard" EnumName="FIRE_KEESE_LIMB_LEFT_WING_START" Offset="0x17C8" />
|
||||
|
||||
<!--Right Wing Limbs-->
|
||||
<Limb Name="gFireKeeseRightWingRootLimb" Type="Standard" EnumName="FIRE_KEESE_LIMB_RIGHT_WING_ROOT" Offset="0x17D4" />
|
||||
<Limb Name="gFireKeeseRightWingWrapperLimb" Type="Standard" EnumName="FIRE_KEESE_LIMB_RIGHT_WING_WRAPPER" Offset="0x17E0" />
|
||||
<Limb Name="gFireKeeseRightWingEndMidRootLimb" Type="Standard" EnumName="FIRE_KEESE_LIMB_RIGHT_WING_END_MID_ROOT" Offset="0x17EC" />
|
||||
<Limb Name="gFireKeeseRightWingEndRootLimb" Type="Standard" EnumName="FIRE_KEESE_LIMB_RIGHT_WING_END_ROOT" Offset="0x17F8" />
|
||||
<Limb Name="gFireKeeseRightWingEndLimb" Type="Standard" EnumName="FIRE_KEESE_LIMB_RIGHT_WING_END" Offset="0x1804" />
|
||||
<Limb Name="gFireKeeseRightWingMidLimb" Type="Standard" EnumName="FIRE_KEESE_LIMB_RIGHT_WING_MID" Offset="0x1810" />
|
||||
<Limb Name="gFireKeeseRightWingStartLimb" Type="Standard" EnumName="FIRE_KEESE_LIMB_RIGHT_WING_START" Offset="0x181C" />
|
||||
|
||||
<!--Head Limbs-->
|
||||
<Limb Name="gFireKeeseHeadRootLimb" Type="Standard" EnumName="FIRE_KEESE_LIMB_HEAD_ROOT" Offset="0x1828" />
|
||||
<Limb Name="gFireKeeseHeadWrapperLimb" Type="Standard" EnumName="FIRE_KEESE_LIMB_HEAD_WRAPPER" Offset="0x1834" />
|
||||
<Limb Name="gFireKeeseHeadLimb" Type="Standard" EnumName="FIRE_KEESE_LIMB_HEAD" Offset="0x1840" />
|
||||
|
||||
<!--Skeleton-->
|
||||
<Skeleton Name="gFireKeeseSkel" Type="Normal" LimbType="Standard" LimbNone="FIRE_KEESE_LIMB_NONE" LimbMax="FIRE_KEESE_LIMB_MAX" EnumName="FireKeeseLimb" Offset="0x18B8" />
|
||||
|
||||
</File>
|
||||
</Root>
|
||||
|
@ -1,9 +1,9 @@
|
||||
<Root>
|
||||
<File Name="object_snowwd" Segment="6">
|
||||
<DList Name="object_snowwd_DL_000190" Offset="0x190" />
|
||||
<DList Name="object_snowwd_DL_000198" Offset="0x198" />
|
||||
<!-- <Blob Name="object_snowwd_Blob_0002A0" Size="0x1000" Offset="0x2A0" /> -->
|
||||
<Texture Name="object_snowwd_Tex_0012A0" OutName="tex_0012A0" Format="rgba16" Width="32" Height="32" Offset="0x12A0" />
|
||||
<!-- <Blob Name="object_snowwd_Blob_001AA0" Size="0x1000" Offset="0x1AA0" /> -->
|
||||
<DList Name="gSnowTreeEmptyDL" Offset="0x190" />
|
||||
<DList Name="gSnowTreeDL" Offset="0x198" />
|
||||
<Texture Name="gSnowTreeLeavesTex" OutName="snow_tree_leaves" Format="rgba16" Width="32" Height="64" Offset="0x2A0" />
|
||||
<Texture Name="gSnowTreeBodyTex" OutName="snow_tree_body" Format="rgba16" Width="32" Height="32" Offset="0x12A0" />
|
||||
<Texture Name="gSnowTreeSnowLeavesTex" OutName="snow_tree_snow_leaves" Format="rgba16" Width="32" Height="64" Offset="0x1AA0" />
|
||||
</File>
|
||||
</Root>
|
||||
|
@ -7,7 +7,7 @@
|
||||
<!-- Textures and DisplayLists for the cross and circle indicators that appear when you shoot an Octorok -->
|
||||
<Texture Name="gShootingGalleryOctorokCrossTex" OutName="shooting_gallery_octorok_cross" Format="ia16" Width="16" Height="16" Offset="0x1658"/>
|
||||
<Texture Name="gShootingGalleryOctorokCircleTex" OutName="shooting_gallery_octorok_circle" Format="ia16" Width="16" Height="16" Offset="0x1858"/>
|
||||
<DList Name="gShootingGalleryOctorokCrossDL" Offset="0x1A98"/>
|
||||
<DList Name="gShootingGalleryOctorokCircleDL" Offset="0x1B18"/>
|
||||
<DList Name="gShootingGalleryOctorokCrossDL" Offset="0x1A98"/> <!-- Original name is "okuta_peke_model" ("peke" = "x (mark); cross") -->
|
||||
<DList Name="gShootingGalleryOctorokCircleDL" Offset="0x1B18"/> <!-- Original name is "okuta_maru_model" ("maru" = "circle") -->
|
||||
</File>
|
||||
</Root>
|
||||
|
@ -273,7 +273,7 @@ Probably the best of the Nintendo 64 texture viewing programs. It is quite simpl
|
||||
|
||||
### Z64Utils
|
||||
|
||||
Basically essential for convenient analysis of object files. Can analyse and display DisplayLists, some textures, skeletons, animations, and a few other resources. Download from <https://github.com/Random06457/Z64Utils>.
|
||||
Basically essential for convenient analysis of object files. Can analyse and display DisplayLists, some textures, skeletons, animations, and a few other resources. Download from <https://github.com/zeldaret/Z64Utils>.
|
||||
|
||||
## Retired tools
|
||||
|
||||
|
@ -787,217 +787,6 @@ void Camera_SetTargetActor(Camera* camera, Actor* actor);
|
||||
f32 Camera_GetWaterYPos(Camera* camera);
|
||||
void func_800E0348(Camera* camera);
|
||||
|
||||
DamageTable* DamageTable_Get(s32 index);
|
||||
void DamageTable_Clear(DamageTable* damageTable);
|
||||
f32 CollisionCheck_GetDamageAndEffectOnBumper(Collider* at, ColliderInfo* atInfo, Collider* ac, ColliderInfo* acInfo, u32* effect);
|
||||
f32 CollisionCheck_ApplyBumperDefense(f32 damage, ColliderInfo* ac);
|
||||
s32 CollisionCheck_GetToucherDamage(Collider* at, ColliderInfo* atInfo, Collider* ac, ColliderInfo* acInfo);
|
||||
s32 Collider_InitBase(PlayState* play, Collider* collider);
|
||||
s32 Collider_DestroyBase(PlayState* play, Collider* collider);
|
||||
s32 Collider_SetBaseToActor(PlayState* play, Collider* collider, ColliderInitToActor* src);
|
||||
s32 Collider_SetBaseType1(PlayState* play, Collider* collider, Actor* actor, ColliderInitType1* src);
|
||||
s32 Collider_SetBase(PlayState* play, Collider* collider, Actor* actor, ColliderInit* src);
|
||||
void Collider_ResetATBase(PlayState* play, Collider* collider);
|
||||
void Collider_ResetACBase(PlayState* play, Collider* collider);
|
||||
void Collider_ResetOCBase(PlayState* play, Collider* collider);
|
||||
s32 Collider_InitTouch(PlayState* play, ColliderTouch* touch);
|
||||
s32 Collider_DestroyTouch(PlayState* play, ColliderTouch* touch);
|
||||
s32 Collider_SetTouch(PlayState* play, ColliderTouch* touch, ColliderTouchInit* src);
|
||||
void Collider_ResetATInfoUnk(PlayState* play, ColliderInfo* info);
|
||||
s32 Collider_InitBump(PlayState* play, ColliderBump* bump);
|
||||
s32 Collider_DestroyBump(PlayState* play, ColliderBump* bump);
|
||||
s32 Collider_SetBump(PlayState* play, ColliderBump* bump, ColliderBumpInit* src);
|
||||
s32 Collider_InitInfo(PlayState* play, ColliderInfo* info);
|
||||
s32 Collider_DestroyInfo(PlayState* play, ColliderInfo* info);
|
||||
s32 Collider_SetInfo(PlayState* play, ColliderInfo* info, ColliderInfoInit* src);
|
||||
void Collider_ResetATInfo(PlayState* play, ColliderInfo* info);
|
||||
void Collider_ResetACInfo(PlayState* play, ColliderInfo* info);
|
||||
void Collider_ResetOCInfo(PlayState* play, ColliderInfo* info);
|
||||
s32 Collider_InitJntSphElementDim(PlayState* play, ColliderJntSphElementDim* dim);
|
||||
s32 Collider_DestroyJntSphElementDim(PlayState* play, ColliderJntSphElementDim* dim);
|
||||
s32 Collider_SetJntSphElementDim(PlayState* play, ColliderJntSphElementDim* dest, ColliderJntSphElementDimInit* src);
|
||||
s32 Collider_InitJntSphElement(PlayState* play, ColliderJntSphElement* element);
|
||||
s32 Collider_DestroyJntSphElement(PlayState* play, ColliderJntSphElement* element);
|
||||
s32 Collider_SetJntSphElement(PlayState* play, ColliderJntSphElement* dest, ColliderJntSphElementInit* src);
|
||||
s32 Collider_ResetJntSphElementAT(PlayState* play, ColliderJntSphElement* collider);
|
||||
s32 Collider_ResetJntSphElementAC(PlayState* play, ColliderJntSphElement* collider);
|
||||
s32 Collider_ResetJntSphElementOC(PlayState* play, ColliderJntSphElement* collider);
|
||||
s32 Collider_InitJntSph(PlayState* play, ColliderJntSph* collider);
|
||||
s32 Collider_FreeJntSph(PlayState* play, ColliderJntSph* collider);
|
||||
s32 Collider_DestroyJntSph(PlayState* play, ColliderJntSph* collider);
|
||||
s32 Collider_SetJntSphToActor(PlayState* play, ColliderJntSph* collider, ColliderJntSphInitToActor* src);
|
||||
s32 Collider_SetJntSphAllocType1(PlayState* play, ColliderJntSph* sphereGroup, Actor* actor, ColliderJntSphInitType1* src);
|
||||
s32 Collider_SetJntSph(PlayState* play, ColliderJntSph* sphereGroup, Actor* actor, ColliderJntSphInit* src, ColliderJntSphElement* elements);
|
||||
s32 Collider_InitAndSetJntSph(PlayState* play, ColliderJntSph* sphereGroup, Actor* actor, ColliderJntSphInit* src, ColliderJntSphElement* elements);
|
||||
s32 Collider_ResetJntSphAT(PlayState* play, Collider* collider);
|
||||
s32 Collider_ResetJntSphAC(PlayState* play, Collider* collider);
|
||||
s32 Collider_ResetJntSphOC(PlayState* play, Collider* collider);
|
||||
s32 Collider_InitCylinderDim(PlayState* play, Cylinder16* dim);
|
||||
s32 Collider_DestroyCylinderDim(PlayState* play, Cylinder16* dim);
|
||||
s32 Collider_SetCylinderDim(PlayState* play, Cylinder16* dim, Cylinder16* src);
|
||||
s32 Collider_InitCylinder(PlayState* play, ColliderCylinder* collider);
|
||||
s32 Collider_DestroyCylinder(PlayState* play, ColliderCylinder* collider);
|
||||
s32 Collider_SetCylinderToActor(PlayState* play, ColliderCylinder* collider, ColliderCylinderInitToActor* src);
|
||||
s32 Collider_SetCylinderType1(PlayState* play, ColliderCylinder* collider, Actor* actor, ColliderCylinderInitType1* src);
|
||||
s32 Collider_SetCylinder(PlayState* play, ColliderCylinder* collider, Actor* actor, ColliderCylinderInit* src);
|
||||
s32 Collider_InitAndSetCylinder(PlayState* play, ColliderCylinder* collider, Actor* actor, ColliderCylinderInit* src);
|
||||
s32 Collider_ResetCylinderAT(PlayState* play, Collider* collider);
|
||||
s32 Collider_ResetCylinderAC(PlayState* play, Collider* collider);
|
||||
s32 Collider_ResetCylinderOC(PlayState* play, Collider* collider);
|
||||
s32 Collider_InitTrisElementDim(PlayState* play, TriNorm* dim);
|
||||
s32 Collider_DestroyTrisElementDim(PlayState* play, TriNorm* dim);
|
||||
s32 Collider_SetTrisElementDim(PlayState* play, TriNorm* dim, ColliderTrisElementDimInit* src);
|
||||
s32 Collider_InitTrisElement(PlayState* play, ColliderTrisElement* element);
|
||||
s32 Collider_DestroyTrisElement(PlayState* play, ColliderTrisElement* element);
|
||||
s32 Collider_SetTrisElement(PlayState* play, ColliderTrisElement* element, ColliderTrisElementInit* src);
|
||||
s32 Collider_ResetTrisElementAT(PlayState* play, ColliderTrisElement* element);
|
||||
s32 Collider_ResetTrisElementAC(PlayState* play, ColliderTrisElement* element);
|
||||
s32 Collider_ResetTrisElementOC(PlayState* play, ColliderTrisElement* element);
|
||||
s32 Collider_InitTris(PlayState* play, ColliderTris* tris);
|
||||
s32 Collider_FreeTris(PlayState* play, ColliderTris* tris);
|
||||
s32 Collider_DestroyTris(PlayState* play, ColliderTris* tris);
|
||||
s32 Collider_SetTrisAllocType1(PlayState* play, ColliderTris* tris, Actor* actor, ColliderTrisInitType1* src);
|
||||
s32 Collider_SetTris(PlayState* play, ColliderTris* triGroup, Actor* actor, ColliderTrisInit* src, ColliderTrisElement* tris);
|
||||
s32 Collider_InitAndSetTris(PlayState* play, ColliderTris* tris, Actor* actor, ColliderTrisInit* src, ColliderTrisElement* elements);
|
||||
s32 Collider_ResetTrisAT(PlayState* play, Collider* collider);
|
||||
s32 Collider_ResetTrisAC(PlayState* play, Collider* collider);
|
||||
s32 Collider_ResetTrisOC(PlayState* play, Collider* collider);
|
||||
s32 Collider_InitQuadDim(PlayState* play, ColliderQuadDim* dim);
|
||||
s32 Collider_DestroyQuadDim(PlayState* play, ColliderQuadDim* dim);
|
||||
s32 Collider_ResetQuadACDist(PlayState* play, ColliderQuadDim* dim);
|
||||
void Collider_SetQuadMidpoints(ColliderQuadDim* dim);
|
||||
s32 Collider_SetQuadDim(PlayState* play, ColliderQuadDim* dim, ColliderQuadDimInit* init);
|
||||
s32 Collider_InitQuad(PlayState* play, ColliderQuad* collider);
|
||||
s32 Collider_DestroyQuad(PlayState* play, ColliderQuad* collider);
|
||||
s32 Collider_SetQuadType1(PlayState* play, ColliderQuad* collider, Actor* actor, ColliderQuadInitType1* src);
|
||||
s32 Collider_SetQuad(PlayState* play, ColliderQuad* collider, Actor* actor, ColliderQuadInit* src);
|
||||
s32 Collider_InitAndSetQuad(PlayState* play, ColliderQuad* collider, Actor* actor, ColliderQuadInit* src);
|
||||
s32 Collider_ResetQuadAT(PlayState* play, Collider* collider);
|
||||
s32 Collider_ResetQuadAC(PlayState* play, Collider* collider);
|
||||
s32 Collider_ResetQuadOC(PlayState* play, Collider* collider);
|
||||
s32 Collider_QuadSetNearestAC(PlayState* play, ColliderQuad* quad, Vec3f* hitPos);
|
||||
s32 Collider_InitSphere(PlayState* play, ColliderSphere* collider);
|
||||
s32 Collider_DestroySphere(PlayState* play, ColliderSphere* collider);
|
||||
s32 Collider_SetSphere(PlayState* play, ColliderSphere* collider, Actor* actor, ColliderSphereInit* src);
|
||||
s32 Collider_InitAndSetSphere(PlayState* play, ColliderSphere* collider, Actor* actor, ColliderSphereInit* src);
|
||||
s32 Collider_ResetSphereAT(PlayState* play, Collider* collider);
|
||||
s32 Collider_ResetSphereAC(PlayState* play, Collider* collider);
|
||||
s32 Collider_ResetSphereOC(PlayState* play, Collider* collider);
|
||||
s32 Collider_InitLine(PlayState* play, OcLine* line);
|
||||
s32 Collider_DestroyLine(PlayState* play, OcLine* line);
|
||||
s32 Collider_SetLinePoints(PlayState* play, OcLine* line, Vec3f* a, Vec3f* b);
|
||||
s32 Collider_SetLine(PlayState* play, OcLine* line, OcLine* src);
|
||||
s32 Collider_ResetLineOC(PlayState* play, OcLine* line);
|
||||
void CollisionCheck_InitContext(PlayState* play, CollisionCheckContext* colCtxt);
|
||||
void CollisionCheck_DestroyContext(PlayState* play, CollisionCheckContext* colCtxt);
|
||||
void CollisionCheck_ClearContext(PlayState* play, CollisionCheckContext* colCtxt);
|
||||
void CollisionCheck_EnableSAC(PlayState* play, CollisionCheckContext* colCtxt);
|
||||
void CollisionCheck_DisableSAC(PlayState* play, CollisionCheckContext* colCtxt);
|
||||
s32 CollisionCheck_SetAT(PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
|
||||
s32 CollisionCheck_SetAT_SAC(PlayState* play, CollisionCheckContext* colCtxt, Collider* collider, s32 index);
|
||||
s32 CollisionCheck_SetAC(PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
|
||||
s32 CollisionCheck_SetAC_SAC(PlayState* play, CollisionCheckContext* colCtxt, Collider* collider, s32 index);
|
||||
s32 CollisionCheck_SetOC(PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
|
||||
s32 CollisionCheck_SetOC_SAC(PlayState* play, CollisionCheckContext* colCtxt, Collider* collider, s32 index);
|
||||
s32 CollisionCheck_SetOCLine(PlayState* play, CollisionCheckContext* colCtxt, OcLine* line);
|
||||
s32 CollisionCheck_SkipTouch(ColliderInfo* info);
|
||||
s32 CollisionCheck_SkipBump(ColliderInfo* info);
|
||||
s32 CollisionCheck_NoSharedFlags(ColliderInfo* toucher, ColliderInfo* bumper);
|
||||
void CollisionCheck_NoBlood(PlayState* play, Collider* collider, Vec3f* v);
|
||||
void CollisionCheck_BlueBlood(PlayState* play, Collider* collider, Vec3f* v);
|
||||
void CollisionCheck_GreenBlood(PlayState* play, Collider* collider, Vec3f* v);
|
||||
void CollisionCheck_WaterBurst(PlayState* play, Collider* collider, Vec3f* v);
|
||||
void CollisionCheck_RedBlood(PlayState* play, Collider* collider, Vec3f* v);
|
||||
void CollisionCheck_RedBloodUnused(PlayState* play, Collider* collider, Vec3f* v);
|
||||
void CollisionCheck_HitSolid(PlayState* play, ColliderInfo* info, Collider* collider, Vec3f* hitPos);
|
||||
s32 CollisionCheck_SwordHitAudio(Collider* at, ColliderInfo* acInfo);
|
||||
void CollisionCheck_HitEffects(PlayState* play, Collider* at, ColliderInfo* atInfo, Collider* ac, ColliderInfo* acInfo, Vec3f* hitPos);
|
||||
void CollisionCheck_SetBounce(Collider* at, Collider* ac);
|
||||
s32 CollisionCheck_SetATvsAC(PlayState* play, Collider* at, ColliderInfo* atInfo, Vec3f* atPos, Collider* ac, ColliderInfo* acInfo, Vec3f* acPos, Vec3f* hitPos);
|
||||
void CollisionCheck_TrisAvgPoint(ColliderTrisElement* tri, Vec3f* avg);
|
||||
void CollisionCheck_QuadAvgPoint(ColliderQuad* quad, Vec3f* avg);
|
||||
void CollisionCheck_AC_JntSphVsJntSph(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_JntSphVsCyl(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_JntSphVsTris(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_JntSphVsQuad(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_JntSphVsSphere(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_CylVsJntSph(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_CylVsCyl(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_CylVsTris(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_CylVsQuad(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_CylVsSphere(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_TrisVsJntSph(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_TrisVsCyl(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_TrisVsTris(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_TrisVsQuad(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_TrisVsSphere(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_QuadVsJntSph(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_QuadVsCyl(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_QuadVsTris(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_QuadVsQuad(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_QuadVsSphere(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_SphereVsJntSph(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_SphereVsCylinder(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_SphereVsTris(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_SphereVsQuad(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_SphereVsSphere(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_SetJntSphHitFX(PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
|
||||
void CollisionCheck_SetCylHitFX(PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
|
||||
void CollisionCheck_SetTrisHitFX(PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
|
||||
void CollisionCheck_SetQuadHitFX(PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
|
||||
void CollisionCheck_SetSphereHitFX(PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
|
||||
void CollisionCheck_SetHitEffects(PlayState* play, CollisionCheckContext* colCtxt);
|
||||
void CollisionCheck_AC(PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT);
|
||||
void CollisionCheck_AT(PlayState* play, CollisionCheckContext* colCtxt);
|
||||
s32 CollisionCheck_GetMassType(u8 mass);
|
||||
void CollisionCheck_SetOCvsOC(PlayState* play, Collider* left, ColliderInfo* leftInfo, Vec3f* leftPos, Collider* right, ColliderInfo* rightInfo, Vec3f* rightPos, f32 overlap);
|
||||
void CollisionCheck_OC_JntSphVsJntSph(PlayState* play, CollisionCheckContext* colCtxt, Collider* l, Collider* r);
|
||||
void CollisionCheck_OC_JntSphVsCyl(PlayState* play, CollisionCheckContext* colCtxt, Collider* l, Collider* r);
|
||||
void CollisionCheck_OC_JntSphVsSphere(PlayState* play, CollisionCheckContext* colCtxt, Collider* l, Collider* r);
|
||||
void CollisionCheck_OC_CylVsJntSph(PlayState* play, CollisionCheckContext* colCtxt, Collider* l, Collider* r);
|
||||
void CollisionCheck_OC_CylVsCyl(PlayState* play, CollisionCheckContext* colCtxt, Collider* l, Collider* r);
|
||||
void CollisionCheck_OC_CylVsSphere(PlayState* play, CollisionCheckContext* colCtxt, Collider* l, Collider* r);
|
||||
void CollisionCheck_OC_SphereVsJntSph(PlayState* play, CollisionCheckContext* colCtxt, Collider* l, Collider* r);
|
||||
void CollisionCheck_OC_SphereVsCyl(PlayState* play, CollisionCheckContext* colCtxt, Collider* l, Collider* r);
|
||||
void CollisionCheck_OC_SphereVsSphere(PlayState* play, CollisionCheckContext* colCtxt, Collider* l, Collider* r);
|
||||
s32 CollisionCheck_SkipOC(Collider* collider);
|
||||
s32 CollisionCheck_Incompatible(Collider* left, Collider* right);
|
||||
void CollisionCheck_OC(PlayState* play, CollisionCheckContext* colCtxt);
|
||||
void CollisionCheck_InitInfo(CollisionCheckInfo* info);
|
||||
void CollisionCheck_ResetDamage(CollisionCheckInfo* info);
|
||||
void CollisionCheck_SetInfoNoDamageTable(CollisionCheckInfo* info, CollisionCheckInfoInit* init);
|
||||
void CollisionCheck_SetInfo(CollisionCheckInfo* info, DamageTable* damageTable, CollisionCheckInfoInit* init);
|
||||
void CollisionCheck_SetInfo2(CollisionCheckInfo* info, DamageTable* damageTable, CollisionCheckInfoInit2* init);
|
||||
void CollisionCheck_SetInfoGetDamageTable(CollisionCheckInfo* info, s32 index, CollisionCheckInfoInit2* init);
|
||||
void CollisionCheck_ApplyDamage(PlayState* play, CollisionCheckContext* colCtxt, Collider* collider, ColliderInfo* info);
|
||||
void CollisionCheck_ApplyDamageJntSph(PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
|
||||
void CollisionCheck_ApplyDamageCyl(PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
|
||||
void CollisionCheck_ApplyDamageTris(PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
|
||||
void CollisionCheck_ApplyDamageQuad(PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
|
||||
void CollisionCheck_ApplyDamageSphere(PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
|
||||
void CollisionCheck_Damage(PlayState* play, CollisionCheckContext* colCtxt);
|
||||
s32 CollisionCheck_LineOC_JntSph(PlayState* play, CollisionCheckContext* colChkCtx, Collider* collider, Vec3f* a, Vec3f* b);
|
||||
s32 CollisionCheck_LineOC_Cyl(PlayState* play, CollisionCheckContext* colChkCtx, Collider* collider, Vec3f* a, Vec3f* b);
|
||||
s32 CollisionCheck_LineOC_Sphere(PlayState* play, CollisionCheckContext* colChkCtx, Collider* collider, Vec3f* a, Vec3f* b);
|
||||
s32 CollisionCheck_LineOC(PlayState* play, CollisionCheckContext* colChkCtx, Vec3f* a, Vec3f* b, Actor** exclusions, s32 numExclusions);
|
||||
s32 CollisionCheck_LineOCCheckAll(PlayState* play, CollisionCheckContext* colCtxt, Vec3f* a, Vec3f* b);
|
||||
s32 CollisionCheck_LineOCCheck(PlayState* play, CollisionCheckContext* colCtxt, Vec3f* a, Vec3f* b, Actor** exclusions, s32 numExclusions);
|
||||
void Collider_UpdateCylinder(Actor* actor, ColliderCylinder* collider);
|
||||
void Collider_SetCylinderPosition(ColliderCylinder* collider, Vec3s* pos);
|
||||
void Collider_SetQuadVertices(ColliderQuad* collider, Vec3f* a, Vec3f* b, Vec3f* c, Vec3f* d);
|
||||
void Collider_SetTrisVertices(ColliderTris* collider, s32 index, Vec3f* a, Vec3f* b, Vec3f* c);
|
||||
void Collider_SetTrisDim(PlayState* play, ColliderTris* collider, s32 index, ColliderTrisElementDimInit* init);
|
||||
void Collider_UpdateSpheres(s32 limb, ColliderJntSph* collider);
|
||||
void Collider_UpdateSpheresElement(ColliderJntSph* collider, s32 index, Actor* actor);
|
||||
void Collider_UpdateSphere(s32 limb, ColliderSphere* collider);
|
||||
void CollisionCheck_SpawnRedBlood(PlayState* play, Vec3f* v);
|
||||
void CollisionCheck_SpawnWaterDroplets(PlayState* play, Vec3f* v);
|
||||
void CollisionCheck_SpawnShieldParticles(PlayState* play, Vec3f* v);
|
||||
void CollisionCheck_SpawnShieldParticlesMetal(PlayState* play, Vec3f* v);
|
||||
void CollisionCheck_SpawnShieldParticlesMetalSound(PlayState* play, Vec3f* v, Vec3f* pos);
|
||||
void CollisionCheck_SpawnShieldParticlesMetal2(PlayState* play, Vec3f* v);
|
||||
void CollisionCheck_SpawnShieldParticlesWood(PlayState* play, Vec3f* v, Vec3f* pos);
|
||||
s32 CollisionCheck_CylSideVsLineSeg(f32 radius, f32 height, f32 offset, Vec3f* actorPos, Vec3f* itemPos, Vec3f* itemProjPos, Vec3f* out1, Vec3f* out2);
|
||||
void Actor_ContinueText(PlayState* play, Actor* actor, u16 textId);
|
||||
s32 Flags_GetEventChkInf(s32 flag);
|
||||
void Flags_SetEventChkInf(s32 flag);
|
||||
@ -1011,14 +800,8 @@ void SaveContext_Init(void);
|
||||
|
||||
void GetItem_Draw(PlayState* play, s16 drawId);
|
||||
|
||||
void SoundSource_InitAll(PlayState* play);
|
||||
void SoundSource_UpdateAll(PlayState* play);
|
||||
void SoundSource_PlaySfxAtFixedWorldPos(PlayState* play, Vec3f* worldPos, u32 duration, u16 sfxId);
|
||||
void SoundSource_PlaySfxEachFrameAtFixedWorldPos(PlayState* play, Vec3f* worldPos, u32 duration, u16 sfxId);
|
||||
u16 QuestHint_GetTatlTextId(PlayState* play);
|
||||
|
||||
u16 Text_GetFaceReaction(PlayState* play, u32 reactionSet);
|
||||
|
||||
void func_800F4A10(PlayState* play);
|
||||
void KaleidoSetup_Update(PlayState* play);
|
||||
void KaleidoSetup_Init(PlayState* play);
|
||||
@ -1075,10 +858,10 @@ void Environment_FillScreen(GraphicsContext* gfxCtx, u8 red, u8 green, u8 blue,
|
||||
void Environment_DrawSandstorm(PlayState* play, u8 sandstormState);
|
||||
s32 func_800FD2B4(PlayState* play, f32 arg1, f32 arg2, f32 arg3, f32 arg4);
|
||||
void func_800FD538(Color_RGB8* param_1, Color_RGB8* param_2, f32 param_3, Vec3s* param_4);
|
||||
void func_800FD59C(PlayState* play, Color_RGB8* pzParm2, f32 fParm3);
|
||||
void func_800FD5E0(PlayState* play, Color_RGB8* pzParm2, f32 fParm3);
|
||||
void func_800FD654(PlayState* play, Color_RGB8* pzParm2, f32 fParm3);
|
||||
void func_800FD698(PlayState* play, s16 arg1, s16 arg2, f32 arg3);
|
||||
void Environment_LerpAmbientColor(PlayState* play, Color_RGB8* to, f32 lerp);
|
||||
void Environment_LerpDiffuseColor(PlayState* play, Color_RGB8* to, f32 lerp);
|
||||
void Environment_LerpFogColor(PlayState* play, Color_RGB8* to, f32 lerp);
|
||||
void Environment_LerpFog(PlayState* play, s16 fogNearTarget, s16 zFarTarget, f32 lerp);
|
||||
// u32 get_days_elapsed(void);
|
||||
// void reset_days_elapsed(void);
|
||||
// u32 get_current_day(void);
|
||||
@ -1355,51 +1138,6 @@ Vec3s* OLib_Vec3fDiffBinAng(Vec3s* dest, Vec3f* a, Vec3f* b);
|
||||
void OLib_Vec3fDiff(PosRot* a, Vec3f* b, Vec3f* dest, s16 mode);
|
||||
void OLib_Vec3fAdd(PosRot* a, Vec3f* b, Vec3f* dest, s16 mode);
|
||||
|
||||
Gfx* Gfx_DrawTexRectRGBA16(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy);
|
||||
Gfx* Gfx_DrawTexRectIA8(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy);
|
||||
Gfx* Gfx_DrawTexRectI8(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy);
|
||||
Gfx* Gfx_DrawTexQuadIA8(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, u16 point);
|
||||
Gfx* Gfx_DrawTexQuad4b(Gfx* gfx, TexturePtr texture, s32 fmt, s16 textureWidth, s16 textureHeight, u16 point);
|
||||
|
||||
void Interface_StartTimer(s16 timerId, s16 seconds);
|
||||
void Interface_StartPostmanTimer(s16 seconds, s16 bunnyHoodState);
|
||||
void Interface_NewDay(PlayState* play, s32 day);
|
||||
void Interface_SetHudVisibility(u16 hudVisibility);
|
||||
void Interface_UpdateButtonsPart2(PlayState* play);
|
||||
void Interface_SetSceneRestrictions(PlayState* play);
|
||||
void Interface_InitMinigame(PlayState* play);
|
||||
void Interface_LoadItemIconImpl(PlayState* play, u8 btn);
|
||||
void Interface_LoadItemIcon(PlayState* play, u8 btn);
|
||||
void Interface_UpdateButtonsAlt(PlayState* play, u16 flag);
|
||||
u8 Item_Give(PlayState* play, u8 item);
|
||||
u8 Item_CheckObtainability(u8 item);
|
||||
void Inventory_DeleteItem(s16 item, s16 slot);
|
||||
void Inventory_UnequipItem(s16 item);
|
||||
s32 Inventory_ReplaceItem(PlayState* play, u8 oldItem, u8 newItem);
|
||||
void Inventory_UpdateDeitySwordEquip(PlayState* play) ;
|
||||
s32 Inventory_HasEmptyBottle(void);
|
||||
s32 Inventory_HasItemInBottle(u8 item);
|
||||
void Inventory_UpdateBottleItem(PlayState* play, u8 item, u8 btn);
|
||||
s32 Inventory_ConsumeFairy(PlayState* play);
|
||||
void Inventory_UpdateItem(PlayState* play, s16 slot, s16 item);
|
||||
void Interface_SetAButtonDoAction(PlayState* play, u16 aButtonDoAction);
|
||||
void Interface_SetBButtonDoAction(PlayState* play, s16 bButtonDoAction);
|
||||
void Interface_SetTatlCall(PlayState* play, u16 tatlCallState);
|
||||
void Interface_LoadBButtonDoActionLabel(PlayState* play, s16 bButtonDoAction);
|
||||
s32 Health_ChangeBy(PlayState* play, s16 healthChange);
|
||||
void Health_GiveHearts(s16 hearts);
|
||||
void Rupees_ChangeBy(s16 rupeeChange);
|
||||
void Inventory_ChangeAmmo(s16 item, s16 ammoChange);
|
||||
void Magic_Add(PlayState* play, s16 magicToAdd);
|
||||
void Magic_Reset(PlayState* play);
|
||||
s32 Magic_Consume(PlayState* play, s16 magicToConsume, s16 type);
|
||||
void Interface_SetPerfectLetters(PlayState* play, s16 perfectLettersType);
|
||||
void Interface_StartMoonCrash(PlayState* play);
|
||||
void Interface_Draw(PlayState* play);
|
||||
void Interface_Update(PlayState* play);
|
||||
void Interface_Destroy(PlayState* play);
|
||||
void Interface_Init(PlayState* play);
|
||||
|
||||
Path* Path_GetByIndex(PlayState* play, s16 index, s16 indexNone);
|
||||
f32 Path_OrientAndGetDistSq(Actor* actor, Path* path, s16 waypoint, s16* yaw);
|
||||
void Path_CopyLastPoint(Path* path, Vec3f* dest);
|
||||
@ -1498,90 +1236,6 @@ void Inventory_SaveDekuPlaygroundHighScore(s16 timerId);
|
||||
void Inventory_IncrementSkullTokenCount(s16 sceneIndex);
|
||||
s16 Inventory_GetSkullTokenCount(s16 sceneIndex);
|
||||
void Inventory_SaveLotteryCodeGuess(PlayState* play);
|
||||
s32 Object_Spawn(ObjectContext* objectCtx, s16 id);
|
||||
void Object_InitBank(GameState* gameState, ObjectContext* objectCtx);
|
||||
void Object_UpdateBank(ObjectContext* objectCtx);
|
||||
s32 Object_GetIndex(ObjectContext* objectCtx, s16 objectId);
|
||||
s32 Object_IsLoaded(ObjectContext* objectCtx, s32 index);
|
||||
void Object_LoadAll(ObjectContext* objectCtx);
|
||||
void* func_8012F73C(ObjectContext* objectCtx, s32 iParm2, s16 id);
|
||||
void Scene_CommandSpawnList(PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandActorList(PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandActorCutsceneCamList(PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandCollisionHeader(PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandRoomList(PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandEntranceList(PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandSpecialFiles(PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandRoomBehavior(PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandMesh(PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandObjectList(PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandLightList(PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandPathList(PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandTransiActorList(PlayState* play, SceneCmd* cmd);
|
||||
void Door_InitContext(GameState* gameState, DoorContext* doorCtx);
|
||||
void Scene_CommandEnvLightSettings(PlayState* play, SceneCmd* cmd);
|
||||
void Scene_LoadAreaTextures(PlayState* play, s32 fileIndex);
|
||||
void Scene_CommandSkyboxSettings(PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandSkyboxDisables(PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandTimeSettings(PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandWindSettings(PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandExitList(PlayState* play, SceneCmd* cmd);
|
||||
void Scene_Command09(PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandSoundSettings(PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandEchoSetting(PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandAltHeaderList(PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandCutsceneScriptList(PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandCutsceneList(PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandMiniMap(PlayState* play, SceneCmd* cmd);
|
||||
void Scene_Command1D(PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandMiniMapCompassInfo(PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandSetRegionVisitedFlag(PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandAnimatedMaterials(PlayState* play, SceneCmd* cmd);
|
||||
void Scene_SetExitFade(PlayState* play);
|
||||
s32 Scene_ExecuteCommands(PlayState* play, SceneCmd* sceneCmd);
|
||||
u16 Entrance_Create(s32 scene, s32 spawn, s32 layer);
|
||||
u16 Entrance_CreateFromSpawn(s32 spawn);
|
||||
void Scene_Draw(PlayState* play);
|
||||
void Scene_DrawConfigDefault(PlayState* play);
|
||||
Gfx* AnimatedMat_TexScroll(PlayState* play, AnimatedMatTexScrollParams* params);
|
||||
void AnimatedMat_DrawTexScroll(PlayState* play, s32 segment, void* params);
|
||||
Gfx* AnimatedMat_TwoLayerTexScroll(PlayState* play, AnimatedMatTexScrollParams* params);
|
||||
void AnimatedMat_DrawTwoTexScroll(PlayState* play, s32 segment, void* params);
|
||||
void AnimatedMat_SetColor(PlayState* play, s32 segment, F3DPrimColor* primColorResult, F3DEnvColor* envColor);
|
||||
void AnimatedMat_DrawColor(PlayState* play, s32 segment, void* params);
|
||||
s32 AnimatedMat_Lerp(s32 min, s32 max, f32 norm);
|
||||
void AnimatedMat_DrawColorLerp(PlayState* play, s32 segment, void* params);
|
||||
f32 Scene_LagrangeInterp(s32 n, f32 x[], f32 fx[], f32 xp);
|
||||
u8 Scene_LagrangeInterpColor(s32 n, f32 x[], f32 fx[], f32 xp);
|
||||
void AnimatedMat_DrawColorNonLinearInterp(PlayState* play, s32 segment, void* params);
|
||||
void AnimatedMat_DrawTexCycle(PlayState* play, s32 segment, void* params);
|
||||
void AnimatedMat_DrawMain(PlayState* play, AnimatedMaterial* matAnim, f32 alphaRatio, u32 step, u32 flags);
|
||||
void AnimatedMat_Draw(PlayState* play, AnimatedMaterial* matAnim);
|
||||
void AnimatedMat_DrawOpa(PlayState* play, AnimatedMaterial* matAnim);
|
||||
void AnimatedMat_DrawXlu(PlayState* play, AnimatedMaterial* matAnim);
|
||||
void AnimatedMat_DrawAlpha(PlayState* play, AnimatedMaterial* matAnim, f32 alphaRatio);
|
||||
void AnimatedMat_DrawAlphaOpa(PlayState* play, AnimatedMaterial* matAnim, f32 alphaRatio);
|
||||
void AnimatedMat_DrawAlphaXlu(PlayState* play, AnimatedMaterial* matAnim, f32 alphaRatio);
|
||||
void AnimatedMat_DrawStep(PlayState* play, AnimatedMaterial* matAnim, u32 step);
|
||||
void AnimatedMat_DrawStepOpa(PlayState* play, AnimatedMaterial* matAnim, u32 step);
|
||||
void AnimatedMat_DrawStepXlu(PlayState* play, AnimatedMaterial* matAnim, u32 step);
|
||||
void AnimatedMat_DrawAlphaStep(PlayState* play, AnimatedMaterial* matAnim, f32 alphaRatio, u32 step);
|
||||
void AnimatedMat_DrawAlphaStepOpa(PlayState* play, AnimatedMaterial* matAnim, f32 alphaRatio, u32 step);
|
||||
void AnimatedMat_DrawAlphaStepXlu(PlayState* play, AnimatedMaterial* matAnim, f32 alphaRatio, u32 step);
|
||||
void Scene_DrawConfigMatAnim(PlayState* play);
|
||||
void Scene_DrawConfig3(PlayState* play);
|
||||
void Scene_DrawConfig4(PlayState* play);
|
||||
void Scene_DrawConfigDoNothing(PlayState* play);
|
||||
void Scene_SetRenderModeXlu(PlayState* play, s32 index, u32 flags);
|
||||
void Scene_SetCullFlag(PlayState* play, s32 index, u32 flags);
|
||||
void Scene_DrawConfig5(PlayState* play);
|
||||
void Scene_DrawConfigMatAnimManualStep(PlayState* play);
|
||||
void Scene_DrawConfigGreatBayTemple(PlayState* play);
|
||||
EntranceTableEntry* Entrance_GetTableEntry(u16 entrance);
|
||||
s32 Entrance_GetSceneId(u16 entrance);
|
||||
s32 Entrance_GetSceneIdAbsolute(u16 entrance);
|
||||
s32 Entrance_GetSpawnNum(u16 entrance);
|
||||
s32 Entrance_GetTransitionFlags(u16 entrance);
|
||||
|
||||
s32 Schedule_RunScript(PlayState* play, u8* script, ScheduleOutput* output);
|
||||
|
||||
|
@ -2,7 +2,6 @@
|
||||
#define GLOBAL_H
|
||||
|
||||
#include "z64.h"
|
||||
#include "regs.h"
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
#include "macros.h"
|
||||
|
@ -3,7 +3,6 @@
|
||||
|
||||
#include "libc/stdint.h"
|
||||
#include "ultra64/convert.h"
|
||||
#include "z64.h"
|
||||
|
||||
#define SCREEN_WIDTH 320
|
||||
#define SCREEN_HEIGHT 240
|
||||
|
@ -52,12 +52,12 @@ DECLARE_ROM_SEGMENT(map_i_static)
|
||||
DECLARE_ROM_SEGMENT(map_grand_static)
|
||||
DECLARE_ROM_SEGMENT(item_name_static)
|
||||
DECLARE_ROM_SEGMENT(map_name_static)
|
||||
DECLARE_ROM_SEGMENT(icon_item_static_test)
|
||||
DECLARE_ROM_SEGMENT(icon_item_static_old)
|
||||
DECLARE_ROM_SEGMENT(icon_item_24_static_test)
|
||||
DECLARE_ROM_SEGMENT(icon_item_24_static_old)
|
||||
DECLARE_ROM_SEGMENT(schedule_dma_static_test)
|
||||
DECLARE_ROM_SEGMENT(schedule_dma_static_old)
|
||||
DECLARE_ROM_SEGMENT(icon_item_static_yar)
|
||||
DECLARE_ROM_SEGMENT(icon_item_static_syms)
|
||||
DECLARE_ROM_SEGMENT(icon_item_24_static_yar)
|
||||
DECLARE_ROM_SEGMENT(icon_item_24_static_syms)
|
||||
DECLARE_ROM_SEGMENT(schedule_dma_static_yar)
|
||||
DECLARE_ROM_SEGMENT(schedule_dma_static_syms)
|
||||
DECLARE_ROM_SEGMENT(schedule_static)
|
||||
DECLARE_ROM_SEGMENT(story_static)
|
||||
DECLARE_ROM_SEGMENT(do_action_static)
|
||||
|
@ -9,23 +9,23 @@
|
||||
* - Argument 4: Message id for the event meeting this person
|
||||
* - Argument 5: WeekEventFlag for the event meeting this person
|
||||
*/
|
||||
/* 0x00 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_BOMBERS, D_07009800, 0x21DD, BOMBERS_NOTEBOOK_EVENT_MET_BOMBERS, 0x2147, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_BOMBERS)
|
||||
/* 0x01 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_ANJU, D_07000000, 0x21CA, BOMBERS_NOTEBOOK_EVENT_MET_ANJU, 0x2134, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_ANJU)
|
||||
/* 0x02 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_KAFEI, D_07000800, 0x21CB, BOMBERS_NOTEBOOK_EVENT_MET_KAFEI, 0x2135, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_KAFEI)
|
||||
/* 0x03 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_CURIOSITY_SHOP_MAN, D_07001000, 0x21CC, BOMBERS_NOTEBOOK_EVENT_MET_CURIOSITY_SHOP_MAN, 0x2136, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_CURIOSITY_SHOP_MAN)
|
||||
/* 0x04 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_BOMB_SHOP_LADY, D_07001800, 0x21CD, BOMBERS_NOTEBOOK_EVENT_MET_BOMB_SHOP_LADY, 0x2137, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_BOMB_SHOP_LADY)
|
||||
/* 0x05 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_ROMANI, D_07002000, 0x21CE, BOMBERS_NOTEBOOK_EVENT_MET_ROMANI, 0x2138, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_ROMANI)
|
||||
/* 0x06 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_CREMIA, D_07002800, 0x21CF, BOMBERS_NOTEBOOK_EVENT_MET_CREMIA, 0x2139, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_CREMIA)
|
||||
/* 0x07 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_MAYOR_DOTOUR, D_07003000, 0x21D0, BOMBERS_NOTEBOOK_EVENT_MET_MAYOR_DOTOUR, 0x213A, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_MAYOR_DOTOUR)
|
||||
/* 0x08 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_MADAME_AROMA, D_07003800, 0x21D1, BOMBERS_NOTEBOOK_EVENT_MET_MADAME_AROMA, 0x213B, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_MADAME_AROMA)
|
||||
/* 0x09 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_TOTO, D_07004000, 0x21D2, BOMBERS_NOTEBOOK_EVENT_MET_TOTO, 0x213C, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_TOTO)
|
||||
/* 0x0A */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_GORMAN, D_07004800, 0x21D3, BOMBERS_NOTEBOOK_EVENT_MET_GORMAN, 0x213D, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_GORMAN)
|
||||
/* 0x0B */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_POSTMAN, D_07005000, 0x21D4, BOMBERS_NOTEBOOK_EVENT_MET_POSTMAN, 0x213E, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_POSTMAN)
|
||||
/* 0x0C */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_ROSA_SISTERS, D_07005800, 0x21D5, BOMBERS_NOTEBOOK_EVENT_MET_ROSA_SISTERS, 0x213F, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_ROSA_SISTERS)
|
||||
/* 0x0D */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_TOILET_HAND, D_07006000, 0x21D6, BOMBERS_NOTEBOOK_EVENT_MET_TOLIET_HAND, 0x2140, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_TOILET_HAND)
|
||||
/* 0x0E */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_ANJUS_GRANDMOTHER, D_07006800, 0x21D7, BOMBERS_NOTEBOOK_EVENT_MET_ANJUS_GRANDMOTHER, 0x2141, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_ANJUS_GRANDMOTHER)
|
||||
/* 0x0F */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_KAMARO, D_07007000, 0x21D8, BOMBERS_NOTEBOOK_EVENT_MET_KAMARO, 0x2142, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_KAMARO)
|
||||
/* 0x10 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_GROG, D_07007800, 0x21D9, BOMBERS_NOTEBOOK_EVENT_MET_GROG, 0x2143, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_GROG)
|
||||
/* 0x11 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_GORMAN_BROTHERS, D_07008000, 0x21DA, BOMBERS_NOTEBOOK_EVENT_MET_GORMAN_BROTHERS, 0x2144, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_GORMAN_BROTHERS)
|
||||
/* 0x12 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_SHIRO, D_07008800, 0x21DB, BOMBERS_NOTEBOOK_EVENT_MET_SHIRO, 0x2145, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_SHIRO)
|
||||
/* 0x13 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_GURU_GURU, D_07009000, 0x21DC, BOMBERS_NOTEBOOK_EVENT_MET_GURU_GURU, 0x2146, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_GURU_GURU)
|
||||
/* 0x00 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_BOMBERS, schedule_dma_static_yar_Blob_009800, 0x21DD, BOMBERS_NOTEBOOK_EVENT_MET_BOMBERS, 0x2147, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_BOMBERS)
|
||||
/* 0x01 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_ANJU, schedule_dma_static_yar_Blob_000000, 0x21CA, BOMBERS_NOTEBOOK_EVENT_MET_ANJU, 0x2134, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_ANJU)
|
||||
/* 0x02 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_KAFEI, schedule_dma_static_yar_Blob_000800, 0x21CB, BOMBERS_NOTEBOOK_EVENT_MET_KAFEI, 0x2135, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_KAFEI)
|
||||
/* 0x03 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_CURIOSITY_SHOP_MAN, schedule_dma_static_yar_Blob_001000, 0x21CC, BOMBERS_NOTEBOOK_EVENT_MET_CURIOSITY_SHOP_MAN, 0x2136, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_CURIOSITY_SHOP_MAN)
|
||||
/* 0x04 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_BOMB_SHOP_LADY, schedule_dma_static_yar_Blob_001800, 0x21CD, BOMBERS_NOTEBOOK_EVENT_MET_BOMB_SHOP_LADY, 0x2137, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_BOMB_SHOP_LADY)
|
||||
/* 0x05 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_ROMANI, schedule_dma_static_yar_Blob_002000, 0x21CE, BOMBERS_NOTEBOOK_EVENT_MET_ROMANI, 0x2138, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_ROMANI)
|
||||
/* 0x06 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_CREMIA, schedule_dma_static_yar_Blob_002800, 0x21CF, BOMBERS_NOTEBOOK_EVENT_MET_CREMIA, 0x2139, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_CREMIA)
|
||||
/* 0x07 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_MAYOR_DOTOUR, schedule_dma_static_yar_Blob_003000, 0x21D0, BOMBERS_NOTEBOOK_EVENT_MET_MAYOR_DOTOUR, 0x213A, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_MAYOR_DOTOUR)
|
||||
/* 0x08 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_MADAME_AROMA, schedule_dma_static_yar_Blob_003800, 0x21D1, BOMBERS_NOTEBOOK_EVENT_MET_MADAME_AROMA, 0x213B, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_MADAME_AROMA)
|
||||
/* 0x09 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_TOTO, schedule_dma_static_yar_Blob_004000, 0x21D2, BOMBERS_NOTEBOOK_EVENT_MET_TOTO, 0x213C, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_TOTO)
|
||||
/* 0x0A */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_GORMAN, schedule_dma_static_yar_Blob_004800, 0x21D3, BOMBERS_NOTEBOOK_EVENT_MET_GORMAN, 0x213D, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_GORMAN)
|
||||
/* 0x0B */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_POSTMAN, schedule_dma_static_yar_Blob_005000, 0x21D4, BOMBERS_NOTEBOOK_EVENT_MET_POSTMAN, 0x213E, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_POSTMAN)
|
||||
/* 0x0C */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_ROSA_SISTERS, schedule_dma_static_yar_Blob_005800, 0x21D5, BOMBERS_NOTEBOOK_EVENT_MET_ROSA_SISTERS, 0x213F, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_ROSA_SISTERS)
|
||||
/* 0x0D */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_TOILET_HAND, schedule_dma_static_yar_Blob_006000, 0x21D6, BOMBERS_NOTEBOOK_EVENT_MET_TOLIET_HAND, 0x2140, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_TOILET_HAND)
|
||||
/* 0x0E */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_ANJUS_GRANDMOTHER, schedule_dma_static_yar_Blob_006800, 0x21D7, BOMBERS_NOTEBOOK_EVENT_MET_ANJUS_GRANDMOTHER, 0x2141, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_ANJUS_GRANDMOTHER)
|
||||
/* 0x0F */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_KAMARO, schedule_dma_static_yar_Blob_007000, 0x21D8, BOMBERS_NOTEBOOK_EVENT_MET_KAMARO, 0x2142, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_KAMARO)
|
||||
/* 0x10 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_GROG, schedule_dma_static_yar_Blob_007800, 0x21D9, BOMBERS_NOTEBOOK_EVENT_MET_GROG, 0x2143, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_GROG)
|
||||
/* 0x11 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_GORMAN_BROTHERS, schedule_dma_static_yar_Blob_008000, 0x21DA, BOMBERS_NOTEBOOK_EVENT_MET_GORMAN_BROTHERS, 0x2144, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_GORMAN_BROTHERS)
|
||||
/* 0x12 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_SHIRO, schedule_dma_static_yar_Blob_008800, 0x21DB, BOMBERS_NOTEBOOK_EVENT_MET_SHIRO, 0x2145, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_SHIRO)
|
||||
/* 0x13 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_GURU_GURU, schedule_dma_static_yar_Blob_009000, 0x21DC, BOMBERS_NOTEBOOK_EVENT_MET_GURU_GURU, 0x2146, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_GURU_GURU)
|
||||
|
@ -366,7 +366,7 @@ extern UNK_PTR D_801AE260[3];
|
||||
// extern UNK_TYPE1 D_801AE48C;
|
||||
// extern UNK_TYPE1 D_801AE490;
|
||||
extern EffectSsOverlay gParticleOverlayTable[39];
|
||||
// extern FlagSetEntry sFlagEntries[];
|
||||
|
||||
// extern s32 sEntryIndex;
|
||||
// extern u32 sCurrentBit;
|
||||
// extern s32 sTimer;
|
||||
@ -377,36 +377,6 @@ extern BgCheckSceneSubdivisionEntry sSceneSubdivisionList[];
|
||||
extern BgSpecialSceneMaxObjects sCustomDynapolyMem[];
|
||||
// extern UNK_TYPE1 D_801B4708;
|
||||
|
||||
extern DamageTable sDamageTablePresets[23];
|
||||
extern f32 damageMultipliers[16];
|
||||
extern Collider defaultCollider;
|
||||
extern ColliderTouch defaultColliderTouch;
|
||||
extern ColliderBump defaultColliderBump;
|
||||
extern ColliderInfo defaultColliderInfo;
|
||||
extern ColliderJntSphElementDim defaultColliderJntSphElementDim;
|
||||
extern Cylinder16 defaultColliderCylinderDim;
|
||||
extern TriNorm defaultColliderTrisElementDim;
|
||||
extern ColliderQuadDim defaultColliderQuadDim;
|
||||
extern Vec3f defaultLinePoint;
|
||||
extern ColChkResetFunc sATResetFuncs[COLSHAPE_MAX];
|
||||
extern ColChkResetFunc sACResetFuncs[COLSHAPE_MAX];
|
||||
extern ColChkResetFunc sOCResetFuncs[COLSHAPE_MAX];
|
||||
extern ColChkBloodFunc sBloodFuncs[6];
|
||||
extern HitInfo sHitInfo[14];
|
||||
extern ColChkApplyFunc sColChkApplyFuncs[COLSHAPE_MAX];
|
||||
extern ColChkVsFunc sACVsFuncs[COLSHAPE_MAX][COLSHAPE_MAX];
|
||||
extern ColChkVsFunc sOCVsFuncs[COLSHAPE_MAX][COLSHAPE_MAX];
|
||||
extern CollisionCheckInfo defaultColChkInfo;
|
||||
extern ColChkApplyFunc sApplyDamageFuncs[COLSHAPE_MAX];
|
||||
extern ColChkLineFunc sOCLineCheckFuncs[COLSHAPE_MAX];
|
||||
extern EffectShieldParticleInit shieldParticleInitMetal;
|
||||
extern EffectShieldParticleInit shieldParticleInitWood;
|
||||
// extern UNK_TYPE4 D_801BB090;
|
||||
// extern UNK_TYPE1 D_801BB094;
|
||||
// extern UNK_TYPE1 D_801BB0DC;
|
||||
// extern UNK_TYPE2 D_801BB0FC;
|
||||
// extern UNK_TYPE1 D_801BB100;
|
||||
|
||||
extern u8 gOpeningEntranceIndex;
|
||||
|
||||
extern ActorCutscene sGlobalCutsceneList[8];
|
||||
@ -2250,7 +2220,6 @@ extern s16 D_801F4E7A;
|
||||
// extern UNK_TYPE1 D_801F5730;
|
||||
// extern UNK_TYPE1 D_801F57B4;
|
||||
// extern UNK_TYPE1 D_801F5834;
|
||||
// extern NmiBuff* gNMIBuffer;
|
||||
|
||||
// extern UNK_TYPE1 sSkyboxDrawMatrix;
|
||||
// extern UNK_TYPE1 D_801F6AF0;
|
||||
|
@ -60,67 +60,12 @@
|
||||
#include "z64schedule.h"
|
||||
#include "z64skin.h"
|
||||
#include "z64skybox.h"
|
||||
#include "z64sound_source.h"
|
||||
#include "z64subs.h"
|
||||
#include "z64transition.h"
|
||||
#include "z64view.h"
|
||||
#include "regs.h"
|
||||
|
||||
#define Z_THREAD_ID_IDLE 1
|
||||
#define Z_THREAD_ID_SLOWLY 2
|
||||
#define Z_THREAD_ID_MAIN 3
|
||||
#define Z_THREAD_ID_GRAPH 4
|
||||
#define Z_THREAD_ID_SCHED 5
|
||||
#define Z_THREAD_ID_FLASHROM 13
|
||||
#define Z_THREAD_ID_DMAMGR 18
|
||||
#define Z_THREAD_ID_IRQMGR 19
|
||||
|
||||
#define Z_PRIORITY_SLOWLY 5
|
||||
#define Z_PRIORITY_GRAPH 9
|
||||
#define Z_PRIORITY_AUDIOMGR 11
|
||||
#define Z_PRIORITY_IDLE 12
|
||||
#define Z_PRIORITY_MAIN 12
|
||||
#define Z_PRIORITY_FLASHROM 13
|
||||
#define Z_PRIORITY_PADMGR 15
|
||||
#define Z_PRIORITY_SCHED 16
|
||||
#define Z_PRIORITY_DMAMGR 17
|
||||
#define Z_PRIORITY_IRQMGR 18
|
||||
|
||||
typedef enum {
|
||||
/* -1 */ EQUIP_SLOT_NONE = -1,
|
||||
/* 0 */ EQUIP_SLOT_B,
|
||||
/* 1 */ EQUIP_SLOT_C_LEFT,
|
||||
/* 2 */ EQUIP_SLOT_C_DOWN,
|
||||
/* 3 */ EQUIP_SLOT_C_RIGHT,
|
||||
/* 4 */ EQUIP_SLOT_A
|
||||
} EquipSlot;
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ s8 segment;
|
||||
/* 0x2 */ s16 type;
|
||||
/* 0x4 */ void* params;
|
||||
} AnimatedMaterial; // size = 0x8
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ Vec3s pos;
|
||||
/* 0x6 */ s16 unk_06;
|
||||
/* 0x8 */ Gfx* opa;
|
||||
/* 0xC */ Gfx* xlu;
|
||||
} PolygonDlist2; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ u8 type;
|
||||
/* 0x1 */ u8 num; // number of dlist entries
|
||||
/* 0x4 */ void* start;
|
||||
/* 0x8 */ void* end;
|
||||
} PolygonType2; // size = 0xC
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u32 resetting;
|
||||
/* 0x04 */ u32 resetCount;
|
||||
/* 0x08 */ OSTime duration;
|
||||
/* 0x10 */ OSTime resetTime;
|
||||
} NmiBuff; // size >= 0x18
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s32 requestType;
|
||||
/* 0x04 */ OSMesg response;
|
||||
@ -162,14 +107,6 @@ typedef struct {
|
||||
/* 0x38 */ FaultDrawerCallback inputCallback;
|
||||
} FaultDrawer; // size = 0x3C
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 countdown;
|
||||
/* 0x01 */ u8 playSfxEachFrame;
|
||||
/* 0x02 */ u16 sfxId;
|
||||
/* 0x04 */ Vec3f worldPos;
|
||||
/* 0x10 */ Vec3f projectedPos;
|
||||
} SoundSource; // size = 0x1C
|
||||
|
||||
typedef void(*fault_update_input_func)(Input* input);
|
||||
|
||||
typedef struct {
|
||||
@ -411,12 +348,6 @@ typedef struct {
|
||||
|
||||
struct PlayState;
|
||||
|
||||
typedef s32 (*ColChkResetFunc)(struct PlayState*, Collider*);
|
||||
typedef void (*ColChkBloodFunc)(struct PlayState*, Collider*, Vec3f*);
|
||||
typedef void (*ColChkApplyFunc)(struct PlayState*, CollisionCheckContext*, Collider*);
|
||||
typedef void (*ColChkVsFunc)(struct PlayState*, CollisionCheckContext*, Collider*, Collider*);
|
||||
typedef s32 (*ColChkLineFunc)(struct PlayState*, CollisionCheckContext*, Collider*, Vec3f*, Vec3f*);
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ IrqMgr* irqMgr;
|
||||
/* 0x004 */ SchedContext* sched;
|
||||
@ -456,7 +387,7 @@ typedef struct PlayState {
|
||||
/* 0x00830 */ CollisionContext colCtx;
|
||||
/* 0x01CA0 */ ActorContext actorCtx;
|
||||
/* 0x01F24 */ CutsceneContext csCtx;
|
||||
/* 0x01F78 */ SoundSource soundSources[16];
|
||||
/* 0x01F78 */ SoundSource soundSources[SOUND_SOURCE_COUNT];
|
||||
/* 0x02138 */ EffFootmark footprintInfo[100];
|
||||
/* 0x046B8 */ SramContext sramCtx;
|
||||
/* 0x046E0 */ SkyboxContext skyboxCtx;
|
||||
@ -568,11 +499,6 @@ typedef struct {
|
||||
/* 0x14 */ Gfx* dList;
|
||||
} VisMono; // size = 0x18
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ u8* value;
|
||||
/* 0x4 */ const char* name;
|
||||
} FlagSetEntry; // size = 0x8
|
||||
|
||||
// TODO: Dedicated Header?
|
||||
#define FRAM_BASE_ADDRESS 0x08000000 // FRAM Base Address in Cart Memory
|
||||
#define FRAM_STATUS_REGISTER FRAM_BASE_ADDRESS // FRAM Base Address in Cart Memory
|
||||
|
@ -25,71 +25,17 @@ typedef void(*ActorFunc)(struct Actor* this, struct PlayState* play);
|
||||
typedef u16 (*NpcGetTextIdFunc)(struct PlayState*, struct Actor*);
|
||||
typedef s16 (*NpcUpdateTalkStateFunc)(struct PlayState*, struct Actor*);
|
||||
|
||||
typedef struct {
|
||||
typedef struct PosRot {
|
||||
/* 0x00 */ Vec3f pos;
|
||||
/* 0x0C */ Vec3s rot;
|
||||
} PosRot; // size = 0x14
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 attack[32];
|
||||
} DamageTable; // size = 0x20
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ u8 health;
|
||||
/* 0x2 */ s16 cylRadius;
|
||||
/* 0x4 */ s16 cylHeight;
|
||||
/* 0x6 */ u8 mass;
|
||||
} CollisionCheckInfoInit; // size = 0x8
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ u8 health;
|
||||
/* 0x2 */ s16 cylRadius;
|
||||
/* 0x4 */ s16 cylHeight;
|
||||
/* 0x6 */ s16 cylYShift;
|
||||
/* 0x8 */ u8 mass;
|
||||
} CollisionCheckInfoInit2; // size = 0xC
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ DamageTable* damageTable;
|
||||
/* 0x04 */ Vec3f displacement;
|
||||
/* 0x10 */ s16 cylRadius;
|
||||
/* 0x12 */ s16 cylHeight;
|
||||
/* 0x14 */ s16 cylYShift;
|
||||
/* 0x16 */ u8 mass;
|
||||
/* 0x17 */ u8 health;
|
||||
/* 0x18 */ u8 damage;
|
||||
/* 0x19 */ u8 damageEffect;
|
||||
/* 0x1A */ u8 atHitEffect;
|
||||
/* 0x1B */ u8 acHitEffect;
|
||||
} CollisionCheckInfo; // size = 0x1C
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s32 unk0;
|
||||
/* 0x04 */ s32 unk4;
|
||||
/* 0x08 */ f32 unk8;
|
||||
/* 0x0C */ f32 unkC;
|
||||
/* 0x10 */ f32 unk10;
|
||||
/* 0x14 */ f32 unk14;
|
||||
/* 0x18 */ f32 unk18;
|
||||
/* 0x1C */ f32 unk1C;
|
||||
/* 0x20 */ f32 unk20;
|
||||
/* 0x24 */ f32 unk24;
|
||||
/* 0x28 */ f32 unk28;
|
||||
/* 0x2C */ f32 unk2C;
|
||||
/* 0x30 */ s16 unk30;
|
||||
/* 0x32 */ s16 unk32;
|
||||
/* 0x34 */ s16 unk34;
|
||||
/* 0x36 */ s16 unk36;
|
||||
/* 0x38 */ s16 unk38;
|
||||
/* 0x3A */ s16 unk3A;
|
||||
} ActorEnTest20C; // size = 0x3C
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ s16 unk_0; // frame?
|
||||
/* 0x2 */ Vec3s unk_2; // scale
|
||||
} struct_80124618; // size = 0x8
|
||||
|
||||
typedef struct {
|
||||
typedef struct ActorInit {
|
||||
/* 0x00 */ s16 id;
|
||||
/* 0x02 */ u8 type;
|
||||
/* 0x04 */ u32 flags;
|
||||
|
@ -1,5 +1,5 @@
|
||||
#ifndef Z64_ANIMATION_LEGACY_H
|
||||
#define Z64_ANIMATION_LEGACY_H
|
||||
#ifndef Z64ANIMATION_LEGACY_H
|
||||
#define Z64ANIMATION_LEGACY_H
|
||||
|
||||
#include "ultra64.h"
|
||||
#include "z64math.h"
|
||||
|
@ -6,6 +6,7 @@
|
||||
#include "unk.h"
|
||||
|
||||
struct Actor;
|
||||
struct PlayState;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ struct Actor* actor; // Attached actor
|
||||
@ -427,5 +428,250 @@ typedef enum {
|
||||
#define DMG_UNK_0x1E (1 << 0x1E)
|
||||
#define DMG_POWDER_KEG (1 << 0x1F)
|
||||
|
||||
typedef struct DamageTable {
|
||||
/* 0x00 */ u8 attack[32];
|
||||
} DamageTable; // size = 0x20
|
||||
|
||||
typedef struct CollisionCheckInfoInit {
|
||||
/* 0x0 */ u8 health;
|
||||
/* 0x2 */ s16 cylRadius;
|
||||
/* 0x4 */ s16 cylHeight;
|
||||
/* 0x6 */ u8 mass;
|
||||
} CollisionCheckInfoInit; // size = 0x8
|
||||
|
||||
typedef struct CollisionCheckInfoInit2 {
|
||||
/* 0x0 */ u8 health;
|
||||
/* 0x2 */ s16 cylRadius;
|
||||
/* 0x4 */ s16 cylHeight;
|
||||
/* 0x6 */ s16 cylYShift;
|
||||
/* 0x8 */ u8 mass;
|
||||
} CollisionCheckInfoInit2; // size = 0xC
|
||||
|
||||
typedef struct CollisionCheckInfo {
|
||||
/* 0x00 */ DamageTable* damageTable;
|
||||
/* 0x04 */ Vec3f displacement;
|
||||
/* 0x10 */ s16 cylRadius;
|
||||
/* 0x12 */ s16 cylHeight;
|
||||
/* 0x14 */ s16 cylYShift;
|
||||
/* 0x16 */ u8 mass;
|
||||
/* 0x17 */ u8 health;
|
||||
/* 0x18 */ u8 damage;
|
||||
/* 0x19 */ u8 damageEffect;
|
||||
/* 0x1A */ u8 atHitEffect;
|
||||
/* 0x1B */ u8 acHitEffect;
|
||||
} CollisionCheckInfo; // size = 0x1C
|
||||
|
||||
|
||||
DamageTable* DamageTable_Get(s32 index);
|
||||
void DamageTable_Clear(DamageTable* damageTable);
|
||||
f32 CollisionCheck_GetDamageAndEffectOnBumper(Collider* at, ColliderInfo* atInfo, Collider* ac, ColliderInfo* acInfo, u32* effect);
|
||||
f32 CollisionCheck_ApplyBumperDefense(f32 damage, ColliderInfo* ac);
|
||||
s32 CollisionCheck_GetToucherDamage(Collider* at, ColliderInfo* atInfo, Collider* ac, ColliderInfo* acInfo);
|
||||
s32 Collider_InitBase(struct PlayState* play, Collider* collider);
|
||||
s32 Collider_DestroyBase(struct PlayState* play, Collider* collider);
|
||||
s32 Collider_SetBaseToActor(struct PlayState* play, Collider* collider, ColliderInitToActor* src);
|
||||
s32 Collider_SetBaseType1(struct PlayState* play, Collider* collider, struct Actor* actor, ColliderInitType1* src);
|
||||
s32 Collider_SetBase(struct PlayState* play, Collider* collider, struct Actor* actor, ColliderInit* src);
|
||||
void Collider_ResetATBase(struct PlayState* play, Collider* collider);
|
||||
void Collider_ResetACBase(struct PlayState* play, Collider* collider);
|
||||
void Collider_ResetOCBase(struct PlayState* play, Collider* collider);
|
||||
s32 Collider_InitTouch(struct PlayState* play, ColliderTouch* touch);
|
||||
s32 Collider_DestroyTouch(struct PlayState* play, ColliderTouch* touch);
|
||||
s32 Collider_SetTouch(struct PlayState* play, ColliderTouch* touch, ColliderTouchInit* src);
|
||||
void Collider_ResetATInfoUnk(struct PlayState* play, ColliderInfo* info);
|
||||
s32 Collider_InitBump(struct PlayState* play, ColliderBump* bump);
|
||||
s32 Collider_DestroyBump(struct PlayState* play, ColliderBump* bump);
|
||||
s32 Collider_SetBump(struct PlayState* play, ColliderBump* bump, ColliderBumpInit* src);
|
||||
s32 Collider_InitInfo(struct PlayState* play, ColliderInfo* info);
|
||||
s32 Collider_DestroyInfo(struct PlayState* play, ColliderInfo* info);
|
||||
s32 Collider_SetInfo(struct PlayState* play, ColliderInfo* info, ColliderInfoInit* src);
|
||||
void Collider_ResetATInfo(struct PlayState* play, ColliderInfo* info);
|
||||
void Collider_ResetACInfo(struct PlayState* play, ColliderInfo* info);
|
||||
void Collider_ResetOCInfo(struct PlayState* play, ColliderInfo* info);
|
||||
s32 Collider_InitJntSphElementDim(struct PlayState* play, ColliderJntSphElementDim* dim);
|
||||
s32 Collider_DestroyJntSphElementDim(struct PlayState* play, ColliderJntSphElementDim* dim);
|
||||
s32 Collider_SetJntSphElementDim(struct PlayState* play, ColliderJntSphElementDim* dest, ColliderJntSphElementDimInit* src);
|
||||
s32 Collider_InitJntSphElement(struct PlayState* play, ColliderJntSphElement* element);
|
||||
s32 Collider_DestroyJntSphElement(struct PlayState* play, ColliderJntSphElement* element);
|
||||
s32 Collider_SetJntSphElement(struct PlayState* play, ColliderJntSphElement* dest, ColliderJntSphElementInit* src);
|
||||
s32 Collider_ResetJntSphElementAT(struct PlayState* play, ColliderJntSphElement* collider);
|
||||
s32 Collider_ResetJntSphElementAC(struct PlayState* play, ColliderJntSphElement* collider);
|
||||
s32 Collider_ResetJntSphElementOC(struct PlayState* play, ColliderJntSphElement* collider);
|
||||
s32 Collider_InitJntSph(struct PlayState* play, ColliderJntSph* collider);
|
||||
s32 Collider_FreeJntSph(struct PlayState* play, ColliderJntSph* collider);
|
||||
s32 Collider_DestroyJntSph(struct PlayState* play, ColliderJntSph* collider);
|
||||
s32 Collider_SetJntSphToActor(struct PlayState* play, ColliderJntSph* collider, ColliderJntSphInitToActor* src);
|
||||
s32 Collider_SetJntSphAllocType1(struct PlayState* play, ColliderJntSph* sphereGroup, struct Actor* actor, ColliderJntSphInitType1* src);
|
||||
s32 Collider_SetJntSph(struct PlayState* play, ColliderJntSph* sphereGroup, struct Actor* actor, ColliderJntSphInit* src, ColliderJntSphElement* elements);
|
||||
s32 Collider_InitAndSetJntSph(struct PlayState* play, ColliderJntSph* sphereGroup, struct Actor* actor, ColliderJntSphInit* src, ColliderJntSphElement* elements);
|
||||
s32 Collider_ResetJntSphAT(struct PlayState* play, Collider* collider);
|
||||
s32 Collider_ResetJntSphAC(struct PlayState* play, Collider* collider);
|
||||
s32 Collider_ResetJntSphOC(struct PlayState* play, Collider* collider);
|
||||
s32 Collider_InitCylinderDim(struct PlayState* play, Cylinder16* dim);
|
||||
s32 Collider_DestroyCylinderDim(struct PlayState* play, Cylinder16* dim);
|
||||
s32 Collider_SetCylinderDim(struct PlayState* play, Cylinder16* dim, Cylinder16* src);
|
||||
s32 Collider_InitCylinder(struct PlayState* play, ColliderCylinder* collider);
|
||||
s32 Collider_DestroyCylinder(struct PlayState* play, ColliderCylinder* collider);
|
||||
s32 Collider_SetCylinderToActor(struct PlayState* play, ColliderCylinder* collider, ColliderCylinderInitToActor* src);
|
||||
s32 Collider_SetCylinderType1(struct PlayState* play, ColliderCylinder* collider, struct Actor* actor, ColliderCylinderInitType1* src);
|
||||
s32 Collider_SetCylinder(struct PlayState* play, ColliderCylinder* collider, struct Actor* actor, ColliderCylinderInit* src);
|
||||
s32 Collider_InitAndSetCylinder(struct PlayState* play, ColliderCylinder* collider, struct Actor* actor, ColliderCylinderInit* src);
|
||||
s32 Collider_ResetCylinderAT(struct PlayState* play, Collider* collider);
|
||||
s32 Collider_ResetCylinderAC(struct PlayState* play, Collider* collider);
|
||||
s32 Collider_ResetCylinderOC(struct PlayState* play, Collider* collider);
|
||||
s32 Collider_InitTrisElementDim(struct PlayState* play, TriNorm* dim);
|
||||
s32 Collider_DestroyTrisElementDim(struct PlayState* play, TriNorm* dim);
|
||||
s32 Collider_SetTrisElementDim(struct PlayState* play, TriNorm* dim, ColliderTrisElementDimInit* src);
|
||||
s32 Collider_InitTrisElement(struct PlayState* play, ColliderTrisElement* element);
|
||||
s32 Collider_DestroyTrisElement(struct PlayState* play, ColliderTrisElement* element);
|
||||
s32 Collider_SetTrisElement(struct PlayState* play, ColliderTrisElement* element, ColliderTrisElementInit* src);
|
||||
s32 Collider_ResetTrisElementAT(struct PlayState* play, ColliderTrisElement* element);
|
||||
s32 Collider_ResetTrisElementAC(struct PlayState* play, ColliderTrisElement* element);
|
||||
s32 Collider_ResetTrisElementOC(struct PlayState* play, ColliderTrisElement* element);
|
||||
s32 Collider_InitTris(struct PlayState* play, ColliderTris* tris);
|
||||
s32 Collider_FreeTris(struct PlayState* play, ColliderTris* tris);
|
||||
s32 Collider_DestroyTris(struct PlayState* play, ColliderTris* tris);
|
||||
s32 Collider_SetTrisAllocType1(struct PlayState* play, ColliderTris* tris, struct Actor* actor, ColliderTrisInitType1* src);
|
||||
s32 Collider_SetTris(struct PlayState* play, ColliderTris* triGroup, struct Actor* actor, ColliderTrisInit* src, ColliderTrisElement* tris);
|
||||
s32 Collider_InitAndSetTris(struct PlayState* play, ColliderTris* tris, struct Actor* actor, ColliderTrisInit* src, ColliderTrisElement* elements);
|
||||
s32 Collider_ResetTrisAT(struct PlayState* play, Collider* collider);
|
||||
s32 Collider_ResetTrisAC(struct PlayState* play, Collider* collider);
|
||||
s32 Collider_ResetTrisOC(struct PlayState* play, Collider* collider);
|
||||
s32 Collider_InitQuadDim(struct PlayState* play, ColliderQuadDim* dim);
|
||||
s32 Collider_DestroyQuadDim(struct PlayState* play, ColliderQuadDim* dim);
|
||||
s32 Collider_ResetQuadACDist(struct PlayState* play, ColliderQuadDim* dim);
|
||||
void Collider_SetQuadMidpoints(ColliderQuadDim* dim);
|
||||
s32 Collider_SetQuadDim(struct PlayState* play, ColliderQuadDim* dim, ColliderQuadDimInit* init);
|
||||
s32 Collider_InitQuad(struct PlayState* play, ColliderQuad* collider);
|
||||
s32 Collider_DestroyQuad(struct PlayState* play, ColliderQuad* collider);
|
||||
s32 Collider_SetQuadType1(struct PlayState* play, ColliderQuad* collider, struct Actor* actor, ColliderQuadInitType1* src);
|
||||
s32 Collider_SetQuad(struct PlayState* play, ColliderQuad* collider, struct Actor* actor, ColliderQuadInit* src);
|
||||
s32 Collider_InitAndSetQuad(struct PlayState* play, ColliderQuad* collider, struct Actor* actor, ColliderQuadInit* src);
|
||||
s32 Collider_ResetQuadAT(struct PlayState* play, Collider* collider);
|
||||
s32 Collider_ResetQuadAC(struct PlayState* play, Collider* collider);
|
||||
s32 Collider_ResetQuadOC(struct PlayState* play, Collider* collider);
|
||||
s32 Collider_QuadSetNearestAC(struct PlayState* play, ColliderQuad* quad, Vec3f* hitPos);
|
||||
s32 Collider_InitSphere(struct PlayState* play, ColliderSphere* collider);
|
||||
s32 Collider_DestroySphere(struct PlayState* play, ColliderSphere* collider);
|
||||
s32 Collider_SetSphere(struct PlayState* play, ColliderSphere* collider, struct Actor* actor, ColliderSphereInit* src);
|
||||
s32 Collider_InitAndSetSphere(struct PlayState* play, ColliderSphere* collider, struct Actor* actor, ColliderSphereInit* src);
|
||||
s32 Collider_ResetSphereAT(struct PlayState* play, Collider* collider);
|
||||
s32 Collider_ResetSphereAC(struct PlayState* play, Collider* collider);
|
||||
s32 Collider_ResetSphereOC(struct PlayState* play, Collider* collider);
|
||||
s32 Collider_InitLine(struct PlayState* play, OcLine* line);
|
||||
s32 Collider_DestroyLine(struct PlayState* play, OcLine* line);
|
||||
s32 Collider_SetLinePoints(struct PlayState* play, OcLine* line, Vec3f* a, Vec3f* b);
|
||||
s32 Collider_SetLine(struct PlayState* play, OcLine* line, OcLine* src);
|
||||
s32 Collider_ResetLineOC(struct PlayState* play, OcLine* line);
|
||||
void CollisionCheck_InitContext(struct PlayState* play, CollisionCheckContext* colCtxt);
|
||||
void CollisionCheck_DestroyContext(struct PlayState* play, CollisionCheckContext* colCtxt);
|
||||
void CollisionCheck_ClearContext(struct PlayState* play, CollisionCheckContext* colCtxt);
|
||||
void CollisionCheck_EnableSAC(struct PlayState* play, CollisionCheckContext* colCtxt);
|
||||
void CollisionCheck_DisableSAC(struct PlayState* play, CollisionCheckContext* colCtxt);
|
||||
s32 CollisionCheck_SetAT(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
|
||||
s32 CollisionCheck_SetAT_SAC(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* collider, s32 index);
|
||||
s32 CollisionCheck_SetAC(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
|
||||
s32 CollisionCheck_SetAC_SAC(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* collider, s32 index);
|
||||
s32 CollisionCheck_SetOC(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
|
||||
s32 CollisionCheck_SetOC_SAC(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* collider, s32 index);
|
||||
s32 CollisionCheck_SetOCLine(struct PlayState* play, CollisionCheckContext* colCtxt, OcLine* line);
|
||||
s32 CollisionCheck_SkipTouch(ColliderInfo* info);
|
||||
s32 CollisionCheck_SkipBump(ColliderInfo* info);
|
||||
s32 CollisionCheck_NoSharedFlags(ColliderInfo* toucher, ColliderInfo* bumper);
|
||||
void CollisionCheck_NoBlood(struct PlayState* play, Collider* collider, Vec3f* v);
|
||||
void CollisionCheck_BlueBlood(struct PlayState* play, Collider* collider, Vec3f* v);
|
||||
void CollisionCheck_GreenBlood(struct PlayState* play, Collider* collider, Vec3f* v);
|
||||
void CollisionCheck_WaterBurst(struct PlayState* play, Collider* collider, Vec3f* v);
|
||||
void CollisionCheck_RedBlood(struct PlayState* play, Collider* collider, Vec3f* v);
|
||||
void CollisionCheck_RedBloodUnused(struct PlayState* play, Collider* collider, Vec3f* v);
|
||||
void CollisionCheck_HitSolid(struct PlayState* play, ColliderInfo* info, Collider* collider, Vec3f* hitPos);
|
||||
s32 CollisionCheck_SwordHitAudio(Collider* at, ColliderInfo* acInfo);
|
||||
void CollisionCheck_HitEffects(struct PlayState* play, Collider* at, ColliderInfo* atInfo, Collider* ac, ColliderInfo* acInfo, Vec3f* hitPos);
|
||||
void CollisionCheck_SetBounce(Collider* at, Collider* ac);
|
||||
s32 CollisionCheck_SetATvsAC(struct PlayState* play, Collider* at, ColliderInfo* atInfo, Vec3f* atPos, Collider* ac, ColliderInfo* acInfo, Vec3f* acPos, Vec3f* hitPos);
|
||||
void CollisionCheck_TrisAvgPoint(ColliderTrisElement* tri, Vec3f* avg);
|
||||
void CollisionCheck_QuadAvgPoint(ColliderQuad* quad, Vec3f* avg);
|
||||
void CollisionCheck_AC_JntSphVsJntSph(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_JntSphVsCyl(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_JntSphVsTris(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_JntSphVsQuad(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_JntSphVsSphere(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_CylVsJntSph(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_CylVsCyl(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_CylVsTris(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_CylVsQuad(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_CylVsSphere(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_TrisVsJntSph(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_TrisVsCyl(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_TrisVsTris(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_TrisVsQuad(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_TrisVsSphere(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_QuadVsJntSph(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_QuadVsCyl(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_QuadVsTris(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_QuadVsQuad(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_QuadVsSphere(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_SphereVsJntSph(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_SphereVsCylinder(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_SphereVsTris(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_SphereVsQuad(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_AC_SphereVsSphere(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT, Collider* colAC);
|
||||
void CollisionCheck_SetJntSphHitFX(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
|
||||
void CollisionCheck_SetCylHitFX(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
|
||||
void CollisionCheck_SetTrisHitFX(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
|
||||
void CollisionCheck_SetQuadHitFX(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
|
||||
void CollisionCheck_SetSphereHitFX(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
|
||||
void CollisionCheck_SetHitEffects(struct PlayState* play, CollisionCheckContext* colCtxt);
|
||||
void CollisionCheck_AC(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* colAT);
|
||||
void CollisionCheck_AT(struct PlayState* play, CollisionCheckContext* colCtxt);
|
||||
s32 CollisionCheck_GetMassType(u8 mass);
|
||||
void CollisionCheck_SetOCvsOC(struct PlayState* play, Collider* left, ColliderInfo* leftInfo, Vec3f* leftPos, Collider* right, ColliderInfo* rightInfo, Vec3f* rightPos, f32 overlap);
|
||||
void CollisionCheck_OC_JntSphVsJntSph(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* l, Collider* r);
|
||||
void CollisionCheck_OC_JntSphVsCyl(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* l, Collider* r);
|
||||
void CollisionCheck_OC_JntSphVsSphere(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* l, Collider* r);
|
||||
void CollisionCheck_OC_CylVsJntSph(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* l, Collider* r);
|
||||
void CollisionCheck_OC_CylVsCyl(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* l, Collider* r);
|
||||
void CollisionCheck_OC_CylVsSphere(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* l, Collider* r);
|
||||
void CollisionCheck_OC_SphereVsJntSph(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* l, Collider* r);
|
||||
void CollisionCheck_OC_SphereVsCyl(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* l, Collider* r);
|
||||
void CollisionCheck_OC_SphereVsSphere(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* l, Collider* r);
|
||||
s32 CollisionCheck_SkipOC(Collider* collider);
|
||||
s32 CollisionCheck_Incompatible(Collider* left, Collider* right);
|
||||
void CollisionCheck_OC(struct PlayState* play, CollisionCheckContext* colCtxt);
|
||||
void CollisionCheck_InitInfo(CollisionCheckInfo* info);
|
||||
void CollisionCheck_ResetDamage(CollisionCheckInfo* info);
|
||||
void CollisionCheck_SetInfoNoDamageTable(CollisionCheckInfo* info, CollisionCheckInfoInit* init);
|
||||
void CollisionCheck_SetInfo(CollisionCheckInfo* info, DamageTable* damageTable, CollisionCheckInfoInit* init);
|
||||
void CollisionCheck_SetInfo2(CollisionCheckInfo* info, DamageTable* damageTable, CollisionCheckInfoInit2* init);
|
||||
void CollisionCheck_SetInfoGetDamageTable(CollisionCheckInfo* info, s32 index, CollisionCheckInfoInit2* init);
|
||||
void CollisionCheck_ApplyDamage(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* collider, ColliderInfo* info);
|
||||
void CollisionCheck_ApplyDamageJntSph(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
|
||||
void CollisionCheck_ApplyDamageCyl(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
|
||||
void CollisionCheck_ApplyDamageTris(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
|
||||
void CollisionCheck_ApplyDamageQuad(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
|
||||
void CollisionCheck_ApplyDamageSphere(struct PlayState* play, CollisionCheckContext* colCtxt, Collider* collider);
|
||||
void CollisionCheck_Damage(struct PlayState* play, CollisionCheckContext* colCtxt);
|
||||
s32 CollisionCheck_LineOC_JntSph(struct PlayState* play, CollisionCheckContext* colChkCtx, Collider* collider, Vec3f* a, Vec3f* b);
|
||||
s32 CollisionCheck_LineOC_Cyl(struct PlayState* play, CollisionCheckContext* colChkCtx, Collider* collider, Vec3f* a, Vec3f* b);
|
||||
s32 CollisionCheck_LineOC_Sphere(struct PlayState* play, CollisionCheckContext* colChkCtx, Collider* collider, Vec3f* a, Vec3f* b);
|
||||
s32 CollisionCheck_LineOC(struct PlayState* play, CollisionCheckContext* colChkCtx, Vec3f* a, Vec3f* b, struct Actor** exclusions, s32 numExclusions);
|
||||
s32 CollisionCheck_LineOCCheckAll(struct PlayState* play, CollisionCheckContext* colCtxt, Vec3f* a, Vec3f* b);
|
||||
s32 CollisionCheck_LineOCCheck(struct PlayState* play, CollisionCheckContext* colCtxt, Vec3f* a, Vec3f* b, struct Actor** exclusions, s32 numExclusions);
|
||||
void Collider_UpdateCylinder(struct Actor* actor, ColliderCylinder* collider);
|
||||
void Collider_SetCylinderPosition(ColliderCylinder* collider, Vec3s* pos);
|
||||
void Collider_SetQuadVertices(ColliderQuad* collider, Vec3f* a, Vec3f* b, Vec3f* c, Vec3f* d);
|
||||
void Collider_SetTrisVertices(ColliderTris* collider, s32 index, Vec3f* a, Vec3f* b, Vec3f* c);
|
||||
void Collider_SetTrisDim(struct PlayState* play, ColliderTris* collider, s32 index, ColliderTrisElementDimInit* init);
|
||||
void Collider_UpdateSpheres(s32 limb, ColliderJntSph* collider);
|
||||
void Collider_UpdateSpheresElement(ColliderJntSph* collider, s32 index, struct Actor* actor);
|
||||
void Collider_UpdateSphere(s32 limb, ColliderSphere* collider);
|
||||
void CollisionCheck_SpawnRedBlood(struct PlayState* play, Vec3f* v);
|
||||
void CollisionCheck_SpawnWaterDroplets(struct PlayState* play, Vec3f* v);
|
||||
void CollisionCheck_SpawnShieldParticles(struct PlayState* play, Vec3f* v);
|
||||
void CollisionCheck_SpawnShieldParticlesMetal(struct PlayState* play, Vec3f* v);
|
||||
void CollisionCheck_SpawnShieldParticlesMetalSound(struct PlayState* play, Vec3f* v, Vec3f* pos);
|
||||
void CollisionCheck_SpawnShieldParticlesMetal2(struct PlayState* play, Vec3f* v);
|
||||
void CollisionCheck_SpawnShieldParticlesWood(struct PlayState* play, Vec3f* v, Vec3f* pos);
|
||||
s32 CollisionCheck_CylSideVsLineSeg(f32 radius, f32 height, f32 offset, Vec3f* actorPos, Vec3f* itemPos, Vec3f* itemProjPos, Vec3f* out1, Vec3f* out2);
|
||||
|
||||
#endif
|
||||
|
@ -430,7 +430,7 @@ typedef enum {
|
||||
/* 0x1F6 */ CS_CMD_ACTOR_CUE_502,
|
||||
/* 0x1F7 */ CS_CMD_ACTOR_CUE_503,
|
||||
/* 0x1F8 */ CS_CMD_ACTOR_CUE_504,
|
||||
/* 0x1F9 */ CS_CMD_ACTOR_CUE_505,
|
||||
/* 0x1F9 */ CS_CMD_ACTOR_CUE_SOTCS, // Song of Time Cutscenes (Double SoT, Three-Day Reset SoT)
|
||||
/* 0x1FA */ CS_CMD_ACTOR_CUE_506,
|
||||
/* 0x1FB */ CS_CMD_ACTOR_CUE_507,
|
||||
/* 0x1FC */ CS_CMD_ACTOR_CUE_508,
|
||||
|
@ -1,5 +1,5 @@
|
||||
#ifndef Z64_GAME_H
|
||||
#define Z64_GAME_H
|
||||
#ifndef Z64GAME_H
|
||||
#define Z64GAME_H
|
||||
|
||||
#include "ultra64.h"
|
||||
#include "libc/stdbool.h"
|
||||
|
@ -4,6 +4,15 @@
|
||||
#include "ultra64.h"
|
||||
#include "z64view.h"
|
||||
|
||||
typedef enum {
|
||||
/* -1 */ EQUIP_SLOT_NONE = -1,
|
||||
/* 0 */ EQUIP_SLOT_B,
|
||||
/* 1 */ EQUIP_SLOT_C_LEFT,
|
||||
/* 2 */ EQUIP_SLOT_C_DOWN,
|
||||
/* 3 */ EQUIP_SLOT_C_RIGHT,
|
||||
/* 4 */ EQUIP_SLOT_A
|
||||
} EquipSlot;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ A_BTN_STATE_0,
|
||||
/* 1 */ A_BTN_STATE_1,
|
||||
@ -216,4 +225,49 @@ typedef struct {
|
||||
/* 0x344 */ size_t storySize;
|
||||
} InterfaceContext; // size = 0x348
|
||||
|
||||
Gfx* Gfx_DrawTexRectRGBA16(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy);
|
||||
Gfx* Gfx_DrawTexRectIA8(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy);
|
||||
Gfx* Gfx_DrawTexRectI8(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy);
|
||||
Gfx* Gfx_DrawTexQuadIA8(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, u16 point);
|
||||
Gfx* Gfx_DrawTexQuad4b(Gfx* gfx, TexturePtr texture, s32 fmt, s16 textureWidth, s16 textureHeight, u16 point);
|
||||
|
||||
void Interface_StartTimer(s16 timerId, s16 seconds);
|
||||
void Interface_StartPostmanTimer(s16 seconds, s16 bunnyHoodState);
|
||||
void Interface_NewDay(struct PlayState* play, s32 day);
|
||||
void Interface_SetHudVisibility(u16 hudVisibility);
|
||||
void Interface_UpdateButtonsPart2(struct PlayState* play);
|
||||
void Interface_SetSceneRestrictions(struct PlayState* play);
|
||||
void Interface_InitMinigame(struct PlayState* play);
|
||||
void Interface_LoadItemIconImpl(struct PlayState* play, u8 btn);
|
||||
void Interface_LoadItemIcon(struct PlayState* play, u8 btn);
|
||||
void Interface_UpdateButtonsAlt(struct PlayState* play, u16 flag);
|
||||
u8 Item_Give(struct PlayState* play, u8 item);
|
||||
u8 Item_CheckObtainability(u8 item);
|
||||
void Inventory_DeleteItem(s16 item, s16 slot);
|
||||
void Inventory_UnequipItem(s16 item);
|
||||
s32 Inventory_ReplaceItem(struct PlayState* play, u8 oldItem, u8 newItem);
|
||||
void Inventory_UpdateDeitySwordEquip(struct PlayState* play) ;
|
||||
s32 Inventory_HasEmptyBottle(void);
|
||||
s32 Inventory_HasItemInBottle(u8 item);
|
||||
void Inventory_UpdateBottleItem(struct PlayState* play, u8 item, u8 btn);
|
||||
s32 Inventory_ConsumeFairy(struct PlayState* play);
|
||||
void Inventory_UpdateItem(struct PlayState* play, s16 slot, s16 item);
|
||||
void Interface_SetAButtonDoAction(struct PlayState* play, u16 aButtonDoAction);
|
||||
void Interface_SetBButtonDoAction(struct PlayState* play, s16 bButtonDoAction);
|
||||
void Interface_SetTatlCall(struct PlayState* play, u16 tatlCallState);
|
||||
void Interface_LoadBButtonDoActionLabel(struct PlayState* play, s16 bButtonDoAction);
|
||||
s32 Health_ChangeBy(struct PlayState* play, s16 healthChange);
|
||||
void Health_GiveHearts(s16 hearts);
|
||||
void Rupees_ChangeBy(s16 rupeeChange);
|
||||
void Inventory_ChangeAmmo(s16 item, s16 ammoChange);
|
||||
void Magic_Add(struct PlayState* play, s16 magicToAdd);
|
||||
void Magic_Reset(struct PlayState* play);
|
||||
s32 Magic_Consume(struct PlayState* play, s16 magicToConsume, s16 type);
|
||||
void Interface_SetPerfectLetters(struct PlayState* play, s16 perfectLettersType);
|
||||
void Interface_StartMoonCrash(struct PlayState* play);
|
||||
void Interface_Draw(struct PlayState* play);
|
||||
void Interface_Update(struct PlayState* play);
|
||||
void Interface_Destroy(struct PlayState* play);
|
||||
void Interface_Init(struct PlayState* play);
|
||||
|
||||
#endif
|
||||
|
@ -8,10 +8,24 @@
|
||||
struct Actor;
|
||||
struct MessageTableEntry;
|
||||
struct OcarinaStaff;
|
||||
struct PlayState;
|
||||
|
||||
extern u16 sBombersNotebookEventMessages[BOMBERS_NOTEBOOK_EVENT_MAX];
|
||||
extern u16 gBombersNotebookWeekEventFlags[BOMBERS_NOTEBOOK_EVENT_MAX];
|
||||
|
||||
typedef enum FaceReactionSet {
|
||||
/* 0x11 */ FACE_REACTION_SET_JIM = 0x11,
|
||||
/* 0x12 */ FACE_REACTION_SET_BOMBERS,
|
||||
/* 0x15 */ FACE_REACTION_SET_BOMBERS_HIDEOUT_GUARD = 0x15,
|
||||
/* 0x2D */ FACE_REACTION_SET_TREASURE_CHEST_SHOP_GAL = 0x2D,
|
||||
/* 0x2F */ FACE_REACTION_SET_CURIOSITY_SHOP_MAN = 0x2F,
|
||||
/* 0x30 */ FACE_REACTION_SET_TOWN_SHOOTING_GALLERY_MAN,
|
||||
/* 0x31 */ FACE_REACTION_SET_SWAMP_SHOOTING_GALLERY_MAN,
|
||||
/* 0x36 */ FACE_REACTION_SET_PART_TIMER = 0x36
|
||||
} FaceReactionSet;
|
||||
|
||||
u16 Text_GetFaceReaction(struct PlayState* play, FaceReactionSet reactionSet);
|
||||
|
||||
typedef enum TextState {
|
||||
/* 0 */ TEXT_STATE_NONE,
|
||||
/* 1 */ TEXT_STATE_1,
|
||||
|
@ -32,6 +32,12 @@ typedef enum {
|
||||
/* 24 */ OCARINA_SONG_SCARECROW_LONG = OCARINA_SONG_MAX // anything larger than 24 is considered the long scarecrow's song
|
||||
} OcarinaSongId;
|
||||
|
||||
typedef enum OcarinaMode {
|
||||
/* 0x18 */ OCARINA_MODE_APPLY_INV_SOT_FAST = 24,
|
||||
/* 0x19 */ OCARINA_MODE_APPLY_INV_SOT_SLOW,
|
||||
/* 0x1A */ OCARINA_MODE_APPLY_DOUBLE_SOT
|
||||
} OcarinaMode;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ OCARINA_BTN_A,
|
||||
/* 1 */ OCARINA_BTN_C_DOWN,
|
||||
|
@ -656,7 +656,7 @@ typedef enum PlayerCsMode {
|
||||
/* 0x3F */ PLAYER_CSMODE_63,
|
||||
/* 0x40 */ PLAYER_CSMODE_64,
|
||||
/* 0x41 */ PLAYER_CSMODE_65,
|
||||
/* 0x42 */ PLAYER_CSMODE_66,
|
||||
/* 0x42 */ PLAYER_CSMODE_66, // Look side-to-side with chin down
|
||||
/* 0x43 */ PLAYER_CSMODE_67,
|
||||
/* 0x44 */ PLAYER_CSMODE_68,
|
||||
/* 0x45 */ PLAYER_CSMODE_69,
|
||||
@ -664,15 +664,15 @@ typedef enum PlayerCsMode {
|
||||
/* 0x47 */ PLAYER_CSMODE_71,
|
||||
/* 0x48 */ PLAYER_CSMODE_72,
|
||||
/* 0x49 */ PLAYER_CSMODE_73,
|
||||
/* 0x4A */ PLAYER_CSMODE_74,
|
||||
/* 0x4A */ PLAYER_CSMODE_74, // Give a big nod of approval
|
||||
/* 0x4B */ PLAYER_CSMODE_75,
|
||||
/* 0x4C */ PLAYER_CSMODE_76,
|
||||
/* 0x4D */ PLAYER_CSMODE_77,
|
||||
/* 0x4E */ PLAYER_CSMODE_78,
|
||||
/* 0x4F */ PLAYER_CSMODE_79,
|
||||
/* 0x50 */ PLAYER_CSMODE_80,
|
||||
/* 0x51 */ PLAYER_CSMODE_81,
|
||||
/* 0x52 */ PLAYER_CSMODE_82,
|
||||
/* 0x51 */ PLAYER_CSMODE_81, // Look side-to-side with chin up
|
||||
/* 0x52 */ PLAYER_CSMODE_82, // Close eyes and sway body in circles
|
||||
/* 0x53 */ PLAYER_CSMODE_83,
|
||||
/* 0x54 */ PLAYER_CSMODE_84, // Sucked by the moon
|
||||
/* 0x55 */ PLAYER_CSMODE_85,
|
||||
|
@ -1467,15 +1467,8 @@ typedef enum {
|
||||
* gSaveContext.eventInf
|
||||
*/
|
||||
|
||||
// gSaveContext.eventInf[0] is used to dog race information
|
||||
// #define EVENTINF_00 0x00
|
||||
// #define EVENTINF_01 0x01
|
||||
// #define EVENTINF_02 0x02
|
||||
// #define EVENTINF_03 0x03
|
||||
// #define EVENTINF_04 0x04
|
||||
// #define EVENTINF_05 0x05
|
||||
// #define EVENTINF_06 0x06
|
||||
// #define EVENTINF_07 0x07
|
||||
// gSaveContext.eventInf[0] is used for dog race information (8 entries)
|
||||
// EVENTINF_00 to EVENTINF_07
|
||||
|
||||
#define EVENTINF_10 0x10
|
||||
#define EVENTINF_11 0x11
|
||||
@ -1492,7 +1485,8 @@ typedef enum {
|
||||
#define EVENTINF_24 0x24
|
||||
#define EVENTINF_25 0x25
|
||||
#define EVENTINF_26 0x26
|
||||
#define EVENTINF_27 0x27
|
||||
// "Dawn of ... day". Must be triggered with respawnFlag -4 or -99
|
||||
#define EVENTINF_TRIGGER_DAYTELOP 0x27
|
||||
#define EVENTINF_30 0x30
|
||||
|
||||
// EVENTINF_31 is used to track if Player is within range of EnGakufu (2D Song Buttons Appearing on Wall)
|
||||
@ -1536,11 +1530,14 @@ typedef enum {
|
||||
#define EVENTINF_65 0x65
|
||||
#define EVENTINF_66 0x66
|
||||
#define EVENTINF_67 0x67
|
||||
#define EVENTINF_70 0x70
|
||||
#define EVENTINF_71 0x71
|
||||
#define EVENTINF_72 0x72
|
||||
#define EVENTINF_73 0x73
|
||||
#define EVENTINF_74 0x74
|
||||
|
||||
// Tracks which ammo is lost during the three day reset
|
||||
#define EVENTINF_THREEDAYRESET_LOST_RUPEES 0x70
|
||||
#define EVENTINF_THREEDAYRESET_LOST_BOMB_AMMO 0x71
|
||||
#define EVENTINF_THREEDAYRESET_LOST_NUT_AMMO 0x72
|
||||
#define EVENTINF_THREEDAYRESET_LOST_STICK_AMMO 0x73
|
||||
#define EVENTINF_THREEDAYRESET_LOST_ARROW_AMMO 0x74
|
||||
|
||||
#define EVENTINF_75 0x75
|
||||
#define EVENTINF_76 0x76
|
||||
#define EVENTINF_77 0x77
|
||||
|
@ -6,6 +6,9 @@
|
||||
#include "z64cutscene.h"
|
||||
#include "unk.h"
|
||||
|
||||
struct GameState;
|
||||
struct PlayState;
|
||||
|
||||
#define SPAWN_ROT_FLAGS(rotation, flags) (((rotation) << 7) | (flags))
|
||||
|
||||
typedef struct {
|
||||
@ -459,6 +462,16 @@ typedef struct {
|
||||
/* 0x8 */ u8* textureIndexList;
|
||||
} AnimatedMatTexCycleParams; // size = 0xC
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ s8 segment;
|
||||
/* 0x2 */ s16 type;
|
||||
/* 0x4 */ void* params;
|
||||
} AnimatedMaterial; // size = 0x8
|
||||
|
||||
// TODO: ZAPD
|
||||
typedef RoomShapeCullableEntry PolygonDlist2;
|
||||
typedef RoomShapeCullable PolygonType2;
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ void* spaceStart;
|
||||
/* 0x004 */ void* spaceEnd;
|
||||
@ -885,4 +898,89 @@ typedef enum {
|
||||
#define SCENE_CMD_MISC_SETTINGS SCENE_CMD_SET_REGION_VISITED
|
||||
#define SCENE_CMD_CUTSCENE_LIST SCENE_CMD_CUTSCENE_SCRIPT_LIST
|
||||
|
||||
s32 Object_Spawn(ObjectContext* objectCtx, s16 id);
|
||||
void Object_InitBank(struct GameState* gameState, ObjectContext* objectCtx);
|
||||
void Object_UpdateBank(ObjectContext* objectCtx);
|
||||
s32 Object_GetIndex(ObjectContext* objectCtx, s16 objectId);
|
||||
s32 Object_IsLoaded(ObjectContext* objectCtx, s32 index);
|
||||
void Object_LoadAll(ObjectContext* objectCtx);
|
||||
void* func_8012F73C(ObjectContext* objectCtx, s32 iParm2, s16 id);
|
||||
void Scene_CommandSpawnList(struct PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandActorList(struct PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandActorCutsceneCamList(struct PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandCollisionHeader(struct PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandRoomList(struct PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandEntranceList(struct PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandSpecialFiles(struct PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandRoomBehavior(struct PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandMesh(struct PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandObjectList(struct PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandLightList(struct PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandPathList(struct PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandTransiActorList(struct PlayState* play, SceneCmd* cmd);
|
||||
void Door_InitContext(struct GameState* gameState, DoorContext* doorCtx);
|
||||
void Scene_CommandEnvLightSettings(struct PlayState* play, SceneCmd* cmd);
|
||||
void Scene_LoadAreaTextures(struct PlayState* play, s32 fileIndex);
|
||||
void Scene_CommandSkyboxSettings(struct PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandSkyboxDisables(struct PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandTimeSettings(struct PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandWindSettings(struct PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandExitList(struct PlayState* play, SceneCmd* cmd);
|
||||
void Scene_Command09(struct PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandSoundSettings(struct PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandEchoSetting(struct PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandAltHeaderList(struct PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandCutsceneScriptList(struct PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandCutsceneList(struct PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandMiniMap(struct PlayState* play, SceneCmd* cmd);
|
||||
void Scene_Command1D(struct PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandMiniMapCompassInfo(struct PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandSetRegionVisitedFlag(struct PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandAnimatedMaterials(struct PlayState* play, SceneCmd* cmd);
|
||||
void Scene_SetExitFade(struct PlayState* play);
|
||||
s32 Scene_ExecuteCommands(struct PlayState* play, SceneCmd* sceneCmd);
|
||||
u16 Entrance_Create(s32 scene, s32 spawn, s32 layer);
|
||||
u16 Entrance_CreateFromSpawn(s32 spawn);
|
||||
void Scene_Draw(struct PlayState* play);
|
||||
void Scene_DrawConfigDefault(struct PlayState* play);
|
||||
Gfx* AnimatedMat_TexScroll(struct PlayState* play, AnimatedMatTexScrollParams* params);
|
||||
void AnimatedMat_DrawTexScroll(struct PlayState* play, s32 segment, void* params);
|
||||
Gfx* AnimatedMat_TwoLayerTexScroll(struct PlayState* play, AnimatedMatTexScrollParams* params);
|
||||
void AnimatedMat_DrawTwoTexScroll(struct PlayState* play, s32 segment, void* params);
|
||||
void AnimatedMat_SetColor(struct PlayState* play, s32 segment, F3DPrimColor* primColorResult, F3DEnvColor* envColor);
|
||||
void AnimatedMat_DrawColor(struct PlayState* play, s32 segment, void* params);
|
||||
s32 AnimatedMat_Lerp(s32 min, s32 max, f32 norm);
|
||||
void AnimatedMat_DrawColorLerp(struct PlayState* play, s32 segment, void* params);
|
||||
f32 Scene_LagrangeInterp(s32 n, f32 x[], f32 fx[], f32 xp);
|
||||
u8 Scene_LagrangeInterpColor(s32 n, f32 x[], f32 fx[], f32 xp);
|
||||
void AnimatedMat_DrawColorNonLinearInterp(struct PlayState* play, s32 segment, void* params);
|
||||
void AnimatedMat_DrawTexCycle(struct PlayState* play, s32 segment, void* params);
|
||||
void AnimatedMat_DrawMain(struct PlayState* play, AnimatedMaterial* matAnim, f32 alphaRatio, u32 step, u32 flags);
|
||||
void AnimatedMat_Draw(struct PlayState* play, AnimatedMaterial* matAnim);
|
||||
void AnimatedMat_DrawOpa(struct PlayState* play, AnimatedMaterial* matAnim);
|
||||
void AnimatedMat_DrawXlu(struct PlayState* play, AnimatedMaterial* matAnim);
|
||||
void AnimatedMat_DrawAlpha(struct PlayState* play, AnimatedMaterial* matAnim, f32 alphaRatio);
|
||||
void AnimatedMat_DrawAlphaOpa(struct PlayState* play, AnimatedMaterial* matAnim, f32 alphaRatio);
|
||||
void AnimatedMat_DrawAlphaXlu(struct PlayState* play, AnimatedMaterial* matAnim, f32 alphaRatio);
|
||||
void AnimatedMat_DrawStep(struct PlayState* play, AnimatedMaterial* matAnim, u32 step);
|
||||
void AnimatedMat_DrawStepOpa(struct PlayState* play, AnimatedMaterial* matAnim, u32 step);
|
||||
void AnimatedMat_DrawStepXlu(struct PlayState* play, AnimatedMaterial* matAnim, u32 step);
|
||||
void AnimatedMat_DrawAlphaStep(struct PlayState* play, AnimatedMaterial* matAnim, f32 alphaRatio, u32 step);
|
||||
void AnimatedMat_DrawAlphaStepOpa(struct PlayState* play, AnimatedMaterial* matAnim, f32 alphaRatio, u32 step);
|
||||
void AnimatedMat_DrawAlphaStepXlu(struct PlayState* play, AnimatedMaterial* matAnim, f32 alphaRatio, u32 step);
|
||||
void Scene_DrawConfigMatAnim(struct PlayState* play);
|
||||
void Scene_DrawConfig3(struct PlayState* play);
|
||||
void Scene_DrawConfig4(struct PlayState* play);
|
||||
void Scene_DrawConfigDoNothing(struct PlayState* play);
|
||||
void Scene_SetRenderModeXlu(struct PlayState* play, s32 index, u32 flags);
|
||||
void Scene_SetCullFlag(struct PlayState* play, s32 index, u32 flags);
|
||||
void Scene_DrawConfig5(struct PlayState* play);
|
||||
void Scene_DrawConfigMatAnimManualStep(struct PlayState* play);
|
||||
void Scene_DrawConfigGreatBayTemple(struct PlayState* play);
|
||||
EntranceTableEntry* Entrance_GetTableEntry(u16 entrance);
|
||||
s32 Entrance_GetSceneId(u16 entrance);
|
||||
s32 Entrance_GetSceneIdAbsolute(u16 entrance);
|
||||
s32 Entrance_GetSpawnNum(u16 entrance);
|
||||
s32 Entrance_GetTransitionFlags(u16 entrance);
|
||||
|
||||
#endif
|
||||
|
24
include/z64sound_source.h
Normal file
24
include/z64sound_source.h
Normal file
@ -0,0 +1,24 @@
|
||||
#ifndef Z64SOUND_SOURCE_H
|
||||
#define Z64SOUND_SOURCE_H
|
||||
|
||||
#include "ultra64.h"
|
||||
#include "z64math.h"
|
||||
|
||||
struct PlayState;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 countdown;
|
||||
/* 0x01 */ u8 playSfxEachFrame;
|
||||
/* 0x02 */ u16 sfxId;
|
||||
/* 0x04 */ Vec3f worldPos;
|
||||
/* 0x10 */ Vec3f projectedPos;
|
||||
} SoundSource; // size = 0x1C
|
||||
|
||||
#define SOUND_SOURCE_COUNT 16
|
||||
|
||||
void SoundSource_InitAll(struct PlayState* play);
|
||||
void SoundSource_UpdateAll(struct PlayState* play);
|
||||
void SoundSource_PlaySfxAtFixedWorldPos(struct PlayState* play, Vec3f* worldPos, u32 duration, u16 sfxId);
|
||||
void SoundSource_PlaySfxEachFrameAtFixedWorldPos(struct PlayState* play, Vec3f* worldPos, u32 duration, u16 sfxId);
|
||||
|
||||
#endif
|
24
include/z64thread.h
Normal file
24
include/z64thread.h
Normal file
@ -0,0 +1,24 @@
|
||||
#ifndef Z64THREAD_H
|
||||
#define Z64THREAD_H
|
||||
|
||||
#define Z_THREAD_ID_IDLE 1
|
||||
#define Z_THREAD_ID_SLOWLY 2
|
||||
#define Z_THREAD_ID_MAIN 3
|
||||
#define Z_THREAD_ID_GRAPH 4
|
||||
#define Z_THREAD_ID_SCHED 5
|
||||
#define Z_THREAD_ID_FLASHROM 13
|
||||
#define Z_THREAD_ID_DMAMGR 18
|
||||
#define Z_THREAD_ID_IRQMGR 19
|
||||
|
||||
#define Z_PRIORITY_SLOWLY 5
|
||||
#define Z_PRIORITY_GRAPH 9
|
||||
#define Z_PRIORITY_AUDIOMGR 11
|
||||
#define Z_PRIORITY_IDLE 12
|
||||
#define Z_PRIORITY_MAIN 12
|
||||
#define Z_PRIORITY_FLASHROM 13
|
||||
#define Z_PRIORITY_PADMGR 15
|
||||
#define Z_PRIORITY_SCHED 16
|
||||
#define Z_PRIORITY_DMAMGR 17
|
||||
#define Z_PRIORITY_IRQMGR 18
|
||||
|
||||
#endif
|
47
spec
47
spec
@ -276,15 +276,17 @@ beginseg
|
||||
endseg
|
||||
|
||||
beginseg
|
||||
name "icon_item_static_old"
|
||||
name "icon_item_static_syms"
|
||||
romalign 0x1000
|
||||
include "build/baserom/icon_item_static_old.o"
|
||||
include "build/assets/archives/icon_item_static/icon_item_static_yar.symbols.o"
|
||||
number 8
|
||||
endseg
|
||||
|
||||
beginseg
|
||||
name "icon_item_24_static_old"
|
||||
name "icon_item_24_static_syms"
|
||||
romalign 0x1000
|
||||
include "build/baserom/icon_item_24_static_old.o"
|
||||
include "build/assets/archives/icon_item_24_static/icon_item_24_static_yar.symbols.o"
|
||||
number 9
|
||||
endseg
|
||||
|
||||
beginseg
|
||||
@ -329,43 +331,47 @@ endseg
|
||||
|
||||
beginseg
|
||||
name "map_i_static"
|
||||
include "build/baserom/map_i_static.o"
|
||||
include "build/assets/archives/map_i_static/map_i_static.yar.o"
|
||||
endseg
|
||||
|
||||
beginseg
|
||||
name "map_grand_static"
|
||||
include "build/baserom/map_grand_static.o"
|
||||
include "build/assets/archives/map_grand_static/map_grand_static.yar.o"
|
||||
endseg
|
||||
|
||||
beginseg
|
||||
name "item_name_static"
|
||||
include "build/baserom/item_name_static.o"
|
||||
include "build/assets/archives/item_name_static/item_name_static.yar.o"
|
||||
endseg
|
||||
|
||||
beginseg
|
||||
name "map_name_static"
|
||||
include "build/baserom/map_name_static.o"
|
||||
include "build/assets/archives/map_name_static/map_name_static.yar.o"
|
||||
endseg
|
||||
|
||||
beginseg
|
||||
name "icon_item_static_test"
|
||||
include "build/baserom/icon_item_static_test.o"
|
||||
name "icon_item_static_yar"
|
||||
include "build/assets/archives/icon_item_static/icon_item_static_yar.yar.o"
|
||||
number 8
|
||||
endseg
|
||||
|
||||
beginseg
|
||||
name "icon_item_24_static_test"
|
||||
include "build/baserom/icon_item_24_static_test.o"
|
||||
name "icon_item_24_static_yar"
|
||||
include "build/assets/archives/icon_item_24_static/icon_item_24_static_yar.yar.o"
|
||||
number 9
|
||||
endseg
|
||||
|
||||
beginseg
|
||||
name "schedule_dma_static_old"
|
||||
include "build/baserom/schedule_dma_static_old.o"
|
||||
name "schedule_dma_static_syms"
|
||||
include "build/assets/archives/schedule_dma_static/schedule_dma_static_yar.symbols.o"
|
||||
number 7
|
||||
endseg
|
||||
|
||||
beginseg
|
||||
name "schedule_dma_static_test"
|
||||
name "schedule_dma_static_yar"
|
||||
increment 0x1000
|
||||
include "build/baserom/schedule_dma_static_test.o"
|
||||
include "build/assets/archives/schedule_dma_static/schedule_dma_static_yar.yar.o"
|
||||
number 7
|
||||
endseg
|
||||
|
||||
beginseg
|
||||
@ -1107,11 +1113,7 @@ beginseg
|
||||
name "ovl_En_Sw"
|
||||
compress
|
||||
include "build/src/overlays/actors/ovl_En_Sw/z_en_sw.o"
|
||||
#ifdef NON_MATCHING
|
||||
include "build/src/overlays/actors/ovl_En_Sw/ovl_En_Sw_reloc.o"
|
||||
#else
|
||||
include "build/data/ovl_En_Sw/ovl_En_Sw.reloc.o"
|
||||
#endif
|
||||
include "build/src/overlays/actors/ovl_En_Sw/ovl_En_Sw_reloc.o"
|
||||
endseg
|
||||
|
||||
beginseg
|
||||
@ -3481,8 +3483,7 @@ beginseg
|
||||
name "ovl_En_Snowwd"
|
||||
compress
|
||||
include "build/src/overlays/actors/ovl_En_Snowwd/z_en_snowwd.o"
|
||||
include "build/data/ovl_En_Snowwd/ovl_En_Snowwd.data.o"
|
||||
include "build/data/ovl_En_Snowwd/ovl_En_Snowwd.reloc.o"
|
||||
include "build/src/overlays/actors/ovl_En_Snowwd/ovl_En_Snowwd_reloc.o"
|
||||
endseg
|
||||
|
||||
beginseg
|
||||
|
@ -10,7 +10,7 @@ void AudioEffects_SequenceChannelProcessSound(SequenceChannel* channel, s32 reca
|
||||
if (channel->seqPlayer->muted && (channel->muteFlags & MUTE_FLAGS_SOFTEN)) {
|
||||
channelVolume = channel->seqPlayer->muteVolumeScale * channelVolume;
|
||||
}
|
||||
channel->appliedVolume = channelVolume * channelVolume;
|
||||
channel->appliedVolume = SQ(channelVolume);
|
||||
}
|
||||
|
||||
if (channel->changes.s.pan) {
|
||||
|
@ -884,7 +884,6 @@ void AudioLoad_RelocateFont(s32 fontId, SoundFontData* fontDataStartAddr, Sample
|
||||
|
||||
// The first u32 in fontData is an offset to a list of offsets to the drums
|
||||
soundListOffset = fontData[0];
|
||||
if (1) {}
|
||||
|
||||
// If the soundFont has drums
|
||||
if ((soundListOffset != 0) && (numDrums != 0)) {
|
||||
@ -897,20 +896,23 @@ void AudioLoad_RelocateFont(s32 fontId, SoundFontData* fontDataStartAddr, Sample
|
||||
soundOffset = ((Drum**)fontData[0])[i];
|
||||
|
||||
// Some drum data entries are empty, represented by an offset of 0 in the list of drum offsets
|
||||
if (soundOffset != 0) {
|
||||
soundOffset = RELOC_TO_RAM(soundOffset);
|
||||
((Drum**)fontData[0])[i] = drum = soundOffset;
|
||||
|
||||
// The drum may be in the list multiple times and already relocated
|
||||
if (!drum->isRelocated) {
|
||||
AudioLoad_RelocateSample(&drum->tunedSample, fontDataStartAddr, sampleBankReloc);
|
||||
|
||||
soundOffset = drum->envelope;
|
||||
drum->envelope = RELOC_TO_RAM(soundOffset);
|
||||
|
||||
drum->isRelocated = true;
|
||||
}
|
||||
if (soundOffset == 0) {
|
||||
continue;
|
||||
}
|
||||
soundOffset = RELOC_TO_RAM(soundOffset);
|
||||
((Drum**)fontData[0])[i] = drum = soundOffset;
|
||||
|
||||
// The drum may be in the list multiple times and already relocated
|
||||
if (drum->isRelocated) {
|
||||
continue;
|
||||
}
|
||||
|
||||
AudioLoad_RelocateSample(&drum->tunedSample, fontDataStartAddr, sampleBankReloc);
|
||||
|
||||
soundOffset = drum->envelope;
|
||||
drum->envelope = RELOC_TO_RAM(soundOffset);
|
||||
|
||||
drum->isRelocated = true;
|
||||
}
|
||||
}
|
||||
|
||||
@ -918,7 +920,6 @@ void AudioLoad_RelocateFont(s32 fontId, SoundFontData* fontDataStartAddr, Sample
|
||||
|
||||
// The second u32 in fontData is an offset to the first sound effect entry
|
||||
soundListOffset = fontData[1];
|
||||
if (1) {}
|
||||
|
||||
// If the soundFont has sound effects
|
||||
if ((soundListOffset != 0) && (numSfx != 0)) {
|
||||
@ -932,9 +933,11 @@ void AudioLoad_RelocateFont(s32 fontId, SoundFontData* fontDataStartAddr, Sample
|
||||
soundEffect = (SoundEffect*)soundOffset;
|
||||
|
||||
// Check for NULL (note: the pointer is guaranteed to be in fontData and can never be NULL)
|
||||
if ((soundEffect != NULL) && (soundEffect->tunedSample.sample != NULL)) {
|
||||
AudioLoad_RelocateSample(&soundEffect->tunedSample, fontDataStartAddr, sampleBankReloc);
|
||||
if ((soundEffect == NULL) || (soundEffect->tunedSample.sample == NULL)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
AudioLoad_RelocateSample(&soundEffect->tunedSample, fontDataStartAddr, sampleBankReloc);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1643,9 +1646,11 @@ void AudioLoad_FinishAsyncLoad(AudioAsyncLoad* asyncLoad) {
|
||||
case SEQUENCE_TABLE:
|
||||
AudioLoad_SetSeqLoadStatus(ASYNC_ID(retMsg), ASYNC_STATUS(retMsg));
|
||||
break;
|
||||
|
||||
case SAMPLE_TABLE:
|
||||
AudioLoad_SetSampleFontLoadStatusAndApplyCaches(ASYNC_ID(retMsg), ASYNC_STATUS(retMsg));
|
||||
break;
|
||||
|
||||
case FONT_TABLE:
|
||||
fontId = ASYNC_ID(retMsg);
|
||||
sampleBankId1 = gAudioCtx.soundFontList[fontId].sampleBankId1;
|
||||
@ -1659,6 +1664,9 @@ void AudioLoad_FinishAsyncLoad(AudioAsyncLoad* asyncLoad) {
|
||||
AudioLoad_SetFontLoadStatus(fontId, ASYNC_STATUS(retMsg));
|
||||
AudioLoad_RelocateFontAndPreloadSamples(fontId, asyncLoad->ramAddr, &sampleBankReloc, true);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
doneMsg = asyncLoad->retMsg;
|
||||
@ -2002,24 +2010,29 @@ s32 AudioLoad_GetSamplesForFont(s32 fontId, Sample** sampleSet) {
|
||||
for (i = 0; i < numDrums; i++) {
|
||||
Drum* drum = AudioPlayback_GetDrum(fontId, i);
|
||||
|
||||
if (1) {}
|
||||
if (drum != NULL) {
|
||||
numSamples = AudioLoad_AddToSampleSet(drum->tunedSample.sample, numSamples, sampleSet);
|
||||
if (drum == NULL) {
|
||||
continue;
|
||||
}
|
||||
|
||||
numSamples = AudioLoad_AddToSampleSet(drum->tunedSample.sample, numSamples, sampleSet);
|
||||
}
|
||||
|
||||
for (i = 0; i < numInstruments; i++) {
|
||||
Instrument* instrument = AudioPlayback_GetInstrumentInner(fontId, i);
|
||||
|
||||
if (instrument != NULL) {
|
||||
if (instrument->normalRangeLo != 0) {
|
||||
numSamples = AudioLoad_AddToSampleSet(instrument->lowPitchTunedSample.sample, numSamples, sampleSet);
|
||||
}
|
||||
if (instrument->normalRangeHi != 0x7F) {
|
||||
numSamples = AudioLoad_AddToSampleSet(instrument->highPitchTunedSample.sample, numSamples, sampleSet);
|
||||
}
|
||||
numSamples = AudioLoad_AddToSampleSet(instrument->normalPitchTunedSample.sample, numSamples, sampleSet);
|
||||
if (instrument == NULL) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (instrument->normalRangeLo != 0) {
|
||||
numSamples = AudioLoad_AddToSampleSet(instrument->lowPitchTunedSample.sample, numSamples, sampleSet);
|
||||
}
|
||||
|
||||
if (instrument->normalRangeHi != 0x7F) {
|
||||
numSamples = AudioLoad_AddToSampleSet(instrument->highPitchTunedSample.sample, numSamples, sampleSet);
|
||||
}
|
||||
|
||||
numSamples = AudioLoad_AddToSampleSet(instrument->normalPitchTunedSample.sample, numSamples, sampleSet);
|
||||
}
|
||||
|
||||
// Should really also process sfx, but this method is never called
|
||||
|
@ -83,6 +83,9 @@ void AudioPlayback_InitSampleState(Note* note, NoteSampleState* sampleState, Not
|
||||
sampleState->bitField0.strongRight = stereoData.strongRight ^ strongRight;
|
||||
sampleState->bitField0.strongLeft = stereoData.strongLeft ^ strongLeft;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
} else if (gAudioCtx.soundMode == SOUNDMODE_MONO) {
|
||||
|
@ -2,6 +2,7 @@
|
||||
#include "global.h"
|
||||
#include "stack.h"
|
||||
#include "stackcheck.h"
|
||||
#include "z64thread.h"
|
||||
|
||||
StackEntry sBootStackInfo;
|
||||
OSThread sIdleThread;
|
||||
|
@ -3,6 +3,7 @@
|
||||
#include "stack.h"
|
||||
#include "buffers.h"
|
||||
#include "stackcheck.h"
|
||||
#include "z64thread.h"
|
||||
|
||||
u8 D_80096B20 = 1;
|
||||
vu8 gViConfigUseDefault = 1;
|
||||
@ -94,10 +95,12 @@ void Idle_InitVideo(void) {
|
||||
D_8009B290 = 2;
|
||||
gViConfigMode = osViModeNtscLan1;
|
||||
break;
|
||||
|
||||
case OS_TV_MPAL:
|
||||
D_8009B290 = 30;
|
||||
gViConfigMode = osViModeMpalLan1;
|
||||
break;
|
||||
|
||||
case OS_TV_PAL:
|
||||
D_8009B290 = 44;
|
||||
gViConfigMode = osViModeFpalLan1;
|
||||
|
@ -1,5 +1,6 @@
|
||||
#include "global.h"
|
||||
#include "stackcheck.h"
|
||||
#include "z64thread.h"
|
||||
|
||||
vs32 gIrqMgrResetStatus = 0;
|
||||
volatile OSTime sIrqMgrResetTime = 0;
|
||||
|
@ -2,6 +2,7 @@
|
||||
#include "global.h"
|
||||
#include "stack.h"
|
||||
#include "stackcheck.h"
|
||||
#include "z64thread.h"
|
||||
|
||||
u32 sDmaMgrDmaBuffSize = 0x2000;
|
||||
|
||||
|
@ -1,5 +1,7 @@
|
||||
#include "global.h"
|
||||
#include "interface/parameter_static/parameter_static.h"
|
||||
#include "archives/icon_item_static/icon_item_static_yar.h"
|
||||
#include "archives/icon_item_24_static/icon_item_24_static_yar.h"
|
||||
|
||||
// Bit Flag array in which gBitFlags[n] is (1 << n)
|
||||
u32 gBitFlags[] = {
|
||||
@ -95,139 +97,138 @@ u32 gGsFlagsShift[] = {
|
||||
24,
|
||||
};
|
||||
|
||||
// TODO: use symbols for these icon textures once textures are properly in C
|
||||
TexturePtr gItemIcons[] = {
|
||||
0x08000000, // ITEM_OCARINA
|
||||
0x08001000, // ITEM_BOW
|
||||
0x08002000, // ITEM_ARROW_FIRE
|
||||
0x08003000, // ITEM_ARROW_ICE
|
||||
0x08004000, // ITEM_ARROW_LIGHT
|
||||
0x08005000, // ITEM_OCARINA_FAIRY
|
||||
0x08006000, // ITEM_BOMB
|
||||
0x08007000, // ITEM_BOMBCHU
|
||||
0x08008000, // ITEM_STICK
|
||||
0x08009000, // ITEM_NUT
|
||||
0x0800A000, // ITEM_MAGIC_BEANS
|
||||
0x0800B000, // ITEM_SLINGSHOT
|
||||
0x0800C000, // ITEM_POWDER_KEG
|
||||
0x0800D000, // ITEM_PICTO_BOX
|
||||
0x0800E000, // ITEM_LENS
|
||||
0x0800F000, // ITEM_HOOKSHOT
|
||||
0x08010000, // ITEM_SWORD_GREAT_FAIRY
|
||||
0x08011000, // ITEM_LONGSHOT
|
||||
0x08012000, // ITEM_BOTTLE
|
||||
0x08013000, // ITEM_POTION_RED
|
||||
0x08014000, // ITEM_POTION_GREEN
|
||||
0x08015000, // ITEM_POTION_BLUE
|
||||
0x08016000, // ITEM_FAIRY
|
||||
0x08017000, // ITEM_DEKU_PRINCESS
|
||||
0x08018000, // ITEM_MILK_BOTTLE
|
||||
0x08019000, // ITEM_MILK_HALF
|
||||
0x0801A000, // ITEM_FISH
|
||||
0x0801B000, // ITEM_BUG
|
||||
0x0801C000, // ITEM_BLUE_FIRE
|
||||
0x0801D000, // ITEM_POE
|
||||
0x0801E000, // ITEM_BIG_POE
|
||||
0x0801F000, // ITEM_SPRING_WATER
|
||||
0x08020000, // ITEM_HOT_SPRING_WATER
|
||||
0x08021000, // ITEM_ZORA_EGG
|
||||
0x08022000, // ITEM_GOLD_DUST
|
||||
0x08023000, // ITEM_MUSHROOM
|
||||
0x08024000, // ITEM_SEAHORSE
|
||||
0x08025000, // ITEM_CHATEAU
|
||||
0x08026000, // ITEM_HYLIAN_LOACH
|
||||
0x08027000, // ITEM_OBABA_DRINK
|
||||
0x08028000, // ITEM_MOON_TEAR
|
||||
0x08029000, // ITEM_DEED_LAND
|
||||
0x0802A000, // ITEM_DEED_SWAMP
|
||||
0x0802B000, // ITEM_DEED_MOUNTAIN
|
||||
0x0802C000, // ITEM_DEED_OCEAN
|
||||
0x0802D000, // ITEM_ROOM_KEY
|
||||
0x0802E000, // ITEM_LETTER_MAMA
|
||||
0x0802F000, // ITEM_LETTER_TO_KAFEI
|
||||
0x08030000, // ITEM_PENDANT_OF_MEMORIES
|
||||
0x08031000, // ITEM_TINGLE_MAP
|
||||
0x08032000, // ITEM_MASK_DEKU
|
||||
0x08033000, // ITEM_MASK_GORON
|
||||
0x08034000, // ITEM_MASK_ZORA
|
||||
0x08035000, // ITEM_MASK_FIERCE_DEITY
|
||||
0x08036000, // ITEM_MASK_TRUTH
|
||||
0x08037000, // ITEM_MASK_KAFEIS_MASK
|
||||
0x08038000, // ITEM_MASK_ALL_NIGHT
|
||||
0x08039000, // ITEM_MASK_BUNNY
|
||||
0x0803A000, // ITEM_MASK_KEATON
|
||||
0x0803B000, // ITEM_MASK_GARO
|
||||
0x0803C000, // ITEM_MASK_ROMANI
|
||||
0x0803D000, // ITEM_MASK_CIRCUS_LEADER
|
||||
0x0803E000, // ITEM_MASK_POSTMAN
|
||||
0x0803F000, // ITEM_MASK_COUPLE
|
||||
0x08040000, // ITEM_MASK_GREAT_FAIRY
|
||||
0x08041000, // ITEM_MASK_GIBDO
|
||||
0x08042000, // ITEM_MASK_DON_GERO
|
||||
0x08043000, // ITEM_MASK_KAMARO
|
||||
0x08044000, // ITEM_MASK_CAPTAIN
|
||||
0x08045000, // ITEM_MASK_STONE
|
||||
0x08046000, // ITEM_MASK_BREMEN
|
||||
0x08047000, // ITEM_MASK_BLAST
|
||||
0x08048000, // ITEM_MASK_SCENTS
|
||||
0x08049000, // ITEM_MASK_GIANT
|
||||
0x0804A000, // ITEM_BOW_ARROW_FIRE
|
||||
0x0804B000, // ITEM_BOW_ARROW_ICE
|
||||
0x0804C000, // ITEM_BOW_ARROW_LIGHT
|
||||
0x0804D000, // ITEM_SWORD_KOKIRI
|
||||
0x0804E000, // ITEM_SWORD_RAZOR
|
||||
0x0804F000, // ITEM_SWORD_GILDED
|
||||
0x08050000, // ITEM_SWORD_DEITY
|
||||
0x08051000, // ITEM_SHIELD_HERO
|
||||
0x08052000, // ITEM_SHIELD_MIRROR
|
||||
0x08053000, // ITEM_QUIVER_30
|
||||
0x08054000, // ITEM_QUIVER_40
|
||||
0x08055000, // ITEM_QUIVER_50
|
||||
0x08056000, // ITEM_BOMB_BAG_20
|
||||
0x08057000, // ITEM_BOMB_BAG_30
|
||||
0x08058000, // ITEM_BOMB_BAG_40
|
||||
0x08059000, // ITEM_WALLET_DEFAULT
|
||||
0x0805A000, // ITEM_WALLET_ADULT
|
||||
0x0805B000, // ITEM_WALLET_GIANT
|
||||
0x0805C000, // ITEM_FISHING_ROD
|
||||
0x0805D000, // ITEM_REMAINS_ODOLWA
|
||||
0x0805E000, // ITEM_REMAINS_GOHT
|
||||
0x0805F000, // ITEM_REMAINS_GYORG
|
||||
0x08060000, // ITEM_REMAINS_TWINMOLD
|
||||
0x08062000, // ITEM_SONG_SONATA
|
||||
0x08062000, // ITEM_SONG_LULLABY
|
||||
0x08062000, // ITEM_SONG_NOVA
|
||||
0x08062000, // ITEM_SONG_ELEGY
|
||||
0x08062000, // ITEM_SONG_OATH
|
||||
0x08062000, // ITEM_SONG_SARIA
|
||||
0x08062000, // ITEM_SONG_TIME
|
||||
0x08062000, // ITEM_SONG_HEALING
|
||||
0x08062000, // ITEM_SONG_EPONA
|
||||
0x08062000, // ITEM_SONG_SOARING
|
||||
0x08062000, // ITEM_SONG_STORMS
|
||||
0x08062000, // ITEM_SONG_SUN
|
||||
0x08061000, // ITEM_BOMBERS_NOTEBOOK
|
||||
0x09000000, // ITEM_SKULL_TOKEN
|
||||
0x09000900, // ITEM_HEART_CONTAINER
|
||||
0x09001200, // ITEM_HEART_PIECE
|
||||
0x08062000, //
|
||||
0x08062000, //
|
||||
0x08062000, // ITEM_SONG_LULLABY_INTRO
|
||||
0x09003600, // ITEM_KEY_BOSS
|
||||
0x09004800, // ITEM_COMPASS
|
||||
0x09003F00, // ITEM_DUNGEON_MAP
|
||||
0x09005100, // ITEM_STRAY_FAIRIES
|
||||
0x09005A00, // ITEM_KEY_SMALL
|
||||
0x09006300, // ITEM_MAGIC_SMALL
|
||||
0x09006C00, // ITEM_MAGIC_LARGE
|
||||
0x08062180, // ITEM_HEART_PIECE_2
|
||||
0x08062A80, // ITEM_INVALID_1
|
||||
0x08063380, // ITEM_INVALID_2
|
||||
gOcarinaCUpTex, // ITEM_INVALID_3
|
||||
gOcarinaCDownTex, // ITEM_INVALID_4
|
||||
gOcarinaCLeftTex, // ITEM_INVALID_5
|
||||
gOcarinaCRightTex, // ITEM_INVALID_6
|
||||
gOcarinaATex, // ITEM_INVALID_7
|
||||
icon_item_static_yar_Blob_000000, // ITEM_OCARINA
|
||||
icon_item_static_yar_Blob_001000, // ITEM_BOW
|
||||
icon_item_static_yar_Blob_002000, // ITEM_ARROW_FIRE
|
||||
icon_item_static_yar_Blob_003000, // ITEM_ARROW_ICE
|
||||
icon_item_static_yar_Blob_004000, // ITEM_ARROW_LIGHT
|
||||
icon_item_static_yar_Blob_005000, // ITEM_OCARINA_FAIRY
|
||||
icon_item_static_yar_Blob_006000, // ITEM_BOMB
|
||||
icon_item_static_yar_Blob_007000, // ITEM_BOMBCHU
|
||||
icon_item_static_yar_Blob_008000, // ITEM_STICK
|
||||
icon_item_static_yar_Blob_009000, // ITEM_NUT
|
||||
icon_item_static_yar_Blob_00A000, // ITEM_MAGIC_BEANS
|
||||
icon_item_static_yar_Blob_00B000, // ITEM_SLINGSHOT
|
||||
icon_item_static_yar_Blob_00C000, // ITEM_POWDER_KEG
|
||||
icon_item_static_yar_Blob_00D000, // ITEM_PICTO_BOX
|
||||
icon_item_static_yar_Blob_00E000, // ITEM_LENS
|
||||
icon_item_static_yar_Blob_00F000, // ITEM_HOOKSHOT
|
||||
icon_item_static_yar_Blob_010000, // ITEM_SWORD_GREAT_FAIRY
|
||||
icon_item_static_yar_Blob_011000, // ITEM_LONGSHOT
|
||||
icon_item_static_yar_Blob_012000, // ITEM_BOTTLE
|
||||
icon_item_static_yar_Blob_013000, // ITEM_POTION_RED
|
||||
icon_item_static_yar_Blob_014000, // ITEM_POTION_GREEN
|
||||
icon_item_static_yar_Blob_015000, // ITEM_POTION_BLUE
|
||||
icon_item_static_yar_Blob_016000, // ITEM_FAIRY
|
||||
icon_item_static_yar_Blob_017000, // ITEM_DEKU_PRINCESS
|
||||
icon_item_static_yar_Blob_018000, // ITEM_MILK_BOTTLE
|
||||
icon_item_static_yar_Blob_019000, // ITEM_MILK_HALF
|
||||
icon_item_static_yar_Blob_01A000, // ITEM_FISH
|
||||
icon_item_static_yar_Blob_01B000, // ITEM_BUG
|
||||
icon_item_static_yar_Blob_01C000, // ITEM_BLUE_FIRE
|
||||
icon_item_static_yar_Blob_01D000, // ITEM_POE
|
||||
icon_item_static_yar_Blob_01E000, // ITEM_BIG_POE
|
||||
icon_item_static_yar_Blob_01F000, // ITEM_SPRING_WATER
|
||||
icon_item_static_yar_Blob_020000, // ITEM_HOT_SPRING_WATER
|
||||
icon_item_static_yar_Blob_021000, // ITEM_ZORA_EGG
|
||||
icon_item_static_yar_Blob_022000, // ITEM_GOLD_DUST
|
||||
icon_item_static_yar_Blob_023000, // ITEM_MUSHROOM
|
||||
icon_item_static_yar_Blob_024000, // ITEM_SEAHORSE
|
||||
icon_item_static_yar_Blob_025000, // ITEM_CHATEAU
|
||||
icon_item_static_yar_Blob_026000, // ITEM_HYLIAN_LOACH
|
||||
icon_item_static_yar_Blob_027000, // ITEM_OBABA_DRINK
|
||||
icon_item_static_yar_Blob_028000, // ITEM_MOON_TEAR
|
||||
icon_item_static_yar_Blob_029000, // ITEM_DEED_LAND
|
||||
icon_item_static_yar_Blob_02A000, // ITEM_DEED_SWAMP
|
||||
icon_item_static_yar_Blob_02B000, // ITEM_DEED_MOUNTAIN
|
||||
icon_item_static_yar_Blob_02C000, // ITEM_DEED_OCEAN
|
||||
icon_item_static_yar_Blob_02D000, // ITEM_ROOM_KEY
|
||||
icon_item_static_yar_Blob_02E000, // ITEM_LETTER_MAMA
|
||||
icon_item_static_yar_Blob_02F000, // ITEM_LETTER_TO_KAFEI
|
||||
icon_item_static_yar_Blob_030000, // ITEM_PENDANT_OF_MEMORIES
|
||||
icon_item_static_yar_Blob_031000, // ITEM_TINGLE_MAP
|
||||
icon_item_static_yar_Blob_032000, // ITEM_MASK_DEKU
|
||||
icon_item_static_yar_Blob_033000, // ITEM_MASK_GORON
|
||||
icon_item_static_yar_Blob_034000, // ITEM_MASK_ZORA
|
||||
icon_item_static_yar_Blob_035000, // ITEM_MASK_FIERCE_DEITY
|
||||
icon_item_static_yar_Blob_036000, // ITEM_MASK_TRUTH
|
||||
icon_item_static_yar_Blob_037000, // ITEM_MASK_KAFEIS_MASK
|
||||
icon_item_static_yar_Blob_038000, // ITEM_MASK_ALL_NIGHT
|
||||
icon_item_static_yar_Blob_039000, // ITEM_MASK_BUNNY
|
||||
icon_item_static_yar_Blob_03A000, // ITEM_MASK_KEATON
|
||||
icon_item_static_yar_Blob_03B000, // ITEM_MASK_GARO
|
||||
icon_item_static_yar_Blob_03C000, // ITEM_MASK_ROMANI
|
||||
icon_item_static_yar_Blob_03D000, // ITEM_MASK_CIRCUS_LEADER
|
||||
icon_item_static_yar_Blob_03E000, // ITEM_MASK_POSTMAN
|
||||
icon_item_static_yar_Blob_03F000, // ITEM_MASK_COUPLE
|
||||
icon_item_static_yar_Blob_040000, // ITEM_MASK_GREAT_FAIRY
|
||||
icon_item_static_yar_Blob_041000, // ITEM_MASK_GIBDO
|
||||
icon_item_static_yar_Blob_042000, // ITEM_MASK_DON_GERO
|
||||
icon_item_static_yar_Blob_043000, // ITEM_MASK_KAMARO
|
||||
icon_item_static_yar_Blob_044000, // ITEM_MASK_CAPTAIN
|
||||
icon_item_static_yar_Blob_045000, // ITEM_MASK_STONE
|
||||
icon_item_static_yar_Blob_046000, // ITEM_MASK_BREMEN
|
||||
icon_item_static_yar_Blob_047000, // ITEM_MASK_BLAST
|
||||
icon_item_static_yar_Blob_048000, // ITEM_MASK_SCENTS
|
||||
icon_item_static_yar_Blob_049000, // ITEM_MASK_GIANT
|
||||
icon_item_static_yar_Blob_04A000, // ITEM_BOW_ARROW_FIRE
|
||||
icon_item_static_yar_Blob_04B000, // ITEM_BOW_ARROW_ICE
|
||||
icon_item_static_yar_Blob_04C000, // ITEM_BOW_ARROW_LIGHT
|
||||
icon_item_static_yar_Blob_04D000, // ITEM_SWORD_KOKIRI
|
||||
icon_item_static_yar_Blob_04E000, // ITEM_SWORD_RAZOR
|
||||
icon_item_static_yar_Blob_04F000, // ITEM_SWORD_GILDED
|
||||
icon_item_static_yar_Blob_050000, // ITEM_SWORD_DEITY
|
||||
icon_item_static_yar_Blob_051000, // ITEM_SHIELD_HERO
|
||||
icon_item_static_yar_Blob_052000, // ITEM_SHIELD_MIRROR
|
||||
icon_item_static_yar_Blob_053000, // ITEM_QUIVER_30
|
||||
icon_item_static_yar_Blob_054000, // ITEM_QUIVER_40
|
||||
icon_item_static_yar_Blob_055000, // ITEM_QUIVER_50
|
||||
icon_item_static_yar_Blob_056000, // ITEM_BOMB_BAG_20
|
||||
icon_item_static_yar_Blob_057000, // ITEM_BOMB_BAG_30
|
||||
icon_item_static_yar_Blob_058000, // ITEM_BOMB_BAG_40
|
||||
icon_item_static_yar_Blob_059000, // ITEM_WALLET_DEFAULT
|
||||
icon_item_static_yar_Blob_05A000, // ITEM_WALLET_ADULT
|
||||
icon_item_static_yar_Blob_05B000, // ITEM_WALLET_GIANT
|
||||
icon_item_static_yar_Blob_05C000, // ITEM_FISHING_ROD
|
||||
icon_item_static_yar_Blob_05D000, // ITEM_REMAINS_ODOLWA
|
||||
icon_item_static_yar_Blob_05E000, // ITEM_REMAINS_GOHT
|
||||
icon_item_static_yar_Blob_05F000, // ITEM_REMAINS_GYORG
|
||||
icon_item_static_yar_Blob_060000, // ITEM_REMAINS_TWINMOLD
|
||||
icon_item_static_yar_Blob_062000, // ITEM_SONG_SONATA
|
||||
icon_item_static_yar_Blob_062000, // ITEM_SONG_LULLABY
|
||||
icon_item_static_yar_Blob_062000, // ITEM_SONG_NOVA
|
||||
icon_item_static_yar_Blob_062000, // ITEM_SONG_ELEGY
|
||||
icon_item_static_yar_Blob_062000, // ITEM_SONG_OATH
|
||||
icon_item_static_yar_Blob_062000, // ITEM_SONG_SARIA
|
||||
icon_item_static_yar_Blob_062000, // ITEM_SONG_TIME
|
||||
icon_item_static_yar_Blob_062000, // ITEM_SONG_HEALING
|
||||
icon_item_static_yar_Blob_062000, // ITEM_SONG_EPONA
|
||||
icon_item_static_yar_Blob_062000, // ITEM_SONG_SOARING
|
||||
icon_item_static_yar_Blob_062000, // ITEM_SONG_STORMS
|
||||
icon_item_static_yar_Blob_062000, // ITEM_SONG_SUN
|
||||
icon_item_static_yar_Blob_061000, // ITEM_BOMBERS_NOTEBOOK
|
||||
icon_item_24_static_yar_Blob_000000, // ITEM_SKULL_TOKEN
|
||||
icon_item_24_static_yar_Blob_000900, // ITEM_HEART_CONTAINER
|
||||
icon_item_24_static_yar_Blob_001200, // ITEM_HEART_PIECE
|
||||
icon_item_static_yar_Blob_062000, //
|
||||
icon_item_static_yar_Blob_062000, //
|
||||
icon_item_static_yar_Blob_062000, // ITEM_SONG_LULLABY_INTRO
|
||||
icon_item_24_static_yar_Blob_003600, // ITEM_KEY_BOSS
|
||||
icon_item_24_static_yar_Blob_004800, // ITEM_COMPASS
|
||||
icon_item_24_static_yar_Blob_003F00, // ITEM_DUNGEON_MAP
|
||||
icon_item_24_static_yar_Blob_005100, // ITEM_STRAY_FAIRIES
|
||||
icon_item_24_static_yar_Blob_005A00, // ITEM_KEY_SMALL
|
||||
icon_item_24_static_yar_Blob_006300, // ITEM_MAGIC_SMALL
|
||||
icon_item_24_static_yar_Blob_006C00, // ITEM_MAGIC_LARGE
|
||||
icon_item_static_yar_Blob_062180, // ITEM_HEART_PIECE_2
|
||||
icon_item_static_yar_Blob_062A80, // ITEM_INVALID_1
|
||||
icon_item_static_yar_Blob_063380, // ITEM_INVALID_2
|
||||
gOcarinaCUpTex, // ITEM_INVALID_3
|
||||
gOcarinaCDownTex, // ITEM_INVALID_4
|
||||
gOcarinaCLeftTex, // ITEM_INVALID_5
|
||||
gOcarinaCRightTex, // ITEM_INVALID_6
|
||||
gOcarinaATex, // ITEM_INVALID_7
|
||||
};
|
||||
|
||||
// Used to map item IDs to inventory slots
|
||||
|
@ -12,6 +12,11 @@
|
||||
#include "global.h"
|
||||
#include "overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope.h"
|
||||
|
||||
typedef struct FlagSetEntry {
|
||||
/* 0x0 */ u8* value;
|
||||
/* 0x4 */ const char* name;
|
||||
} FlagSetEntry; // size = 0x8
|
||||
|
||||
static FlagSetEntry sFlagEntries[] = {
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[0], "week_event_reg[0]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[1], "week_event_reg[1]" },
|
||||
|
@ -9,6 +9,7 @@
|
||||
#include "stack.h"
|
||||
#include "stackcheck.h"
|
||||
#include "system_heap.h"
|
||||
#include "z64thread.h"
|
||||
|
||||
extern OSMesgQueue sSiIntMsgQ;
|
||||
extern OSMesg sSiIntMsgBuf[1];
|
||||
|
@ -1,6 +1,7 @@
|
||||
#include "prevent_bss_reordering.h"
|
||||
#include "global.h"
|
||||
#include "stackcheck.h"
|
||||
#include "z64thread.h"
|
||||
|
||||
#define RSP_DONE_MSG 667
|
||||
#define RDP_DONE_MSG 668
|
||||
|
@ -3,6 +3,7 @@
|
||||
#include "stack.h"
|
||||
#include "stackcheck.h"
|
||||
#include "system_malloc.h"
|
||||
#include "z64thread.h"
|
||||
|
||||
OSMesgQueue sFlashromMesgQueue;
|
||||
OSMesg sFlashromMesg[1];
|
||||
|
@ -8,9 +8,11 @@
|
||||
*
|
||||
* @note: `argCount` must be set manually, as this file implements no way to configure it.
|
||||
*/
|
||||
|
||||
#include "slowly.h"
|
||||
#include "global.h"
|
||||
#include "stackcheck.h"
|
||||
#include "z64thread.h"
|
||||
|
||||
void Slowly_Main(SlowlyMgr* slowly) {
|
||||
slowly->status |= SLOWLY_STATUS_STARTED;
|
||||
|
@ -1,4 +1,11 @@
|
||||
#include "global.h"
|
||||
#include "z64collision_check.h"
|
||||
|
||||
typedef s32 (*ColChkResetFunc)(struct PlayState*, Collider*);
|
||||
typedef void (*ColChkBloodFunc)(struct PlayState*, Collider*, Vec3f*);
|
||||
typedef void (*ColChkApplyFunc)(struct PlayState*, CollisionCheckContext*, Collider*);
|
||||
typedef void (*ColChkVsFunc)(struct PlayState*, CollisionCheckContext*, Collider*, Collider*);
|
||||
typedef s32 (*ColChkLineFunc)(struct PlayState*, CollisionCheckContext*, Collider*, Vec3f*, Vec3f*);
|
||||
|
||||
Vec3f D_801EDE00;
|
||||
Vec3f D_801EDE10;
|
||||
|
@ -80,7 +80,8 @@ void func_800AE930(CollisionContext* colCtx, EffectTireMark* this, Vec3f* pos, f
|
||||
spAC->flags |= 1;
|
||||
}
|
||||
|
||||
if (spA8) {} // Necessary to match
|
||||
//! FAKE:
|
||||
if (spA8) {}
|
||||
|
||||
spA8 = &this->elements[this->numElements];
|
||||
spA8->flags = 0;
|
||||
|
@ -43,15 +43,15 @@ static u16 sReactionTextIds[][PLAYER_MASK_GIANT - 1] = {
|
||||
/* 0x10 */ { 0 },
|
||||
/* 0x11 */ { 0x0000, 0x236B, 0x0000, 0x0000, 0x236C, 0x0000,
|
||||
0x0000, 0x236D, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x236E, 0x0000, 0x0000, 0x0000 },
|
||||
0x0000, 0x0000, 0x0000, 0x236E, 0x0000, 0x0000, 0x0000 }, // FACE_REACTION_SET_JIM
|
||||
/* 0x12 */ { 0x2348, 0x2349, 0x234A, 0x0000, 0x234B, 0x2348,
|
||||
0x234C, 0x2348, 0x234D, 0x234E, 0x2348, 0x2348,
|
||||
0x2348, 0x2348, 0x2348, 0x234F, 0x2348, 0x2348, 0x2350 },
|
||||
0x2348, 0x2348, 0x2348, 0x234F, 0x2348, 0x2348, 0x2350 }, // FACE_REACTION_SET_BOMBERS
|
||||
/* 0x13 */ { 0 },
|
||||
/* 0x14 */ { 0 },
|
||||
/* 0x15 */ { 0x2351, 0x2352, 0x2353, 0x2354, 0x2355, 0x2356,
|
||||
0x2357, 0x2356, 0x2358, 0x2359, 0x2356, 0x235A,
|
||||
0x2353, 0x235A, 0x235A, 0x235B, 0x2354, 0x2351, 0x235C },
|
||||
0x2353, 0x235A, 0x235A, 0x235B, 0x2354, 0x2351, 0x235C }, // FACE_REACTION_SET_BOMBERS_HIDEOUT_GUARD
|
||||
/* 0x16 */ { 0 },
|
||||
/* 0x17 */ { 0 },
|
||||
/* 0x18 */ { 0 },
|
||||
@ -77,24 +77,24 @@ static u16 sReactionTextIds[][PLAYER_MASK_GIANT - 1] = {
|
||||
/* 0x2C */ { 0 },
|
||||
/* 0x2D */ { 0x233B, 0x233C, 0x233D, 0x233E, 0x233F, 0x233B,
|
||||
0x2340, 0x2341, 0x2342, 0x2343, 0x2344, 0x2345,
|
||||
0x2346, 0x233B, 0x2345, 0x2347, 0x233D, 0x233B, 0x233D },
|
||||
0x2346, 0x233B, 0x2345, 0x2347, 0x233D, 0x233B, 0x233D }, // FACE_REACTION_SET_TREASURE_CHEST_SHOP_GAL
|
||||
/* 0x2E */ { 0 },
|
||||
/* 0x2F */ { 0x2328, 0x2329, 0x232A, 0x232B, 0x2328, 0x2328,
|
||||
0x232C, 0x2328, 0x232D, 0x232E, 0x2328, 0x2328,
|
||||
0x2328, 0x232F, 0x2330, 0x2331, 0x2332, 0x2333, 0x2328 },
|
||||
0x2328, 0x232F, 0x2330, 0x2331, 0x2332, 0x2333, 0x2328 }, // FACE_REACTION_SET_CURIOSITY_SHOP_MAN
|
||||
/* 0x30 */ { 0x236F, 0x2370, 0x236F, 0x0000, 0x236F, 0x236F,
|
||||
0x236F, 0x236F, 0x0000, 0x236F, 0x236F, 0x236F,
|
||||
0x236F, 0x236F, 0x2371, 0x2372, 0x236F, 0x236F, 0x236F },
|
||||
0x236F, 0x236F, 0x2371, 0x2372, 0x236F, 0x236F, 0x236F }, // FACE_REACTION_SET_TOWN_SHOOTING_GALLERY_MAN
|
||||
/* 0x31 */ { 0x2373, 0x2374, 0x2373, 0x0000, 0x2373, 0x2373,
|
||||
0x2373, 0x2373, 0x0000, 0x2375, 0x2376, 0x2373,
|
||||
0x2373, 0x2373, 0x2377, 0x2378, 0x2373, 0x2373, 0x2373 },
|
||||
0x2373, 0x2373, 0x2377, 0x2378, 0x2373, 0x2373, 0x2373 }, // FACE_REACTION_SET_SWAMP_SHOOTING_GALLERY_MAN
|
||||
/* 0x32 */ { 0 },
|
||||
/* 0x33 */ { 0 },
|
||||
/* 0x34 */ { 0 },
|
||||
/* 0x35 */ { 0 },
|
||||
/* 0x36 */ { 0x0000, 0x2334, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x2335, 0x0000, 0x2336, 0x2337, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x2338, 0x2339, 0x0000, 0x233A, 0x0000 },
|
||||
0x0000, 0x0000, 0x2338, 0x2339, 0x0000, 0x233A, 0x0000 }, // FACE_REACTION_SET_PART_TIMER
|
||||
/* 0x37 */ { 0 },
|
||||
/* 0x38 */ { 0 },
|
||||
/* 0x39 */ { 0 },
|
||||
@ -178,7 +178,7 @@ static u16 sReactionTextIds[][PLAYER_MASK_GIANT - 1] = {
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
u16 Text_GetFaceReaction(PlayState* play, u32 reactionSet) {
|
||||
u16 Text_GetFaceReaction(PlayState* play, FaceReactionSet reactionSet) {
|
||||
if ((Player_GetMask(play) > PLAYER_MASK_NONE) && (Player_GetMask(play) < PLAYER_MASK_GIANT)) {
|
||||
return sReactionTextIds[reactionSet][Player_GetMask(play) - 1];
|
||||
}
|
||||
|
@ -90,13 +90,13 @@
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800FD538.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800FD59C.s")
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/Environment_LerpAmbientColor.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800FD5E0.s")
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/Environment_LerpDiffuseColor.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800FD654.s")
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/Environment_LerpFogColor.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800FD698.s")
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/Environment_LerpFog.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/get_days_elapsed.s")
|
||||
|
||||
|
@ -3,6 +3,13 @@
|
||||
#define COLD_RESET 0
|
||||
#define NMI 1
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u32 resetting;
|
||||
/* 0x04 */ u32 resetCount;
|
||||
/* 0x08 */ OSTime duration;
|
||||
/* 0x10 */ OSTime resetTime;
|
||||
} NmiBuff; // size >= 0x18
|
||||
|
||||
NmiBuff* gNMIBuffer;
|
||||
|
||||
void Nmi_Init(void) {
|
||||
|
@ -2452,7 +2452,7 @@ void Interface_InitMinigame(PlayState* play) {
|
||||
void Interface_LoadItemIconImpl(PlayState* play, u8 btn) {
|
||||
InterfaceContext* interfaceCtx = &play->interfaceCtx;
|
||||
|
||||
CmpDma_LoadFile(SEGMENT_ROM_START(icon_item_static_test), GET_CUR_FORM_BTN_ITEM(btn),
|
||||
CmpDma_LoadFile(SEGMENT_ROM_START(icon_item_static_yar), GET_CUR_FORM_BTN_ITEM(btn),
|
||||
&interfaceCtx->iconItemSegment[(u32)btn * 0x1000], 0x1000);
|
||||
}
|
||||
|
||||
@ -6702,7 +6702,7 @@ void Interface_Update(PlayState* play) {
|
||||
case HUD_VISIBILITY_NONE:
|
||||
case HUD_VISIBILITY_NONE_ALT:
|
||||
case HUD_VISIBILITY_B:
|
||||
dimmingAlpha = 255 - (gSaveContext.hudVisibilityTimer << 5);
|
||||
dimmingAlpha = 255 - (gSaveContext.hudVisibilityTimer * 32);
|
||||
if (dimmingAlpha < 0) {
|
||||
dimmingAlpha = 0;
|
||||
}
|
||||
@ -6733,7 +6733,7 @@ void Interface_Update(PlayState* play) {
|
||||
case HUD_VISIBILITY_B_MAGIC:
|
||||
case HUD_VISIBILITY_A_B:
|
||||
case HUD_VISIBILITY_A_B_HEARTS_MAGIC_MINIMAP:
|
||||
dimmingAlpha = 255 - (gSaveContext.hudVisibilityTimer << 5);
|
||||
dimmingAlpha = 255 - (gSaveContext.hudVisibilityTimer * 32);
|
||||
if (dimmingAlpha < 0) {
|
||||
dimmingAlpha = 0;
|
||||
}
|
||||
@ -6746,7 +6746,7 @@ void Interface_Update(PlayState* play) {
|
||||
break;
|
||||
|
||||
case HUD_VISIBILITY_ALL:
|
||||
dimmingAlpha = 255 - (gSaveContext.hudVisibilityTimer << 5);
|
||||
dimmingAlpha = 255 - (gSaveContext.hudVisibilityTimer * 32);
|
||||
if (dimmingAlpha < 0) {
|
||||
dimmingAlpha = 0;
|
||||
}
|
||||
|
@ -2090,8 +2090,8 @@ void Play_Init(GameState* thisx) {
|
||||
s32 scene;
|
||||
|
||||
if ((gSaveContext.respawnFlag == -4) || (gSaveContext.respawnFlag == -0x63)) {
|
||||
if (CHECK_EVENTINF(EVENTINF_27)) {
|
||||
CLEAR_EVENTINF(EVENTINF_27);
|
||||
if (CHECK_EVENTINF(EVENTINF_TRIGGER_DAYTELOP)) {
|
||||
CLEAR_EVENTINF(EVENTINF_TRIGGER_DAYTELOP);
|
||||
STOP_GAMESTATE(&this->state);
|
||||
SET_NEXT_GAMESTATE(&this->state, DayTelop_Init, sizeof(DayTelopState));
|
||||
return;
|
||||
|
@ -1,31 +1,7 @@
|
||||
#include "global.h"
|
||||
#include "z64bombers_notebook.h"
|
||||
#include "interface/schedule_static/schedule_static.h"
|
||||
|
||||
// TODO: Needs YAZ0
|
||||
// Segment 0x07 schedule_dma_static_test
|
||||
extern TexturePtr D_07000000;
|
||||
extern TexturePtr D_07000800;
|
||||
extern TexturePtr D_07001000;
|
||||
extern TexturePtr D_07001800;
|
||||
extern TexturePtr D_07002000;
|
||||
extern TexturePtr D_07002800;
|
||||
extern TexturePtr D_07003000;
|
||||
extern TexturePtr D_07003800;
|
||||
extern TexturePtr D_07004000;
|
||||
extern TexturePtr D_07004800;
|
||||
extern TexturePtr D_07005000;
|
||||
extern TexturePtr D_07005800;
|
||||
extern TexturePtr D_07006000;
|
||||
extern TexturePtr D_07006800;
|
||||
extern TexturePtr D_07007000;
|
||||
extern TexturePtr D_07007800;
|
||||
extern TexturePtr D_07008000;
|
||||
extern TexturePtr D_07008800;
|
||||
extern TexturePtr D_07009000;
|
||||
extern TexturePtr D_07009800;
|
||||
extern TexturePtr D_0700AC00;
|
||||
extern TexturePtr D_0700AEA0;
|
||||
#include "archives/schedule_dma_static/schedule_dma_static_yar.h"
|
||||
|
||||
#define BOMBERS_NOTEBOOK_ENTRY_SIZE 3
|
||||
#define BOMBERS_NOTEBOOK_ENTRY_MAX 10
|
||||
@ -395,8 +371,8 @@ void BombersNotebook_DrawColumns(Gfx** gfxP) {
|
||||
|
||||
TexturePtr sBombersNotebookEventIconTextures[] = {
|
||||
gBombersNotebookEntryIconExclamationPointTex,
|
||||
&D_0700AC00,
|
||||
&D_0700AEA0,
|
||||
schedule_dma_static_yar_Blob_00AC00,
|
||||
schedule_dma_static_yar_Blob_00AEA0,
|
||||
};
|
||||
s16 sBombersNotebookEntryIconColors[][3] = {
|
||||
{ 255, 255, 0 },
|
||||
@ -1163,8 +1139,8 @@ void BombersNotebook_Update(PlayState* play, BombersNotebook* this, Input* input
|
||||
s32 stickAdjY = input->rel.stick_y;
|
||||
s32 cursorEntryScan;
|
||||
|
||||
this->scheduleDmaSegmentStart = SEGMENT_ROM_START(schedule_dma_static_test);
|
||||
this->scheduleDmaSegmentSize = SEGMENT_ROM_SIZE(schedule_dma_static_old);
|
||||
this->scheduleDmaSegmentStart = SEGMENT_ROM_START(schedule_dma_static_yar);
|
||||
this->scheduleDmaSegmentSize = SEGMENT_ROM_SIZE(schedule_dma_static_syms);
|
||||
this->scheduleSegmentStart = SEGMENT_ROM_START(schedule_static);
|
||||
this->scheduleSegmentSize = SEGMENT_ROM_SIZE(schedule_static);
|
||||
|
||||
|
@ -526,7 +526,7 @@ void Scene_CommandSetRegionVisitedFlag(PlayState* play, SceneCmd* cmd) {
|
||||
|
||||
// SceneTableEntry Header Command 0x1A: Material Animations
|
||||
void Scene_CommandAnimatedMaterials(PlayState* play, SceneCmd* cmd) {
|
||||
play->sceneMaterialAnims = (AnimatedMaterial*)Lib_SegmentedToVirtual(cmd->textureAnimations.segment);
|
||||
play->sceneMaterialAnims = Lib_SegmentedToVirtual(cmd->textureAnimations.segment);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -536,38 +536,38 @@ void Scene_SetExitFade(PlayState* play) {
|
||||
play->transitionType = Entrance_GetTransitionFlags(play->nextEntrance) & 0x7F;
|
||||
}
|
||||
|
||||
void (*sSceneCmdHandlers[])(PlayState*, SceneCmd*) = {
|
||||
Scene_CommandSpawnList,
|
||||
Scene_CommandActorList,
|
||||
Scene_CommandActorCutsceneCamList,
|
||||
Scene_CommandCollisionHeader,
|
||||
Scene_CommandRoomList,
|
||||
Scene_CommandWindSettings,
|
||||
Scene_CommandEntranceList,
|
||||
Scene_CommandSpecialFiles,
|
||||
Scene_CommandRoomBehavior,
|
||||
Scene_Command09,
|
||||
Scene_CommandMesh,
|
||||
Scene_CommandObjectList,
|
||||
Scene_CommandLightList,
|
||||
Scene_CommandPathList,
|
||||
Scene_CommandTransiActorList,
|
||||
Scene_CommandEnvLightSettings,
|
||||
Scene_CommandTimeSettings,
|
||||
Scene_CommandSkyboxSettings,
|
||||
Scene_CommandSkyboxDisables,
|
||||
Scene_CommandExitList,
|
||||
NULL,
|
||||
Scene_CommandSoundSettings,
|
||||
Scene_CommandEchoSetting,
|
||||
Scene_CommandCutsceneScriptList,
|
||||
Scene_CommandAltHeaderList,
|
||||
Scene_CommandSetRegionVisitedFlag,
|
||||
Scene_CommandAnimatedMaterials,
|
||||
Scene_CommandCutsceneList,
|
||||
Scene_CommandMiniMap,
|
||||
Scene_Command1D,
|
||||
Scene_CommandMiniMapCompassInfo,
|
||||
void (*sSceneCmdHandlers[SCENE_CMD_MAX])(PlayState*, SceneCmd*) = {
|
||||
Scene_CommandSpawnList, // SCENE_CMD_ID_SPAWN_LIST
|
||||
Scene_CommandActorList, // SCENE_CMD_ID_ACTOR_LIST
|
||||
Scene_CommandActorCutsceneCamList, // SCENE_CMD_ID_ACTOR_CUTSCENE_CAM_LIST
|
||||
Scene_CommandCollisionHeader, // SCENE_CMD_ID_COL_HEADER
|
||||
Scene_CommandRoomList, // SCENE_CMD_ID_ROOM_LIST
|
||||
Scene_CommandWindSettings, // SCENE_CMD_ID_WIND_SETTINGS
|
||||
Scene_CommandEntranceList, // SCENE_CMD_ID_ENTRANCE_LIST
|
||||
Scene_CommandSpecialFiles, // SCENE_CMD_ID_SPECIAL_FILES
|
||||
Scene_CommandRoomBehavior, // SCENE_CMD_ID_ROOM_BEHAVIOR
|
||||
Scene_Command09, // SCENE_CMD_ID_UNK_09
|
||||
Scene_CommandMesh, // SCENE_CMD_ID_ROOM_SHAPE
|
||||
Scene_CommandObjectList, // SCENE_CMD_ID_OBJECT_LIST
|
||||
Scene_CommandLightList, // SCENE_CMD_ID_LIGHT_LIST
|
||||
Scene_CommandPathList, // SCENE_CMD_ID_PATH_LIST
|
||||
Scene_CommandTransiActorList, // SCENE_CMD_ID_TRANSI_ACTOR_LIST
|
||||
Scene_CommandEnvLightSettings, // SCENE_CMD_ID_ENV_LIGHT_SETTINGS
|
||||
Scene_CommandTimeSettings, // SCENE_CMD_ID_TIME_SETTINGS
|
||||
Scene_CommandSkyboxSettings, // SCENE_CMD_ID_SKYBOX_SETTINGS
|
||||
Scene_CommandSkyboxDisables, // SCENE_CMD_ID_SKYBOX_DISABLES
|
||||
Scene_CommandExitList, // SCENE_CMD_ID_EXIT_LIST
|
||||
NULL, // SCENE_CMD_ID_END
|
||||
Scene_CommandSoundSettings, // SCENE_CMD_ID_SOUND_SETTINGS
|
||||
Scene_CommandEchoSetting, // SCENE_CMD_ID_ECHO_SETTINGS
|
||||
Scene_CommandCutsceneScriptList, // SCENE_CMD_ID_CUTSCENE_SCRIPT_LIST
|
||||
Scene_CommandAltHeaderList, // SCENE_CMD_ID_ALTERNATE_HEADER_LIST
|
||||
Scene_CommandSetRegionVisitedFlag, // SCENE_CMD_ID_SET_REGION_VISITED
|
||||
Scene_CommandAnimatedMaterials, // SCENE_CMD_ID_ANIMATED_MATERIAL_LIST
|
||||
Scene_CommandCutsceneList, // SCENE_CMD_ID_ACTOR_CUTSCENE_LIST
|
||||
Scene_CommandMiniMap, // SCENE_CMD_ID_MINIMAP_INFO
|
||||
Scene_Command1D, // SCENE_CMD_ID_UNUSED_1D
|
||||
Scene_CommandMiniMapCompassInfo, // SCENE_CMD_ID_MINIMAP_COMPASS_ICON_INFO
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -1,11 +1,12 @@
|
||||
#include "global.h"
|
||||
#include "z64sound_source.h"
|
||||
|
||||
void SoundSource_InitAll(PlayState* play) {
|
||||
SoundSource* sources = &play->soundSources[0];
|
||||
s32 i;
|
||||
|
||||
// clang-format off
|
||||
for (i = 0; i < ARRAY_COUNT(play->soundSources); i++) { sources[i].countdown = 0; }
|
||||
for (i = 0; i < SOUND_SOURCE_COUNT; i++) { sources[i].countdown = 0; }
|
||||
// clang-format on
|
||||
}
|
||||
|
||||
@ -13,7 +14,7 @@ void SoundSource_UpdateAll(PlayState* play) {
|
||||
SoundSource* source = &play->soundSources[0];
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(play->soundSources); i++) {
|
||||
for (i = 0; i < SOUND_SOURCE_COUNT; i++) {
|
||||
if (source->countdown != 0) {
|
||||
if (DECR(source->countdown) == 0) {
|
||||
AudioSfx_StopByPos(&source->projectedPos);
|
||||
@ -37,7 +38,7 @@ void SoundSource_Add(PlayState* play, Vec3f* worldPos, u32 duration, u16 sfxId,
|
||||
s32 i;
|
||||
|
||||
source = &play->soundSources[0];
|
||||
for (i = 0; i < ARRAY_COUNT(play->soundSources); i++) {
|
||||
for (i = 0; i < SOUND_SOURCE_COUNT; i++) {
|
||||
if (source->countdown == 0) {
|
||||
break;
|
||||
}
|
||||
@ -52,7 +53,7 @@ void SoundSource_Add(PlayState* play, Vec3f* worldPos, u32 duration, u16 sfxId,
|
||||
}
|
||||
|
||||
// If no sound source is available, replace the sound source with the smallest remaining countdown
|
||||
if (i >= ARRAY_COUNT(play->soundSources)) {
|
||||
if (i >= SOUND_SOURCE_COUNT) {
|
||||
source = backupSource;
|
||||
AudioSfx_StopByPos(&source->projectedPos);
|
||||
}
|
||||
|
@ -489,38 +489,38 @@ void Sram_SaveEndOfCycle(PlayState* play) {
|
||||
gSaveContext.eventInf[i] = 0;
|
||||
}
|
||||
|
||||
CLEAR_EVENTINF(EVENTINF_70);
|
||||
CLEAR_EVENTINF(EVENTINF_71);
|
||||
CLEAR_EVENTINF(EVENTINF_72);
|
||||
CLEAR_EVENTINF(EVENTINF_73);
|
||||
CLEAR_EVENTINF(EVENTINF_74);
|
||||
CLEAR_EVENTINF(EVENTINF_THREEDAYRESET_LOST_RUPEES);
|
||||
CLEAR_EVENTINF(EVENTINF_THREEDAYRESET_LOST_BOMB_AMMO);
|
||||
CLEAR_EVENTINF(EVENTINF_THREEDAYRESET_LOST_NUT_AMMO);
|
||||
CLEAR_EVENTINF(EVENTINF_THREEDAYRESET_LOST_STICK_AMMO);
|
||||
CLEAR_EVENTINF(EVENTINF_THREEDAYRESET_LOST_ARROW_AMMO);
|
||||
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees != 0) {
|
||||
SET_EVENTINF(EVENTINF_70);
|
||||
SET_EVENTINF(EVENTINF_THREEDAYRESET_LOST_RUPEES);
|
||||
}
|
||||
|
||||
if (INV_CONTENT(ITEM_BOMB) == ITEM_BOMB) {
|
||||
item = INV_CONTENT(ITEM_BOMB);
|
||||
if (AMMO(item) != 0) {
|
||||
SET_EVENTINF(EVENTINF_71);
|
||||
SET_EVENTINF(EVENTINF_THREEDAYRESET_LOST_BOMB_AMMO);
|
||||
}
|
||||
}
|
||||
if (INV_CONTENT(ITEM_NUT) == ITEM_NUT) {
|
||||
item = INV_CONTENT(ITEM_NUT);
|
||||
if (AMMO(item) != 0) {
|
||||
SET_EVENTINF(EVENTINF_72);
|
||||
SET_EVENTINF(EVENTINF_THREEDAYRESET_LOST_NUT_AMMO);
|
||||
}
|
||||
}
|
||||
if (INV_CONTENT(ITEM_STICK) == ITEM_STICK) {
|
||||
item = INV_CONTENT(ITEM_STICK);
|
||||
if (AMMO(item) != 0) {
|
||||
SET_EVENTINF(EVENTINF_73);
|
||||
SET_EVENTINF(EVENTINF_THREEDAYRESET_LOST_STICK_AMMO);
|
||||
}
|
||||
}
|
||||
if (INV_CONTENT(ITEM_BOW) == ITEM_BOW) {
|
||||
item = INV_CONTENT(ITEM_BOW);
|
||||
if (AMMO(item) != 0) {
|
||||
SET_EVENTINF(EVENTINF_74);
|
||||
SET_EVENTINF(EVENTINF_THREEDAYRESET_LOST_ARROW_AMMO);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -320,6 +320,7 @@ void func_80B84610(BgDblueWaterfall* this, PlayState* play) {
|
||||
|
||||
player->actor.world.pos.x += sp34.x;
|
||||
player->actor.world.pos.z += sp34.z;
|
||||
//! FAKE:
|
||||
if (this && this && this) {}
|
||||
player->pushedSpeed = 8.0f;
|
||||
player->pushedYaw = this->actor.yawTowardsPlayer;
|
||||
|
@ -829,7 +829,7 @@ void func_80A9CE1C(BgHakuginPost* this, PlayState* play) {
|
||||
|
||||
for (i = 0; i < D_80A9E028.count; i++) {
|
||||
collider = D_80A9E028.unk_0000[i].collider;
|
||||
if ((collider != NULL) && (collider->base.acFlags & AT_HIT) && (D_80A9E028.unk_0000[i].unk_34 == 1)) {
|
||||
if ((collider != NULL) && (collider->base.acFlags & AC_HIT) && (D_80A9E028.unk_0000[i].unk_34 == 1)) {
|
||||
temp_f2 = this->unk_16C;
|
||||
yDiff = ABS_ALT(BINANG_SUB(this->dyna.actor.yawTowardsPlayer, player->actor.shape.rot.y));
|
||||
temp_f0 = temp_f2 + D_80A9E028.unk_0000[i].unk_14.y;
|
||||
@ -853,7 +853,7 @@ void func_80A9CE1C(BgHakuginPost* this, PlayState* play) {
|
||||
for (i = 0; i < D_80A9E028.count; i++) {
|
||||
collider = D_80A9E028.unk_0000[i].collider;
|
||||
if (collider != NULL) {
|
||||
collider->base.acFlags &= ~AT_HIT;
|
||||
collider->base.acFlags &= ~AC_HIT;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -225,8 +225,8 @@ void func_80C187E4(BgLastBwall* this) {
|
||||
}
|
||||
|
||||
void func_80C187F8(BgLastBwall* this, PlayState* play) {
|
||||
if (this->colliderTris.base.acFlags & 2) {
|
||||
this->colliderTris.base.acFlags &= ~2;
|
||||
if (this->colliderTris.base.acFlags & AC_HIT) {
|
||||
this->colliderTris.base.acFlags &= ~AC_HIT;
|
||||
Flags_SetSwitch(play, BGLASTBWALL_GET_SWITCHFLAGS(&this->dyna.actor));
|
||||
func_80C1886C(this, play);
|
||||
} else {
|
||||
|
@ -521,7 +521,7 @@ void EnAm_Update(Actor* thisx, PlayState* play) {
|
||||
CollisionCheck_SetAC(play, &play->colChkCtx, &this->enemyCollider.base);
|
||||
}
|
||||
CollisionCheck_SetAC(play, &play->colChkCtx, &this->interactCollider.base);
|
||||
if (this->enemyCollider.base.atFlags & AC_ON) {
|
||||
if (this->enemyCollider.base.atFlags & AT_ON) {
|
||||
this->actor.flags |= ACTOR_FLAG_1000000;
|
||||
CollisionCheck_SetAT(play, &play->colChkCtx, &this->enemyCollider.base);
|
||||
}
|
||||
|
@ -688,21 +688,20 @@ void EnBigpo_BurnAwayDeath(EnBigpo* this, PlayState* play) {
|
||||
if (this->idleTimer < 8) {
|
||||
camYaw = Camera_GetCamDirYaw(GET_ACTIVE_CAM(play)) + 0x4800;
|
||||
if (this->idleTimer < 5) {
|
||||
unkTemp = (this->idleTimer << 0xC) - 0x4000;
|
||||
// 1.4.0...1 is NOT 1.4, the rodata demands it
|
||||
tempVec.y = (((Math_SinS(unkTemp) * 23.0f) + 40.0f) * 1.4000001f) + this->actor.world.pos.y;
|
||||
unkTemp = (this->idleTimer * 0x1000) - 0x4000;
|
||||
tempVec.y = (((Math_SinS(unkTemp) * 23.0f) + 40.0f) * (1400.0f * 0.001f)) + this->actor.world.pos.y;
|
||||
unkTemp2 = Math_CosS(unkTemp) * 32.2f;
|
||||
tempVec.x = (Math_SinS(camYaw) * unkTemp2) + this->actor.world.pos.x;
|
||||
tempVec.z = (Math_CosS(camYaw) * unkTemp2) + this->actor.world.pos.z;
|
||||
|
||||
} else {
|
||||
tempVec.y = this->actor.world.pos.y + ((40.0f + (15.0f * (this->idleTimer - 5))) * 1.4000001f);
|
||||
tempVec.y = this->actor.world.pos.y + ((40.0f + (15.0f * (this->idleTimer - 5))) * (1400.0f * 0.001f));
|
||||
tempVec.x = (Math_SinS(camYaw) * 32.2f) + this->actor.world.pos.x;
|
||||
tempVec.z = (Math_CosS(camYaw) * 32.2f) + this->actor.world.pos.z;
|
||||
}
|
||||
|
||||
// not sure what we're turning this into, but its based on the timer
|
||||
modifiedTimer = ((f32)((this->idleTimer * 10) + 80) * 1.4000001f);
|
||||
modifiedTimer = ((this->idleTimer * 10) + 80) * (1400.0f * 0.001f);
|
||||
func_800B3030(play, &tempVec, &D_80B6506C, &gZeroVec3f, modifiedTimer, 0, 2);
|
||||
tempVec.x = (2.0f * this->actor.world.pos.x) - tempVec.x;
|
||||
tempVec.z = (2.0f * this->actor.world.pos.z) - tempVec.z;
|
||||
|
@ -295,11 +295,11 @@ void func_80C03AF4(EnBombers* this, PlayState* play) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (!Text_GetFaceReaction(play, 0x12)) {
|
||||
if (Text_GetFaceReaction(play, FACE_REACTION_SET_BOMBERS) == 0) {
|
||||
func_80C039A8(this, play);
|
||||
} else {
|
||||
this->unk_2A6 = TEXT_STATE_5;
|
||||
this->actor.textId = Text_GetFaceReaction(play, 0x12);
|
||||
this->actor.textId = Text_GetFaceReaction(play, FACE_REACTION_SET_BOMBERS);
|
||||
}
|
||||
|
||||
if (Actor_ProcessTalkRequest(&this->actor, &play->state)) {
|
||||
|
@ -160,8 +160,8 @@ void func_80C04BA0(EnBombers2* this, PlayState* play) {
|
||||
}
|
||||
this->actor.textId = sTextIds[this->textIdIndex];
|
||||
|
||||
if (Text_GetFaceReaction(play, 0x15) != 0) {
|
||||
this->actor.textId = Text_GetFaceReaction(play, 0x15);
|
||||
if (Text_GetFaceReaction(play, FACE_REACTION_SET_BOMBERS_HIDEOUT_GUARD) != 0) {
|
||||
this->actor.textId = Text_GetFaceReaction(play, FACE_REACTION_SET_BOMBERS_HIDEOUT_GUARD);
|
||||
}
|
||||
|
||||
if (Actor_ProcessTalkRequest(&this->actor, &play->state)) {
|
||||
@ -240,7 +240,7 @@ void func_80C04D8C(EnBombers2* this, PlayState* play) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (Text_GetFaceReaction(play, 0x15) != 0) {
|
||||
if (Text_GetFaceReaction(play, FACE_REACTION_SET_BOMBERS_HIDEOUT_GUARD) != 0) {
|
||||
this->unk_28E = 0;
|
||||
Message_CloseTextbox(play);
|
||||
func_80C04B40(this);
|
||||
|
@ -379,8 +379,8 @@ void func_80BFEB64(EnBomjima* this, PlayState* play) {
|
||||
}
|
||||
}
|
||||
|
||||
if (Text_GetFaceReaction(play, 0x11) != 0) {
|
||||
this->actor.textId = Text_GetFaceReaction(play, 0x11);
|
||||
if (Text_GetFaceReaction(play, FACE_REACTION_SET_JIM) != 0) {
|
||||
this->actor.textId = Text_GetFaceReaction(play, FACE_REACTION_SET_JIM);
|
||||
}
|
||||
|
||||
if (Actor_ProcessTalkRequest(&this->actor, &play->state)) {
|
||||
@ -498,8 +498,8 @@ void func_80BFF174(EnBomjima* this, PlayState* play) {
|
||||
this->cutsceneEnded = true;
|
||||
}
|
||||
|
||||
if (Text_GetFaceReaction(play, 0x11) != 0) {
|
||||
this->actor.textId = Text_GetFaceReaction(play, 0x11);
|
||||
if (Text_GetFaceReaction(play, FACE_REACTION_SET_JIM) != 0) {
|
||||
this->actor.textId = Text_GetFaceReaction(play, FACE_REACTION_SET_JIM);
|
||||
}
|
||||
|
||||
if (Actor_ProcessTalkRequest(&this->actor, &play->state)) {
|
||||
@ -881,8 +881,8 @@ void func_80C00168(EnBomjima* this, PlayState* play) {
|
||||
func_80BFE32C(this, play, 0);
|
||||
func_80BFE67C(this, play);
|
||||
|
||||
if (Text_GetFaceReaction(play, 0x11) != 0) {
|
||||
this->actor.textId = Text_GetFaceReaction(play, 0x11);
|
||||
if (Text_GetFaceReaction(play, FACE_REACTION_SET_JIM) != 0) {
|
||||
this->actor.textId = Text_GetFaceReaction(play, FACE_REACTION_SET_JIM);
|
||||
}
|
||||
|
||||
if (Actor_ProcessTalkRequest(&this->actor, &play->state)) {
|
||||
|
@ -465,8 +465,8 @@ void EnCrow_Respawn(EnCrow* this, PlayState* play) {
|
||||
}
|
||||
|
||||
void EnCrow_UpdateDamage(EnCrow* this, PlayState* play) {
|
||||
if (this->collider.base.acFlags & AT_HIT) {
|
||||
this->collider.base.acFlags &= ~AT_HIT;
|
||||
if (this->collider.base.acFlags & AC_HIT) {
|
||||
this->collider.base.acFlags &= ~AC_HIT;
|
||||
Actor_SetDropFlag(&this->actor, &this->collider.elements->info);
|
||||
|
||||
if (this->actor.colChkInfo.damageEffect == GUAY_DMGEFF_STUN) {
|
||||
|
@ -216,7 +216,7 @@ void EnElforg_MoveToTargetFairyFountain(EnElforg* this, Vec3f* homePos) {
|
||||
s16 angleAdjustment;
|
||||
s16 targetAngle;
|
||||
|
||||
this->actor.shape.yOffset += 100.0f * Math_SinS(this->timer << 9);
|
||||
this->actor.shape.yOffset += 100.0f * Math_SinS(this->timer * 0x200);
|
||||
EnElforg_ApproachTargetYPosition(this, homePos);
|
||||
xDifference = this->actor.world.pos.x - homePos->x;
|
||||
zDifference = this->actor.world.pos.z - homePos->z;
|
||||
@ -245,7 +245,7 @@ void EnElforg_MoveToTargetFairyFountain(EnElforg* this, Vec3f* homePos) {
|
||||
void EnElforg_MoveToTarget(EnElforg* this, Vec3f* targetPos) {
|
||||
s16 targetAngle;
|
||||
|
||||
this->actor.shape.yOffset += 100.0f * Math_SinS(this->timer << 9);
|
||||
this->actor.shape.yOffset += 100.0f * Math_SinS(this->timer * 0x200);
|
||||
EnElforg_ApproachTargetYPosition(this, targetPos);
|
||||
targetAngle = Math_Atan2S_XY(-(this->actor.world.pos.z - targetPos->z), -(this->actor.world.pos.x - targetPos->x));
|
||||
|
||||
@ -273,7 +273,7 @@ void EnElforg_TrappedByBubble(EnElforg* this, PlayState* play) {
|
||||
EnElforg_InitializeParams(this);
|
||||
this->actionFunc = EnElforg_FreeFloating;
|
||||
} else {
|
||||
this->actor.shape.yOffset += 10.0f * Math_SinS(this->timer << 9);
|
||||
this->actor.shape.yOffset += 10.0f * Math_SinS(this->timer * 0x200);
|
||||
this->actor.world.pos = this->actor.parent->world.pos;
|
||||
this->actor.world.pos.y += 12.0f;
|
||||
}
|
||||
@ -391,8 +391,8 @@ void EnElforg_CirclePlayer(EnElforg* this, PlayState* play) {
|
||||
distanceFromPlayer = 20.0f;
|
||||
}
|
||||
|
||||
this->actor.world.pos.x = (Math_SinS(this->timer << 12) * distanceFromPlayer) + playerActor->world.pos.x;
|
||||
this->actor.world.pos.z = (Math_CosS(this->timer << 12) * distanceFromPlayer) + playerActor->world.pos.z;
|
||||
this->actor.world.pos.x = (Math_SinS(this->timer * 0x1000) * distanceFromPlayer) + playerActor->world.pos.x;
|
||||
this->actor.world.pos.z = (Math_CosS(this->timer * 0x1000) * distanceFromPlayer) + playerActor->world.pos.z;
|
||||
this->actor.world.pos.y = player->bodyPartsPos[PLAYER_BODYPART_WAIST].y;
|
||||
EnElforg_SpawnSparkles(this, play, 16);
|
||||
}
|
||||
|
@ -788,7 +788,7 @@ void EnFamos_Update(Actor* thisx, PlayState* play) {
|
||||
CollisionCheck_SetAC(play, &play->colChkCtx, &this->emblemCollider.base);
|
||||
}
|
||||
|
||||
if (this->collider2.base.atFlags & AC_ON) {
|
||||
if (this->collider2.base.atFlags & AT_ON) {
|
||||
Collider_UpdateCylinder(&this->actor, &this->collider2);
|
||||
this->collider2.dim.pos.y = this->actor.floorHeight;
|
||||
CollisionCheck_SetAT(play, &play->colChkCtx, &this->collider2.base);
|
||||
|
@ -6,7 +6,6 @@
|
||||
|
||||
#include "z_en_firefly.h"
|
||||
#include "overlays/actors/ovl_Obj_Syokudai/z_obj_syokudai.h"
|
||||
#include "objects/object_firefly/object_firefly.h"
|
||||
|
||||
#define FLAGS (ACTOR_FLAG_1 | ACTOR_FLAG_4 | ACTOR_FLAG_IGNORE_QUAKE | ACTOR_FLAG_4000)
|
||||
|
||||
@ -134,8 +133,8 @@ void EnFirefly_Init(Actor* thisx, PlayState* play) {
|
||||
|
||||
Actor_ProcessInitChain(&this->actor, sInitChain);
|
||||
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 25.0f);
|
||||
SkelAnime_Init(play, &this->skelAnime, &object_firefly_Skel_0018B8, &object_firefly_Anim_00017C, this->jointTable,
|
||||
this->morphTable, 28);
|
||||
SkelAnime_Init(play, &this->skelAnime, &gFireKeeseSkel, &gFireKeeseFlyAnim, this->jointTable, this->morphTable,
|
||||
FIRE_KEESE_LIMB_MAX);
|
||||
Collider_InitAndSetSphere(play, &this->collider, &this->actor, &sSphereInit);
|
||||
CollisionCheck_SetInfo(&this->actor.colChkInfo, &sDamageTable, &sColChkInfoInit);
|
||||
|
||||
@ -340,7 +339,7 @@ void EnFirefly_FlyIdle(EnFirefly* this, PlayState* play) {
|
||||
void EnFirefly_SetupFall(EnFirefly* this, PlayState* play) {
|
||||
this->timer = 40;
|
||||
this->actor.velocity.y = 0.0f;
|
||||
Animation_Change(&this->skelAnime, &object_firefly_Anim_00017C, 0.0f, 6.0f, 6.0f, ANIMMODE_ONCE, 0.0f);
|
||||
Animation_Change(&this->skelAnime, &gFireKeeseFlyAnim, 0.0f, 6.0f, 6.0f, ANIMMODE_ONCE, 0.0f);
|
||||
Actor_PlaySfx(&this->actor, NA_SE_EN_FFLY_DEAD);
|
||||
this->actor.flags |= ACTOR_FLAG_10;
|
||||
|
||||
@ -747,7 +746,7 @@ s32 EnFirefly_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3
|
||||
|
||||
if (this->isInvisible && (play->actorCtx.lensMaskSize != LENS_MASK_ACTIVE_SIZE)) {
|
||||
*dList = NULL;
|
||||
} else if (limbIndex == 1) {
|
||||
} else if (limbIndex == FIRE_KEESE_LIMB_ROOT) {
|
||||
pos->y += 2300.0f;
|
||||
}
|
||||
return false;
|
||||
@ -768,11 +767,11 @@ void EnFirefly_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s*
|
||||
s32 pad;
|
||||
EnFirefly* this = THIS;
|
||||
|
||||
if ((this->currentType != KEESE_FIRE) && (limbIndex == 27)) {
|
||||
gSPDisplayList((*gfx)++, object_firefly_DL_001678);
|
||||
if ((this->currentType != KEESE_FIRE) && (limbIndex == FIRE_KEESE_LIMB_HEAD)) {
|
||||
gSPDisplayList((*gfx)++, gKeeseRedEyesDL);
|
||||
} else if ((this->lastDrawnFrame != play->gameplayFrames) &&
|
||||
((this->auraType == KEESE_AURA_FIRE) || (this->auraType == KEESE_AURA_ICE)) &&
|
||||
((limbIndex == 15) || (limbIndex == 21))) {
|
||||
((limbIndex == FIRE_KEESE_LIMB_LEFT_WING_END) || (limbIndex == FIRE_KEESE_LIMB_RIGHT_WING_END_ROOT))) {
|
||||
if (this->actionFunc != EnFirefly_Die) {
|
||||
Matrix_MultZero(&auraPos);
|
||||
auraPos.x += Rand_ZeroFloat(5.0f);
|
||||
@ -781,7 +780,7 @@ void EnFirefly_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s*
|
||||
auraScaleStep = -40;
|
||||
auraLife = 3;
|
||||
} else {
|
||||
if (limbIndex == 15) {
|
||||
if (limbIndex == FIRE_KEESE_LIMB_LEFT_WING_END) {
|
||||
auraPos.x = Math_SinS(9100 * this->timer) * this->timer + this->actor.world.pos.x;
|
||||
auraPos.z = Math_CosS(9100 * this->timer) * this->timer + this->actor.world.pos.z;
|
||||
} else {
|
||||
@ -806,11 +805,11 @@ void EnFirefly_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s*
|
||||
auraLife);
|
||||
}
|
||||
|
||||
if (limbIndex == 15) {
|
||||
if (limbIndex == FIRE_KEESE_LIMB_LEFT_WING_END) {
|
||||
Matrix_MultZero(&this->limbPos[0]);
|
||||
} else if (limbIndex == 21) {
|
||||
} else if (limbIndex == FIRE_KEESE_LIMB_RIGHT_WING_END_ROOT) {
|
||||
Matrix_MultZero(&this->limbPos[1]);
|
||||
} else if (limbIndex == 10) {
|
||||
} else if (limbIndex == FIRE_KEESE_LIMB_BODY) {
|
||||
Matrix_MultZero(&this->limbPos[2]);
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@
|
||||
#define Z_EN_FIREFLY_H
|
||||
|
||||
#include "global.h"
|
||||
#include "objects/object_firefly/object_firefly.h"
|
||||
|
||||
struct EnFirefly;
|
||||
|
||||
@ -27,8 +28,8 @@ typedef struct EnFirefly {
|
||||
/* 0x18F */ u8 drawDmgEffType;
|
||||
/* 0x190 */ s16 timer;
|
||||
/* 0x192 */ s16 pitchTarget;
|
||||
/* 0x194 */ Vec3s jointTable[28];
|
||||
/* 0x23C */ Vec3s morphTable[28];
|
||||
/* 0x194 */ Vec3s jointTable[FIRE_KEESE_LIMB_MAX];
|
||||
/* 0x23C */ Vec3s morphTable[FIRE_KEESE_LIMB_MAX];
|
||||
/* 0x2E4 */ f32 maxAltitude;
|
||||
/* 0x2E8 */ f32 drawDmgEffAlpha;
|
||||
/* 0x2E8 */ f32 drawDmgEffScale;
|
||||
|
@ -401,7 +401,7 @@ void func_80932C98(EnFz* this, PlayState* play) {
|
||||
}
|
||||
|
||||
if (this->unk_BCE != 0) {
|
||||
if (ENFZ_GET_8000(&this->actor) && (this->collider1.base.atFlags & AC_HIT)) {
|
||||
if (ENFZ_GET_8000(&this->actor) && (this->collider1.base.atFlags & AT_HIT)) {
|
||||
this->unk_BCD = 0;
|
||||
this->unk_BBC = 0.0f;
|
||||
this->collider1.base.acFlags &= ~AC_HIT;
|
||||
|
@ -534,8 +534,6 @@ void func_80B51510(EnGk* this, PlayState* play) {
|
||||
s32 pad;
|
||||
s32 cueChannel;
|
||||
|
||||
if (this) {}
|
||||
|
||||
if (Cutscene_IsCueInChannel(play, CS_CMD_ACTOR_CUE_479)) {
|
||||
cueChannel = Cutscene_GetCueChannel(play, CS_CMD_ACTOR_CUE_479);
|
||||
|
||||
@ -577,6 +575,9 @@ void func_80B51510(EnGk* this, PlayState* play) {
|
||||
case 7:
|
||||
Flags_SetSwitch(play, ENGK_GET_3F00(&this->actor));
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, this->unk_31A);
|
||||
}
|
||||
|
@ -149,40 +149,41 @@ void func_80B22FA8(EnHanabiStruct* arg0, PlayState* play2) {
|
||||
gSPDisplayList(POLY_XLU_DISP++, gSunSparkleMaterialDL);
|
||||
|
||||
sp53 = 0xFF;
|
||||
if (sp53) {}
|
||||
|
||||
for (i = 0; i < 400; i++, arg0++) {
|
||||
if (arg0->unk_00 == 1) {
|
||||
Matrix_Translate(arg0->unk_08.x, arg0->unk_08.y, arg0->unk_08.z, MTXMODE_NEW);
|
||||
Matrix_ReplaceRotation(&play->billboardMtxF);
|
||||
if (arg0->unk_01 < 40) {
|
||||
Matrix_Scale(arg0->unk_04 * 0.025f * arg0->unk_01, arg0->unk_04 * 0.025f * arg0->unk_01, 1.0f,
|
||||
MTXMODE_APPLY);
|
||||
} else {
|
||||
Matrix_Scale(arg0->unk_04, arg0->unk_04, 1.0f, MTXMODE_APPLY);
|
||||
}
|
||||
Matrix_RotateZS(play->gameplayFrames * 4864, MTXMODE_APPLY);
|
||||
|
||||
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
|
||||
if (sp53 != arg0->unk_02) {
|
||||
gDPPipeSync(POLY_XLU_DISP++);
|
||||
gDPSetEnvColor(POLY_XLU_DISP++, D_80B23C40[arg0->unk_02], D_80B23C40[arg0->unk_02 + 1],
|
||||
D_80B23C40[arg0->unk_02 + 2], 255);
|
||||
|
||||
sp53 = arg0->unk_02;
|
||||
}
|
||||
|
||||
if (arg0->unk_01 < 6) {
|
||||
gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, D_80B23C2C[arg0->unk_02], D_80B23C2C[arg0->unk_02 + 1],
|
||||
D_80B23C2C[arg0->unk_02 + 2], arg0->unk_01 * 50);
|
||||
} else {
|
||||
gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, D_80B23C2C[arg0->unk_02], D_80B23C2C[arg0->unk_02 + 1],
|
||||
D_80B23C2C[arg0->unk_02 + 2], 255);
|
||||
}
|
||||
|
||||
gSPDisplayList(POLY_XLU_DISP++, gSunSparkleModelDL);
|
||||
if (arg0->unk_00 != 1) {
|
||||
continue;
|
||||
}
|
||||
|
||||
Matrix_Translate(arg0->unk_08.x, arg0->unk_08.y, arg0->unk_08.z, MTXMODE_NEW);
|
||||
Matrix_ReplaceRotation(&play->billboardMtxF);
|
||||
if (arg0->unk_01 < 40) {
|
||||
Matrix_Scale(arg0->unk_04 * 0.025f * arg0->unk_01, arg0->unk_04 * 0.025f * arg0->unk_01, 1.0f,
|
||||
MTXMODE_APPLY);
|
||||
} else {
|
||||
Matrix_Scale(arg0->unk_04, arg0->unk_04, 1.0f, MTXMODE_APPLY);
|
||||
}
|
||||
Matrix_RotateZS(play->gameplayFrames * 4864, MTXMODE_APPLY);
|
||||
|
||||
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
|
||||
if (sp53 != arg0->unk_02) {
|
||||
gDPPipeSync(POLY_XLU_DISP++);
|
||||
gDPSetEnvColor(POLY_XLU_DISP++, D_80B23C40[arg0->unk_02], D_80B23C40[arg0->unk_02 + 1],
|
||||
D_80B23C40[arg0->unk_02 + 2], 255);
|
||||
|
||||
sp53 = arg0->unk_02;
|
||||
}
|
||||
|
||||
if (arg0->unk_01 < 6) {
|
||||
gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, D_80B23C2C[arg0->unk_02], D_80B23C2C[arg0->unk_02 + 1],
|
||||
D_80B23C2C[arg0->unk_02 + 2], arg0->unk_01 * 50);
|
||||
} else {
|
||||
gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, D_80B23C2C[arg0->unk_02], D_80B23C2C[arg0->unk_02 + 1],
|
||||
D_80B23C2C[arg0->unk_02 + 2], 255);
|
||||
}
|
||||
|
||||
gSPDisplayList(POLY_XLU_DISP++, gSunSparkleModelDL);
|
||||
}
|
||||
|
||||
CLOSE_DISPS(gfxCtx);
|
||||
|
@ -315,7 +315,7 @@ void func_808DF088(EnHorseLinkChild* this, PlayState* play) {
|
||||
} else {
|
||||
phi_v0 = -1;
|
||||
}
|
||||
sp32 += (phi_v0 << 0xE);
|
||||
sp32 += (phi_v0 * 0x4000);
|
||||
} else {
|
||||
sp32 = Math_Vec3f_Yaw(&this->actor.world.pos, &this->actor.home.pos) - this->actor.world.rot.y;
|
||||
}
|
||||
|
@ -621,7 +621,6 @@ void EnKakasi_TeachingSong(EnKakasi* this, PlayState* play) {
|
||||
this->unkCounter1A4 = 0;
|
||||
CutsceneManager_Stop(this->csIdList[0]);
|
||||
Actor_PlaySfx(&this->picto.actor, NA_SE_EN_YASE_DEAD);
|
||||
if (this) {}
|
||||
this->unkState196 = 2;
|
||||
this->subCamId = SUB_CAM_ID_DONE;
|
||||
this->picto.actor.textId = 0x1647;
|
||||
@ -944,7 +943,7 @@ void EnKakasi_DancingNightAway(EnKakasi* this, PlayState* play) {
|
||||
if ((gSaveContext.save.time > CLOCK_TIME(18, 0)) || (gSaveContext.save.time < CLOCK_TIME(6, 0))) {
|
||||
gSaveContext.save.time = CLOCK_TIME(6, 0);
|
||||
gSaveContext.respawnFlag = -4;
|
||||
SET_EVENTINF(EVENTINF_27);
|
||||
SET_EVENTINF(EVENTINF_TRIGGER_DAYTELOP);
|
||||
} else {
|
||||
gSaveContext.save.time = CLOCK_TIME(18, 0);
|
||||
gSaveContext.respawnFlag = -8;
|
||||
|
@ -610,7 +610,7 @@ void EnKanban_Update(Actor* thisx, PlayState* play) {
|
||||
}
|
||||
}
|
||||
|
||||
Math_ApproachS(&this->actor.shape.rot.x, this->direction << 0xE, 1, 0x2000);
|
||||
Math_ApproachS(&this->actor.shape.rot.x, this->direction * 0x4000, 1, 0x2000);
|
||||
} else {
|
||||
this->actor.shape.rot.y += this->spinVel.y;
|
||||
this->actor.shape.rot.x += this->direction * 0x7D0;
|
||||
|
@ -111,7 +111,7 @@ void func_80A5B160(EnKusa2* this, PlayState* play) {
|
||||
}
|
||||
|
||||
for (i = 1; i < ARRAY_COUNT(this->unk_194); i++) {
|
||||
temp_s1 = (i << 0xD) - 0x2000;
|
||||
temp_s1 = (i * 0x2000) - 0x2000;
|
||||
if (this->unk_194[i] == NULL) {
|
||||
ptr = &this->unk_194[i];
|
||||
actor = (EnKusa2*)Actor_SpawnAsChildAndCutscene(
|
||||
|
@ -433,7 +433,7 @@ void EnMkk_Update(Actor* thisx, PlayState* play) {
|
||||
if (this->collider.base.atFlags & AT_ON) {
|
||||
CollisionCheck_SetAT(play, &play->colChkCtx, &this->collider.base);
|
||||
}
|
||||
if (this->collider.base.acFlags & AT_ON) {
|
||||
if (this->collider.base.acFlags & AC_ON) {
|
||||
CollisionCheck_SetAC(play, &play->colChkCtx, &this->collider.base);
|
||||
}
|
||||
CollisionCheck_SetOC(play, &play->colChkCtx, &this->collider.base);
|
||||
|
@ -80,7 +80,7 @@ void EnNutsball_Destroy(Actor* thisx, PlayState* play) {
|
||||
}
|
||||
|
||||
void EnNutsball_InitColliderParams(EnNutsball* this) {
|
||||
this->collider.base.atFlags &= ~AT_TYPE_ENEMY & ~AT_BOUNCED & ~AT_HIT;
|
||||
this->collider.base.atFlags &= ~(AT_HIT | AT_TYPE_ENEMY | AT_BOUNCED);
|
||||
this->collider.base.atFlags |= AT_TYPE_PLAYER;
|
||||
this->collider.info.toucher.dmgFlags = 0x400000;
|
||||
this->collider.info.toucher.damage = 2;
|
||||
|
@ -536,7 +536,7 @@ void EnOsk_Draw(Actor* thisx, PlayState* play) {
|
||||
Matrix_Translate(this->actor.focus.pos.x + sp80.x, this->actor.focus.pos.y + sp80.y,
|
||||
sp80.z = this->actor.focus.pos.z + sp80.z, MTXMODE_NEW);
|
||||
|
||||
sp80.z = Math_SinS(play->gameplayFrames << 0xE);
|
||||
sp80.z = Math_SinS(play->gameplayFrames * 0x4000);
|
||||
sp80.z = ((sp80.z + 1.0f) * 0.1f) + 2.0f;
|
||||
Matrix_Scale(this->actor.scale.x * sp80.z, this->actor.scale.y * sp80.z, this->actor.scale.z * sp80.z,
|
||||
MTXMODE_APPLY);
|
||||
|
@ -1402,7 +1402,7 @@ void EnOssan_PartTimer_Init(EnOssan* this, PlayState* play) {
|
||||
|
||||
u16 EnOssan_CuriosityShopMan_GetWelcome(EnOssan* this, PlayState* play) {
|
||||
Player* player = GET_PLAYER(play);
|
||||
u16 textId = Text_GetFaceReaction(play, 0x2F);
|
||||
u16 textId = Text_GetFaceReaction(play, FACE_REACTION_SET_CURIOSITY_SHOP_MAN);
|
||||
|
||||
if (textId != 0) {
|
||||
this->animIndex = FSN_ANIM_HANDS_ON_COUNTER_START;
|
||||
@ -1440,7 +1440,7 @@ u16 EnOssan_CuriosityShopMan_GetWelcome(EnOssan* this, PlayState* play) {
|
||||
|
||||
u16 EnOssan_PartTimer_GetWelcome(EnOssan* this, PlayState* play) {
|
||||
Player* player = GET_PLAYER(play);
|
||||
u16 textId = Text_GetFaceReaction(play, 0x36);
|
||||
u16 textId = Text_GetFaceReaction(play, FACE_REACTION_SET_PART_TIMER);
|
||||
|
||||
if (textId != 0) {
|
||||
this->flags |= END_INTERACTION;
|
||||
|
@ -1146,21 +1146,22 @@ void func_80B5E1D8(PlayState* play, EnOtUnkStruct* arg1, s32 arg2) {
|
||||
POLY_OPA_DISP = Gfx_SetupDL66(POLY_OPA_DISP);
|
||||
|
||||
for (i = 0; i < arg2; i++, arg1++) {
|
||||
if (arg1->unk_00) {
|
||||
if (!flag) {
|
||||
gSPDisplayList(POLY_OPA_DISP++, object_ot_DL_000040);
|
||||
flag = true;
|
||||
if (play) {}
|
||||
}
|
||||
|
||||
Matrix_Translate(arg1->unk_0C.x, arg1->unk_0C.y, arg1->unk_0C.z, MTXMODE_NEW);
|
||||
Matrix_RotateYS(BINANG_ROT180(Camera_GetCamDirYaw(GET_ACTIVE_CAM(play))), MTXMODE_APPLY);
|
||||
Matrix_Scale(arg1->unk_04, arg1->unk_04, arg1->unk_04, MTXMODE_APPLY);
|
||||
|
||||
gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(gDropRecoveryHeartTex));
|
||||
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPDisplayList(POLY_OPA_DISP++, object_ot_DL_000078);
|
||||
if (arg1->unk_00 == 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!flag) {
|
||||
gSPDisplayList(POLY_OPA_DISP++, object_ot_DL_000040);
|
||||
flag = true;
|
||||
}
|
||||
|
||||
Matrix_Translate(arg1->unk_0C.x, arg1->unk_0C.y, arg1->unk_0C.z, MTXMODE_NEW);
|
||||
Matrix_RotateYS(BINANG_ROT180(Camera_GetCamDirYaw(GET_ACTIVE_CAM(play))), MTXMODE_APPLY);
|
||||
Matrix_Scale(arg1->unk_04, arg1->unk_04, arg1->unk_04, MTXMODE_APPLY);
|
||||
|
||||
gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(gDropRecoveryHeartTex));
|
||||
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPDisplayList(POLY_OPA_DISP++, object_ot_DL_000078);
|
||||
}
|
||||
|
||||
CLOSE_DISPS(play->state.gfxCtx);
|
||||
|
@ -169,6 +169,9 @@ void EnOwl_Init(Actor* thisx, PlayState* play) {
|
||||
return;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
this->unk_3DA = 0;
|
||||
@ -335,6 +338,9 @@ void func_8095AD54(EnOwl* this, PlayState* play) {
|
||||
Message_ContinueTextbox(play, 0x7D3);
|
||||
this->actionFunc = func_8095ABF0;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -379,6 +385,9 @@ void func_8095AF2C(EnOwl* this, PlayState* play) {
|
||||
func_8095ACEC(this);
|
||||
this->actionFunc = func_8095ABF0;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -625,6 +634,9 @@ void func_8095BA84(EnOwl* this, PlayState* play) {
|
||||
func_8019F230();
|
||||
Message_ContinueTextbox(play, 0xBEF);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
@ -633,14 +645,20 @@ void func_8095BA84(EnOwl* this, PlayState* play) {
|
||||
case 0:
|
||||
func_8019F208();
|
||||
Message_ContinueTextbox(play, 0xBF4);
|
||||
return;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
func_8019F230();
|
||||
Message_ContinueTextbox(play, 0xBF3);
|
||||
return;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -703,9 +721,15 @@ void func_8095BA84(EnOwl* this, PlayState* play) {
|
||||
this->actionFlags |= 8;
|
||||
func_8095ACEC(this);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -897,168 +921,179 @@ void EnOwl_Update(Actor* thisx, PlayState* play) {
|
||||
Actor_UpdateBgCheckInfo(play, &this->actor, 10.0f, 10.0f, 10.0f, UPDBGCHECKINFO_FLAG_4);
|
||||
Collider_UpdateCylinder(&this->actor, &this->collider);
|
||||
CollisionCheck_SetOC(play, &play->colChkCtx, &this->collider.base);
|
||||
if (this->actor.update != NULL) {
|
||||
if ((this->skelAnime1.animation == &object_owl_Anim_001ADC) && Animation_OnFrame(&this->skelAnime1, 4.0f)) {
|
||||
Actor_PlaySfx(&this->actor, NA_SE_EN_OWL_FLUTTER);
|
||||
if (this->actor.update == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ((this->skelAnime1.animation == &object_owl_Anim_001ADC) && Animation_OnFrame(&this->skelAnime1, 4.0f)) {
|
||||
Actor_PlaySfx(&this->actor, NA_SE_EN_OWL_FLUTTER);
|
||||
}
|
||||
|
||||
if (this->actionFlags & 2) {
|
||||
this->eyeTexIndex = 2;
|
||||
} else {
|
||||
if (DECR(this->blinkTimer) == 0) {
|
||||
this->blinkTimer = Rand_S16Offset(60, 60);
|
||||
}
|
||||
|
||||
if (this->actionFlags & 2) {
|
||||
this->eyeTexIndex = 2;
|
||||
} else {
|
||||
if (DECR(this->blinkTimer) == 0) {
|
||||
this->blinkTimer = Rand_S16Offset(60, 60);
|
||||
}
|
||||
this->eyeTexIndex = this->blinkTimer;
|
||||
if (this->eyeTexIndex >= 3) {
|
||||
this->eyeTexIndex = 0;
|
||||
}
|
||||
this->eyeTexIndex = this->blinkTimer;
|
||||
if (this->eyeTexIndex >= 3) {
|
||||
this->eyeTexIndex = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (!(this->actionFlags & 8)) {
|
||||
sp36 = 0;
|
||||
if (!(this->actionFlags & 8)) {
|
||||
sp36 = 0;
|
||||
|
||||
if (this->actionFlags & 0x10) {
|
||||
switch (this->unk_408) {
|
||||
case 0:
|
||||
this->unk_408 = 1;
|
||||
this->unk_409 = 6;
|
||||
break;
|
||||
if (this->actionFlags & 0x10) {
|
||||
switch (this->unk_408) {
|
||||
case 0:
|
||||
this->unk_408 = 1;
|
||||
this->unk_409 = 6;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
this->unk_409--;
|
||||
if (this->unk_409 != 0) {
|
||||
sp36 = Math_CosS(this->unk_409 * 0x2000) * 0x1000;
|
||||
case 1:
|
||||
this->unk_409--;
|
||||
if (this->unk_409 != 0) {
|
||||
sp36 = Math_CosS(this->unk_409 * 0x2000) * 0x1000;
|
||||
} else {
|
||||
if (this->actionFlags & 2) {
|
||||
this->unk_3DA = 0;
|
||||
} else {
|
||||
if (this->actionFlags & 2) {
|
||||
this->unk_3DA = 0;
|
||||
} else {
|
||||
this->unk_3DA = 0x20;
|
||||
}
|
||||
|
||||
if (this->actionFlags & 0x20) {
|
||||
this->unk_3DA -= 4;
|
||||
} else {
|
||||
this->unk_3DA += 4;
|
||||
}
|
||||
this->unk_408++;
|
||||
this->unk_3DA = 0x20;
|
||||
}
|
||||
|
||||
if (this->actionFlags & 0x20) {
|
||||
sp36 = -sp36;
|
||||
}
|
||||
break;
|
||||
|
||||
case 2:
|
||||
if (func_8095C510(this)) {
|
||||
this->actionFlags &= ~0x10;
|
||||
this->unk_40A = (s32)Rand_ZeroFloat(20.0f) + 60;
|
||||
this->unk_408 = 0;
|
||||
func_8095AB4C(this);
|
||||
}
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
if (this->unk_40A > 0) {
|
||||
this->unk_40A--;
|
||||
} else {
|
||||
if (this->unk_408 == 0) {
|
||||
if (Rand_ZeroOne() < 0.3f) {
|
||||
this->unk_408 = 4;
|
||||
this->unk_409 = 12;
|
||||
this->unk_3DA -= 4;
|
||||
} else {
|
||||
this->unk_408 = 1;
|
||||
this->unk_409 = 4;
|
||||
this->unk_3DA += 4;
|
||||
}
|
||||
}
|
||||
this->unk_409--;
|
||||
|
||||
switch (this->unk_408) {
|
||||
case 1:
|
||||
sp36 = Math_SinS((-this->unk_409 * 0x1000) + 0x4000) * 5000.0f;
|
||||
if (this->unk_409 <= 0) {
|
||||
this->unk_409 = (s32)(Rand_ZeroFloat(15.0f) + 5.0f);
|
||||
this->unk_408 = 2;
|
||||
}
|
||||
break;
|
||||
|
||||
case 2:
|
||||
sp36 = 0x1388;
|
||||
if (this->unk_409 <= 0) {
|
||||
this->unk_408 = 3;
|
||||
this->unk_409 = 4;
|
||||
}
|
||||
break;
|
||||
|
||||
case 3:
|
||||
sp36 = Math_SinS(this->unk_409 * 0x1000) * 5000.0f;
|
||||
if (this->unk_409 <= 0) {
|
||||
this->unk_40A = (s32)Rand_ZeroFloat(20.0f) + 60;
|
||||
this->unk_408 = 0;
|
||||
func_8095AB4C(this);
|
||||
}
|
||||
break;
|
||||
|
||||
case 4:
|
||||
sp36 = Math_SinS(this->unk_409 * 0x2000) * 5000.0f;
|
||||
if (this->unk_409 <= 0) {
|
||||
this->unk_40A = (s32)Rand_ZeroFloat(20.0f) + 60;
|
||||
this->unk_408 = 0;
|
||||
func_8095AB4C(this);
|
||||
}
|
||||
break;
|
||||
this->unk_408++;
|
||||
}
|
||||
|
||||
if (this->actionFlags & 0x20) {
|
||||
sp36 = -sp36;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
if (this->unk_40D > 0) {
|
||||
this->unk_40D--;
|
||||
} else {
|
||||
this->unk_40C--;
|
||||
switch (this->unk_40B) {
|
||||
case 0:
|
||||
this->unk_3DE = (-this->unk_40C * 0x5DC) + 0x1770;
|
||||
if (this->unk_40C <= 0) {
|
||||
this->unk_40B = 1;
|
||||
this->unk_40C = (s8)(Rand_ZeroFloat(15.0f) + 5.0f);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (func_8095C510(this)) {
|
||||
this->actionFlags &= ~0x10;
|
||||
this->unk_40A = (s32)Rand_ZeroFloat(20.0f) + 60;
|
||||
this->unk_408 = 0;
|
||||
func_8095AB4C(this);
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
this->unk_3DE = 0x1770;
|
||||
if (this->unk_40C <= 0) {
|
||||
this->unk_40B = 2;
|
||||
this->unk_40C = 4;
|
||||
}
|
||||
break;
|
||||
|
||||
case 2:
|
||||
this->unk_3DE = this->unk_40C * 0x5DC;
|
||||
if (this->unk_40C <= 0) {
|
||||
this->unk_40B = 0;
|
||||
this->unk_40C = 4;
|
||||
this->unk_40D = (s32)Rand_ZeroFloat(40.0f) + 160;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
if (this->unk_40A > 0) {
|
||||
this->unk_40A--;
|
||||
} else {
|
||||
if (this->unk_408 == 0) {
|
||||
if (Rand_ZeroOne() < 0.3f) {
|
||||
this->unk_408 = 4;
|
||||
this->unk_409 = 12;
|
||||
} else {
|
||||
this->unk_408 = 1;
|
||||
this->unk_409 = 4;
|
||||
}
|
||||
}
|
||||
this->unk_409--;
|
||||
|
||||
switch (this->unk_408) {
|
||||
case 1:
|
||||
sp36 = Math_SinS((-this->unk_409 * 0x1000) + 0x4000) * 5000.0f;
|
||||
if (this->unk_409 <= 0) {
|
||||
this->unk_409 = (s32)(Rand_ZeroFloat(15.0f) + 5.0f);
|
||||
this->unk_408 = 2;
|
||||
}
|
||||
break;
|
||||
|
||||
case 2:
|
||||
sp36 = 0x1388;
|
||||
if (this->unk_409 <= 0) {
|
||||
this->unk_408 = 3;
|
||||
this->unk_409 = 4;
|
||||
}
|
||||
break;
|
||||
|
||||
case 3:
|
||||
sp36 = Math_SinS(this->unk_409 * 0x1000) * 5000.0f;
|
||||
if (this->unk_409 <= 0) {
|
||||
this->unk_40A = (s32)Rand_ZeroFloat(20.0f) + 60;
|
||||
this->unk_408 = 0;
|
||||
func_8095AB4C(this);
|
||||
}
|
||||
break;
|
||||
|
||||
case 4:
|
||||
sp36 = Math_SinS(this->unk_409 * 0x2000) * 5000.0f;
|
||||
if (this->unk_409 <= 0) {
|
||||
this->unk_40A = (s32)Rand_ZeroFloat(20.0f) + 60;
|
||||
this->unk_408 = 0;
|
||||
func_8095AB4C(this);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (this->actionFlags & 0x20) {
|
||||
sp36 = -sp36;
|
||||
}
|
||||
}
|
||||
|
||||
if (sp36) {}
|
||||
this->unk_3DC = (u16)((this->unk_3DA << 2) << 8) + sp36;
|
||||
this->unk_3D8 = ABS(this->unk_3DC) >> 3;
|
||||
} else {
|
||||
this->unk_3DE = 0;
|
||||
if (this->actionFlags & 2) {
|
||||
this->unk_3DC = -0x8000;
|
||||
if (this->unk_40D > 0) {
|
||||
this->unk_40D--;
|
||||
} else {
|
||||
this->unk_3DC = 0;
|
||||
}
|
||||
this->unk_40C--;
|
||||
switch (this->unk_40B) {
|
||||
case 0:
|
||||
this->unk_3DE = (-this->unk_40C * 0x5DC) + 0x1770;
|
||||
if (this->unk_40C <= 0) {
|
||||
this->unk_40B = 1;
|
||||
this->unk_40C = (s8)(Rand_ZeroFloat(15.0f) + 5.0f);
|
||||
}
|
||||
break;
|
||||
|
||||
this->unk_3D8 = ABS(this->unk_3DC) >> 3;
|
||||
case 1:
|
||||
this->unk_3DE = 0x1770;
|
||||
if (this->unk_40C <= 0) {
|
||||
this->unk_40B = 2;
|
||||
this->unk_40C = 4;
|
||||
}
|
||||
break;
|
||||
|
||||
case 2:
|
||||
this->unk_3DE = this->unk_40C * 0x5DC;
|
||||
if (this->unk_40C <= 0) {
|
||||
this->unk_40B = 0;
|
||||
this->unk_40C = 4;
|
||||
this->unk_40D = (s32)Rand_ZeroFloat(40.0f) + 160;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (sp36) {}
|
||||
this->unk_3DC = (u16)((this->unk_3DA << 2) << 8) + sp36;
|
||||
this->unk_3D8 = ABS(this->unk_3DC) >> 3;
|
||||
} else {
|
||||
this->unk_3DE = 0;
|
||||
if (this->actionFlags & 2) {
|
||||
this->unk_3DC = -0x8000;
|
||||
} else {
|
||||
this->unk_3DC = 0;
|
||||
}
|
||||
|
||||
this->unk_3D8 = ABS(this->unk_3DC) >> 3;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1117,6 +1152,9 @@ s32 EnOwl_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* p
|
||||
rot->y += (s16)(this->unk_3D8 * 1.5f);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return false;
|
||||
|
@ -628,13 +628,28 @@ s32 EnRacedog_IsOverFinishLine(EnRacedog* this, Vec2f* finishLineCoordinates) {
|
||||
|
||||
// frontPointsCrossProduct is positive if the dog is to the left of the line formed by the front points
|
||||
// crossProductTemp is positive if the dog is above the line formed by the bottom points
|
||||
// This is checking that the dog within the region defined by front and bottom lines like so:
|
||||
// |
|
||||
// X | Front
|
||||
// |
|
||||
// --------
|
||||
// Bottom
|
||||
frontPointsCrossProduct = ((xDistToTopFront * zDistToBottomFront) - (xDistToBottomFront * zDistToTopFront));
|
||||
crossProductTemp = (((xDistToBottomFront * zDistToBottomBack) - (xDistToBottomBack * zDistToBottomFront)));
|
||||
//! @bug If any dog is precisely (with floating-point precision) on top of the line formed by the front points,
|
||||
//! then frontPointsCrossProduct will be zero. This will cause this multiplication (and all future multiplications)
|
||||
//! to be zero, which will make this function think the dog has crossed the finish line. The line formed by the
|
||||
//! front points extends throughout the entire racetrack, so a dog can trigger this when they're not even close to
|
||||
//! the actual finish line, causing them to finish the race incredibly early.
|
||||
if (frontPointsCrossProduct * crossProductTemp < 0.0f) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// crossProductTemp is positive if the dog is to the right of the line formed by the back points
|
||||
// This is checking that the dog within the region defined by front and back lines like so:
|
||||
// | |
|
||||
// Back | X | Front
|
||||
// | |
|
||||
frontPointsCrossProduct = ((xDistToTopFront * zDistToBottomFront) - (xDistToBottomFront * zDistToTopFront));
|
||||
crossProductTemp = ((xDistToBottomBack * zDistToTopBack) - (xDistToTopBack * zDistToBottomBack));
|
||||
if (frontPointsCrossProduct * crossProductTemp < 0.0f) {
|
||||
@ -642,6 +657,12 @@ s32 EnRacedog_IsOverFinishLine(EnRacedog* this, Vec2f* finishLineCoordinates) {
|
||||
}
|
||||
|
||||
// crossProductTemp is positive if the dog is below the line formed by the top points
|
||||
// This is checking that the dog within the region defined by front and top lines like so:
|
||||
// Top
|
||||
// --------
|
||||
// |
|
||||
// X | Front
|
||||
// |
|
||||
frontPointsCrossProduct = ((xDistToTopFront * zDistToBottomFront) - (xDistToBottomFront * zDistToTopFront));
|
||||
crossProductTemp = ((xDistToTopBack * zDistToTopFront) - (xDistToTopFront * zDistToTopBack));
|
||||
if (frontPointsCrossProduct * crossProductTemp < 0.0f) {
|
||||
|
@ -1120,7 +1120,9 @@ void EnSlime_Update(Actor* thisx, PlayState* play) {
|
||||
|
||||
if (this->collider.base.ocFlags1 & OC1_ON) {
|
||||
Actor_MoveWithGravity(thisx);
|
||||
Actor_UpdateBgCheckInfo(play, thisx, 20.0f, 35.0f, 40.0f, 0x1D);
|
||||
Actor_UpdateBgCheckInfo(play, thisx, 20.0f, 35.0f, 40.0f,
|
||||
UPDBGCHECKINFO_FLAG_1 | UPDBGCHECKINFO_FLAG_4 | UPDBGCHECKINFO_FLAG_8 |
|
||||
UPDBGCHECKINFO_FLAG_10);
|
||||
}
|
||||
|
||||
Collider_UpdateCylinder(thisx, &this->collider);
|
||||
|
@ -5,6 +5,7 @@
|
||||
*/
|
||||
|
||||
#include "z_en_snowwd.h"
|
||||
#include "objects/object_snowwd/object_snowwd.h"
|
||||
|
||||
#define FLAGS 0x00000000
|
||||
|
||||
@ -17,7 +18,6 @@ void EnSnowwd_Draw(Actor* thisx, PlayState* play);
|
||||
|
||||
void func_80AF76F0(EnSnowwd* this, PlayState* play);
|
||||
|
||||
#if 0
|
||||
ActorInit En_Snowwd_InitVars = {
|
||||
ACTOR_EN_SNOWWD,
|
||||
ACTORCAT_PROP,
|
||||
@ -30,25 +30,107 @@ ActorInit En_Snowwd_InitVars = {
|
||||
(ActorFunc)EnSnowwd_Draw,
|
||||
};
|
||||
|
||||
// static ColliderCylinderInit sCylinderInit = {
|
||||
static ColliderCylinderInit D_80AF7A90 = {
|
||||
{ COLTYPE_TREE, AT_NONE, AC_ON | AC_HARD | AC_TYPE_PLAYER, OC1_ON | OC1_TYPE_ALL, OC2_TYPE_1, COLSHAPE_CYLINDER, },
|
||||
{ ELEMTYPE_UNK5, { 0x00000000, 0x00, 0x00 }, { 0x0100020A, 0x00, 0x00 }, TOUCH_NONE | TOUCH_SFX_NORMAL, BUMP_ON, OCELEM_ON, },
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_TREE,
|
||||
AT_NONE,
|
||||
AC_ON | AC_HARD | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
OC2_TYPE_1,
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK5,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x0100020A, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 18, 60, 0, { 0, 0, 0 } },
|
||||
};
|
||||
|
||||
#endif
|
||||
Vec3f D_80AF7ABC = { 0.0f, 0.0f, 0.0f };
|
||||
|
||||
extern ColliderCylinderInit D_80AF7A90;
|
||||
Vec3f D_80AF7AC8 = { 0.0f, -4.0f, 0.0f };
|
||||
|
||||
extern UNK_TYPE D_06001AA0;
|
||||
Color_RGBA8 D_80AF7AD4 = { 255, 255, 255, 255 };
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Snowwd/EnSnowwd_Init.s")
|
||||
Color_RGBA8 D_80AF7AD8 = { 200, 200, 220, 0 };
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Snowwd/EnSnowwd_Destroy.s")
|
||||
void EnSnowwd_Init(Actor* thisx, PlayState* play) {
|
||||
EnSnowwd* this = THIS;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Snowwd/func_80AF76F0.s")
|
||||
this->actor.home.rot.z = 0;
|
||||
this->actor.home.rot.y = 0;
|
||||
this->unk190 = 0;
|
||||
this->actor.uncullZoneForward = 4000.0f;
|
||||
this->actor.uncullZoneScale = 2000.0f;
|
||||
this->actor.uncullZoneDownward = 2400.0f;
|
||||
Collider_InitAndSetCylinder(play, &this->collider, &this->actor, &sCylinderInit);
|
||||
Actor_SetScale(&this->actor, 1.0f);
|
||||
this->actionFunc = func_80AF76F0;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Snowwd/EnSnowwd_Update.s")
|
||||
void EnSnowwd_Destroy(Actor* thisx, PlayState* play) {
|
||||
EnSnowwd* this = THIS;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Snowwd/EnSnowwd_Draw.s")
|
||||
Collider_DestroyCylinder(play, &this->collider);
|
||||
}
|
||||
|
||||
void func_80AF76F0(EnSnowwd* this, PlayState* play) {
|
||||
s32 pad;
|
||||
Actor* thisx = &this->actor;
|
||||
f32 sp54;
|
||||
Vec3f sp48;
|
||||
|
||||
if (this->collider.base.acFlags & AC_HIT) {
|
||||
this->collider.base.acFlags &= ~AC_HIT;
|
||||
Actor_PlaySfx(thisx, NA_SE_IT_REFLECTION_WOOD);
|
||||
}
|
||||
if (thisx->home.rot.y != 0) {
|
||||
this->unk190 = 0x15;
|
||||
thisx->home.rot.y = 0;
|
||||
if (thisx->home.rot.z == 0) {
|
||||
if (SNOWWD_GET_PARAM_F80(&this->actor) < 0x10) {
|
||||
sp48 = thisx->world.pos;
|
||||
sp48.y += 200.0f;
|
||||
Item_DropCollectibleRandom(play, NULL, &sp48, SNOWWD_GET_PARAM_F80(&this->actor) * 0x10);
|
||||
}
|
||||
thisx->home.rot.z = 1;
|
||||
}
|
||||
}
|
||||
if (thisx->xzDistToPlayer < 600.0f) {
|
||||
Collider_UpdateCylinder(thisx, &this->collider);
|
||||
CollisionCheck_SetAC(play, &play->colChkCtx, &this->collider.base);
|
||||
CollisionCheck_SetOC(play, &play->colChkCtx, &this->collider.base);
|
||||
}
|
||||
if (this->unk190 > 0) {
|
||||
this->unk190--;
|
||||
sp54 = Math_SinS((s16)((this->unk190 ^ 0xFFFF) * 0x3332)) * 250.0f;
|
||||
thisx->shape.rot.x = (s16)(Math_CosS(thisx->yawTowardsPlayer - thisx->shape.rot.y) * sp54);
|
||||
thisx->shape.rot.z = (s16)(Math_SinS(thisx->yawTowardsPlayer - thisx->shape.rot.y) * sp54);
|
||||
sp48 = thisx->world.pos;
|
||||
sp48.x += Rand_CenteredFloat(80.0f);
|
||||
sp48.y += 100.0f + Rand_ZeroFloat(30.0f);
|
||||
sp48.z += Rand_CenteredFloat(80.0f);
|
||||
func_800B0EB0(play, &sp48, &D_80AF7AC8, &D_80AF7ABC, &D_80AF7AD4, &D_80AF7AD8, 200, 10, 20);
|
||||
}
|
||||
}
|
||||
|
||||
void EnSnowwd_Update(Actor* thisx, PlayState* play) {
|
||||
EnSnowwd* this = THIS;
|
||||
|
||||
this->actionFunc(this, play);
|
||||
}
|
||||
|
||||
void EnSnowwd_Draw(Actor* thisx, PlayState* play) {
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
Gfx_SetupDL25_Opa(play->state.gfxCtx);
|
||||
gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(gSnowTreeSnowLeavesTex));
|
||||
gSPDisplayList(POLY_OPA_DISP++, gSnowTreeDL);
|
||||
|
||||
CLOSE_DISPS(play->state.gfxCtx);
|
||||
}
|
||||
|
@ -3,13 +3,16 @@
|
||||
|
||||
#include "global.h"
|
||||
|
||||
#define SNOWWD_GET_PARAM_F80(thisx) (((thisx)->params & 0xF80) >> 7)
|
||||
|
||||
struct EnSnowwd;
|
||||
|
||||
typedef void (*EnSnowwdActionFunc)(struct EnSnowwd*, PlayState*);
|
||||
|
||||
typedef struct EnSnowwd {
|
||||
/* 0x000 */ Actor actor;
|
||||
/* 0x144 */ char unk_144[0x50];
|
||||
/* 0x144 */ ColliderCylinder collider;
|
||||
/* 0x190 */ s16 unk190;
|
||||
/* 0x194 */ EnSnowwdActionFunc actionFunc;
|
||||
} EnSnowwd; // size = 0x198
|
||||
|
||||
|
@ -358,7 +358,6 @@ s32 func_808D9440(PlayState* play, Vec3f* posA, Vec3f* posB, Vec3f* posResult, C
|
||||
return ret;
|
||||
}
|
||||
|
||||
#ifdef NON_MATCHING
|
||||
void func_808D94D0(EnSw* this, PlayState* play, s32 arg2, s32 arg3, s16 arg4) {
|
||||
CollisionPoly* spA4;
|
||||
CollisionPoly* spA0;
|
||||
@ -412,7 +411,6 @@ void func_808D94D0(EnSw* this, PlayState* play, s32 arg2, s32 arg3, s16 arg4) {
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
if (i == 0) {
|
||||
if (this && this && this) {}
|
||||
sp84.x = sp90.x - (this->unk_350.x * temp_f20);
|
||||
sp84.y = sp90.y - (this->unk_350.y * temp_f20);
|
||||
sp84.z = sp90.z - (this->unk_350.z * temp_f20);
|
||||
@ -433,6 +431,9 @@ void func_808D94D0(EnSw* this, PlayState* play, s32 arg2, s32 arg3, s16 arg4) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//! FAKE
|
||||
if (i == 3) {}
|
||||
}
|
||||
|
||||
func_808D93BC(this);
|
||||
@ -448,10 +449,6 @@ void func_808D94D0(EnSw* this, PlayState* play, s32 arg2, s32 arg3, s16 arg4) {
|
||||
Actor_MoveWithoutGravity(&this->actor);
|
||||
}
|
||||
}
|
||||
#else
|
||||
void func_808D94D0(EnSw* this, PlayState* play, s32 arg2, s32 arg3, s16 arg4);
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Sw/func_808D94D0.s")
|
||||
#endif
|
||||
|
||||
void func_808D9894(EnSw* this, Vec3f* vec) {
|
||||
Vec3f sp5C;
|
||||
|
@ -10,6 +10,7 @@
|
||||
#include "z_en_syateki_man.h"
|
||||
#include "overlays/actors/ovl_En_Syateki_Crow/z_en_syateki_crow.h"
|
||||
#include "overlays/actors/ovl_En_Syateki_Dekunuts/z_en_syateki_dekunuts.h"
|
||||
#include "overlays/actors/ovl_En_Syateki_Okuta/z_en_syateki_okuta.h"
|
||||
#include "overlays/actors/ovl_En_Syateki_Wf/z_en_syateki_wf.h"
|
||||
|
||||
#define FLAGS (ACTOR_FLAG_1 | ACTOR_FLAG_8 | ACTOR_FLAG_10 | ACTOR_FLAG_CANT_LOCK_ON)
|
||||
@ -49,15 +50,10 @@ void EnSyatekiMan_Town_EndGame(EnSyatekiMan* this, PlayState* play);
|
||||
#define TALK_FLAG_SWAMP_HAS_SPOKEN_WITH_HUMAN (1 << 0)
|
||||
#define TALK_FLAG_SWAMP_HAS_EXPLAINED_THE_RULES (1 << 1)
|
||||
|
||||
#define OCTOROK_FLAG(color, row, column) (1 << ((row * 6) + (column * 2) + color))
|
||||
#define COLOR_RED 0
|
||||
#define COLOR_BLUE 1
|
||||
#define ROW_BACK 0
|
||||
#define ROW_CENTER 1
|
||||
#define ROW_FRONT 2
|
||||
#define COLUMN_LEFT 0
|
||||
#define COLUMN_CENTER 1
|
||||
#define COLUMN_RIGHT 2
|
||||
#define OCTO_FLAGS(type0, type1, type2, type3, type4, type5, type6, type7, type8) \
|
||||
(SG_OCTO_SET_FLAG(type0, 0) | SG_OCTO_SET_FLAG(type1, 1) | SG_OCTO_SET_FLAG(type2, 2) | \
|
||||
SG_OCTO_SET_FLAG(type3, 3) | SG_OCTO_SET_FLAG(type4, 4) | SG_OCTO_SET_FLAG(type5, 5) | \
|
||||
SG_OCTO_SET_FLAG(type6, 6) | SG_OCTO_SET_FLAG(type7, 7) | SG_OCTO_SET_FLAG(type8, 8))
|
||||
|
||||
ActorInit En_Syateki_Man_InitVars = {
|
||||
ACTOR_EN_SYATEKI_MAN,
|
||||
@ -201,7 +197,7 @@ void EnSyatekiMan_Init(Actor* thisx, PlayState* play) {
|
||||
this->shootingGameState = SG_GAME_STATE_NONE;
|
||||
this->talkWaitTimer = 15;
|
||||
this->flagsIndex = 0;
|
||||
this->perGameVar2.octorokHitType = SG_OCTO_HIT_TYPE_NONE;
|
||||
this->perGameVar2.lastHitOctorokType = SG_OCTO_TYPE_NONE;
|
||||
this->octorokFlags = 0;
|
||||
this->dekuScrubFlags = 0;
|
||||
this->guayFlags = 0;
|
||||
@ -270,7 +266,7 @@ void EnSyatekiMan_Swamp_Idle(EnSyatekiMan* this, PlayState* play) {
|
||||
u16 faceReactionTextId;
|
||||
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, EN_SYATEKI_MAN_ANIM_SWAMP_HEAD_SCRATCH_END);
|
||||
faceReactionTextId = Text_GetFaceReaction(play, 0x31);
|
||||
faceReactionTextId = Text_GetFaceReaction(play, FACE_REACTION_SET_SWAMP_SHOOTING_GALLERY_MAN);
|
||||
if (faceReactionTextId != 0) {
|
||||
Message_StartTextbox(play, faceReactionTextId, &this->actor);
|
||||
this->prevTextId = faceReactionTextId;
|
||||
@ -596,7 +592,7 @@ void EnSyatekiMan_Town_StartIntroTextbox(EnSyatekiMan* this, PlayState* play) {
|
||||
|
||||
void EnSyatekiMan_Town_Idle(EnSyatekiMan* this, PlayState* play) {
|
||||
if (Actor_ProcessTalkRequest(&this->actor, &play->state)) {
|
||||
u16 faceReactionTextId = Text_GetFaceReaction(play, 0x30);
|
||||
u16 faceReactionTextId = Text_GetFaceReaction(play, FACE_REACTION_SET_TOWN_SHOOTING_GALLERY_MAN);
|
||||
|
||||
if (faceReactionTextId != 0) {
|
||||
Message_StartTextbox(play, faceReactionTextId, &this->actor);
|
||||
@ -1227,7 +1223,7 @@ void EnSyatekiMan_Town_StartGame(EnSyatekiMan* this, PlayState* play) {
|
||||
this->score = 0;
|
||||
this->flagsIndex = 0;
|
||||
this->perGameVar1.octorokState = SG_OCTO_STATE_INITIAL;
|
||||
this->perGameVar2.octorokHitType = SG_OCTO_HIT_TYPE_NONE;
|
||||
this->perGameVar2.lastHitOctorokType = SG_OCTO_TYPE_NONE;
|
||||
sGameStartTimer = 30;
|
||||
Interface_StartTimer(TIMER_ID_MINIGAME_1, 75);
|
||||
this->actor.draw = NULL;
|
||||
@ -1240,62 +1236,67 @@ void EnSyatekiMan_Town_StartGame(EnSyatekiMan* this, PlayState* play) {
|
||||
* For each wave, these flags are used to control which Octoroks appear.
|
||||
*/
|
||||
static const s32 sOctorokFlagsPerWave[] = {
|
||||
OCTOROK_FLAG(COLOR_RED, ROW_CENTER, COLUMN_CENTER) | OCTOROK_FLAG(COLOR_RED, ROW_BACK, COLUMN_RIGHT) |
|
||||
OCTOROK_FLAG(COLOR_RED, ROW_BACK, COLUMN_LEFT),
|
||||
// clang-format off
|
||||
OCTO_FLAGS(SG_OCTO_TYPE_RED, SG_OCTO_TYPE_NONE, SG_OCTO_TYPE_RED,
|
||||
SG_OCTO_TYPE_NONE, SG_OCTO_TYPE_RED, SG_OCTO_TYPE_NONE,
|
||||
SG_OCTO_TYPE_NONE, SG_OCTO_TYPE_NONE, SG_OCTO_TYPE_NONE),
|
||||
|
||||
OCTOROK_FLAG(COLOR_RED, ROW_CENTER, COLUMN_RIGHT) | OCTOROK_FLAG(COLOR_BLUE, ROW_CENTER, COLUMN_CENTER) |
|
||||
OCTOROK_FLAG(COLOR_RED, ROW_CENTER, COLUMN_LEFT) | OCTOROK_FLAG(COLOR_RED, ROW_BACK, COLUMN_RIGHT),
|
||||
OCTO_FLAGS(SG_OCTO_TYPE_NONE, SG_OCTO_TYPE_NONE, SG_OCTO_TYPE_RED,
|
||||
SG_OCTO_TYPE_RED, SG_OCTO_TYPE_BLUE, SG_OCTO_TYPE_RED,
|
||||
SG_OCTO_TYPE_NONE, SG_OCTO_TYPE_NONE, SG_OCTO_TYPE_NONE),
|
||||
|
||||
OCTOROK_FLAG(COLOR_RED, ROW_FRONT, COLUMN_RIGHT) | OCTOROK_FLAG(COLOR_BLUE, ROW_BACK, COLUMN_RIGHT) |
|
||||
OCTOROK_FLAG(COLOR_RED, ROW_BACK, COLUMN_CENTER) | OCTOROK_FLAG(COLOR_RED, ROW_BACK, COLUMN_LEFT),
|
||||
OCTO_FLAGS(SG_OCTO_TYPE_RED, SG_OCTO_TYPE_RED, SG_OCTO_TYPE_BLUE,
|
||||
SG_OCTO_TYPE_NONE, SG_OCTO_TYPE_NONE, SG_OCTO_TYPE_NONE,
|
||||
SG_OCTO_TYPE_NONE, SG_OCTO_TYPE_NONE, SG_OCTO_TYPE_RED),
|
||||
|
||||
OCTOROK_FLAG(COLOR_RED, ROW_FRONT, COLUMN_RIGHT) | OCTOROK_FLAG(COLOR_RED, ROW_FRONT, COLUMN_LEFT) |
|
||||
OCTOROK_FLAG(COLOR_RED, ROW_BACK, COLUMN_RIGHT) | OCTOROK_FLAG(COLOR_RED, ROW_BACK, COLUMN_LEFT),
|
||||
OCTO_FLAGS(SG_OCTO_TYPE_RED, SG_OCTO_TYPE_NONE, SG_OCTO_TYPE_RED,
|
||||
SG_OCTO_TYPE_NONE, SG_OCTO_TYPE_NONE, SG_OCTO_TYPE_NONE,
|
||||
SG_OCTO_TYPE_RED, SG_OCTO_TYPE_NONE, SG_OCTO_TYPE_RED),
|
||||
|
||||
OCTOROK_FLAG(COLOR_BLUE, ROW_CENTER, COLUMN_RIGHT) | OCTOROK_FLAG(COLOR_RED, ROW_CENTER, COLUMN_CENTER) |
|
||||
OCTOROK_FLAG(COLOR_BLUE, ROW_CENTER, COLUMN_LEFT) | OCTOROK_FLAG(COLOR_RED, ROW_BACK, COLUMN_CENTER),
|
||||
OCTO_FLAGS(SG_OCTO_TYPE_NONE, SG_OCTO_TYPE_RED, SG_OCTO_TYPE_NONE,
|
||||
SG_OCTO_TYPE_BLUE, SG_OCTO_TYPE_RED, SG_OCTO_TYPE_BLUE,
|
||||
SG_OCTO_TYPE_NONE, SG_OCTO_TYPE_NONE, SG_OCTO_TYPE_NONE),
|
||||
|
||||
OCTOROK_FLAG(COLOR_RED, ROW_FRONT, COLUMN_CENTER) | OCTOROK_FLAG(COLOR_RED, ROW_CENTER, COLUMN_LEFT) |
|
||||
OCTOROK_FLAG(COLOR_RED, ROW_BACK, COLUMN_RIGHT),
|
||||
OCTO_FLAGS(SG_OCTO_TYPE_NONE, SG_OCTO_TYPE_NONE, SG_OCTO_TYPE_RED,
|
||||
SG_OCTO_TYPE_RED, SG_OCTO_TYPE_NONE, SG_OCTO_TYPE_NONE,
|
||||
SG_OCTO_TYPE_NONE, SG_OCTO_TYPE_RED, SG_OCTO_TYPE_NONE),
|
||||
|
||||
OCTOROK_FLAG(COLOR_RED, ROW_FRONT, COLUMN_RIGHT) | OCTOROK_FLAG(COLOR_BLUE, ROW_CENTER, COLUMN_CENTER) |
|
||||
OCTOROK_FLAG(COLOR_RED, ROW_BACK, COLUMN_RIGHT) | OCTOROK_FLAG(COLOR_RED, ROW_BACK, COLUMN_LEFT),
|
||||
OCTO_FLAGS(SG_OCTO_TYPE_RED, SG_OCTO_TYPE_NONE, SG_OCTO_TYPE_RED,
|
||||
SG_OCTO_TYPE_NONE, SG_OCTO_TYPE_BLUE, SG_OCTO_TYPE_NONE,
|
||||
SG_OCTO_TYPE_NONE, SG_OCTO_TYPE_NONE, SG_OCTO_TYPE_RED),
|
||||
|
||||
OCTOROK_FLAG(COLOR_BLUE, ROW_FRONT, COLUMN_RIGHT) | OCTOROK_FLAG(COLOR_BLUE, ROW_FRONT, COLUMN_LEFT) |
|
||||
OCTOROK_FLAG(COLOR_RED, ROW_BACK, COLUMN_RIGHT) | OCTOROK_FLAG(COLOR_RED, ROW_BACK, COLUMN_CENTER) |
|
||||
OCTOROK_FLAG(COLOR_RED, ROW_BACK, COLUMN_LEFT),
|
||||
OCTO_FLAGS(SG_OCTO_TYPE_RED, SG_OCTO_TYPE_RED, SG_OCTO_TYPE_RED,
|
||||
SG_OCTO_TYPE_NONE, SG_OCTO_TYPE_NONE, SG_OCTO_TYPE_NONE,
|
||||
SG_OCTO_TYPE_BLUE, SG_OCTO_TYPE_NONE, SG_OCTO_TYPE_BLUE),
|
||||
|
||||
OCTOROK_FLAG(COLOR_BLUE, ROW_FRONT, COLUMN_RIGHT) | OCTOROK_FLAG(COLOR_RED, ROW_FRONT, COLUMN_CENTER) |
|
||||
OCTOROK_FLAG(COLOR_BLUE, ROW_FRONT, COLUMN_LEFT) | OCTOROK_FLAG(COLOR_BLUE, ROW_CENTER, COLUMN_RIGHT) |
|
||||
OCTOROK_FLAG(COLOR_RED, ROW_CENTER, COLUMN_CENTER) | OCTOROK_FLAG(COLOR_BLUE, ROW_CENTER, COLUMN_LEFT) |
|
||||
OCTOROK_FLAG(COLOR_RED, ROW_BACK, COLUMN_CENTER),
|
||||
OCTO_FLAGS(SG_OCTO_TYPE_NONE, SG_OCTO_TYPE_RED, SG_OCTO_TYPE_NONE,
|
||||
SG_OCTO_TYPE_BLUE, SG_OCTO_TYPE_RED, SG_OCTO_TYPE_BLUE,
|
||||
SG_OCTO_TYPE_BLUE, SG_OCTO_TYPE_RED, SG_OCTO_TYPE_BLUE),
|
||||
|
||||
OCTOROK_FLAG(COLOR_RED, ROW_FRONT, COLUMN_RIGHT) | OCTOROK_FLAG(COLOR_BLUE, ROW_FRONT, COLUMN_LEFT) |
|
||||
OCTOROK_FLAG(COLOR_BLUE, ROW_CENTER, COLUMN_RIGHT) | OCTOROK_FLAG(COLOR_RED, ROW_CENTER, COLUMN_LEFT) |
|
||||
OCTOROK_FLAG(COLOR_RED, ROW_BACK, COLUMN_RIGHT) | OCTOROK_FLAG(COLOR_BLUE, ROW_BACK, COLUMN_LEFT),
|
||||
OCTO_FLAGS(SG_OCTO_TYPE_BLUE, SG_OCTO_TYPE_NONE, SG_OCTO_TYPE_RED,
|
||||
SG_OCTO_TYPE_RED, SG_OCTO_TYPE_NONE, SG_OCTO_TYPE_BLUE,
|
||||
SG_OCTO_TYPE_BLUE, SG_OCTO_TYPE_NONE, SG_OCTO_TYPE_RED),
|
||||
|
||||
OCTOROK_FLAG(COLOR_RED, ROW_FRONT, COLUMN_RIGHT) | OCTOROK_FLAG(COLOR_RED, ROW_FRONT, COLUMN_LEFT) |
|
||||
OCTOROK_FLAG(COLOR_BLUE, ROW_CENTER, COLUMN_RIGHT) | OCTOROK_FLAG(COLOR_RED, ROW_CENTER, COLUMN_CENTER) |
|
||||
OCTOROK_FLAG(COLOR_BLUE, ROW_CENTER, COLUMN_LEFT) | OCTOROK_FLAG(COLOR_RED, ROW_BACK, COLUMN_RIGHT) |
|
||||
OCTOROK_FLAG(COLOR_BLUE, ROW_BACK, COLUMN_CENTER) | OCTOROK_FLAG(COLOR_RED, ROW_BACK, COLUMN_LEFT),
|
||||
OCTO_FLAGS(SG_OCTO_TYPE_RED, SG_OCTO_TYPE_BLUE, SG_OCTO_TYPE_RED,
|
||||
SG_OCTO_TYPE_BLUE, SG_OCTO_TYPE_RED, SG_OCTO_TYPE_BLUE,
|
||||
SG_OCTO_TYPE_RED, SG_OCTO_TYPE_NONE, SG_OCTO_TYPE_RED),
|
||||
|
||||
OCTOROK_FLAG(COLOR_BLUE, ROW_FRONT, COLUMN_RIGHT) | OCTOROK_FLAG(COLOR_BLUE, ROW_FRONT, COLUMN_LEFT) |
|
||||
OCTOROK_FLAG(COLOR_BLUE, ROW_CENTER, COLUMN_RIGHT) | OCTOROK_FLAG(COLOR_BLUE, ROW_CENTER, COLUMN_LEFT) |
|
||||
OCTOROK_FLAG(COLOR_RED, ROW_BACK, COLUMN_RIGHT) | OCTOROK_FLAG(COLOR_RED, ROW_BACK, COLUMN_CENTER) |
|
||||
OCTOROK_FLAG(COLOR_RED, ROW_BACK, COLUMN_LEFT),
|
||||
OCTO_FLAGS(SG_OCTO_TYPE_RED, SG_OCTO_TYPE_RED, SG_OCTO_TYPE_RED,
|
||||
SG_OCTO_TYPE_BLUE, SG_OCTO_TYPE_NONE, SG_OCTO_TYPE_BLUE,
|
||||
SG_OCTO_TYPE_BLUE, SG_OCTO_TYPE_NONE, SG_OCTO_TYPE_BLUE),
|
||||
|
||||
OCTOROK_FLAG(COLOR_RED, ROW_CENTER, COLUMN_RIGHT) | OCTOROK_FLAG(COLOR_RED, ROW_CENTER, COLUMN_CENTER) |
|
||||
OCTOROK_FLAG(COLOR_RED, ROW_CENTER, COLUMN_LEFT) | OCTOROK_FLAG(COLOR_BLUE, ROW_BACK, COLUMN_RIGHT) |
|
||||
OCTOROK_FLAG(COLOR_BLUE, ROW_BACK, COLUMN_CENTER) | OCTOROK_FLAG(COLOR_BLUE, ROW_BACK, COLUMN_LEFT),
|
||||
OCTO_FLAGS(SG_OCTO_TYPE_BLUE, SG_OCTO_TYPE_BLUE, SG_OCTO_TYPE_BLUE,
|
||||
SG_OCTO_TYPE_RED, SG_OCTO_TYPE_RED, SG_OCTO_TYPE_RED,
|
||||
SG_OCTO_TYPE_NONE, SG_OCTO_TYPE_NONE, SG_OCTO_TYPE_NONE),
|
||||
|
||||
OCTOROK_FLAG(COLOR_BLUE, ROW_FRONT, COLUMN_RIGHT) | OCTOROK_FLAG(COLOR_BLUE, ROW_FRONT, COLUMN_CENTER) |
|
||||
OCTOROK_FLAG(COLOR_BLUE, ROW_FRONT, COLUMN_LEFT) | OCTOROK_FLAG(COLOR_RED, ROW_CENTER, COLUMN_RIGHT) |
|
||||
OCTOROK_FLAG(COLOR_RED, ROW_CENTER, COLUMN_LEFT) | OCTOROK_FLAG(COLOR_RED, ROW_BACK, COLUMN_RIGHT) |
|
||||
OCTOROK_FLAG(COLOR_RED, ROW_BACK, COLUMN_LEFT),
|
||||
OCTO_FLAGS(SG_OCTO_TYPE_RED, SG_OCTO_TYPE_NONE, SG_OCTO_TYPE_RED,
|
||||
SG_OCTO_TYPE_RED, SG_OCTO_TYPE_NONE, SG_OCTO_TYPE_RED,
|
||||
SG_OCTO_TYPE_BLUE, SG_OCTO_TYPE_BLUE, SG_OCTO_TYPE_BLUE),
|
||||
|
||||
OCTOROK_FLAG(COLOR_RED, ROW_FRONT, COLUMN_CENTER) | OCTOROK_FLAG(COLOR_RED, ROW_CENTER, COLUMN_CENTER) |
|
||||
OCTOROK_FLAG(COLOR_RED, ROW_BACK, COLUMN_RIGHT) | OCTOROK_FLAG(COLOR_RED, ROW_BACK, COLUMN_CENTER) |
|
||||
OCTOROK_FLAG(COLOR_RED, ROW_BACK, COLUMN_LEFT),
|
||||
OCTO_FLAGS(SG_OCTO_TYPE_RED, SG_OCTO_TYPE_RED, SG_OCTO_TYPE_RED,
|
||||
SG_OCTO_TYPE_NONE, SG_OCTO_TYPE_RED, SG_OCTO_TYPE_NONE,
|
||||
SG_OCTO_TYPE_NONE, SG_OCTO_TYPE_RED, SG_OCTO_TYPE_NONE),
|
||||
// clang-format on
|
||||
};
|
||||
|
||||
void EnSyatekiMan_Town_RunGame(EnSyatekiMan* this, PlayState* play) {
|
||||
@ -1323,16 +1324,16 @@ void EnSyatekiMan_Town_RunGame(EnSyatekiMan* this, PlayState* play) {
|
||||
this->perGameVar1.octorokState = SG_OCTO_STATE_HIDING;
|
||||
}
|
||||
|
||||
if (this->perGameVar2.octorokHitType != SG_OCTO_HIT_TYPE_NONE) {
|
||||
if (this->perGameVar2.octorokHitType == SG_OCTO_HIT_TYPE_BLUE) {
|
||||
if (this->perGameVar2.lastHitOctorokType != SG_OCTO_TYPE_NONE) {
|
||||
if (this->perGameVar2.lastHitOctorokType == SG_OCTO_TYPE_BLUE) {
|
||||
gSaveContext.timerTimeLimits[TIMER_ID_MINIGAME_1] -= SECONDS_TO_TIMER_PRECISE(2, 50);
|
||||
sModFromLosingTime = (sModFromLosingTime + 25) % 50;
|
||||
}
|
||||
|
||||
this->perGameVar2.octorokHitType = SG_OCTO_HIT_TYPE_NONE;
|
||||
this->perGameVar2.lastHitOctorokType = SG_OCTO_TYPE_NONE;
|
||||
}
|
||||
|
||||
if (this->perGameVar1.octorokState == SG_OCTO_STATE_SPAWNING) {
|
||||
if (this->perGameVar1.octorokState == SG_OCTO_STATE_APPEARING) {
|
||||
this->perGameVar1.octorokState++;
|
||||
}
|
||||
|
||||
@ -1340,10 +1341,10 @@ void EnSyatekiMan_Town_RunGame(EnSyatekiMan* this, PlayState* play) {
|
||||
// that the player might have lost time from hitting Blue Octoroks, so we do something similar to
|
||||
// what was done with waveTimer above.
|
||||
if ((sModFromLosingTime == (timer % 50)) && (this->perGameVar1.octorokState >= SG_OCTO_STATE_INITIAL)) {
|
||||
if (this->flagsIndex < 15) {
|
||||
if (this->flagsIndex < ARRAY_COUNT(sOctorokFlagsPerWave)) {
|
||||
this->octorokFlags = sOctorokFlagsPerWave[this->flagsIndex++];
|
||||
Actor_PlaySfx(&this->actor, NA_SE_SY_FOUND);
|
||||
this->perGameVar1.octorokState = SG_OCTO_STATE_SPAWNING;
|
||||
this->perGameVar1.octorokState = SG_OCTO_STATE_APPEARING;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -22,18 +22,12 @@ typedef enum {
|
||||
} ShootingGalleryGameState;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ SG_OCTO_STATE_SPAWNING,
|
||||
/* 1 */ SG_OCTO_STATE_SPAWNED,
|
||||
/* 0 */ SG_OCTO_STATE_APPEARING,
|
||||
/* 1 */ SG_OCTO_STATE_APPEARED,
|
||||
/* 70 */ SG_OCTO_STATE_INITIAL = 70,
|
||||
/* 80 */ SG_OCTO_STATE_HIDING = 80
|
||||
} ShootingGalleryOctorokState;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ SG_OCTO_HIT_TYPE_NONE,
|
||||
/* 1 */ SG_OCTO_HIT_TYPE_RED,
|
||||
/* 2 */ SG_OCTO_HIT_TYPE_BLUE
|
||||
} ShootingGalleryoctorokHitType;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ SG_PATH_TYPE_CROW,
|
||||
/* 1 */ SG_PATH_TYPE_SCRUB_NORMAL,
|
||||
@ -62,7 +56,7 @@ typedef struct EnSyatekiMan {
|
||||
} perGameVar1;
|
||||
/* 0x26E */ union {
|
||||
s16 bonusDekuScrubHitCounter;
|
||||
s16 octorokHitType;
|
||||
s16 lastHitOctorokType;
|
||||
} perGameVar2;
|
||||
/* 0x270 */ s16 talkWaitTimer;
|
||||
/* 0x272 */ s16 dekuScrubFlags;
|
||||
|
@ -16,17 +16,17 @@ void EnSyatekiOkuta_Destroy(Actor* thisx, PlayState* play);
|
||||
void EnSyatekiOkuta_Update(Actor* thisx, PlayState* play);
|
||||
void EnSyatekiOkuta_Draw(Actor* thisx, PlayState* play);
|
||||
|
||||
void func_80A36260(EnSyatekiOkuta* this);
|
||||
void func_80A362A8(EnSyatekiOkuta* this, PlayState* play);
|
||||
void func_80A362F8(EnSyatekiOkuta* this);
|
||||
void func_80A36350(EnSyatekiOkuta* this, PlayState* play);
|
||||
void func_80A363B4(EnSyatekiOkuta* this, PlayState* play);
|
||||
void func_80A36444(EnSyatekiOkuta* this);
|
||||
void func_80A36488(EnSyatekiOkuta* this, PlayState* play);
|
||||
void func_80A364C0(EnSyatekiOkuta* this);
|
||||
void func_80A36504(EnSyatekiOkuta* this, PlayState* play);
|
||||
void func_80A365EC(EnSyatekiOkuta* this, PlayState* play);
|
||||
void func_80A36CB0(EnSyatekiOkuta* this);
|
||||
void EnSyatekiOkuta_SetupAttachToShootingGalleryMan(EnSyatekiOkuta* this);
|
||||
void EnSyatekiOkuta_AttachToShootingGalleryMan(EnSyatekiOkuta* this, PlayState* play);
|
||||
void EnSyatekiOkuta_SetupDoNothing(EnSyatekiOkuta* this);
|
||||
void EnSyatekiOkuta_DoNothing(EnSyatekiOkuta* this, PlayState* play);
|
||||
void EnSyatekiOkuta_Appear(EnSyatekiOkuta* this, PlayState* play);
|
||||
void EnSyatekiOkuta_SetupFloat(EnSyatekiOkuta* this);
|
||||
void EnSyatekiOkuta_Float(EnSyatekiOkuta* this, PlayState* play);
|
||||
void EnSyatekiOkuta_SetupHide(EnSyatekiOkuta* this);
|
||||
void EnSyatekiOkuta_Hide(EnSyatekiOkuta* this, PlayState* play);
|
||||
void EnSyatekiOkuta_Die(EnSyatekiOkuta* this, PlayState* play);
|
||||
void EnSyatekiOkuta_UpdateHeadScale(EnSyatekiOkuta* this);
|
||||
|
||||
ActorInit En_Syateki_Okuta_InitVars = {
|
||||
ACTOR_EN_SYATEKI_OKUTA,
|
||||
@ -60,13 +60,23 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
{ 20, 40, -30, { 0, 0, 0 } },
|
||||
};
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ SG_OCTO_ANIM_SHOOT, // unused
|
||||
/* 1 */ SG_OCTO_ANIM_DIE,
|
||||
/* 2 */ SG_OCTO_ANIM_HIDE,
|
||||
/* 3 */ SG_OCTO_ANIM_FLOAT,
|
||||
/* 4 */ SG_OCTO_ANIM_APPEAR,
|
||||
/* 5 */ SG_OCTO_ANIM_HIT, // unused
|
||||
/* 6 */ SG_OCTO_ANIM_MAX
|
||||
} ShootingGalleryOctorokAnimation;
|
||||
|
||||
static AnimationInfo sAnimationInfo[] = {
|
||||
{ &gOctorokShootAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f },
|
||||
{ &gOctorokDieAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f },
|
||||
{ &gOctorokHideAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f },
|
||||
{ &gOctorokFloatAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -1.0f },
|
||||
{ &gOctorokAppearAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f },
|
||||
{ &gOctorokHitAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f },
|
||||
{ &gOctorokShootAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f }, // SG_OCTO_ANIM_SHOOT
|
||||
{ &gOctorokDieAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f }, // SG_OCTO_ANIM_DIE
|
||||
{ &gOctorokHideAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f }, // SG_OCTO_ANIM_HIDE
|
||||
{ &gOctorokFloatAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -1.0f }, // SG_OCTO_ANIM_FLOAT
|
||||
{ &gOctorokAppearAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f }, // SG_OCTO_ANIM_APPEAR
|
||||
{ &gOctorokHitAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f }, // SG_OCTO_ANIM_HIT
|
||||
};
|
||||
|
||||
#include "assets/overlays/ovl_En_Syateki_Okuta/ovl_En_Syateki_Okuta.c"
|
||||
@ -76,16 +86,6 @@ static InitChainEntry sInitChain[] = {
|
||||
ICHAIN_F32(targetArrowOffset, 6500, ICHAIN_STOP),
|
||||
};
|
||||
|
||||
Color_RGBA8 D_80A37B90 = { 255, 255, 255, 255 };
|
||||
|
||||
Color_RGBA8 D_80A37B94 = { 150, 150, 150, 255 };
|
||||
|
||||
Vec3f D_80A37B98 = { 0.0f, -0.5, 0.0f };
|
||||
|
||||
Color_RGBA8 D_80A37BA4 = { 255, 255, 255, 255 };
|
||||
|
||||
Color_RGBA8 D_80A37BA8 = { 150, 150, 150, 0 };
|
||||
|
||||
void EnSyatekiOkuta_Init(Actor* thisx, PlayState* play) {
|
||||
s32 pad;
|
||||
EnSyatekiOkuta* this = THIS;
|
||||
@ -110,9 +110,9 @@ void EnSyatekiOkuta_Init(Actor* thisx, PlayState* play) {
|
||||
this->actor.world.pos.y = this->actor.home.pos.y = ySurface;
|
||||
}
|
||||
|
||||
this->unk_2A4 = 0;
|
||||
this->unk_2AA = 0;
|
||||
func_80A36260(this);
|
||||
this->deathTimer = 0;
|
||||
this->hitResultAlpha = 0;
|
||||
EnSyatekiOkuta_SetupAttachToShootingGalleryMan(this);
|
||||
}
|
||||
|
||||
void EnSyatekiOkuta_Destroy(Actor* thisx, PlayState* play) {
|
||||
@ -121,30 +121,45 @@ void EnSyatekiOkuta_Destroy(Actor* thisx, PlayState* play) {
|
||||
Collider_DestroyCylinder(play, &this->collider);
|
||||
}
|
||||
|
||||
void func_80A36148(Vec3f* pos, Vec3f* velocity, s16 scaleStep, PlayState* play) {
|
||||
func_800B0DE0(play, pos, velocity, &gZeroVec3f, &D_80A37B90, &D_80A37B94, 400, scaleStep);
|
||||
/**
|
||||
* Spawns the puff of smoke that appears when the Octorok disappears when it dies.
|
||||
*/
|
||||
void EnSyatekiOkuta_SpawnDust(Vec3f* pos, Vec3f* velocity, s16 scaleStep, PlayState* play) {
|
||||
static Color_RGBA8 sDustPrimColor = { 255, 255, 255, 255 };
|
||||
static Color_RGBA8 sDustEnvColor = { 150, 150, 150, 255 };
|
||||
|
||||
func_800B0DE0(play, pos, velocity, &gZeroVec3f, &sDustPrimColor, &sDustEnvColor, 400, scaleStep);
|
||||
}
|
||||
|
||||
void func_80A361B0(EnSyatekiOkuta* this, PlayState* play) {
|
||||
/**
|
||||
* Spawns the splash that appears when the Octorok appears from underwater, hides underwater, or dies.
|
||||
*/
|
||||
void EnSyatekiOkuta_SpawnSplash(EnSyatekiOkuta* this, PlayState* play) {
|
||||
EffectSsGSplash_Spawn(play, &this->actor.home.pos, NULL, NULL, 0, 800);
|
||||
}
|
||||
|
||||
s32 func_80A361F4(EnSyatekiOkuta* this) {
|
||||
s32 temp_a0;
|
||||
s32 temp_a1;
|
||||
s32 temp_v1;
|
||||
/*
|
||||
* Returns true if this Octorok is hidden (in other words, if it's in the center
|
||||
* column and has another Octorok in front of it), false otherwise.
|
||||
*/
|
||||
s32 EnSyatekiOkuta_IsHiddenByAnotherOctorok(EnSyatekiOkuta* this) {
|
||||
EnSyatekiMan* syatekiMan = (EnSyatekiMan*)this->actor.parent;
|
||||
s32 index = SG_OCTO_GET_INDEX(&this->actor);
|
||||
|
||||
temp_v1 = EN_SYATEKI_OKUTA_GET_F(&this->actor);
|
||||
if ((temp_v1 == 1) || (temp_v1 == 4)) {
|
||||
temp_a0 = syatekiMan->octorokFlags;
|
||||
temp_a1 = (temp_v1 * 2) + 6;
|
||||
|
||||
if ((temp_a0 >> temp_a1) & 3) {
|
||||
// Only the Octoroks in the center column can be obscured by another Octorok. The Octoroks in the
|
||||
// left and right columns are always visible, since the player looks at them from an angle.
|
||||
// Additionally, the Octorok in the front row is always visible, even if it's in the center column.
|
||||
if ((index == SG_OCTO_INDEX_FOR_POS(SG_OCTO_ROW_BACK, SG_OCTO_COL_CENTER)) ||
|
||||
(index == SG_OCTO_INDEX_FOR_POS(SG_OCTO_ROW_CENTER, SG_OCTO_COL_CENTER))) {
|
||||
// Checks to see if this Octorok is hidden by an Octorok immediately in front of it.
|
||||
if (SG_OCTO_GET_TYPE(syatekiMan->octorokFlags, SG_OCTO_INDEX_DIRECTLY_IN_FRONT(index)) != SG_OCTO_TYPE_NONE) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if ((temp_a1 == 8) && ((temp_a0 >> 0xE) & 3)) {
|
||||
// If this Octorok is in the back row, it can also be hidden by an Octorok in the front row.
|
||||
if ((index == SG_OCTO_INDEX_FOR_POS(SG_OCTO_ROW_BACK, SG_OCTO_COL_CENTER)) &&
|
||||
(SG_OCTO_GET_TYPE(syatekiMan->octorokFlags, SG_OCTO_INDEX_FOR_POS(SG_OCTO_ROW_FRONT, SG_OCTO_COL_CENTER)) !=
|
||||
SG_OCTO_TYPE_NONE)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -152,142 +167,177 @@ s32 func_80A361F4(EnSyatekiOkuta* this) {
|
||||
return false;
|
||||
}
|
||||
|
||||
void func_80A36260(EnSyatekiOkuta* this) {
|
||||
void EnSyatekiOkuta_SetupAttachToShootingGalleryMan(EnSyatekiOkuta* this) {
|
||||
Animation_PlayOnceSetSpeed(&this->skelAnime, &gOctorokAppearAnim, 0.0f);
|
||||
this->actor.draw = NULL;
|
||||
this->actionFunc = func_80A362A8;
|
||||
this->actionFunc = EnSyatekiOkuta_AttachToShootingGalleryMan;
|
||||
}
|
||||
|
||||
void func_80A362A8(EnSyatekiOkuta* this, PlayState* play) {
|
||||
/**
|
||||
* Checks every NPC actor in the scene to find the Shooting Gallery Man. Once it finds him, this will
|
||||
* make him the parent to the Octorok. This is required because the Octoroks are normally spawned as
|
||||
* part of the Town Shooting Gallery scene, so they don't have anything that links them to the Shooting
|
||||
* Gallery Man, and the Octoroks need a pointer to him in order to access his Octorok flags. If this
|
||||
* actor is spawned in a scene *without* the Shooting Gallery Man, its action function will never change
|
||||
* from this function, and the Octorok will effectively do nothing.
|
||||
*/
|
||||
void EnSyatekiOkuta_AttachToShootingGalleryMan(EnSyatekiOkuta* this, PlayState* play) {
|
||||
Actor* actorIt = play->actorCtx.actorLists[ACTORCAT_NPC].first;
|
||||
|
||||
while (actorIt != NULL) {
|
||||
if (actorIt->id == ACTOR_EN_SYATEKI_MAN) {
|
||||
this->actor.parent = actorIt;
|
||||
func_80A362F8(this);
|
||||
EnSyatekiOkuta_SetupDoNothing(this);
|
||||
break;
|
||||
} else {
|
||||
actorIt = actorIt->next;
|
||||
}
|
||||
|
||||
actorIt = actorIt->next;
|
||||
}
|
||||
}
|
||||
|
||||
void func_80A362F8(EnSyatekiOkuta* this) {
|
||||
/**
|
||||
* Stops the Octorok's animation, prevents it from drawing, and sets its action function to do nothing.
|
||||
* The intention here is to stay in this action function doing nothing until the Shooting Gallery Man
|
||||
* tells it to appear in EnSyatekiOkuta_CheckForSignal, at which point the action function will be changed.
|
||||
*/
|
||||
void EnSyatekiOkuta_SetupDoNothing(EnSyatekiOkuta* this) {
|
||||
Animation_PlayOnceSetSpeed(&this->skelAnime, &gOctorokAppearAnim, 0.0f);
|
||||
this->actor.draw = NULL;
|
||||
Actor_SetScale(&this->actor, 0.01f);
|
||||
this->actionFunc = func_80A36350;
|
||||
this->actionFunc = EnSyatekiOkuta_DoNothing;
|
||||
}
|
||||
|
||||
void func_80A36350(EnSyatekiOkuta* this, PlayState* play) {
|
||||
void EnSyatekiOkuta_DoNothing(EnSyatekiOkuta* this, PlayState* play) {
|
||||
}
|
||||
|
||||
void func_80A36360(EnSyatekiOkuta* this) {
|
||||
void EnSyatekiOkuta_SetupAppear(EnSyatekiOkuta* this) {
|
||||
this->actor.draw = EnSyatekiOkuta_Draw;
|
||||
this->unk_2AA = 0;
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, 4);
|
||||
this->actionFunc = func_80A363B4;
|
||||
this->hitResultAlpha = 0;
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, SG_OCTO_ANIM_APPEAR);
|
||||
this->actionFunc = EnSyatekiOkuta_Appear;
|
||||
}
|
||||
|
||||
void func_80A363B4(EnSyatekiOkuta* this, PlayState* play) {
|
||||
/**
|
||||
* Jumps out of the water and starts floating.
|
||||
*/
|
||||
void EnSyatekiOkuta_Appear(EnSyatekiOkuta* this, PlayState* play) {
|
||||
if (Animation_OnFrame(&this->skelAnime, 2.0f) || Animation_OnFrame(&this->skelAnime, 15.0f)) {
|
||||
if (func_80A361F4(this)) {
|
||||
if (EnSyatekiOkuta_IsHiddenByAnotherOctorok(this)) {
|
||||
return;
|
||||
}
|
||||
func_80A361B0(this, play);
|
||||
|
||||
EnSyatekiOkuta_SpawnSplash(this, play);
|
||||
Actor_PlaySfx(&this->actor, NA_SE_EN_OCTAROCK_JUMP);
|
||||
}
|
||||
|
||||
if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) {
|
||||
func_80A36444(this);
|
||||
EnSyatekiOkuta_SetupFloat(this);
|
||||
}
|
||||
}
|
||||
|
||||
void func_80A36444(EnSyatekiOkuta* this) {
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, 3);
|
||||
this->actionFunc = func_80A36488;
|
||||
void EnSyatekiOkuta_SetupFloat(EnSyatekiOkuta* this) {
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, SG_OCTO_ANIM_FLOAT);
|
||||
this->actionFunc = EnSyatekiOkuta_Float;
|
||||
}
|
||||
|
||||
void func_80A36488(EnSyatekiOkuta* this, PlayState* play) {
|
||||
/**
|
||||
* Floats in place until the Shooting Gallery Man tells it to hide.
|
||||
*/
|
||||
void EnSyatekiOkuta_Float(EnSyatekiOkuta* this, PlayState* play) {
|
||||
EnSyatekiMan* syatekiMan = (EnSyatekiMan*)this->actor.parent;
|
||||
|
||||
// In practice, if the Octorok is floating, then the octorokState is either SG_OCTO_STATE_APPEARED or
|
||||
// SG_OCTO_STATE_HIDING. Only the latter state is greater than SG_OCTO_STATE_INITIAL, so that's what
|
||||
// this check is looking for.
|
||||
if (syatekiMan->perGameVar1.octorokState >= SG_OCTO_STATE_INITIAL) {
|
||||
func_80A364C0(this);
|
||||
EnSyatekiOkuta_SetupHide(this);
|
||||
}
|
||||
}
|
||||
|
||||
void func_80A364C0(EnSyatekiOkuta* this) {
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, 2);
|
||||
this->actionFunc = func_80A36504;
|
||||
void EnSyatekiOkuta_SetupHide(EnSyatekiOkuta* this) {
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, SG_OCTO_ANIM_HIDE);
|
||||
this->actionFunc = EnSyatekiOkuta_Hide;
|
||||
}
|
||||
|
||||
void func_80A36504(EnSyatekiOkuta* this, PlayState* play) {
|
||||
/**
|
||||
* Retreats underwater, then makes the Octorok do nothing until the Shooting Gallery Man tells it to appear again.
|
||||
*/
|
||||
void EnSyatekiOkuta_Hide(EnSyatekiOkuta* this, PlayState* play) {
|
||||
if (Animation_OnFrame(&this->skelAnime, 4.0f)) {
|
||||
func_80A361B0(this, play);
|
||||
EnSyatekiOkuta_SpawnSplash(this, play);
|
||||
Actor_PlaySfx(&this->actor, NA_SE_EN_DAIOCTA_LAND);
|
||||
} else if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) {
|
||||
func_80A362F8(this);
|
||||
EnSyatekiOkuta_SetupDoNothing(this);
|
||||
}
|
||||
}
|
||||
|
||||
void func_80A3657C(EnSyatekiOkuta* this) {
|
||||
this->unk_2A4 = 0;
|
||||
this->unk_2AA = 300;
|
||||
if (this->unk_2A6 == 1) {
|
||||
void EnSyatekiOkuta_SetupDie(EnSyatekiOkuta* this) {
|
||||
this->deathTimer = 0;
|
||||
this->hitResultAlpha = 300;
|
||||
if (this->type == SG_OCTO_TYPE_RED) {
|
||||
Actor_PlaySfx(&this->actor, NA_SE_EN_OCTAROCK_DEAD1);
|
||||
}
|
||||
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, 1);
|
||||
this->actionFunc = func_80A365EC;
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, SG_OCTO_ANIM_DIE);
|
||||
this->actionFunc = EnSyatekiOkuta_Die;
|
||||
}
|
||||
|
||||
void func_80A365EC(EnSyatekiOkuta* this, PlayState* play) {
|
||||
Vec3f sp84;
|
||||
Vec3f sp78;
|
||||
/**
|
||||
* Plays the death animation and slowly shrinks the Octorok. Also spawns various bubble and dust
|
||||
* effects as it dies. Once the Octorok is finished with its death animation, this function will
|
||||
* make it do nothing until the Shooting Gallery Man tells it to appear again.
|
||||
*/
|
||||
void EnSyatekiOkuta_Die(EnSyatekiOkuta* this, PlayState* play) {
|
||||
static Vec3f sBubbleAccel = { 0.0f, -0.5, 0.0f };
|
||||
static Color_RGBA8 sBubblePrimColor = { 255, 255, 255, 255 };
|
||||
static Color_RGBA8 sBubbleEnvColor = { 150, 150, 150, 0 };
|
||||
Vec3f velocity;
|
||||
Vec3f pos;
|
||||
s32 pad;
|
||||
s32 i;
|
||||
|
||||
if (this->unk_2AA > 0) {
|
||||
this->unk_2AA -= 15;
|
||||
if (this->hitResultAlpha > 0) {
|
||||
this->hitResultAlpha -= 15;
|
||||
}
|
||||
|
||||
if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) {
|
||||
if (this->unk_2A4 == 0) {
|
||||
sp78.x = this->actor.world.pos.x;
|
||||
sp78.y = this->actor.world.pos.y + 40.0f;
|
||||
sp78.z = this->actor.world.pos.z;
|
||||
sp84.x = 0.0f;
|
||||
sp84.y = -0.5f;
|
||||
sp84.z = 0.0f;
|
||||
func_80A36148(&sp78, &sp84, -20, play);
|
||||
if (this->deathTimer == 0) {
|
||||
pos.x = this->actor.world.pos.x;
|
||||
pos.y = this->actor.world.pos.y + 40.0f;
|
||||
pos.z = this->actor.world.pos.z;
|
||||
velocity.x = 0.0f;
|
||||
velocity.y = -0.5f;
|
||||
velocity.z = 0.0f;
|
||||
EnSyatekiOkuta_SpawnDust(&pos, &velocity, -20, play);
|
||||
Actor_PlaySfx(&this->actor, NA_SE_EN_OCTAROCK_DEAD2);
|
||||
}
|
||||
|
||||
this->unk_2A4++;
|
||||
this->deathTimer++;
|
||||
}
|
||||
|
||||
if (Animation_OnFrame(&this->skelAnime, 15.0f)) {
|
||||
func_80A361B0(this, play);
|
||||
EnSyatekiOkuta_SpawnSplash(this, play);
|
||||
}
|
||||
|
||||
if (this->unk_2A4 < 3) {
|
||||
Actor_SetScale(&this->actor, ((this->unk_2A4 * 0.25f) + 1.0f) * 0.01f);
|
||||
} else if (this->unk_2A4 < 6) {
|
||||
Actor_SetScale(&this->actor, (1.5f - ((this->unk_2A4 - 2) * 0.2333f)) * 0.01f);
|
||||
} else if (this->unk_2A4 < 11) {
|
||||
Actor_SetScale(&this->actor, (((this->unk_2A4 - 5) * 0.04f) + 0.8f) * 0.01f);
|
||||
if (this->deathTimer < 3) {
|
||||
Actor_SetScale(&this->actor, ((this->deathTimer * 0.25f) + 1.0f) * 0.01f);
|
||||
} else if (this->deathTimer < 6) {
|
||||
Actor_SetScale(&this->actor, (1.5f - ((this->deathTimer - 2) * 0.2333f)) * 0.01f);
|
||||
} else if (this->deathTimer < 11) {
|
||||
Actor_SetScale(&this->actor, (((this->deathTimer - 5) * 0.04f) + 0.8f) * 0.01f);
|
||||
} else {
|
||||
if (Math_StepToF(&this->actor.scale.x, 0.0f, 0.002f)) {
|
||||
SoundSource_PlaySfxAtFixedWorldPos(play, &this->actor.world.pos, 30, NA_SE_EN_COMMON_WATER_MID);
|
||||
for (i = 0; i < 10; i++) {
|
||||
sp84.x = (Rand_ZeroOne() - 0.5f) * 7.0f;
|
||||
sp84.y = Rand_ZeroOne() * 7.0f;
|
||||
sp84.z = (Rand_ZeroOne() - 0.5f) * 7.0f;
|
||||
EffectSsDtBubble_SpawnCustomColor(play, &this->actor.world.pos, &sp84, &D_80A37B98, &D_80A37BA4,
|
||||
&D_80A37BA8, Rand_S16Offset(100, 50), 25, false);
|
||||
velocity.x = (Rand_ZeroOne() - 0.5f) * 7.0f;
|
||||
velocity.y = Rand_ZeroOne() * 7.0f;
|
||||
velocity.z = (Rand_ZeroOne() - 0.5f) * 7.0f;
|
||||
EffectSsDtBubble_SpawnCustomColor(play, &this->actor.world.pos, &velocity, &sBubbleAccel,
|
||||
&sBubblePrimColor, &sBubbleEnvColor, Rand_S16Offset(100, 50), 25,
|
||||
false);
|
||||
}
|
||||
|
||||
func_80A362F8(this);
|
||||
EnSyatekiOkuta_SetupDoNothing(this);
|
||||
}
|
||||
|
||||
this->actor.scale.y = this->actor.scale.x;
|
||||
@ -295,13 +345,17 @@ void func_80A365EC(EnSyatekiOkuta* this, PlayState* play) {
|
||||
}
|
||||
}
|
||||
|
||||
void func_80A368E0(EnSyatekiOkuta* this, PlayState* play) {
|
||||
/**
|
||||
* Adjusts the collider's dimensions and position based on a few different factors, like the Octorok's
|
||||
* type, current scale and head scale, and current action.
|
||||
*/
|
||||
void EnSyatekiOkuta_UpdateCollision(EnSyatekiOkuta* this, PlayState* play) {
|
||||
this->collider.dim.height =
|
||||
(sCylinderInit.dim.height - this->collider.dim.yShift) * this->unk_1D8.y * this->actor.scale.y * 100.0f;
|
||||
(sCylinderInit.dim.height - this->collider.dim.yShift) * this->headScale.y * this->actor.scale.y * 100.0f;
|
||||
this->collider.dim.radius = sCylinderInit.dim.radius * this->actor.scale.x * 100.0f;
|
||||
|
||||
if (this->actionFunc == func_80A363B4) {
|
||||
if ((this->unk_2A6 == 2) && func_80A361F4(this)) {
|
||||
if (this->actionFunc == EnSyatekiOkuta_Appear) {
|
||||
if ((this->type == SG_OCTO_TYPE_BLUE) && EnSyatekiOkuta_IsHiddenByAnotherOctorok(this)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -310,7 +364,7 @@ void func_80A368E0(EnSyatekiOkuta* this, PlayState* play) {
|
||||
}
|
||||
}
|
||||
|
||||
if (this->unk_2A6 == 1) {
|
||||
if (this->type == SG_OCTO_TYPE_RED) {
|
||||
this->collider.dim.radius += 10;
|
||||
this->collider.dim.height += 15;
|
||||
}
|
||||
@ -322,8 +376,11 @@ void func_80A368E0(EnSyatekiOkuta* this, PlayState* play) {
|
||||
CollisionCheck_SetAC(play, &play->colChkCtx, &this->collider.base);
|
||||
}
|
||||
|
||||
s32 func_80A36A90(EnSyatekiOkuta* this, PlayState* play) {
|
||||
if ((this->actionFunc == func_80A365EC) || (this->actionFunc == func_80A36350)) {
|
||||
/**
|
||||
* Returns true if the Octorok has been hit, false otherwise.
|
||||
*/
|
||||
s32 EnSyatekiOkuta_CheckCollision(EnSyatekiOkuta* this, PlayState* play) {
|
||||
if ((this->actionFunc == EnSyatekiOkuta_Die) || (this->actionFunc == EnSyatekiOkuta_DoNothing)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -332,22 +389,28 @@ s32 func_80A36A90(EnSyatekiOkuta* this, PlayState* play) {
|
||||
return true;
|
||||
}
|
||||
|
||||
func_80A368E0(this, play);
|
||||
EnSyatekiOkuta_UpdateCollision(this, play);
|
||||
return false;
|
||||
}
|
||||
|
||||
void func_80A36AF8(EnSyatekiOkuta* this, PlayState* play) {
|
||||
/**
|
||||
* Checks to see if both the archery game and this Octorok are in the appropriate state to consider
|
||||
* appearing. If the conditions are right, then the Shooting Gallery Man's Octorok flags determine
|
||||
* what type this Octorok should be for the current wave; if the type is *not* SG_OCTO_TYPE_NONE,
|
||||
* then this Octorok will set itself to the appropriate type and get ready to jump out of the water.
|
||||
*/
|
||||
void EnSyatekiOkuta_CheckForSignal(EnSyatekiOkuta* this, PlayState* play) {
|
||||
EnSyatekiMan* syatekiMan = (EnSyatekiMan*)this->actor.parent;
|
||||
s16 temp_v1_2;
|
||||
s16 type;
|
||||
|
||||
if ((this->actionFunc != func_80A36488) && (this->actionFunc != func_80A363B4) &&
|
||||
if ((this->actionFunc != EnSyatekiOkuta_Float) && (this->actionFunc != EnSyatekiOkuta_Appear) &&
|
||||
(syatekiMan->shootingGameState == SG_GAME_STATE_RUNNING) &&
|
||||
(syatekiMan->perGameVar1.octorokState == SG_OCTO_STATE_SPAWNING)) {
|
||||
temp_v1_2 = (syatekiMan->octorokFlags >> (EN_SYATEKI_OKUTA_GET_F(&this->actor) * 2)) & 3;
|
||||
if (temp_v1_2 > 0) {
|
||||
(syatekiMan->perGameVar1.octorokState == SG_OCTO_STATE_APPEARING)) {
|
||||
type = SG_OCTO_GET_TYPE(syatekiMan->octorokFlags, SG_OCTO_GET_INDEX(&this->actor));
|
||||
if (type > SG_OCTO_TYPE_NONE) {
|
||||
Actor_SetScale(&this->actor, 0.01f);
|
||||
this->unk_2A6 = temp_v1_2;
|
||||
func_80A36360(this);
|
||||
this->type = type;
|
||||
EnSyatekiOkuta_SetupAppear(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -359,101 +422,108 @@ void EnSyatekiOkuta_Update(Actor* thisx, PlayState* play) {
|
||||
|
||||
this->actionFunc(this, play);
|
||||
|
||||
if (this->actionFunc != func_80A36350) {
|
||||
if (this->actionFunc != EnSyatekiOkuta_DoNothing) {
|
||||
SkelAnime_Update(&this->skelAnime);
|
||||
}
|
||||
|
||||
func_80A36AF8(this, play);
|
||||
EnSyatekiOkuta_CheckForSignal(this, play);
|
||||
|
||||
if (func_80A36A90(this, play)) {
|
||||
if (EnSyatekiOkuta_CheckCollision(this, play)) {
|
||||
syatekiMan = (EnSyatekiMan*)this->actor.parent;
|
||||
if (this->unk_2A6 == 1) {
|
||||
if (this->type == SG_OCTO_TYPE_RED) {
|
||||
Actor_PlaySfx(&this->actor, NA_SE_SY_TRE_BOX_APPEAR);
|
||||
play->interfaceCtx.minigamePoints++;
|
||||
syatekiMan->score++;
|
||||
syatekiMan->perGameVar2.octorokHitType = SG_OCTO_HIT_TYPE_RED;
|
||||
syatekiMan->perGameVar2.lastHitOctorokType = SG_OCTO_TYPE_RED;
|
||||
} else {
|
||||
Actor_PlaySfx(&this->actor, NA_SE_SY_ERROR);
|
||||
syatekiMan->perGameVar2.octorokHitType = SG_OCTO_HIT_TYPE_BLUE;
|
||||
syatekiMan->perGameVar2.lastHitOctorokType = SG_OCTO_TYPE_BLUE;
|
||||
}
|
||||
|
||||
func_80A3657C(this);
|
||||
EnSyatekiOkuta_SetupDie(this);
|
||||
} else {
|
||||
this->collider.base.acFlags &= ~AC_HIT;
|
||||
}
|
||||
|
||||
func_80A36CB0(this);
|
||||
EnSyatekiOkuta_UpdateHeadScale(this);
|
||||
}
|
||||
|
||||
void func_80A36CB0(EnSyatekiOkuta* this) {
|
||||
/**
|
||||
* Adjusts the scale of the Octorok's head based on their current action and their current animation frame.
|
||||
*/
|
||||
void EnSyatekiOkuta_UpdateHeadScale(EnSyatekiOkuta* this) {
|
||||
f32 curFrame = this->skelAnime.curFrame;
|
||||
|
||||
if (this->actionFunc == func_80A363B4) {
|
||||
if (this->actionFunc == EnSyatekiOkuta_Appear) {
|
||||
if (curFrame < 8.0f) {
|
||||
this->unk_1D8.x = this->unk_1D8.y = this->unk_1D8.z = 1.0f;
|
||||
this->headScale.x = this->headScale.y = this->headScale.z = 1.0f;
|
||||
} else if (curFrame < 10.0f) {
|
||||
this->unk_1D8.x = this->unk_1D8.z = 1.0f;
|
||||
this->unk_1D8.y = ((curFrame - 7.0f) * 0.4f) + 1.0f;
|
||||
this->headScale.x = this->headScale.z = 1.0f;
|
||||
this->headScale.y = ((curFrame - 7.0f) * 0.4f) + 1.0f;
|
||||
} else if (curFrame < 14.0f) {
|
||||
this->unk_1D8.x = this->unk_1D8.z = ((curFrame - 9.0f) * 0.075f) + 1.0f;
|
||||
this->unk_1D8.y = 1.8f - ((curFrame - 9.0f) * 0.25f);
|
||||
this->headScale.x = this->headScale.z = ((curFrame - 9.0f) * 0.075f) + 1.0f;
|
||||
this->headScale.y = 1.8f - ((curFrame - 9.0f) * 0.25f);
|
||||
} else {
|
||||
this->unk_1D8.x = this->unk_1D8.z = 1.3f - ((curFrame - 13.0f) * 0.05f);
|
||||
this->unk_1D8.y = ((curFrame - 13.0f) * 0.0333f) + 0.8f;
|
||||
this->headScale.x = this->headScale.z = 1.3f - ((curFrame - 13.0f) * 0.05f);
|
||||
this->headScale.y = ((curFrame - 13.0f) * 0.0333f) + 0.8f;
|
||||
}
|
||||
} else if (this->actionFunc == func_80A36488) {
|
||||
this->unk_1D8.x = this->unk_1D8.z = 1.0f;
|
||||
this->unk_1D8.y = (Math_SinF((M_PI / 16) * curFrame) * 0.2f) + 1.0f;
|
||||
} else if (this->actionFunc == func_80A36504) {
|
||||
} else if (this->actionFunc == EnSyatekiOkuta_Float) {
|
||||
this->headScale.x = this->headScale.z = 1.0f;
|
||||
this->headScale.y = (Math_SinF((M_PI / 16) * curFrame) * 0.2f) + 1.0f;
|
||||
} else if (this->actionFunc == EnSyatekiOkuta_Hide) {
|
||||
if (curFrame < 3.0f) {
|
||||
this->unk_1D8.y = 1.0f;
|
||||
this->headScale.y = 1.0f;
|
||||
} else if (curFrame < 4.0f) {
|
||||
this->unk_1D8.y = (curFrame - 2.0f) + 1.0f;
|
||||
this->headScale.y = (curFrame - 2.0f) + 1.0f;
|
||||
} else {
|
||||
this->unk_1D8.y = 2.0f - ((curFrame - 3.0f) * 0.333f);
|
||||
this->headScale.y = 2.0f - ((curFrame - 3.0f) * 0.333f);
|
||||
}
|
||||
this->unk_1D8.x = this->unk_1D8.z = 1.0f;
|
||||
} else if (this->actionFunc == func_80A365EC) {
|
||||
curFrame += this->unk_2A4;
|
||||
this->headScale.x = this->headScale.z = 1.0f;
|
||||
} else if (this->actionFunc == EnSyatekiOkuta_Die) {
|
||||
curFrame += this->deathTimer;
|
||||
if (curFrame >= 35.0f) {
|
||||
this->unk_1D8.x = this->unk_1D8.y = this->unk_1D8.z = 1.0f;
|
||||
this->headScale.x = this->headScale.y = this->headScale.z = 1.0f;
|
||||
} else if (curFrame < 4.0f) {
|
||||
this->unk_1D8.x = this->unk_1D8.z = 1.0f - (curFrame * 0.0666f);
|
||||
this->unk_1D8.y = (curFrame * 0.1666f) + 1.0f;
|
||||
this->headScale.x = this->headScale.z = 1.0f - (curFrame * 0.0666f);
|
||||
this->headScale.y = (curFrame * 0.1666f) + 1.0f;
|
||||
} else if (curFrame < 25.0f) {
|
||||
this->unk_1D8.x = this->unk_1D8.z = ((curFrame - 4.0f) * 0.01f) + 0.8f;
|
||||
this->unk_1D8.y = 1.5f - ((curFrame - 4.0f) * 0.025f);
|
||||
this->headScale.x = this->headScale.z = ((curFrame - 4.0f) * 0.01f) + 0.8f;
|
||||
this->headScale.y = 1.5f - ((curFrame - 4.0f) * 0.025f);
|
||||
} else if (curFrame < 27.0f) {
|
||||
this->unk_1D8.x = this->unk_1D8.y = this->unk_1D8.z = ((curFrame - 24.0f) * 0.25f) + 1.0f;
|
||||
this->headScale.x = this->headScale.y = this->headScale.z = ((curFrame - 24.0f) * 0.25f) + 1.0f;
|
||||
} else if (curFrame < 30.0f) {
|
||||
this->unk_1D8.x = this->unk_1D8.y = this->unk_1D8.z = 1.5f - ((curFrame - 26.0f) * 0.233f);
|
||||
this->headScale.x = this->headScale.y = this->headScale.z = 1.5f - ((curFrame - 26.0f) * 0.233f);
|
||||
} else {
|
||||
this->unk_1D8.x = this->unk_1D8.y = this->unk_1D8.z = ((curFrame - 29.0f) * 0.04f) + 0.8f;
|
||||
this->headScale.x = this->headScale.y = this->headScale.z = ((curFrame - 29.0f) * 0.04f) + 0.8f;
|
||||
}
|
||||
} else {
|
||||
this->unk_1D8.x = this->unk_1D8.y = this->unk_1D8.z = 1.0f;
|
||||
this->headScale.x = this->headScale.y = this->headScale.z = 1.0f;
|
||||
}
|
||||
}
|
||||
|
||||
s32 func_80A370EC(EnSyatekiOkuta* this, f32 arg1, Vec3f* arg2) {
|
||||
if (this->actionFunc == func_80A363B4) {
|
||||
arg2->y = 1.0f;
|
||||
arg2->z = 1.0f;
|
||||
arg2->x = (Math_SinF((M_PI / 16) * arg1) * 0.4f) + 1.0f;
|
||||
} else if (this->actionFunc == func_80A365EC) {
|
||||
if ((arg1 >= 35.0f) || (arg1 < 25.0f)) {
|
||||
/**
|
||||
* Returns true if the snout scale should be updated, false otherwise. The snout scale is returned via the scale
|
||||
* parameter.
|
||||
*/
|
||||
s32 EnSyatekiOkuta_GetSnoutScale(EnSyatekiOkuta* this, f32 curFrame, Vec3f* scale) {
|
||||
if (this->actionFunc == EnSyatekiOkuta_Appear) {
|
||||
scale->y = 1.0f;
|
||||
scale->z = 1.0f;
|
||||
scale->x = (Math_SinF((M_PI / 16) * curFrame) * 0.4f) + 1.0f;
|
||||
} else if (this->actionFunc == EnSyatekiOkuta_Die) {
|
||||
if ((curFrame >= 35.0f) || (curFrame < 25.0f)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (arg1 < 27.0f) {
|
||||
arg2->z = 1.0f;
|
||||
arg2->x = arg2->y = ((arg1 - 24.0f) * 0.5f) + 1.0f;
|
||||
} else if (arg1 < 30.0f) {
|
||||
arg2->z = (arg1 - 26.0f) * 0.333f + 1.0f;
|
||||
arg2->x = arg2->y = 2.0f - (arg1 - 26.0f) * 0.333f;
|
||||
if (curFrame < 27.0f) {
|
||||
scale->z = 1.0f;
|
||||
scale->x = scale->y = ((curFrame - 24.0f) * 0.5f) + 1.0f;
|
||||
} else if (curFrame < 30.0f) {
|
||||
scale->z = (curFrame - 26.0f) * 0.333f + 1.0f;
|
||||
scale->x = scale->y = 2.0f - (curFrame - 26.0f) * 0.333f;
|
||||
} else {
|
||||
arg2->z = 2.0f - ((arg1 - 29.0f) * 0.2f);
|
||||
arg2->x = arg2->y = 1.0f;
|
||||
scale->z = 2.0f - ((curFrame - 29.0f) * 0.2f);
|
||||
scale->x = scale->y = 1.0f;
|
||||
}
|
||||
} else {
|
||||
return false;
|
||||
@ -464,20 +534,20 @@ s32 func_80A370EC(EnSyatekiOkuta* this, f32 arg1, Vec3f* arg2) {
|
||||
|
||||
s32 EnSyatekiOkuta_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
|
||||
s32 pad;
|
||||
Vec3f sp20;
|
||||
Vec3f scale;
|
||||
f32 curFrame;
|
||||
EnSyatekiOkuta* this = THIS;
|
||||
|
||||
curFrame = this->skelAnime.curFrame;
|
||||
if (this->actionFunc == func_80A365EC) {
|
||||
curFrame += this->unk_2A4;
|
||||
if (this->actionFunc == EnSyatekiOkuta_Die) {
|
||||
curFrame += this->deathTimer;
|
||||
}
|
||||
|
||||
if (limbIndex == OCTOROK_LIMB_HEAD) {
|
||||
sp20 = this->unk_1D8;
|
||||
Matrix_Scale(sp20.x, sp20.y, sp20.z, MTXMODE_APPLY);
|
||||
} else if ((limbIndex == OCTOROK_LIMB_SNOUT) && (func_80A370EC(this, curFrame, &sp20))) {
|
||||
Matrix_Scale(sp20.x, sp20.y, sp20.z, MTXMODE_APPLY);
|
||||
scale = this->headScale;
|
||||
Matrix_Scale(scale.x, scale.y, scale.z, MTXMODE_APPLY);
|
||||
} else if ((limbIndex == OCTOROK_LIMB_SNOUT) && (EnSyatekiOkuta_GetSnoutScale(this, curFrame, &scale))) {
|
||||
Matrix_Scale(scale.x, scale.y, scale.z, MTXMODE_APPLY);
|
||||
}
|
||||
|
||||
return false;
|
||||
@ -489,7 +559,7 @@ void EnSyatekiOkuta_Draw(Actor* thisx, PlayState* play) {
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
Gfx_SetupDL25_Opa(play->state.gfxCtx);
|
||||
if (this->unk_2A6 == 1) {
|
||||
if (this->type == SG_OCTO_TYPE_RED) {
|
||||
gSPSegment(POLY_OPA_DISP++, 0x08, D_801AEFA0);
|
||||
} else {
|
||||
gSPSegment(POLY_OPA_DISP++, 0x08, gShootingGalleryOctorokBlueMaterialDL);
|
||||
@ -497,20 +567,22 @@ void EnSyatekiOkuta_Draw(Actor* thisx, PlayState* play) {
|
||||
|
||||
SkelAnime_DrawOpa(play, this->skelAnime.skeleton, this->skelAnime.jointTable, EnSyatekiOkuta_OverrideLimbDraw, NULL,
|
||||
&this->actor);
|
||||
|
||||
// Draw the circle or cross that appears when the player hits an Octorok
|
||||
Gfx_SetupDL25_Xlu(play->state.gfxCtx);
|
||||
if (this->actionFunc == func_80A365EC) {
|
||||
if (this->actionFunc == EnSyatekiOkuta_Die) {
|
||||
Matrix_Translate(this->actor.world.pos.x, this->actor.world.pos.y + 30.0f, this->actor.world.pos.z + 20.0f,
|
||||
MTXMODE_NEW);
|
||||
|
||||
if (this->unk_2AA >= 256) {
|
||||
if (this->hitResultAlpha > 255) {
|
||||
gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, 210, 64, 32, 255);
|
||||
} else {
|
||||
gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, 210, 64, 32, this->unk_2AA);
|
||||
gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, 210, 64, 32, this->hitResultAlpha);
|
||||
}
|
||||
|
||||
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
|
||||
if (this->unk_2A6 == 2) {
|
||||
if (this->type == SG_OCTO_TYPE_BLUE) {
|
||||
gSPDisplayList(POLY_XLU_DISP++, gShootingGalleryOctorokCrossDL);
|
||||
} else {
|
||||
gSPDisplayList(POLY_XLU_DISP++, gShootingGalleryOctorokCircleDL);
|
||||
|
@ -4,7 +4,39 @@
|
||||
#include "global.h"
|
||||
#include "objects/object_okuta/object_okuta.h"
|
||||
|
||||
#define EN_SYATEKI_OKUTA_GET_F(thisx) ((thisx)->params & 0xF)
|
||||
typedef enum {
|
||||
/* 0 */ SG_OCTO_TYPE_NONE,
|
||||
/* 1 */ SG_OCTO_TYPE_RED,
|
||||
/* 2 */ SG_OCTO_TYPE_BLUE,
|
||||
/* 3 */ SG_OCTO_TYPE_MAX
|
||||
} ShootingGalleryOctorokType;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ SG_OCTO_ROW_BACK,
|
||||
/* 1 */ SG_OCTO_ROW_CENTER,
|
||||
/* 2 */ SG_OCTO_ROW_FRONT,
|
||||
/* 3 */ SG_OCTO_ROW_MAX
|
||||
} ShootingGalleryOctorokRow;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ SG_OCTO_COL_LEFT,
|
||||
/* 1 */ SG_OCTO_COL_CENTER,
|
||||
/* 2 */ SG_OCTO_COL_RIGHT,
|
||||
/* 3 */ SG_OCTO_COL_MAX
|
||||
} ShootingGalleryOctorokColumn;
|
||||
|
||||
#define SG_OCTO_GET_INDEX(thisx) ((thisx)->params & 0xF)
|
||||
#define SG_OCTO_INDEX_FOR_POS(row, column) (((row) * SG_OCTO_COL_MAX) + (column))
|
||||
|
||||
// This returns the index of the Octorok directly in front of the Octorok at the given index. In other words, it
|
||||
// returns the index of the Octorok in the same column as the one with the given index, but one row ahead. It's
|
||||
// assumed that this will only be used for Octoroks in the back or center row; it returns an invalid index for
|
||||
// Octoroks in the front row.
|
||||
#define SG_OCTO_INDEX_DIRECTLY_IN_FRONT(index) ((index) + SG_OCTO_COL_MAX)
|
||||
|
||||
// Both of these macros assume that the Octorok types can fit in two bits, hence why the index is multiplied by 2.
|
||||
#define SG_OCTO_GET_TYPE(octorokFlags, index) (((octorokFlags) >> ((index) * 2)) & SG_OCTO_TYPE_MAX)
|
||||
#define SG_OCTO_SET_FLAG(type, index) ((type & SG_OCTO_TYPE_MAX) << ((index) * 2))
|
||||
|
||||
struct EnSyatekiOkuta;
|
||||
|
||||
@ -15,13 +47,13 @@ typedef struct EnSyatekiOkuta {
|
||||
/* 0x144 */ SkelAnime skelAnime;
|
||||
/* 0x188 */ EnSyatekiOkutaActionFunc actionFunc;
|
||||
/* 0x18C */ ColliderCylinder collider;
|
||||
/* 0x1DC */ Vec3f unk_1D8;
|
||||
/* 0x1DC */ Vec3f headScale;
|
||||
/* 0x1E4 */ Vec3s jointTable[OCTOROK_LIMB_MAX];
|
||||
/* 0x244 */ Vec3s morphTable[OCTOROK_LIMB_MAX];
|
||||
/* 0x2A4 */ s16 unk_2A4;
|
||||
/* 0x2A6 */ s16 unk_2A6;
|
||||
/* 0x2A4 */ s16 deathTimer;
|
||||
/* 0x2A6 */ s16 type;
|
||||
/* 0x2A8 */ UNK_TYPE1 unk_2A8[0x2];
|
||||
/* 0x2AA */ s16 unk_2AA;
|
||||
/* 0x2AA */ s16 hitResultAlpha;
|
||||
} EnSyatekiOkuta; // size = 0x2AC
|
||||
|
||||
#endif // Z_EN_SYATEKI_OKUTA_H
|
||||
|
@ -301,16 +301,16 @@ void EnTest4_Init(Actor* thisx, PlayState* play) {
|
||||
|
||||
sCsIdList[0] = csId;
|
||||
if (csId >= 0) {
|
||||
ActorCutscene* actorCutscene = CutsceneManager_GetCutsceneEntry(sCsIdList[0]);
|
||||
ActorCutscene* csEntry = CutsceneManager_GetCutsceneEntry(sCsIdList[0]);
|
||||
|
||||
SET_EVENTINF(EVENTINF_52);
|
||||
sCsIdList[1] = actorCutscene->additionalCsId;
|
||||
sCsIdList[1] = csEntry->additionalCsId;
|
||||
} else {
|
||||
CLEAR_EVENTINF(EVENTINF_52);
|
||||
sCsIdList[1] = sCsIdList[0];
|
||||
}
|
||||
|
||||
if (sIsLoaded || (CHECK_EVENTINF(EVENTINF_27))) {
|
||||
if (sIsLoaded || CHECK_EVENTINF(EVENTINF_TRIGGER_DAYTELOP)) {
|
||||
Actor_Kill(&this->actor);
|
||||
} else {
|
||||
sIsLoaded = true;
|
||||
@ -418,7 +418,7 @@ void func_80A42AB8(EnTest4* this, PlayState* play) {
|
||||
}
|
||||
|
||||
gSaveContext.respawnFlag = -4;
|
||||
SET_EVENTINF(EVENTINF_27);
|
||||
SET_EVENTINF(EVENTINF_TRIGGER_DAYTELOP);
|
||||
Actor_Kill(&this->actor);
|
||||
}
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -7,46 +7,71 @@ struct EnTest6;
|
||||
|
||||
typedef void (*EnTest6ActionFunc)(struct EnTest6*, PlayState*);
|
||||
|
||||
#define ENTEST6_GET(thisx) ((thisx)->params)
|
||||
#define SOTCS_GET_OCARINA_MODE(thisx) ((thisx)->params)
|
||||
|
||||
typedef enum {
|
||||
/* 24 */ ENTEST6_24 = 24,
|
||||
/* 25 */ ENTEST6_25,
|
||||
/* 26 */ ENTEST6_26
|
||||
} EnTest6Param;
|
||||
// CueIds are a mix of cues from external cutscenes and internal states
|
||||
|
||||
typedef enum SoTCsCueId {
|
||||
/* 0x00 */ SOTCS_CUEID_NONE,
|
||||
/* 0x01 */ SOTCS_CUEID_DOUBLE_WAIT,
|
||||
/* 0x02 */ SOTCS_CUEID_DOUBLE_INIT,
|
||||
/* 0x03 */ SOTCS_CUEID_DOUBLE_CLOCKS_INWARD,
|
||||
/* 0x04 */ SOTCS_CUEID_DOUBLE_CLOCKS_SPIN,
|
||||
/* 0x05 */ SOTCS_CUEID_DOUBLE_CLOCKS_OUTWARD,
|
||||
/* 0x06 */ SOTCS_CUEID_RESET_INIT,
|
||||
/* 0x07 */ SOTCS_CUEID_RESET_CLOCKS_SLOW_DOWN,
|
||||
/* 0x08 */ SOTCS_CUEID_RESET_CLOCKS_SPEED_UP,
|
||||
/* 0x09 */ SOTCS_CUEID_DOUBLE_END,
|
||||
/* 0x5A */ SOTCS_CUEID_INV_INIT = 90,
|
||||
/* 0x5B */ SOTCS_CUEID_INV_SETUP_CLOCKS,
|
||||
/* 0x5D */ SOTCS_CUEID_INV_UNUSED = 93,
|
||||
/* 0x5F */ SOTCS_CUEID_INV_CLOCKS = 95,
|
||||
/* 0x63 */ SOTCS_CUEID_INV_END = 99
|
||||
} SoTCsCueId;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ LightNode* node;
|
||||
/* 0x04 */ LightInfo info;
|
||||
} EnTest6Light; // size = 0x14
|
||||
/* 0x0 */ LightNode* node;
|
||||
/* 0x4 */ LightInfo info;
|
||||
} SoTCsLight; // size = 0x14
|
||||
|
||||
#define SOTCS_INV_NUM_CLOCKS 6
|
||||
#define SOTCS_DOUBLE_NUM_CLOCKS 51
|
||||
#define SOTCS_RESET_NUM_CLOCKS 128
|
||||
#define SOTCS_NUM_PARTICLES 64
|
||||
|
||||
typedef struct EnTest6 {
|
||||
/* 0x000 */ Actor actor;
|
||||
/* 0x144 */ EnTest6ActionFunc actionFunc;
|
||||
/* 0x148 */ Gfx* unk_148;
|
||||
/* 0x14C */ f32 unk_14C;
|
||||
/* 0x150 */ f32 unk_150;
|
||||
/* 0x154 */ f32 unk_154;
|
||||
/* 0x158 */ f32 unk_158;
|
||||
/* 0x15C */ f32 unk_15C;
|
||||
/* 0x160 */ f32 unk_160;
|
||||
/* 0x164 */ EnTest6Light lights[2];
|
||||
/* 0x18C */ CutsceneCamera unk_18C;
|
||||
/* 0x20C */ Vec3f unk_20C[6];
|
||||
/* 0x254 */ Vec3f (*unk_254)[64];
|
||||
/* 0x148 */ Gfx* gfx;
|
||||
/* 0x14C */ f32 speed; // Used for clock distance and lights
|
||||
/* 0x150 */ f32 clockDist; // Radius from player
|
||||
/* 0x154 */ f32 clockSpeed;
|
||||
/* 0x158 */ union {
|
||||
f32 clockRadialSpeed; // For double SoT cutscene
|
||||
f32 clockAccel; // For reset SoT cutscene
|
||||
};
|
||||
/* 0x15C */ f32 invSoTEnvLerp;
|
||||
/* 0x160 */ f32 doubleSoTEnvLerp;
|
||||
/* 0x164 */ SoTCsLight lights[2];
|
||||
/* 0x18C */ CutsceneCamera csCamInfo;
|
||||
/* 0x20C */ Vec3f invSoTClockPos[SOTCS_INV_NUM_CLOCKS];
|
||||
/* 0x254 */ Vec3f (*invSoTParticles)[SOTCS_NUM_PARTICLES];
|
||||
/* 0x258 */ Vec3f subCamAt;
|
||||
/* 0x264 */ Vec3f subCamEye;
|
||||
/* 0x270 */ f32 subCamFov;
|
||||
/* 0x274 */ s16 cueId;
|
||||
/* 0x276 */ s16 unk_276;
|
||||
/* 0x278 */ s16 unk_278;
|
||||
/* 0x27A */ s16 unk_27A;
|
||||
/* 0x27C */ s16 unk_27C;
|
||||
/* 0x27E */ s16 unk_27E;
|
||||
/* 0x280 */ s16 unk_280;
|
||||
/* 0x282 */ s16 unk_282;
|
||||
/* 0x276 */ s16 drawType;
|
||||
/* 0x278 */ union {
|
||||
s16 invSoTClockYaw; // For inverted SoT cutscene.
|
||||
s16 counter; // For double/reset SoT cutscenes. Increments every frame, unused.
|
||||
};
|
||||
/* 0x27A */ s16 timer;
|
||||
/* 0x27C */ s16 clockAngle;
|
||||
/* 0x27E */ s16 clockRingRotZ; // For double/reset SoT cutscenes
|
||||
/* 0x280 */ s16 clockColorGray; // For double SoT cutscene
|
||||
/* 0x282 */ s16 alpha;
|
||||
/* 0x284 */ s16 subCamId;
|
||||
/* 0x286 */ s16 unk_286;
|
||||
/* 0x286 */ s16 screenFillAlpha; // As a ratio, 20 is an alpha of 255
|
||||
} EnTest6; // size = 0x288
|
||||
|
||||
#endif // Z_EN_TEST6_H
|
||||
|
@ -364,14 +364,13 @@ void func_80AF14FC(PlayState* play2, EnTest7Struct2* arg1) {
|
||||
}
|
||||
|
||||
temp_v0 = Matrix_NewMtx(play->state.gfxCtx);
|
||||
if (temp_v0 != NULL) {
|
||||
gSPMatrix(POLY_OPA_DISP++, temp_v0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPDisplayList(POLY_OPA_DISP++, gameplay_keep_DL_081628);
|
||||
if (temp_v0 == NULL) {
|
||||
continue;
|
||||
}
|
||||
gSPMatrix(POLY_OPA_DISP++, temp_v0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPDisplayList(POLY_OPA_DISP++, gameplay_keep_DL_081628);
|
||||
}
|
||||
|
||||
if (ptr) {}
|
||||
|
||||
Matrix_Pop();
|
||||
|
||||
CLOSE_DISPS(play->state.gfxCtx);
|
||||
@ -444,13 +443,13 @@ void func_80AF19A8(EnTest7* this, PlayState* play) {
|
||||
}
|
||||
|
||||
void func_80AF1A2C(EnTest7* this, PlayState* play) {
|
||||
Color_RGB8 sp34 = { 64, 0, 0 };
|
||||
Color_RGB8 sp30 = { 220, 220, 255 };
|
||||
f32 sp2C = this->unk_1E54 / 10.0f;
|
||||
Color_RGB8 fogColor = { 64, 0, 0 };
|
||||
Color_RGB8 ambientColor = { 220, 220, 255 };
|
||||
f32 envLerp = this->unk_1E54 / 10.0f;
|
||||
|
||||
func_800FD59C(play, &sp30, sp2C);
|
||||
func_800FD654(play, &sp34, sp2C);
|
||||
func_800FD698(play, 2000, 4000, sp2C);
|
||||
Environment_LerpAmbientColor(play, &ambientColor, envLerp);
|
||||
Environment_LerpFogColor(play, &fogColor, envLerp);
|
||||
Environment_LerpFog(play, 2000, 4000, envLerp);
|
||||
|
||||
if (this->unk_1E54 >= 10) {
|
||||
Camera* subCam =
|
||||
@ -611,9 +610,9 @@ void func_80AF2030(EnTest7* this, PlayState* play) {
|
||||
|
||||
void func_80AF21E8(EnTest7* this, PlayState* play) {
|
||||
s32 sp2C = this->unk_1E54 - 100;
|
||||
f32 sp1C;
|
||||
Color_RGB8 sp24 = { 64, 0, 0 };
|
||||
Color_RGB8 sp20 = { 220, 220, 255 };
|
||||
f32 envLerp;
|
||||
Color_RGB8 fogColor = { 64, 0, 0 };
|
||||
Color_RGB8 ambientColor = { 220, 220, 255 };
|
||||
|
||||
if (R_PLAY_FILL_SCREEN_ON) {
|
||||
Audio_PlaySfxAtPos(&this->actor.projectedPos, NA_SE_PL_WARP_WING_VANISH);
|
||||
@ -624,10 +623,10 @@ void func_80AF21E8(EnTest7* this, PlayState* play) {
|
||||
R_PLAY_FILL_SCREEN_ALPHA = 0;
|
||||
}
|
||||
|
||||
sp1C = 1.0f - (sp2C / 10.0f);
|
||||
func_800FD59C(play, &sp20, sp1C);
|
||||
func_800FD654(play, &sp24, sp1C);
|
||||
func_800FD698(play, 2000, 4000, sp1C);
|
||||
envLerp = 1.0f - (sp2C / 10.0f);
|
||||
Environment_LerpAmbientColor(play, &ambientColor, envLerp);
|
||||
Environment_LerpFogColor(play, &fogColor, envLerp);
|
||||
Environment_LerpFog(play, 2000, 4000, envLerp);
|
||||
|
||||
if (this->unk_1E54 >= 110) {
|
||||
func_80AF082C(this, func_80AF2318);
|
||||
|
@ -4,7 +4,6 @@
|
||||
* Description: Beaver Race Ring
|
||||
*/
|
||||
|
||||
#include "prevent_bss_reordering.h"
|
||||
#include "z_en_twig.h"
|
||||
#include "objects/object_twig/object_twig.h"
|
||||
|
||||
|
@ -208,8 +208,8 @@ void EnWarpTag_RespawnPlayer(EnWarptag* this, PlayState* play) {
|
||||
|
||||
// why are we getting player home rotation from the room data? doesnt player have home.rot.y?
|
||||
// especially because we are converting from deg to binang, but isnt home.rot.y already in binang??
|
||||
Play_SetRespawnData(&play->state, 0, entrance, play->setupEntranceList[playerSpawnIndex].room,
|
||||
playerParams, &newRespawnPos,
|
||||
Play_SetRespawnData(&play->state, RESPAWN_MODE_DOWN, entrance,
|
||||
play->setupEntranceList[playerSpawnIndex].room, playerParams, &newRespawnPos,
|
||||
DEG_TO_BINANG_ALT((playerActorEntry->rot.y >> 7) & 0x1FF));
|
||||
|
||||
func_80169EFC(&play->state);
|
||||
|
@ -1285,8 +1285,8 @@ void EnWiz_UpdateDamage(EnWiz* this, PlayState* play) {
|
||||
//! colliders are effectively disabled, this doesn't cause any problems in the final
|
||||
//! game, but it becomes an issue if the ghost colliders are enabled.
|
||||
this->fightState = EN_WIZ_FIGHT_STATE_SECOND_PHASE_GHOSTS_COPY_WIZROBE;
|
||||
this->ghostColliders.base.acFlags &= ~BUMP_HIT;
|
||||
if (this->ghostPos[i].x != .0f || this->ghostPos[i].z != .0f) {
|
||||
this->ghostColliders.base.acFlags &= ~AC_HIT;
|
||||
if ((this->ghostPos[i].x != .0f) || (this->ghostPos[i].z != .0f)) {
|
||||
for (j = 0; j < 9; j++) {
|
||||
accel.x = 0.0f;
|
||||
accel.y = 1.0f;
|
||||
|
@ -573,7 +573,7 @@ void EnWizFire_Update(Actor* thisx, PlayState* play2) {
|
||||
DECR(this->steamSpawnTimer);
|
||||
DECR(this->poolTimer);
|
||||
|
||||
Actor_UpdateBgCheckInfo(play, &this->actor, 20.0f, 5.0f, 10,
|
||||
Actor_UpdateBgCheckInfo(play, &this->actor, 20.0f, 5.0f, 10.0f,
|
||||
UPDBGCHECKINFO_FLAG_1 | UPDBGCHECKINFO_FLAG_4 | UPDBGCHECKINFO_FLAG_8 |
|
||||
UPDBGCHECKINFO_FLAG_10);
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user