1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-07-12 10:54:44 +00:00

Merge branch 'main' into doc_pause_menu

This commit is contained in:
Dragorn421 2024-03-09 17:17:17 +01:00
commit 4ee4b93b4f
No known key found for this signature in database
GPG key ID: 381AEBAF3D429335
356 changed files with 6097 additions and 3907 deletions

1
.gitignore vendored
View file

@ -51,6 +51,7 @@ graphs/
*.fbx
!*_custom*
.extracted-assets.json
extracted/
# Docs
!docs/tutorial/

View file

@ -66,6 +66,7 @@ PROJECT_DIR := $(dir $(realpath $(firstword $(MAKEFILE_LIST))))
BUILD_DIR := build/$(VERSION)
EXPECTED_DIR := expected/$(BUILD_DIR)
BASEROM_DIR := baseroms/$(VERSION)
EXTRACTED_DIR := extracted/$(VERSION)
VENV := .venv
MAKE = make
@ -130,7 +131,7 @@ NM := $(MIPS_BINUTILS_PREFIX)nm
N64_EMULATOR ?=
INC := -Iinclude -Iinclude/libc -Isrc -I$(BUILD_DIR) -I.
INC := -Iinclude -Iinclude/libc -Isrc -I$(BUILD_DIR) -I. -I$(EXTRACTED_DIR)
# Check code syntax with host compiler
CHECK_WARNINGS := -Wall -Wextra -Wno-format-security -Wno-unknown-pragmas -Wno-unused-parameter -Wno-unused-variable -Wno-missing-braces
@ -154,7 +155,7 @@ endif
ASFLAGS := -march=vr4300 -32 -no-pad-sections -Iinclude
ifeq ($(COMPILER),gcc)
CFLAGS += -G 0 -nostdinc $(INC) -march=vr4300 -mfix4300 -mabi=32 -mno-abicalls -mdivide-breaks -fno-zero-initialized-in-bss -fno-toplevel-reorder -ffreestanding -fno-common -fno-merge-constants -mno-explicit-relocs -mno-split-addresses $(CHECK_WARNINGS) -funsigned-char
CFLAGS += -G 0 -nostdinc $(INC) -march=vr4300 -mfix4300 -mabi=32 -mno-abicalls -mdivide-breaks -fno-PIC -fno-common -ffreestanding -fbuiltin -fno-builtin-sinf -fno-builtin-cosf $(CHECK_WARNINGS) -funsigned-char
MIPS_VERSION := -mips3
else
# Suppress warnings for wrong number of macro arguments (to fake variadic
@ -207,8 +208,7 @@ ASSET_FILES_OUT := $(foreach f,$(ASSET_FILES_XML:.xml=.c),$f) \
UNDECOMPILED_DATA_DIRS := $(shell find data -type d)
BASEROM_SEGMENTS_DIR := $(BASEROM_DIR)/segments
BASEROM_BIN_FILES := $(wildcard $(BASEROM_SEGMENTS_DIR)/*)
BASEROM_BIN_FILES := $(wildcard $(EXTRACTED_DIR)/baserom/*)
# source files
C_FILES := $(filter-out %.inc.c,$(foreach dir,$(SRC_DIRS) $(ASSET_BIN_DIRS),$(wildcard $(dir)/*.c)))
@ -230,7 +230,7 @@ TEXTURE_FILES_OUT := $(foreach f,$(TEXTURE_FILES_PNG:.png=.inc.c),$(BUILD_DIR)/$
$(foreach f,$(TEXTURE_FILES_JPG:.jpg=.jpg.inc.c),$(BUILD_DIR)/$f) \
# create build directories
$(shell mkdir -p $(BUILD_DIR)/baserom $(BUILD_DIR)/assets/text $(foreach dir,$(SRC_DIRS) $(UNDECOMPILED_DATA_DIRS) $(ASSET_BIN_DIRS),$(BUILD_DIR)/$(dir)))
$(shell mkdir -p $(BUILD_DIR)/baserom $(EXTRACTED_DIR)/text $(BUILD_DIR)/assets/text $(foreach dir,$(SRC_DIRS) $(UNDECOMPILED_DATA_DIRS) $(ASSET_BIN_DIRS),$(BUILD_DIR)/$(dir)))
ifeq ($(COMPILER),ido)
$(BUILD_DIR)/src/boot/stackcheck.o: OPTFLAGS := -O2
@ -308,14 +308,20 @@ $(BUILD_DIR)/src/libultra/rmon/%.o: CC := $(CC_OLD)
$(BUILD_DIR)/src/code/jpegutils.o: CC := $(CC_OLD)
$(BUILD_DIR)/src/code/jpegdecoder.o: CC := $(CC_OLD)
$(BUILD_DIR)/src/boot/%.o: CC := $(PYTHON) tools/asm_processor/build.py $(CC) -- $(AS) $(ASFLAGS) --
$(BUILD_DIR)/src/code/%.o: CC := $(PYTHON) tools/asm_processor/build.py $(CC) -- $(AS) $(ASFLAGS) --
$(BUILD_DIR)/src/overlays/%.o: CC := $(PYTHON) tools/asm_processor/build.py $(CC) -- $(AS) $(ASFLAGS) --
# For using asm_processor on some files:
#$(BUILD_DIR)/.../%.o: CC := $(PYTHON) tools/asm_processor/build.py $(CC) -- $(AS) $(ASFLAGS) --
ifeq ($(PERMUTER),) # permuter + reencode.sh misbehaves, permuter doesn't care about encoding ((ro)data diffs) so just don't use it in that case
# Handle encoding (UTF-8 -> EUC-JP)
$(BUILD_DIR)/%.o: CC := tools/reencode.sh $(CC)
endif
$(BUILD_DIR)/assets/%.o: CC := $(PYTHON) tools/asm_processor/build.py $(CC) -- $(AS) $(ASFLAGS) --
else
# Note that if adding additional assets directories for modding reasons these flags must also be used there
$(BUILD_DIR)/assets/%.o: CFLAGS += -fno-zero-initialized-in-bss -fno-toplevel-reorder
$(BUILD_DIR)/src/%.o: CFLAGS += -fexec-charset=euc-jp
$(BUILD_DIR)/src/libultra/libc/ll.o: OPTFLAGS := -Ofast
$(BUILD_DIR)/src/%.o: CC := $(CC) -fexec-charset=euc-jp
$(BUILD_DIR)/src/overlays/%.o: CFLAGS += -fno-merge-constants -mno-explicit-relocs -mno-split-addresses
endif
#### Main Targets ###
@ -339,12 +345,13 @@ clean:
assetclean:
$(RM) -r $(ASSET_BIN_DIRS)
$(RM) -r assets/text/*.h
$(RM) -r $(EXTRACTED_DIR)
$(RM) -r $(BUILD_DIR)/assets
$(RM) -r .extracted-assets.json
distclean: clean assetclean
$(RM) -r $(BASEROM_SEGMENTS_DIR)
distclean: assetclean
$(RM) -r extracted/
$(RM) -r build/
$(MAKE) -C tools distclean
venv:
@ -357,11 +364,11 @@ venv:
setup: venv
$(MAKE) -C tools
$(PYTHON) tools/decompress_baserom.py $(VERSION)
$(PYTHON) tools/extract_baserom.py $(BASEROM_DIR)/baserom-decompressed.z64 -o $(BASEROM_SEGMENTS_DIR) --dmadata-start `cat $(BASEROM_DIR)/dmadata_start.txt` --dmadata-names $(BASEROM_DIR)/dmadata_names.txt
$(PYTHON) tools/extract_baserom.py $(BASEROM_DIR)/baserom-decompressed.z64 -o $(EXTRACTED_DIR)/baserom --dmadata-start `cat $(BASEROM_DIR)/dmadata_start.txt` --dmadata-names $(BASEROM_DIR)/dmadata_names.txt
$(PYTHON) tools/msgdis.py --oot-version $(VERSION) --text-out $(EXTRACTED_DIR)/text/message_data.h --staff-text-out $(EXTRACTED_DIR)/text/message_data_staff.h
# TODO: for now, we only extract assets from the Debug ROM
ifeq ($(VERSION),gc-eu-mq-dbg)
$(PYTHON) extract_assets.py -j$(N_THREADS)
$(PYTHON) tools/msgdis.py --text-out assets/text/message_data.h --staff-text-out assets/text/message_data_staff.h
endif
disasm:
@ -411,14 +418,14 @@ $(LDSCRIPT): $(BUILD_DIR)/$(SPEC)
$(BUILD_DIR)/undefined_syms.txt: undefined_syms.txt
$(CPP) $(CPPFLAGS) $< > $@
$(BUILD_DIR)/baserom/%.o: $(BASEROM_SEGMENTS_DIR)/%
$(BUILD_DIR)/baserom/%.o: $(EXTRACTED_DIR)/baserom/%
$(OBJCOPY) -I binary -O elf32-big $< $@
$(BUILD_DIR)/data/%.o: data/%.s
$(AS) $(ASFLAGS) $< -o $@
$(BUILD_DIR)/assets/text/%.enc.h: assets/text/%.h assets/text/charmap.txt
$(PYTHON) tools/msgenc.py assets/text/charmap.txt $< $@
$(BUILD_DIR)/assets/text/%.enc.h: assets/text/%.h $(EXTRACTED_DIR)/text/%.h assets/text/charmap.txt
$(CPP) $(CPPFLAGS) -I$(EXTRACTED_DIR) $< | $(PYTHON) tools/msgenc.py - --output $@ --charmap assets/text/charmap.txt
# Dependencies for files including message data headers
# TODO remove when full header dependencies are used.

View file

@ -29,7 +29,7 @@ The only build currently supported is Master Quest (Debug), but other versions a
It builds the following ROM:
* oot-gc-eu-mq-dbg.z64 `md5: f0b7f35375f9cc8ca1b2d59d78e35405`
* oot-gc-eu-mq-dbg.z64 `md5: 75e344f41c26ec2ec5ad92caa9e25629`
**Note: This repository does not include any of the assets necessary to build the ROM. A prior copy of the game is required to extract the needed assets.**

2
assets/.gitignore vendored
View file

@ -1,7 +1,7 @@
*.bin
*.c
!text/*.c
*.h
!text/*.[ch]
*.cfg
*.vtx.inc
*.dlist.inc

View file

@ -5,4 +5,6 @@
#define DEFINE_MESSAGE(textId, type, yPos, nesMessage, gerMessage, fraMessage) \
const char _message_##textId##_fra[sizeof(fraMessage)] = { fraMessage END };
#define DEFINE_MESSAGE_NES(textId, type, yPos, nesMessage)
#include "assets/text/message_data.enc.h"

View file

@ -5,4 +5,6 @@
#define DEFINE_MESSAGE(textId, type, yPos, nesMessage, gerMessage, fraMessage) \
const char _message_##textId##_ger[sizeof(gerMessage)] = { gerMessage END };
#define DEFINE_MESSAGE_NES(textId, type, yPos, nesMessage)
#include "assets/text/message_data.enc.h"

View file

@ -0,0 +1,16 @@
#include "text/message_data.h"
/*
* The following two messages should be kept last and in this order.
* Message 0xFFFD must be last to not break the message debugger (see R_MESSAGE_DEBUGGER_TEXTID).
* Message 0xFFFC must be immediately before message 0xFFFD to not break Font_LoadOrderedFont.
*/
DEFINE_MESSAGE_NES(0xFFFC, TEXTBOX_TYPE_BLACK, TEXTBOX_POS_VARIABLE,
"0123456789\n"
"ABCDEFGHIJKLMN\n"
"OPQRSTUVWXYZ\n"
"abcdefghijklmn\n"
"opqrstuvwxyz\n"
" -.\n"
)
DEFINE_MESSAGE(0xFFFD, TEXTBOX_TYPE_BLACK, TEXTBOX_POS_VARIABLE, "", "", "")

View file

@ -0,0 +1 @@
#include "text/message_data_staff.h"

View file

@ -5,8 +5,6 @@
#define DEFINE_MESSAGE(textId, type, yPos, nesMessage, gerMessage, fraMessage) \
const char _message_##textId##_nes[sizeof(nesMessage)] = { nesMessage END };
#define DEFINE_MESSAGE_FFFC
#define DEFINE_MESSAGE_NES(textId, type, yPos, nesMessage) DEFINE_MESSAGE(textId, type, yPos, nesMessage, , )
#include "assets/text/message_data.enc.h"
#undef DEFINE_MESSAGE_FFFC

View file

@ -1 +1 @@
f0b7f35375f9cc8ca1b2d59d78e35405 build/gc-eu-mq-dbg/oot-gc-eu-mq-dbg.z64
75e344f41c26ec2ec5ad92caa9e25629 build/gc-eu-mq-dbg/oot-gc-eu-mq-dbg.z64

View file

@ -1 +1 @@
1a438f4235f8038856971c14a798122a build/gc-eu-mq/oot-gc-eu-mq.z64
4920520254b9aab86de57b42ab477dbb build/gc-eu-mq/oot-gc-eu-mq.z64

View file

@ -666,8 +666,8 @@ extern ColliderCylinderInit D_80A88CB4;
// ELEMTYPE_UNK0,
// { 0x00000000, 0x00, 0x00 },
// { 0x00000004, 0x00, 0x00 },
// TOUCH_NONE,
// BUMP_ON,
// ATELEM_NONE,
// ACELEM_ON,
// OCELEM_ON,
// },
// { 170, 150, 0, { 0, 0, 0 } },

View file

@ -33,7 +33,7 @@ void func_80A13098(EnFirefly* this) {
} else {
this->actor.params -= 2;
}
this->collider.list->body.toucher.effect = 1;
this->collider.list->body.atDmgInfo.effect = 1;
this->auraType = 1;
this->onFire = 1;
this->actor.naviEnemyId = 0x11;

View file

@ -48,11 +48,12 @@ You can create a `.vscode/c_cpp_properties.json` file with `C/C++: Edit Configur
],
"intelliSenseMode": "${default}", // Shouldn't matter
"includePath": [ // Matches makefile's includes
"${workspaceFolder}/**",
"include",
"include/libc",
"src",
"build/gc-eu-mq-dbg",
"include",
"include/libc"
".",
"extracted/gc-eu-mq-dbg"
],
"defines": [
"_LANGUAGE_C", // For gbi.h

View file

@ -28,7 +28,7 @@ def ExtractFile(xmlPath, outputPath, outputSourcePath):
Path(outputPath).mkdir(parents=True, exist_ok=True)
Path(outputSourcePath).mkdir(parents=True, exist_ok=True)
execStr = f"{zapdPath} e -eh -i {xmlPath} -b baseroms/gc-eu-mq-dbg/segments -o {outputPath} -osf {outputSourcePath} -gsf 1 -rconf {configPath} {ZAPDArgs}"
execStr = f"{zapdPath} e -eh -i {xmlPath} -b extracted/gc-eu-mq-dbg/baserom -o {outputPath} -osf {outputSourcePath} -gsf 1 -rconf {configPath} --cs-float both {ZAPDArgs}"
if "overlays" in xmlPath:
execStr += " --static"

View file

@ -47,9 +47,12 @@ typedef struct {
extern const char _message_##textId##_ger[]; \
extern const char _message_##textId##_fra[];
#define DEFINE_MESSAGE_NES(textId, type, yPos, nesMessage) \
extern const char _message_##textId##_nes[];
#include "assets/text/message_data.h"
extern const char _message_0xFFFC_nes[];
#undef DEFINE_MESSAGE
#undef DEFINE_MESSAGE_NES
#endif

18
include/romfile.h Normal file
View file

@ -0,0 +1,18 @@
#ifndef ROMFILE_H
#define ROMFILE_H
#include "ultra64.h"
typedef struct {
/* 0x00 */ uintptr_t vromStart;
/* 0x04 */ uintptr_t vromEnd;
} RomFile; // size = 0x8
#define ROM_FILE(name) \
{ (uintptr_t)_##name##SegmentRomStart, (uintptr_t)_##name##SegmentRomEnd }
#define ROM_FILE_EMPTY(name) \
{ (uintptr_t)_##name##SegmentRomStart, (uintptr_t)_##name##SegmentRomStart }
#define ROM_FILE_UNSET \
{ 0, 0 }
#endif

View file

@ -5,7 +5,7 @@
* - Argument 1: Name of the object segment in spec
* - Argument 2: Enum value for this object
*
* DEFINE_OBJECT_UNSET and DEFINE_OBJECT_NULL are needed to define empty entries from the original game
* DEFINE_OBJECT_UNSET and DEFINE_OBJECT_EMPTY are needed to define empty entries from the original game
*/
/* 0x0000 */ DEFINE_OBJECT_UNSET(OBJECT_INVALID) // Object ID 0 isn't usable and should remain unset
/* 0x0001 */ DEFINE_OBJECT(gameplay_keep, OBJECT_GAMEPLAY_KEEP)
@ -234,7 +234,7 @@
/* 0x00E0 */ DEFINE_OBJECT(object_ma1, OBJECT_MA1)
/* 0x00E1 */ DEFINE_OBJECT(object_ganon, OBJECT_GANON)
/* 0x00E2 */ DEFINE_OBJECT(object_sst, OBJECT_SST)
/* 0x00E3 */ DEFINE_OBJECT_NULL(object_ny, OBJECT_NY_UNUSED) // unused duplicate with size 0
/* 0x00E3 */ DEFINE_OBJECT_EMPTY(object_ny, OBJECT_NY_UNUSED) // unused duplicate with size 0
/* 0x00E4 */ DEFINE_OBJECT_UNSET(OBJECT_UNSET_E4)
/* 0x00E5 */ DEFINE_OBJECT(object_ny, OBJECT_NY)
/* 0x00E6 */ DEFINE_OBJECT(object_fr, OBJECT_FR)
@ -257,7 +257,7 @@
/* 0x00F7 */ DEFINE_OBJECT(object_gi_grass, OBJECT_GI_GRASS)
/* 0x00F8 */ DEFINE_OBJECT(object_gi_longsword, OBJECT_GI_LONGSWORD)
/* 0x00F9 */ DEFINE_OBJECT(object_spot01_objects, OBJECT_SPOT01_OBJECTS)
/* 0x00FA */ DEFINE_OBJECT_NULL(object_md, OBJECT_MD_UNUSED) // unused duplicate with size 0
/* 0x00FA */ DEFINE_OBJECT_EMPTY(object_md, OBJECT_MD_UNUSED) // unused duplicate with size 0
/* 0x00FB */ DEFINE_OBJECT(object_md, OBJECT_MD)
/* 0x00FC */ DEFINE_OBJECT(object_km1, OBJECT_KM1)
/* 0x00FD */ DEFINE_OBJECT(object_kw1, OBJECT_KW1)

View file

@ -5,8 +5,14 @@
void osSyncPrintf(const char* fmt, ...);
#ifdef __GNUC__
void bzero(void* __s, unsigned int __n);
int bcmp(const void* __sl, const void* __s2, unsigned int __n);
void bcopy(const void* __src, void* __dest, unsigned int __n);
#else
void bzero(void* __s, int __n);
int bcmp(const void* __sl, const void* __s2, int __n);
void bcopy(const void* __src, void* __dest, int __n);
#endif
#endif

View file

@ -194,8 +194,7 @@ typedef struct {
typedef struct {
/* 0x00 */ void* loadedRamAddr;
/* 0x04 */ uintptr_t vromStart;
/* 0x08 */ uintptr_t vromEnd;
/* 0x04 */ RomFile file;
/* 0x0C */ void* vramStart;
/* 0x10 */ void* vramEnd;
/* 0x14 */ u32 offset; // loadedRamAddr - vramStart
@ -558,8 +557,7 @@ typedef struct {
typedef struct {
/* 0x00 */ void* loadedRamAddr;
/* 0x04 */ uintptr_t vromStart; // if applicable
/* 0x08 */ uintptr_t vromEnd; // if applicable
/* 0x04 */ RomFile file; // if applicable
/* 0x0C */ void* vramStart; // if applicable
/* 0x10 */ void* vramEnd; // if applicable
/* 0x14 */ void* unk_14;

View file

@ -89,8 +89,7 @@ typedef struct {
#define ACTOROVL_ALLOC_PERSISTENT (1 << 1)
typedef struct {
/* 0x00 */ uintptr_t vromStart;
/* 0x04 */ uintptr_t vromEnd;
/* 0x00 */ RomFile file;
/* 0x08 */ void* vramStart;
/* 0x0C */ void* vramEnd;
/* 0x10 */ void* loadedRamAddr; // original name: "allocp"

View file

@ -76,23 +76,23 @@ typedef struct {
} ColliderInitToActor; // size = 0x08
typedef struct {
/* 0x00 */ u32 dmgFlags; // Toucher damage type flags.
/* 0x00 */ u32 dmgFlags; // Damage types dealt by this collider element as AT.
/* 0x04 */ u8 effect; // Damage Effect (Knockback, Fire, etc.)
/* 0x05 */ u8 damage; // Damage or Stun Timer
} ColliderElementTouch; // size = 0x08
/* 0x05 */ u8 damage; // Damage
} ColliderElementDamageInfoAT; // size = 0x08
typedef struct {
/* 0x00 */ u32 dmgFlags; // Bumper damage type flags.
/* 0x00 */ u32 dmgFlags; // Damage types that may affect this collider element as AC.
/* 0x04 */ u8 effect; // Damage Effect (Knockback, Fire, etc.)
/* 0x05 */ u8 defense; // Damage Resistance
/* 0x06 */ Vec3s hitPos; // Point of contact
} ColliderElementBump; // size = 0x0C
} ColliderElementDamageInfoAC; // size = 0x0C
typedef struct {
/* 0x00 */ u32 dmgFlags; // Bumper exclusion mask
/* 0x00 */ u32 dmgFlags; // Damage types that may affect this collider element as AC.
/* 0x04 */ u8 effect; // Damage Effect (Knockback, Fire, etc.)
/* 0x05 */ u8 defense; // Damage Resistance
} ColliderElementBumpInit; // size = 0x08
} ColliderElementDamageInfoACInit; // size = 0x08
/**
* Affects the sound Link's sword makes when hitting it, hookability,
@ -112,11 +112,11 @@ typedef enum {
} ElementType;
typedef struct ColliderElement {
/* 0x00 */ ColliderElementTouch toucher; // Damage properties when acting as an AT collider
/* 0x08 */ ColliderElementBump bumper; // Damage properties when acting as an AC collider
/* 0x00 */ ColliderElementDamageInfoAT atDmgInfo; // Damage properties when acting as an AT collider
/* 0x08 */ ColliderElementDamageInfoAC acDmgInfo; // Damage properties when acting as an AC collider
/* 0x14 */ u8 elemType; // Affects sfx reaction when attacked by Link and hookability. Full purpose unknown.
/* 0x15 */ u8 toucherFlags; // Information flags for AT collisions
/* 0x16 */ u8 bumperFlags; // Information flags for AC collisions
/* 0x15 */ u8 atElemFlags; // Information flags for AT collisions
/* 0x16 */ u8 acElemFlags; // Information flags for AC collisions
/* 0x17 */ u8 ocElemFlags; // Information flags for OC collisions
/* 0x18 */ Collider* atHit; // object touching this element's AT collider
/* 0x1C */ Collider* acHit; // object touching this element's AC collider
@ -126,10 +126,10 @@ typedef struct ColliderElement {
typedef struct {
/* 0x00 */ u8 elemType; // Affects sfx reaction when attacked by Link and hookability. Full purpose unknown.
/* 0x04 */ ColliderElementTouch toucher; // Damage properties when acting as an AT collider
/* 0x0C */ ColliderElementBumpInit bumper; // Damage properties when acting as an AC collider
/* 0x14 */ u8 toucherFlags; // Information flags for AT collisions
/* 0x15 */ u8 bumperFlags; // Information flags for AC collisions
/* 0x04 */ ColliderElementDamageInfoAT atDmgInfo; // Damage properties when acting as an AT collider
/* 0x0C */ ColliderElementDamageInfoACInit acDmgInfo; // Damage properties when acting as an AC collider
/* 0x14 */ u8 atElemFlags; // Information flags for AT collisions
/* 0x15 */ u8 acElemFlags; // Information flags for AC collisions
/* 0x16 */ u8 ocElemFlags; // Information flags for OC collisions
} ColliderElementInit; // size = 0x18
@ -349,28 +349,28 @@ typedef struct {
#define OC2_TYPE_2 OC1_TYPE_2 // Has OC type 2
#define OC2_FIRST_ONLY (1 << 6) // Skips AC checks on elements after the first collision. Only used by Ganon
#define TOUCH_NONE 0 // No flags set. Cannot have AT collisions
#define TOUCH_ON (1 << 0) // Can have AT collisions
#define TOUCH_HIT (1 << 1) // Had an AT collision
#define TOUCH_NEAREST (1 << 2) // If a Quad, only collides with the closest bumper
#define TOUCH_SFX_MASK (3 << 3)
#define TOUCH_SFX_NORMAL (0 << 3) // Hit sound effect based on AC collider's type
#define TOUCH_SFX_HARD (1 << 3) // Always uses hard deflection sound
#define TOUCH_SFX_WOOD (2 << 3) // Always uses wood deflection sound
#define TOUCH_SFX_NONE (3 << 3) // No hit sound effect
#define TOUCH_AT_HITMARK (1 << 5) // Draw hitmarks for every AT collision
#define TOUCH_DREW_HITMARK (1 << 6) // Already drew hitmark for this frame
#define TOUCH_UNK7 (1 << 7) // Unknown purpose. Used by some enemy quads
#define ATELEM_NONE 0 // No flags set. Cannot have AT collisions
#define ATELEM_ON (1 << 0) // Can have AT collisions
#define ATELEM_HIT (1 << 1) // Had an AT collision
#define ATELEM_NEAREST (1 << 2) // For COLSHAPE_QUAD colliders, only collide with the closest AC element
#define ATELEM_SFX_MASK (3 << 3)
#define ATELEM_SFX_NORMAL (0 << 3) // Hit sound effect based on AC collider's type
#define ATELEM_SFX_HARD (1 << 3) // Always uses hard deflection sound
#define ATELEM_SFX_WOOD (2 << 3) // Always uses wood deflection sound
#define ATELEM_SFX_NONE (3 << 3) // No hit sound effect
#define ATELEM_AT_HITMARK (1 << 5) // Draw hitmarks for every AT collision
#define ATELEM_DREW_HITMARK (1 << 6) // Already drew hitmark for this frame
#define ATELEM_UNK7 (1 << 7) // Unknown purpose. Used by some enemy quads
#define BUMP_NONE 0 // No flags set. Cannot have AC collisions
#define BUMP_ON (1 << 0) // Can have AC collisions
#define BUMP_HIT (1 << 1) // Had an AC collision
#define BUMP_HOOKABLE (1 << 2) // Can be hooked if actor has hookability flags set.
#define BUMP_NO_AT_INFO (1 << 3) // Does not give its info to the AT collider that hit it.
#define BUMP_NO_DAMAGE (1 << 4) // Does not take damage.
#define BUMP_NO_SWORD_SFX (1 << 5) // Does not have a sound effect when hit by player-attached AT colliders.
#define BUMP_NO_HITMARK (1 << 6) // Skips hit effects.
#define BUMP_DRAW_HITMARK (1 << 7) // Draw hitmark for AC collision this frame.
#define ACELEM_NONE 0 // No flags set. Cannot have AC collisions
#define ACELEM_ON (1 << 0) // Can have AC collisions
#define ACELEM_HIT (1 << 1) // Had an AC collision
#define ACELEM_HOOKABLE (1 << 2) // Can be hooked if actor has hookability flags set.
#define ACELEM_NO_AT_INFO (1 << 3) // Does not give its info to the AT collider that hit it.
#define ACELEM_NO_DAMAGE (1 << 4) // Does not take damage.
#define ACELEM_NO_SWORD_SFX (1 << 5) // Does not have a sound effect when hit by player-attached AT colliders.
#define ACELEM_NO_HITMARK (1 << 6) // Skips hit effects.
#define ACELEM_DRAW_HITMARK (1 << 7) // Draw hitmark for AC collision this frame.
#define OCELEM_NONE 0 // No flags set. Cannot have OC collisions
#define OCELEM_ON (1 << 0) // Can have OC collisions

View file

@ -3,20 +3,6 @@
#include "ultra64.h"
/**
* Special type for blocks of cutscene data, asm-processor checks
* arrays for CutsceneData type and converts floats within the array
* to their IEEE-754 representation. The array must close with };
* on its own line.
*
* Files that contain this type that are included in other C files
* must be preceded by a '#pragma asmproc recurse' qualifier to
* inform asm-processor that it must recursively process that include.
*
* Example:
* #pragma asmproc recurse
* #include "file.c"
*/
typedef union CutsceneData {
s32 i;
f32 f;

View file

@ -21,9 +21,18 @@
* when sometimes only the `startFrame` matters (as documented).
*/
/**
* CMD_F expects an (IEEE 754) encoded float (colloquially "in hex", such as `0x42280000`),
* rather than a C float literal (such as `42.0f`).
* Float literals cannot be used because cutscenes are arrays of union type CutsceneData, which may contain integers and floats.
* Regardless of CutsceneData having a float member, initializing with a float will cast the float to s32.
* Designated initializers (added in C99) would solve this problem but are not supported by IDO (C89 and some extensions).
*/
#ifdef __GNUC__
#define CS_FLOAT(ieee754bin, f) (f)
#define CMD_F(a) {.f = (a)}
#else
#define CS_FLOAT(ieee754bin, f) (ieee754bin)
#define CMD_F(a) {(a)}
#endif

View file

@ -3,6 +3,7 @@
#include "ultra64.h"
#include "alignment.h"
#include "romfile.h"
typedef struct {
/* 0x00 */ uintptr_t vromAddr; // VROM address (source)
@ -16,24 +17,11 @@ typedef struct {
} DmaRequest; // size = 0x20
typedef struct {
/* 0x00 */ uintptr_t vromStart;
/* 0x04 */ uintptr_t vromEnd;
/* 0x00 */ RomFile file;
/* 0x08 */ uintptr_t romStart;
/* 0x0C */ uintptr_t romEnd;
} DmaEntry;
typedef struct {
/* 0x00 */ uintptr_t vromStart;
/* 0x04 */ uintptr_t vromEnd;
} RomFile; // size = 0x8
#define ROM_FILE(name) \
{ (uintptr_t)_##name##SegmentRomStart, (uintptr_t)_##name##SegmentRomEnd }
#define ROM_FILE_EMPTY(name) \
{ (uintptr_t)_##name##SegmentRomStart, (uintptr_t)_##name##SegmentRomStart }
#define ROM_FILE_UNSET \
{ 0 }
extern DmaEntry gDmaDataTable[];
extern u32 gDmaMgrVerbose;

View file

@ -202,8 +202,7 @@ typedef struct {
} EffectSsInit; // size = 0x08
typedef struct {
/* 0x00 */ uintptr_t vromStart;
/* 0x04 */ uintptr_t vromEnd;
/* 0x00 */ RomFile file;
/* 0x08 */ void* vramStart;
/* 0x0C */ void* vramEnd;
/* 0x10 */ void* loadedRamAddr;

View file

@ -23,7 +23,7 @@ typedef struct {
} ObjectContext; // size = 0x518
#define DEFINE_OBJECT(_0, enum) enum,
#define DEFINE_OBJECT_NULL(_0, enum) enum,
#define DEFINE_OBJECT_EMPTY(_0, enum) enum,
#define DEFINE_OBJECT_UNSET(enum) enum,
typedef enum {
@ -32,7 +32,7 @@ typedef enum {
} ObjectId;
#undef DEFINE_OBJECT
#undef DEFINE_OBJECT_NULL
#undef DEFINE_OBJECT_EMPTY
#undef DEFINE_OBJECT_UNSET
#endif

View file

@ -15,5 +15,6 @@ toml
# tools
mapfile-parser>=2.3.5,<3.0.0
pyelftools==0.30
rabbitizer>=1.0.0,<2.0.0
spimdisasm>=1.21.0,<2.0.0

5
spec
View file

@ -256,7 +256,12 @@ endseg
beginseg
name "nes_font_static"
romalign 0x1000
#if OOT_DEBUG
include "$(BUILD_DIR)/assets/textures/nes_font_static/nes_font_static.o"
#else
// TODO: Remove this hack once assets are extracted from gc-eu-mq
include "$(BUILD_DIR)/baserom/nes_font_static.o"
#endif
number 10
endseg

View file

@ -1259,7 +1259,6 @@ u32 sOcarinaInputButtonCur;
u32 sOcarinaInputButtonStart;
u32 sOcarinaInputButtonPrev;
s32 sOcarinaInputButtonPress;
s32 sOcarinaUnused;
u8 sCurOcarinaSongWithoutMusicStaff[8];
u8 sOcarinaWithoutMusicStaffPos;
u8 sOcarinaHasStartedSong;

View file

@ -286,8 +286,8 @@ const char* DmaMgr_FindFileName(uintptr_t vrom) {
DmaEntry* iter = gDmaDataTable;
const char** name = sDmaMgrFileNames;
while (iter->vromEnd != 0) {
if (vrom >= iter->vromStart && vrom < iter->vromEnd) {
while (iter->file.vromEnd != 0) {
if (vrom >= iter->file.vromStart && vrom < iter->file.vromEnd) {
return *name;
}
@ -343,8 +343,8 @@ void DmaMgr_ProcessRequest(DmaRequest* req) {
// Iterate through the DMA data table until the region containing the vrom address for this request is found
iter = gDmaDataTable;
while (iter->vromEnd != 0) {
if (vrom >= iter->vromStart && vrom < iter->vromEnd) {
while (iter->file.vromEnd != 0) {
if (vrom >= iter->file.vromStart && vrom < iter->file.vromEnd) {
// Found the region this request falls into
if (0) {
@ -357,7 +357,7 @@ void DmaMgr_ProcessRequest(DmaRequest* req) {
// romEnd of 0 indicates that the file is uncompressed. Files that are stored uncompressed can have
// only part of their content loaded into RAM, so DMA only the requested region.
if (iter->vromEnd < vrom + size) {
if (iter->file.vromEnd < vrom + size) {
// Error, vrom + size ends up in a different file than it started in
// "DMA transfers cannot cross segment boundaries"
@ -365,7 +365,7 @@ void DmaMgr_ProcessRequest(DmaRequest* req) {
"セグメント境界をまたがってDMA転送することはできません", "../z_std_dma.c", 726);
}
DmaMgr_DmaRomToRam(iter->romStart + (vrom - iter->vromStart), ram, size);
DmaMgr_DmaRomToRam(iter->romStart + (vrom - iter->file.vromStart), ram, size);
found = true;
if (0) {
@ -377,7 +377,7 @@ void DmaMgr_ProcessRequest(DmaRequest* req) {
romStart = iter->romStart;
romSize = iter->romEnd - iter->romStart;
if (vrom != iter->vromStart) {
if (vrom != iter->file.vromStart) {
// Error, requested vrom is not the start of a file
// "DMA transfer cannot be performed from the middle of a compressed segment"
@ -385,7 +385,7 @@ void DmaMgr_ProcessRequest(DmaRequest* req) {
"圧縮されたセグメントの途中からはDMA転送することはできません", "../z_std_dma.c", 746);
}
if (size != iter->vromEnd - iter->vromStart) {
if (size != iter->file.vromEnd - iter->file.vromStart) {
// Error, only part of the file was requested
// "It is not possible to DMA only part of a compressed segment"
@ -557,13 +557,14 @@ void DmaMgr_Init(void) {
// Check if the ROM is compressed (romEnd not 0)
sDmaMgrIsRomCompressed = false;
while (iter->vromEnd != 0) {
while (iter->file.vromEnd != 0) {
if (iter->romEnd != 0) {
sDmaMgrIsRomCompressed = true;
}
PRINTF("%3d %08x %08x %08x %08x %08x %c %s\n", idx, iter->vromStart, iter->vromEnd, iter->romStart,
iter->romEnd, (iter->romEnd != 0) ? iter->romEnd - iter->romStart : iter->vromEnd - iter->vromStart,
PRINTF("%3d %08x %08x %08x %08x %08x %c %s\n", idx, iter->file.vromStart, iter->file.vromEnd, iter->romStart,
iter->romEnd,
(iter->romEnd != 0) ? iter->romEnd - iter->romStart : iter->file.vromEnd - iter->file.vromStart,
(((iter->romEnd != 0) ? iter->romEnd - iter->romStart : 0) > 0x10000) ? '*' : ' ', name ? *name : "");
idx++;
@ -576,9 +577,9 @@ void DmaMgr_Init(void) {
#endif
// Ensure that the boot segment always follows after the makerom segment.
if ((uintptr_t)_bootSegmentRomStart != gDmaDataTable[0].vromEnd) {
if ((uintptr_t)_bootSegmentRomStart != gDmaDataTable[0].file.vromEnd) {
PRINTF("_bootSegmentRomStart(%08x) != dma_rom_ad[0].rom_b(%08x)\n", _bootSegmentRomStart,
gDmaDataTable[0].vromEnd);
gDmaDataTable[0].file.vromEnd);
//! @bug The main code file where fault.c resides is not yet loaded
Fault_AddHungupAndCrash("../z_std_dma.c", 1055);
}

View file

@ -6,24 +6,24 @@ u32 gObjectTableSize = ARRAY_COUNT(gObjectTable);
// Object linker symbol declarations (used in the table below)
#define DEFINE_OBJECT(name, _1) DECLARE_ROM_SEGMENT(name)
#define DEFINE_OBJECT_NULL(_0, _1)
#define DEFINE_OBJECT_EMPTY(_0, _1)
#define DEFINE_OBJECT_UNSET(_0)
#include "tables/object_table.h"
#undef DEFINE_OBJECT
#undef DEFINE_OBJECT_NULL
#undef DEFINE_OBJECT_EMPTY
#undef DEFINE_OBJECT_UNSET
// Object Table definition
#define DEFINE_OBJECT(name, _1) ROM_FILE(name),
#define DEFINE_OBJECT_NULL(name, _1) ROM_FILE_EMPTY(name),
#define DEFINE_OBJECT_UNSET(_0) { 0 },
#define DEFINE_OBJECT_EMPTY(name, _1) ROM_FILE_EMPTY(name),
#define DEFINE_OBJECT_UNSET(_0) ROM_FILE_UNSET,
RomFile gObjectTable[] = {
#include "tables/object_table.h"
};
#undef DEFINE_OBJECT
#undef DEFINE_OBJECT_NULL
#undef DEFINE_OBJECT_EMPTY
#undef DEFINE_OBJECT_UNSET

View file

@ -10,7 +10,7 @@ void Overlay_LoadGameState(GameStateOverlay* overlayEntry) {
if (overlayEntry->vramStart == NULL) {
overlayEntry->unk_28 = 0;
} else {
overlayEntry->loadedRamAddr = Overlay_AllocateAndLoad(overlayEntry->vromStart, overlayEntry->vromEnd,
overlayEntry->loadedRamAddr = Overlay_AllocateAndLoad(overlayEntry->file.vromStart, overlayEntry->file.vromEnd,
overlayEntry->vramStart, overlayEntry->vramEnd);
if (overlayEntry->loadedRamAddr == NULL) {

View file

@ -2877,8 +2877,8 @@ Actor* Actor_Spawn(ActorContext* actorCtx, PlayState* play, s16 actorId, f32 pos
return NULL;
}
Overlay_Load(overlayEntry->vromStart, overlayEntry->vromEnd, overlayEntry->vramStart, overlayEntry->vramEnd,
overlayEntry->loadedRamAddr);
Overlay_Load(overlayEntry->file.vromStart, overlayEntry->file.vromEnd, overlayEntry->vramStart,
overlayEntry->vramEnd, overlayEntry->loadedRamAddr);
PRINTF(VT_FGCOL(GREEN));
PRINTF("OVL(a):Seg:%08x-%08x Ram:%08x-%08x Off:%08x %s\n", overlayEntry->vramStart, overlayEntry->vramEnd,
@ -4324,24 +4324,24 @@ u8 Actor_ApplyDamage(Actor* actor) {
void Actor_SetDropFlag(Actor* actor, ColliderElement* elem, s32 freezeFlag) {
if (elem->acHitElem == NULL) {
actor->dropFlag = 0x00;
} else if (freezeFlag && (elem->acHitElem->toucher.dmgFlags & (DMG_UNKNOWN_1 | DMG_MAGIC_ICE | DMG_MAGIC_FIRE))) {
actor->freezeTimer = elem->acHitElem->toucher.damage;
} else if (freezeFlag && (elem->acHitElem->atDmgInfo.dmgFlags & (DMG_UNKNOWN_1 | DMG_MAGIC_ICE | DMG_MAGIC_FIRE))) {
actor->freezeTimer = elem->acHitElem->atDmgInfo.damage;
actor->dropFlag = 0x00;
} else if (elem->acHitElem->toucher.dmgFlags & DMG_ARROW_FIRE) {
} else if (elem->acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_FIRE) {
actor->dropFlag = 0x01;
} else if (elem->acHitElem->toucher.dmgFlags & DMG_ARROW_ICE) {
} else if (elem->acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_ICE) {
actor->dropFlag = 0x02;
} else if (elem->acHitElem->toucher.dmgFlags & DMG_ARROW_UNK1) {
} else if (elem->acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_UNK1) {
actor->dropFlag = 0x04;
} else if (elem->acHitElem->toucher.dmgFlags & DMG_ARROW_UNK2) {
} else if (elem->acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_UNK2) {
actor->dropFlag = 0x08;
} else if (elem->acHitElem->toucher.dmgFlags & DMG_ARROW_UNK3) {
} else if (elem->acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_UNK3) {
actor->dropFlag = 0x10;
} else if (elem->acHitElem->toucher.dmgFlags & DMG_ARROW_LIGHT) {
} else if (elem->acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_LIGHT) {
actor->dropFlag = 0x20;
} else if (elem->acHitElem->toucher.dmgFlags & DMG_MAGIC_LIGHT) {
} else if (elem->acHitElem->atDmgInfo.dmgFlags & DMG_MAGIC_LIGHT) {
if (freezeFlag) {
actor->freezeTimer = elem->acHitElem->toucher.damage;
actor->freezeTimer = elem->acHitElem->atDmgInfo.damage;
}
actor->dropFlag = 0x40;
} else {
@ -4361,24 +4361,24 @@ void Actor_SetDropFlagJntSph(Actor* actor, ColliderJntSph* jntSph, s32 freezeFla
if (elem->acHitElem == NULL) {
flag = 0x00;
} else if (freezeFlag &&
(elem->acHitElem->toucher.dmgFlags & (DMG_UNKNOWN_1 | DMG_MAGIC_ICE | DMG_MAGIC_FIRE))) {
actor->freezeTimer = elem->acHitElem->toucher.damage;
(elem->acHitElem->atDmgInfo.dmgFlags & (DMG_UNKNOWN_1 | DMG_MAGIC_ICE | DMG_MAGIC_FIRE))) {
actor->freezeTimer = elem->acHitElem->atDmgInfo.damage;
flag = 0x00;
} else if (elem->acHitElem->toucher.dmgFlags & DMG_ARROW_FIRE) {
} else if (elem->acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_FIRE) {
flag = 0x01;
} else if (elem->acHitElem->toucher.dmgFlags & DMG_ARROW_ICE) {
} else if (elem->acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_ICE) {
flag = 0x02;
} else if (elem->acHitElem->toucher.dmgFlags & DMG_ARROW_UNK1) {
} else if (elem->acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_UNK1) {
flag = 0x04;
} else if (elem->acHitElem->toucher.dmgFlags & DMG_ARROW_UNK2) {
} else if (elem->acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_UNK2) {
flag = 0x08;
} else if (elem->acHitElem->toucher.dmgFlags & DMG_ARROW_UNK3) {
} else if (elem->acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_UNK3) {
flag = 0x10;
} else if (elem->acHitElem->toucher.dmgFlags & DMG_ARROW_LIGHT) {
} else if (elem->acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_LIGHT) {
flag = 0x20;
} else if (elem->acHitElem->toucher.dmgFlags & DMG_MAGIC_LIGHT) {
} else if (elem->acHitElem->atDmgInfo.dmgFlags & DMG_MAGIC_LIGHT) {
if (freezeFlag) {
actor->freezeTimer = elem->acHitElem->toucher.damage;
actor->freezeTimer = elem->acHitElem->atDmgInfo.damage;
}
flag = 0x40;
} else {

View file

@ -26,34 +26,41 @@
#if OOT_DEBUG
#define DEFINE_ACTOR(name, _1, allocType, nameString) \
{ (uintptr_t)_ovl_##name##SegmentRomStart, \
(uintptr_t)_ovl_##name##SegmentRomEnd, \
{ \
ROM_FILE(ovl_##name), \
_ovl_##name##SegmentStart, \
_ovl_##name##SegmentEnd, \
NULL, \
&name##_InitVars, \
nameString, \
allocType, \
0 },
0, \
},
#define DEFINE_ACTOR_INTERNAL(name, _1, allocType, nameString) \
{ 0, 0, NULL, NULL, NULL, &name##_InitVars, nameString, allocType, 0 },
{ \
ROM_FILE_UNSET, NULL, NULL, NULL, &name##_InitVars, nameString, allocType, 0, \
},
#else
// Actor name is set to NULL in retail builds
#define DEFINE_ACTOR(name, _1, allocType, _3) \
{ (uintptr_t)_ovl_##name##SegmentRomStart, \
(uintptr_t)_ovl_##name##SegmentRomEnd, \
{ \
ROM_FILE(ovl_##name), \
_ovl_##name##SegmentStart, \
_ovl_##name##SegmentEnd, \
NULL, \
&name##_InitVars, \
NULL, \
allocType, \
0 },
0, \
},
#define DEFINE_ACTOR_INTERNAL(name, _1, allocType, _3) { 0, 0, NULL, NULL, NULL, &name##_InitVars, NULL, allocType, 0 },
#define DEFINE_ACTOR_INTERNAL(name, _1, allocType, _3) \
{ \
ROM_FILE_UNSET, NULL, NULL, NULL, &name##_InitVars, NULL, allocType, 0, \
},
#endif
@ -80,7 +87,7 @@ void ActorOverlayTable_LogPrint(void) {
PRINTF("RomStart RomEnd SegStart SegEnd allocp profile segname\n");
for (i = 0, overlayEntry = &gActorOverlayTable[0]; i < (u32)gMaxActorId; i++, overlayEntry++) {
PRINTF("%08x %08x %08x %08x %08x %08x %s\n", overlayEntry->vromStart, overlayEntry->vromEnd,
PRINTF("%08x %08x %08x %08x %08x %08x %s\n", overlayEntry->file.vromStart, overlayEntry->file.vromEnd,
overlayEntry->vramStart, overlayEntry->vramEnd, overlayEntry->loadedRamAddr, &overlayEntry->initInfo->id,
overlayEntry->name != NULL ? overlayEntry->name : "?");
}

View file

@ -139,18 +139,19 @@ void Collider_ResetOCBase(PlayState* play, Collider* col) {
col->ocFlags2 &= ~OC2_HIT_PLAYER;
}
s32 Collider_InitElementTouch(PlayState* play, ColliderElementTouch* touch) {
static ColliderElementTouch init = { 0x00000000, 0, 0 };
s32 Collider_InitElementDamageInfoAT(PlayState* play, ColliderElementDamageInfoAT* atDmgInfo) {
static ColliderElementDamageInfoAT init = { 0x00000000, 0, 0 };
*touch = init;
*atDmgInfo = init;
return true;
}
s32 Collider_DestroyElementTouch(PlayState* play, ColliderElementTouch* touch) {
s32 Collider_DestroyElementDamageInfoAT(PlayState* play, ColliderElementDamageInfoAT* atDmgInfo) {
return true;
}
s32 Collider_SetElementTouch(PlayState* play, ColliderElementTouch* dest, ColliderElementTouch* src) {
s32 Collider_SetElementDamageInfoAT(PlayState* play, ColliderElementDamageInfoAT* dest,
ColliderElementDamageInfoAT* src) {
dest->dmgFlags = src->dmgFlags;
dest->effect = src->effect;
dest->damage = src->damage;
@ -160,51 +161,52 @@ s32 Collider_SetElementTouch(PlayState* play, ColliderElementTouch* dest, Collid
void Collider_ResetATElement_Unk(PlayState* play, ColliderElement* elem) {
}
s32 Collider_InitElementBump(PlayState* play, ColliderElementBump* bump) {
static ColliderElementBump init = { 0xFFCFFFFF, 0, 0, { 0, 0, 0 } };
s32 Collider_InitElementDamageInfoAC(PlayState* play, ColliderElementDamageInfoAC* acDmgInfo) {
static ColliderElementDamageInfoAC init = { 0xFFCFFFFF, 0, 0, { 0, 0, 0 } };
*bump = init;
*acDmgInfo = init;
return true;
}
s32 Collider_DestroyElementBump(PlayState* play, ColliderElementBump* bump) {
s32 Collider_DestroyElementDamageInfoAC(PlayState* play, ColliderElementDamageInfoAC* acDmgInfo) {
return true;
}
s32 Collider_SetElementBump(PlayState* play, ColliderElementBump* bump, ColliderElementBumpInit* init) {
bump->dmgFlags = init->dmgFlags;
bump->effect = init->effect;
bump->defense = init->defense;
s32 Collider_SetElementDamageInfoAC(PlayState* play, ColliderElementDamageInfoAC* acDmgInfo,
ColliderElementDamageInfoACInit* init) {
acDmgInfo->dmgFlags = init->dmgFlags;
acDmgInfo->effect = init->effect;
acDmgInfo->defense = init->defense;
return true;
}
s32 Collider_InitElement(PlayState* play, ColliderElement* elem) {
static ColliderElement init = {
{ 0, 0, 0 }, { 0xFFCFFFFF, 0, 0, { 0, 0, 0 } },
ELEMTYPE_UNK0, TOUCH_NONE,
BUMP_NONE, OCELEM_NONE,
ELEMTYPE_UNK0, ATELEM_NONE,
ACELEM_NONE, OCELEM_NONE,
NULL, NULL,
NULL, NULL,
};
*elem = init;
Collider_InitElementTouch(play, &elem->toucher);
Collider_InitElementBump(play, &elem->bumper);
Collider_InitElementDamageInfoAT(play, &elem->atDmgInfo);
Collider_InitElementDamageInfoAC(play, &elem->acDmgInfo);
return true;
}
s32 Collider_DestroyElement(PlayState* play, ColliderElement* elem) {
Collider_DestroyElementTouch(play, &elem->toucher);
Collider_DestroyElementBump(play, &elem->bumper);
Collider_DestroyElementDamageInfoAT(play, &elem->atDmgInfo);
Collider_DestroyElementDamageInfoAC(play, &elem->acDmgInfo);
return true;
}
s32 Collider_SetElement(PlayState* play, ColliderElement* elem, ColliderElementInit* elemInit) {
elem->elemType = elemInit->elemType;
Collider_SetElementTouch(play, &elem->toucher, &elemInit->toucher);
Collider_SetElementBump(play, &elem->bumper, &elemInit->bumper);
elem->toucherFlags = elemInit->toucherFlags;
elem->bumperFlags = elemInit->bumperFlags;
Collider_SetElementDamageInfoAT(play, &elem->atDmgInfo, &elemInit->atDmgInfo);
Collider_SetElementDamageInfoAC(play, &elem->acDmgInfo, &elemInit->acDmgInfo);
elem->atElemFlags = elemInit->atElemFlags;
elem->acElemFlags = elemInit->acElemFlags;
elem->ocElemFlags = elemInit->ocElemFlags;
return true;
}
@ -212,15 +214,15 @@ s32 Collider_SetElement(PlayState* play, ColliderElement* elem, ColliderElementI
void Collider_ResetATElement(PlayState* play, ColliderElement* elem) {
elem->atHit = NULL;
elem->atHitElem = NULL;
elem->toucherFlags &= ~TOUCH_HIT;
elem->toucherFlags &= ~TOUCH_DREW_HITMARK;
elem->atElemFlags &= ~ATELEM_HIT;
elem->atElemFlags &= ~ATELEM_DREW_HITMARK;
Collider_ResetATElement_Unk(play, elem);
}
void Collider_ResetACElement(PlayState* play, ColliderElement* elem) {
elem->bumper.hitPos.x = elem->bumper.hitPos.y = elem->bumper.hitPos.z = 0;
elem->bumperFlags &= ~BUMP_HIT;
elem->bumperFlags &= ~BUMP_DRAW_HITMARK;
elem->acDmgInfo.hitPos.x = elem->acDmgInfo.hitPos.y = elem->acDmgInfo.hitPos.z = 0;
elem->acElemFlags &= ~ACELEM_HIT;
elem->acElemFlags &= ~ACELEM_DRAW_HITMARK;
elem->acHit = NULL;
elem->acHitElem = NULL;
}
@ -929,7 +931,7 @@ s32 Collider_QuadSetNearestAC(PlayState* play, ColliderQuad* quad, Vec3f* hitPos
f32 acDistSq;
Vec3f dcMid;
if (!(quad->elem.toucherFlags & TOUCH_NEAREST)) {
if (!(quad->elem.atElemFlags & ATELEM_NEAREST)) {
return true;
}
Math_Vec3s_ToVec3f(&dcMid, &quad->dim.dcMid);
@ -1366,21 +1368,15 @@ s32 CollisionCheck_SetOCLine(PlayState* play, CollisionCheckContext* colChkCtx,
return index;
}
/**
* Skips AT elements that are off.
*/
s32 CollisionCheck_SkipElementTouch(ColliderElement* elem) {
if (!(elem->toucherFlags & TOUCH_ON)) {
s32 CollisionCheck_IsElementNotAT(ColliderElement* elem) {
if (!(elem->atElemFlags & ATELEM_ON)) {
return true;
}
return false;
}
/**
* Skips AC elements that are off.
*/
s32 CollisionCheck_SkipElementBump(ColliderElement* elem) {
if (!(elem->bumperFlags & BUMP_ON)) {
s32 CollisionCheck_IsElementNotAC(ColliderElement* elem) {
if (!(elem->acElemFlags & ACELEM_ON)) {
return true;
}
return false;
@ -1390,7 +1386,7 @@ s32 CollisionCheck_SkipElementBump(ColliderElement* elem) {
* If the AT element has no dmgFlags in common with the AC element, no collision happens.
*/
s32 CollisionCheck_NoSharedFlags(ColliderElement* atElem, ColliderElement* acElem) {
if (!(atElem->toucher.dmgFlags & acElem->bumper.dmgFlags)) {
if (!(atElem->atDmgInfo.dmgFlags & acElem->acDmgInfo.dmgFlags)) {
return true;
}
return false;
@ -1538,9 +1534,9 @@ void CollisionCheck_RedBloodUnused(PlayState* play, Collider* collider, Vec3f* v
* Plays sound effects and displays hitmarks for solid-type AC colliders (METAL, WOOD, HARD, and TREE)
*/
void CollisionCheck_HitSolid(PlayState* play, ColliderElement* elem, Collider* collider, Vec3f* hitPos) {
s32 flags = elem->toucherFlags & TOUCH_SFX_MASK;
s32 flags = elem->atElemFlags & ATELEM_SFX_MASK;
if (flags == TOUCH_SFX_NORMAL && collider->colType != COLTYPE_METAL) {
if (flags == ATELEM_SFX_NORMAL && collider->colType != COLTYPE_METAL) {
EffectSsHitMark_SpawnFixedScale(play, EFFECT_HITMARK_WHITE, hitPos);
if (collider->actor == NULL) {
Audio_PlaySfxGeneral(NA_SE_IT_SHIELD_BOUND, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale,
@ -1549,14 +1545,14 @@ void CollisionCheck_HitSolid(PlayState* play, ColliderElement* elem, Collider* c
Audio_PlaySfxGeneral(NA_SE_IT_SHIELD_BOUND, &collider->actor->projectedPos, 4, &gSfxDefaultFreqAndVolScale,
&gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
}
} else if (flags == TOUCH_SFX_NORMAL) { // collider->colType == COLTYPE_METAL
} else if (flags == ATELEM_SFX_NORMAL) { // collider->colType == COLTYPE_METAL
EffectSsHitMark_SpawnFixedScale(play, EFFECT_HITMARK_METAL, hitPos);
if (collider->actor == NULL) {
CollisionCheck_SpawnShieldParticlesMetal(play, hitPos);
} else {
CollisionCheck_SpawnShieldParticlesMetalSfx(play, hitPos, &collider->actor->projectedPos);
}
} else if (flags == TOUCH_SFX_HARD) {
} else if (flags == ATELEM_SFX_HARD) {
EffectSsHitMark_SpawnFixedScale(play, EFFECT_HITMARK_WHITE, hitPos);
if (collider->actor == NULL) {
Audio_PlaySfxGeneral(NA_SE_IT_SHIELD_BOUND, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale,
@ -1565,7 +1561,7 @@ void CollisionCheck_HitSolid(PlayState* play, ColliderElement* elem, Collider* c
Audio_PlaySfxGeneral(NA_SE_IT_SHIELD_BOUND, &collider->actor->projectedPos, 4, &gSfxDefaultFreqAndVolScale,
&gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
}
} else if (flags == TOUCH_SFX_WOOD) {
} else if (flags == ATELEM_SFX_WOOD) {
EffectSsHitMark_SpawnFixedScale(play, EFFECT_HITMARK_DUST, hitPos);
if (collider->actor == NULL) {
Audio_PlaySfxGeneral(NA_SE_IT_REFLECTION_WOOD, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale,
@ -1655,10 +1651,10 @@ static HitInfo sHitInfo[] = {
*/
void CollisionCheck_HitEffects(PlayState* play, Collider* atCol, ColliderElement* atElem, Collider* acCol,
ColliderElement* acElem, Vec3f* hitPos) {
if (acElem->bumperFlags & BUMP_NO_HITMARK) {
if (acElem->acElemFlags & ACELEM_NO_HITMARK) {
return;
}
if (!(atElem->toucherFlags & TOUCH_AT_HITMARK) && atElem->toucherFlags & TOUCH_DREW_HITMARK) {
if (!(atElem->atElemFlags & ATELEM_AT_HITMARK) && atElem->atElemFlags & ATELEM_DREW_HITMARK) {
return;
}
if (acCol->actor != NULL) {
@ -1677,7 +1673,7 @@ void CollisionCheck_HitEffects(PlayState* play, Collider* atCol, ColliderElement
}
} else if (sHitInfo[acCol->colType].effect != HIT_NONE) {
EffectSsHitMark_SpawnFixedScale(play, sHitInfo[acCol->colType].effect, hitPos);
if (!(acElem->bumperFlags & BUMP_NO_SWORD_SFX)) {
if (!(acElem->acElemFlags & ACELEM_NO_SWORD_SFX)) {
CollisionCheck_SwordHitAudio(atCol, acElem);
}
}
@ -1709,33 +1705,33 @@ s32 CollisionCheck_SetATvsAC(PlayState* play, Collider* atCol, ColliderElement*
if (acCol->acFlags & AC_HARD && atCol->actor != NULL && acCol->actor != NULL) {
CollisionCheck_SetBounce(atCol, acCol);
}
if (!(acElem->bumperFlags & BUMP_NO_AT_INFO)) {
if (!(acElem->acElemFlags & ACELEM_NO_AT_INFO)) {
atCol->atFlags |= AT_HIT;
atCol->at = acCol->actor;
atElem->atHit = acCol;
atElem->atHitElem = acElem;
atElem->toucherFlags |= TOUCH_HIT;
atElem->atElemFlags |= ATELEM_HIT;
if (atCol->actor != NULL) {
atCol->actor->colChkInfo.atHitEffect = acElem->bumper.effect;
atCol->actor->colChkInfo.atHitEffect = acElem->acDmgInfo.effect;
}
}
acCol->acFlags |= AC_HIT;
acCol->ac = atCol->actor;
acElem->acHit = atCol;
acElem->acHitElem = atElem;
acElem->bumperFlags |= BUMP_HIT;
acElem->acElemFlags |= ACELEM_HIT;
if (acCol->actor != NULL) {
acCol->actor->colChkInfo.acHitEffect = atElem->toucher.effect;
acCol->actor->colChkInfo.acHitEffect = atElem->atDmgInfo.effect;
}
acElem->bumper.hitPos.x = hitPos->x;
acElem->bumper.hitPos.y = hitPos->y;
acElem->bumper.hitPos.z = hitPos->z;
if (!(atElem->toucherFlags & TOUCH_AT_HITMARK) && acCol->colType != COLTYPE_METAL &&
acElem->acDmgInfo.hitPos.x = hitPos->x;
acElem->acDmgInfo.hitPos.y = hitPos->y;
acElem->acDmgInfo.hitPos.z = hitPos->z;
if (!(atElem->atElemFlags & ATELEM_AT_HITMARK) && acCol->colType != COLTYPE_METAL &&
acCol->colType != COLTYPE_WOOD && acCol->colType != COLTYPE_HARD) {
acElem->bumperFlags |= BUMP_DRAW_HITMARK;
acElem->acElemFlags |= ACELEM_DRAW_HITMARK;
} else {
CollisionCheck_HitEffects(play, atCol, atElem, acCol, acElem, hitPos);
atElem->toucherFlags |= TOUCH_DREW_HITMARK;
atElem->atElemFlags |= ATELEM_DREW_HITMARK;
}
return true;
}
@ -1751,12 +1747,12 @@ void CollisionCheck_ATJntSphVsACJntSph(PlayState* play, CollisionCheckContext* c
if (atJntSph->count > 0 && atJntSph->elements != NULL && acJntSph->count > 0 && acJntSph->elements != NULL) {
for (atJntSphElem = atJntSph->elements; atJntSphElem < atJntSph->elements + atJntSph->count; atJntSphElem++) {
if (CollisionCheck_SkipElementTouch(&atJntSphElem->base) == true) {
if (CollisionCheck_IsElementNotAT(&atJntSphElem->base) == true) {
continue;
}
for (acJntSphElem = acJntSph->elements; acJntSphElem < acJntSph->elements + acJntSph->count;
acJntSphElem++) {
if (CollisionCheck_SkipElementBump(&acJntSphElem->base) == true) {
if (CollisionCheck_IsElementNotAC(&acJntSphElem->base) == true) {
continue;
}
if (CollisionCheck_NoSharedFlags(&atJntSphElem->base, &acJntSphElem->base) == true) {
@ -1803,11 +1799,11 @@ void CollisionCheck_ATJntSphVsACCyl(PlayState* play, CollisionCheckContext* colC
f32 centerDist;
if (atJntSph->count > 0 && atJntSph->elements != NULL && acCyl->dim.radius > 0 && acCyl->dim.height > 0) {
if (CollisionCheck_SkipElementBump(&acCyl->elem) == true) {
if (CollisionCheck_IsElementNotAC(&acCyl->elem) == true) {
return;
}
for (atJntSphElem = atJntSph->elements; atJntSphElem < atJntSph->elements + atJntSph->count; atJntSphElem++) {
if (CollisionCheck_SkipElementTouch(&atJntSphElem->base) == true) {
if (CollisionCheck_IsElementNotAT(&atJntSphElem->base) == true) {
continue;
}
if (CollisionCheck_NoSharedFlags(&atJntSphElem->base, &acCyl->elem) == true) {
@ -1855,11 +1851,11 @@ void CollisionCheck_ATCylVsACJntSph(PlayState* play, CollisionCheckContext* colC
ColliderJntSphElement* acJntSphElem;
if (acJntSph->count > 0 && acJntSph->elements != NULL && atCyl->dim.radius > 0 && atCyl->dim.height > 0) {
if (CollisionCheck_SkipElementTouch(&atCyl->elem) == true) {
if (CollisionCheck_IsElementNotAT(&atCyl->elem) == true) {
return;
}
for (acJntSphElem = acJntSph->elements; acJntSphElem < acJntSph->elements + acJntSph->count; acJntSphElem++) {
if (CollisionCheck_SkipElementBump(&acJntSphElem->base) == true) {
if (CollisionCheck_IsElementNotAC(&acJntSphElem->base) == true) {
continue;
}
if (CollisionCheck_NoSharedFlags(&atCyl->elem, &acJntSphElem->base) == true) {
@ -1910,11 +1906,11 @@ void CollisionCheck_ATJntSphVsACTris(PlayState* play, CollisionCheckContext* col
if (atJntSph->count > 0 && atJntSph->elements != NULL && acTris->count > 0 && acTris->elements != NULL) {
for (atJntSphElem = atJntSph->elements; atJntSphElem < atJntSph->elements + atJntSph->count; atJntSphElem++) {
if (CollisionCheck_SkipElementTouch(&atJntSphElem->base) == true) {
if (CollisionCheck_IsElementNotAT(&atJntSphElem->base) == true) {
continue;
}
for (acTrisElem = acTris->elements; acTrisElem < acTris->elements + acTris->count; acTrisElem++) {
if (CollisionCheck_SkipElementBump(&acTrisElem->base) == true) {
if (CollisionCheck_IsElementNotAC(&acTrisElem->base) == true) {
continue;
}
if (CollisionCheck_NoSharedFlags(&atJntSphElem->base, &acTrisElem->base) == true) {
@ -1952,11 +1948,11 @@ void CollisionCheck_ATTrisVsACJntSph(PlayState* play, CollisionCheckContext* col
if (acJntSph->count > 0 && acJntSph->elements != NULL && atTris->count > 0 && atTris->elements != NULL) {
for (acJntSphElem = acJntSph->elements; acJntSphElem < acJntSph->elements + acJntSph->count; acJntSphElem++) {
if (CollisionCheck_SkipElementBump(&acJntSphElem->base) == true) {
if (CollisionCheck_IsElementNotAC(&acJntSphElem->base) == true) {
continue;
}
for (atTrisElem = atTris->elements; atTrisElem < atTris->elements + atTris->count; atTrisElem++) {
if (CollisionCheck_SkipElementTouch(&atTrisElem->base) == true) {
if (CollisionCheck_IsElementNotAT(&atTrisElem->base) == true) {
continue;
}
if (CollisionCheck_NoSharedFlags(&atTrisElem->base, &acJntSphElem->base) == true) {
@ -1994,13 +1990,13 @@ void CollisionCheck_ATJntSphVsACQuad(PlayState* play, CollisionCheckContext* col
ColliderJntSphElement* atJntSphElem;
if (atJntSph->count > 0 && atJntSph->elements != NULL) {
if (CollisionCheck_SkipElementBump(&acQuad->elem) == true) {
if (CollisionCheck_IsElementNotAC(&acQuad->elem) == true) {
return;
}
Math3D_TriNorm(&tri1, &acQuad->dim.quad[2], &acQuad->dim.quad[3], &acQuad->dim.quad[1]);
Math3D_TriNorm(&tri2, &acQuad->dim.quad[1], &acQuad->dim.quad[0], &acQuad->dim.quad[2]);
for (atJntSphElem = atJntSph->elements; atJntSphElem < atJntSph->elements + atJntSph->count; atJntSphElem++) {
if (CollisionCheck_SkipElementTouch(&atJntSphElem->base) == true) {
if (CollisionCheck_IsElementNotAT(&atJntSphElem->base) == true) {
continue;
}
if (CollisionCheck_NoSharedFlags(&atJntSphElem->base, &acQuad->elem) == true) {
@ -2041,13 +2037,13 @@ void CollisionCheck_ATQuadVsACJntSph(PlayState* play, CollisionCheckContext* col
ColliderJntSphElement* acJntSphElem;
if (acJntSph->count > 0 && acJntSph->elements != NULL) {
if (CollisionCheck_SkipElementTouch(&atQuad->elem) == true) {
if (CollisionCheck_IsElementNotAT(&atQuad->elem) == true) {
return;
}
Math3D_TriNorm(&tri1, &atQuad->dim.quad[2], &atQuad->dim.quad[3], &atQuad->dim.quad[1]);
Math3D_TriNorm(&tri2, &atQuad->dim.quad[2], &atQuad->dim.quad[1], &atQuad->dim.quad[0]);
for (acJntSphElem = acJntSph->elements; acJntSphElem < acJntSph->elements + acJntSph->count; acJntSphElem++) {
if (CollisionCheck_SkipElementBump(&acJntSphElem->base) == true) {
if (CollisionCheck_IsElementNotAC(&acJntSphElem->base) == true) {
continue;
}
if (CollisionCheck_NoSharedFlags(&atQuad->elem, &acJntSphElem->base) == true) {
@ -2091,10 +2087,10 @@ void CollisionCheck_ATCylVsACCyl(PlayState* play, CollisionCheckContext* colChkC
Vec3f hitPos;
if (atCyl->dim.radius > 0 && atCyl->dim.height > 0 && acCyl->dim.radius > 0 && acCyl->dim.height > 0) {
if (CollisionCheck_SkipElementBump(&acCyl->elem) == true) {
if (CollisionCheck_IsElementNotAC(&acCyl->elem) == true) {
return;
}
if (CollisionCheck_SkipElementTouch(&atCyl->elem) == true) {
if (CollisionCheck_IsElementNotAT(&atCyl->elem) == true) {
return;
}
if (CollisionCheck_NoSharedFlags(&atCyl->elem, &acCyl->elem) == true) {
@ -2128,11 +2124,11 @@ void CollisionCheck_ATCylVsACTris(PlayState* play, CollisionCheckContext* colChk
Vec3f hitPos;
if (atCyl->dim.radius > 0 && atCyl->dim.height > 0 && acTris->count > 0 && acTris->elements != NULL) {
if (CollisionCheck_SkipElementTouch(&atCyl->elem) == true) {
if (CollisionCheck_IsElementNotAT(&atCyl->elem) == true) {
return;
}
for (acTrisElem = acTris->elements; acTrisElem < acTris->elements + acTris->count; acTrisElem++) {
if (CollisionCheck_SkipElementBump(&acTrisElem->base) == true) {
if (CollisionCheck_IsElementNotAC(&acTrisElem->base) == true) {
continue;
}
if (CollisionCheck_NoSharedFlags(&atCyl->elem, &acTrisElem->base) == true) {
@ -2162,11 +2158,11 @@ void CollisionCheck_ATTrisVsACCyl(PlayState* play, CollisionCheckContext* colChk
ColliderCylinder* acCyl = (ColliderCylinder*)acCol;
if (acCyl->dim.radius > 0 && acCyl->dim.height > 0 && atTris->count > 0 && atTris->elements != NULL) {
if (CollisionCheck_SkipElementBump(&acCyl->elem) == true) {
if (CollisionCheck_IsElementNotAC(&acCyl->elem) == true) {
return;
}
for (atTrisElem = atTris->elements; atTrisElem < atTris->elements + atTris->count; atTrisElem++) {
if (CollisionCheck_SkipElementTouch(&atTrisElem->base) == true) {
if (CollisionCheck_IsElementNotAT(&atTrisElem->base) == true) {
continue;
}
if (CollisionCheck_NoSharedFlags(&atTrisElem->base, &acCyl->elem) == true) {
@ -2197,8 +2193,8 @@ void CollisionCheck_ATCylVsACQuad(PlayState* play, CollisionCheckContext* colChk
ColliderQuad* acQuad = (ColliderQuad*)acCol;
if (atCyl->dim.height > 0 && atCyl->dim.radius > 0) {
if (CollisionCheck_SkipElementTouch(&atCyl->elem) == true ||
CollisionCheck_SkipElementBump(&acQuad->elem) == true) {
if (CollisionCheck_IsElementNotAT(&atCyl->elem) == true ||
CollisionCheck_IsElementNotAC(&acQuad->elem) == true) {
return;
}
if (CollisionCheck_NoSharedFlags(&atCyl->elem, &acQuad->elem) == true) {
@ -2253,8 +2249,8 @@ void CollisionCheck_ATQuadVsACCyl(PlayState* play, CollisionCheckContext* colChk
ColliderCylinder* acCyl = (ColliderCylinder*)acCol;
if (acCyl->dim.height > 0 && acCyl->dim.radius > 0) {
if (CollisionCheck_SkipElementBump(&acCyl->elem) == true ||
CollisionCheck_SkipElementTouch(&atQuad->elem) == true) {
if (CollisionCheck_IsElementNotAC(&acCyl->elem) == true ||
CollisionCheck_IsElementNotAT(&atQuad->elem) == true) {
return;
}
if (CollisionCheck_NoSharedFlags(&atQuad->elem, &acCyl->elem) == true) {
@ -2319,11 +2315,11 @@ void CollisionCheck_ATTrisVsACTris(PlayState* play, CollisionCheckContext* colCh
if (acTris->count > 0 && acTris->elements != NULL && atTris->count > 0 && atTris->elements != NULL) {
for (acTrisElem = acTris->elements; acTrisElem < acTris->elements + acTris->count; acTrisElem++) {
if (CollisionCheck_SkipElementBump(&acTrisElem->base) == true) {
if (CollisionCheck_IsElementNotAC(&acTrisElem->base) == true) {
continue;
}
for (atTrisElem = atTris->elements; atTrisElem < atTris->elements + atTris->count; atTrisElem++) {
if (CollisionCheck_SkipElementTouch(&atTrisElem->base) == true) {
if (CollisionCheck_IsElementNotAT(&atTrisElem->base) == true) {
continue;
}
if (CollisionCheck_NoSharedFlags(&atTrisElem->base, &acTrisElem->base) == true) {
@ -2369,13 +2365,13 @@ void CollisionCheck_ATTrisVsACQuad(PlayState* play, CollisionCheckContext* colCh
ColliderQuad* acQuad = (ColliderQuad*)acCol;
if (atTris->count > 0 && atTris->elements != NULL) {
if (CollisionCheck_SkipElementBump(&acQuad->elem) == true) {
if (CollisionCheck_IsElementNotAC(&acQuad->elem) == true) {
return;
}
Math3D_TriNorm(&tri1, &acQuad->dim.quad[2], &acQuad->dim.quad[3], &acQuad->dim.quad[1]);
Math3D_TriNorm(&tri2, &acQuad->dim.quad[1], &acQuad->dim.quad[0], &acQuad->dim.quad[2]);
for (atTrisElem = atTris->elements; atTrisElem < atTris->elements + atTris->count; atTrisElem++) {
if (CollisionCheck_SkipElementTouch(&atTrisElem->base) == true) {
if (CollisionCheck_IsElementNotAT(&atTrisElem->base) == true) {
continue;
}
if (CollisionCheck_NoSharedFlags(&atTrisElem->base, &acQuad->elem) == true) {
@ -2416,13 +2412,13 @@ void CollisionCheck_ATQuadVsACTris(PlayState* play, CollisionCheckContext* colCh
ColliderTrisElement* acTrisElem;
if (acTris->count > 0 && acTris->elements != NULL) {
if (CollisionCheck_SkipElementTouch(&atQuad->elem) == true) {
if (CollisionCheck_IsElementNotAT(&atQuad->elem) == true) {
return;
}
Math3D_TriNorm(&tri1, &atQuad->dim.quad[2], &atQuad->dim.quad[3], &atQuad->dim.quad[1]);
Math3D_TriNorm(&tri2, &atQuad->dim.quad[1], &atQuad->dim.quad[0], &atQuad->dim.quad[2]);
for (acTrisElem = acTris->elements; acTrisElem < acTris->elements + acTris->count; acTrisElem++) {
if (CollisionCheck_SkipElementBump(&acTrisElem->base) == true) {
if (CollisionCheck_IsElementNotAC(&acTrisElem->base) == true) {
continue;
}
if (CollisionCheck_NoSharedFlags(&atQuad->elem, &acTrisElem->base) == true) {
@ -2468,10 +2464,10 @@ void CollisionCheck_ATQuadVsACQuad(PlayState* play, CollisionCheckContext* colCh
s32 i;
s32 j;
if (CollisionCheck_SkipElementTouch(&atQuad->elem) == true) {
if (CollisionCheck_IsElementNotAT(&atQuad->elem) == true) {
return;
}
if (CollisionCheck_SkipElementBump(&acQuad->elem) == true) {
if (CollisionCheck_IsElementNotAC(&acQuad->elem) == true) {
return;
}
if (CollisionCheck_NoSharedFlags(&atQuad->elem, &acQuad->elem) == true) {
@ -2522,14 +2518,14 @@ void CollisionCheck_SetJntSphHitFX(PlayState* play, CollisionCheckContext* colCh
ColliderJntSphElement* jntSphElem;
for (jntSphElem = jntSph->elements; jntSphElem < jntSph->elements + jntSph->count; jntSphElem++) {
if ((jntSphElem->base.bumperFlags & BUMP_DRAW_HITMARK) && (jntSphElem->base.acHitElem != NULL) &&
!(jntSphElem->base.acHitElem->toucherFlags & TOUCH_DREW_HITMARK)) {
if ((jntSphElem->base.acElemFlags & ACELEM_DRAW_HITMARK) && (jntSphElem->base.acHitElem != NULL) &&
!(jntSphElem->base.acHitElem->atElemFlags & ATELEM_DREW_HITMARK)) {
Vec3f hitPos;
Math_Vec3s_ToVec3f(&hitPos, &jntSphElem->base.bumper.hitPos);
Math_Vec3s_ToVec3f(&hitPos, &jntSphElem->base.acDmgInfo.hitPos);
CollisionCheck_HitEffects(play, jntSphElem->base.acHit, jntSphElem->base.acHitElem, &jntSph->base,
&jntSphElem->base, &hitPos);
jntSphElem->base.acHitElem->toucherFlags |= TOUCH_DREW_HITMARK;
jntSphElem->base.acHitElem->atElemFlags |= ATELEM_DREW_HITMARK;
return;
}
}
@ -2538,13 +2534,13 @@ void CollisionCheck_SetJntSphHitFX(PlayState* play, CollisionCheckContext* colCh
void CollisionCheck_SetCylHitFX(PlayState* play, CollisionCheckContext* colChkCtx, Collider* col) {
ColliderCylinder* cyl = (ColliderCylinder*)col;
if ((cyl->elem.bumperFlags & BUMP_DRAW_HITMARK) && (cyl->elem.acHitElem != NULL) &&
!(cyl->elem.acHitElem->toucherFlags & TOUCH_DREW_HITMARK)) {
if ((cyl->elem.acElemFlags & ACELEM_DRAW_HITMARK) && (cyl->elem.acHitElem != NULL) &&
!(cyl->elem.acHitElem->atElemFlags & ATELEM_DREW_HITMARK)) {
Vec3f hitPos;
Math_Vec3s_ToVec3f(&hitPos, &cyl->elem.bumper.hitPos);
Math_Vec3s_ToVec3f(&hitPos, &cyl->elem.acDmgInfo.hitPos);
CollisionCheck_HitEffects(play, cyl->elem.acHit, cyl->elem.acHitElem, &cyl->base, &cyl->elem, &hitPos);
cyl->elem.acHitElem->toucherFlags |= TOUCH_DREW_HITMARK;
cyl->elem.acHitElem->atElemFlags |= ATELEM_DREW_HITMARK;
}
}
@ -2553,14 +2549,14 @@ void CollisionCheck_SetTrisHitFX(PlayState* play, CollisionCheckContext* colChkC
ColliderTrisElement* trisElem;
for (trisElem = tris->elements; trisElem < tris->elements + tris->count; trisElem++) {
if ((trisElem->base.bumperFlags & BUMP_DRAW_HITMARK) && (trisElem->base.acHitElem != NULL) &&
!(trisElem->base.acHitElem->toucherFlags & TOUCH_DREW_HITMARK)) {
if ((trisElem->base.acElemFlags & ACELEM_DRAW_HITMARK) && (trisElem->base.acHitElem != NULL) &&
!(trisElem->base.acHitElem->atElemFlags & ATELEM_DREW_HITMARK)) {
Vec3f hitPos;
Math_Vec3s_ToVec3f(&hitPos, &trisElem->base.bumper.hitPos);
Math_Vec3s_ToVec3f(&hitPos, &trisElem->base.acDmgInfo.hitPos);
CollisionCheck_HitEffects(play, trisElem->base.acHit, trisElem->base.acHitElem, &tris->base,
&trisElem->base, &hitPos);
trisElem->base.acHitElem->toucherFlags |= TOUCH_DREW_HITMARK;
trisElem->base.acHitElem->atElemFlags |= ATELEM_DREW_HITMARK;
return;
}
}
@ -2570,11 +2566,11 @@ void CollisionCheck_SetQuadHitFX(PlayState* play, CollisionCheckContext* colChkC
ColliderQuad* quad = (ColliderQuad*)col;
Vec3f hitPos;
if ((quad->elem.bumperFlags & BUMP_DRAW_HITMARK) && (quad->elem.acHitElem != NULL) &&
!(quad->elem.acHitElem->toucherFlags & TOUCH_DREW_HITMARK)) {
Math_Vec3s_ToVec3f(&hitPos, &quad->elem.bumper.hitPos);
if ((quad->elem.acElemFlags & ACELEM_DRAW_HITMARK) && (quad->elem.acHitElem != NULL) &&
!(quad->elem.acHitElem->atElemFlags & ATELEM_DREW_HITMARK)) {
Math_Vec3s_ToVec3f(&hitPos, &quad->elem.acDmgInfo.hitPos);
CollisionCheck_HitEffects(play, quad->elem.acHit, quad->elem.acHitElem, &quad->base, &quad->elem, &hitPos);
quad->elem.acHitElem->toucherFlags |= TOUCH_DREW_HITMARK;
quad->elem.acHitElem->atElemFlags |= ATELEM_DREW_HITMARK;
}
}
@ -2661,7 +2657,7 @@ void CollisionCheck_AC(PlayState* play, CollisionCheckContext* colChkCtx, Collid
* Iterates through all AT colliders, testing them for AC collisions with each AC collider, setting the info regarding
* the collision for each AC and AT collider that collided. Then spawns hitmarks and plays sound effects for each
* successful collision. To collide, an AT collider must share a type (AC_TYPE_PLAYER, AC_TYPE_ENEMY, or AC_TYPE_OTHER)
* with the AC collider and the toucher and bumper elements that overlapped must share a dmgFlag.
* with the AC collider and the AT and AC elements that overlapped must share a dmgFlag.
*/
void CollisionCheck_AT(PlayState* play, CollisionCheckContext* colChkCtx) {
Collider** atColP;
@ -3052,20 +3048,20 @@ void CollisionCheck_ApplyDamage(PlayState* play, CollisionCheckContext* colChkCt
if (col->actor == NULL || !(col->acFlags & AC_HIT)) {
return;
}
if (!(elem->bumperFlags & BUMP_HIT) || elem->bumperFlags & BUMP_NO_DAMAGE) {
if (!(elem->acElemFlags & ACELEM_HIT) || elem->acElemFlags & ACELEM_NO_DAMAGE) {
return;
}
ASSERT(elem->acHitElem != NULL, "pclobj_elem->ac_hit_elem != NULL", "../z_collision_check.c", 6493);
tbl = col->actor->colChkInfo.damageTable;
if (tbl == NULL) {
damage = (f32)elem->acHitElem->toucher.damage - elem->bumper.defense;
damage = (f32)elem->acHitElem->atDmgInfo.damage - elem->acDmgInfo.defense;
if (damage < 0) {
damage = 0;
}
} else {
s32 i;
u32 flags = elem->acHitElem->toucher.dmgFlags;
u32 flags = elem->acHitElem->atDmgInfo.dmgFlags;
for (i = 0; i < 32; i++, flags >>= 1) {
if (flags == 1) {

View file

@ -2204,7 +2204,8 @@ void Cutscene_ProcessScript(PlayState* play, CutsceneContext* csCtx, u8* script)
void CutsceneHandler_RunScript(PlayState* play, CutsceneContext* csCtx) {
if (gSaveContext.save.cutsceneIndex >= 0xFFF0) {
if (OOT_DEBUG && BREG(0) != 0) {
#if OOT_DEBUG
if (BREG(0) != 0) {
Gfx* displayList;
Gfx* prevDisplayList;
@ -2218,8 +2219,11 @@ void CutsceneHandler_RunScript(PlayState* play, CutsceneContext* csCtx) {
Gfx_Close(prevDisplayList, displayList);
POLY_OPA_DISP = displayList;
if (1) {}
CLOSE_DISPS(play->state.gfxCtx, "../z_demo.c", 4108);
}
#endif
csCtx->curFrame++;
if (OOT_DEBUG && R_USE_DEBUG_CUTSCENE) {

View file

@ -12,7 +12,8 @@ void EffectSs_InitInfo(PlayState* play, s32 tableSize) {
for (i = 0; i < ARRAY_COUNT(gEffectSsOverlayTable); i++) {
overlay = &gEffectSsOverlayTable[i];
PRINTF("effect index %3d:size=%6dbyte romsize=%6dbyte\n", i,
(uintptr_t)overlay->vramEnd - (uintptr_t)overlay->vramStart, overlay->vromEnd - overlay->vromStart);
(uintptr_t)overlay->vramEnd - (uintptr_t)overlay->vramStart,
overlay->file.vromEnd - overlay->file.vromStart);
}
#endif
@ -205,13 +206,13 @@ void EffectSs_Spawn(PlayState* play, s32 type, s32 priority, void* initParams) {
return;
}
Overlay_Load(overlayEntry->vromStart, overlayEntry->vromEnd, overlayEntry->vramStart, overlayEntry->vramEnd,
overlayEntry->loadedRamAddr);
Overlay_Load(overlayEntry->file.vromStart, overlayEntry->file.vromEnd, overlayEntry->vramStart,
overlayEntry->vramEnd, overlayEntry->loadedRamAddr);
PRINTF(VT_FGCOL(GREEN));
PRINTF("EFFECT SS OVL:SegRom %08x %08x, Seg %08x %08x, RamStart %08x, type: %d\n", overlayEntry->vromStart,
overlayEntry->vromEnd, overlayEntry->vramStart, overlayEntry->vramEnd, overlayEntry->loadedRamAddr,
type);
PRINTF("EFFECT SS OVL:SegRom %08x %08x, Seg %08x %08x, RamStart %08x, type: %d\n",
overlayEntry->file.vromStart, overlayEntry->file.vromEnd, overlayEntry->vramStart,
overlayEntry->vramEnd, overlayEntry->loadedRamAddr, type);
PRINTF(VT_RST);
}

View file

@ -21,16 +21,13 @@
// Effect SS Overlay Table definition
#define DEFINE_EFFECT_SS(name, _1) \
{ \
(uintptr_t)_ovl_##name##SegmentRomStart, \
(uintptr_t)_ovl_##name##SegmentRomEnd, \
_ovl_##name##SegmentStart, \
_ovl_##name##SegmentEnd, \
NULL, \
&name##_InitVars, \
1, \
ROM_FILE(ovl_##name), _ovl_##name##SegmentStart, _ovl_##name##SegmentEnd, NULL, &name##_InitVars, 1, \
},
#define DEFINE_EFFECT_SS_UNSET(_0) { 0 },
#define DEFINE_EFFECT_SS_UNSET(_0) \
{ \
ROM_FILE_UNSET, NULL, NULL, NULL, NULL, 0, \
},
EffectSsOverlay gEffectSsOverlayTable[] = {
#include "tables/effect_ss_table.h"

View file

@ -45,8 +45,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK2,
{ 0x00000000, 0x00, 0x00 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_ON,
},
{ 25, 60, 0, { 0, 0, 0 } },

View file

@ -45,8 +45,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000010, 0x00, 0x00 },
TOUCH_NONE | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_NONE | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_NONE,
},
{ 10, 30, 0, { 0, 0, 0 } },

View file

@ -11,12 +11,15 @@
// Gamestate Overlay Table definition
#define DEFINE_GAMESTATE_INTERNAL(typeName, enumName) \
{ NULL, 0, 0, NULL, NULL, NULL, typeName##_Init, typeName##_Destroy, NULL, NULL, 0, sizeof(typeName##State) },
{ \
NULL, ROM_FILE_UNSET, NULL, NULL, NULL, typeName##_Init, typeName##_Destroy, NULL, NULL, \
0, sizeof(typeName##State), \
},
#define DEFINE_GAMESTATE(typeName, enumName, name) \
{ NULL, \
(uintptr_t)_ovl_##name##SegmentRomStart, \
(uintptr_t)_ovl_##name##SegmentRomEnd, \
{ \
NULL, \
ROM_FILE(ovl_##name), \
_ovl_##name##SegmentStart, \
_ovl_##name##SegmentEnd, \
NULL, \
@ -25,7 +28,8 @@
NULL, \
NULL, \
0, \
sizeof(typeName##State) },
sizeof(typeName##State), \
},
GameStateOverlay gGameStateOverlayTable[] = {
#include "tables/gamestate_table.h"

View file

@ -2,10 +2,7 @@
#include "terminal.h"
#define KALEIDO_OVERLAY(name, nameString) \
{ \
NULL, (uintptr_t)_ovl_##name##SegmentRomStart, (uintptr_t)_ovl_##name##SegmentRomEnd, \
_ovl_##name##SegmentStart, _ovl_##name##SegmentEnd, 0, nameString, \
}
{ NULL, ROM_FILE(ovl_##name), _ovl_##name##SegmentStart, _ovl_##name##SegmentEnd, 0, nameString, }
KaleidoMgrOverlay gKaleidoMgrOverlayTable[] = {
KALEIDO_OVERLAY(kaleido_scope, "kaleido_scope"),
@ -20,7 +17,7 @@ void KaleidoManager_LoadOvl(KaleidoMgrOverlay* ovl) {
LOG_UTILS_CHECK_NULL_POINTER("KaleidoArea_allocp", sKaleidoAreaPtr, "../z_kaleido_manager.c", 99);
ovl->loadedRamAddr = sKaleidoAreaPtr;
Overlay_Load(ovl->vromStart, ovl->vromEnd, ovl->vramStart, ovl->vramEnd, ovl->loadedRamAddr);
Overlay_Load(ovl->file.vromStart, ovl->file.vromEnd, ovl->vramStart, ovl->vramEnd, ovl->loadedRamAddr);
PRINTF(VT_FGCOL(GREEN));
PRINTF("OVL(k):Seg:%08x-%08x Ram:%08x-%08x Off:%08x %s\n", ovl->vramStart, ovl->vramEnd, ovl->loadedRamAddr,

View file

@ -16,8 +16,7 @@ typedef struct {
typedef struct {
/* 0x00 */ void* loadedRamAddr; // original name: "allocp"
/* 0x04 */ uintptr_t vromStart;
/* 0x08 */ uintptr_t vromEnd;
/* 0x04 */ RomFile file;
/* 0x0C */ void* vramStart;
/* 0x10 */ void* vramEnd;
/* 0x14 */ void* vramTable;
@ -43,12 +42,7 @@ static MapMarkInfo sMapMarkInfoTable[] = {
};
static MapMarkDataOverlay sMapMarkDataOvl = {
NULL,
(uintptr_t)_ovl_map_mark_dataSegmentRomStart,
(uintptr_t)_ovl_map_mark_dataSegmentRomEnd,
_ovl_map_mark_dataSegmentStart,
_ovl_map_mark_dataSegmentEnd,
gMapMarkDataTable,
NULL, ROM_FILE(ovl_map_mark_data), _ovl_map_mark_dataSegmentStart, _ovl_map_mark_dataSegmentEnd, gMapMarkDataTable,
};
static MapMarkData** sLoadedMarkDataTable;
@ -60,7 +54,8 @@ void MapMark_Init(PlayState* play) {
overlay->loadedRamAddr = GAME_STATE_ALLOC(&play->state, overlaySize, "../z_map_mark.c", 235);
LOG_UTILS_CHECK_NULL_POINTER("dlftbl->allocp", overlay->loadedRamAddr, "../z_map_mark.c", 236);
Overlay_Load(overlay->vromStart, overlay->vromEnd, overlay->vramStart, overlay->vramEnd, overlay->loadedRamAddr);
Overlay_Load(overlay->file.vromStart, overlay->file.vromEnd, overlay->vramStart, overlay->vramEnd,
overlay->loadedRamAddr);
sLoadedMarkDataTable = gMapMarkDataTable;
sLoadedMarkDataTable =

View file

@ -30,24 +30,28 @@ u16 sOcarinaSongBitFlags = 0; // ocarina bit flags
MessageTableEntry sNesMessageEntryTable[] = {
#define DEFINE_MESSAGE(textId, type, yPos, nesMessage, gerMessage, fraMessage) \
{ textId, (_SHIFTL(type, 4, 8) | _SHIFTL(yPos, 0, 8)), _message_##textId##_nes },
#define DEFINE_MESSAGE_FFFC
#define DEFINE_MESSAGE_NES(textId, type, yPos, nesMessage) DEFINE_MESSAGE(textId, type, yPos, nesMessage, , )
#include "assets/text/message_data.h"
#undef DEFINE_MESSAGE_FFFC
#undef DEFINE_MESSAGE
#undef DEFINE_MESSAGE_NES
{ 0xFFFF, 0, NULL },
};
const char* sGerMessageEntryTable[] = {
#define DEFINE_MESSAGE(textId, type, yPos, nesMessage, gerMessage, fraMessage) _message_##textId##_ger,
#define DEFINE_MESSAGE_NES(textId, type, yPos, nesMessage)
#include "assets/text/message_data.h"
#undef DEFINE_MESSAGE
#undef DEFINE_MESSAGE_NES
NULL,
};
const char* sFraMessageEntryTable[] = {
#define DEFINE_MESSAGE(textId, type, yPos, nesMessage, gerMessage, fraMessage) _message_##textId##_fra,
#define DEFINE_MESSAGE_NES(textId, type, yPos, nesMessage)
#include "assets/text/message_data.h"
#undef DEFINE_MESSAGE
#undef DEFINE_MESSAGE_NES
NULL,
};

View file

@ -11,7 +11,11 @@
// dmadata Table definition
#define DEFINE_DMA_ENTRY(name, _1) \
{ (uintptr_t)_##name##SegmentRomStart, (uintptr_t)_##name##SegmentRomEnd, (uintptr_t)_##name##SegmentRomStart, 0 },
{ \
ROM_FILE(name), \
(uintptr_t)_##name##SegmentRomStart, \
0, \
},
DmaEntry gDmaDataTable[] = {
#include "tables/dmadata_table.h"

View file

@ -10,10 +10,10 @@
// Self-hosted libc memory functions, gcc assumes these exist even in a freestanding
// environment and there is no way to tell it otherwise.
int memcmp(void* s1, const void* s2, size_t n) {
u8* m1 = (u8*)s1;
u8* m2 = (u8*)s2;
u32 i;
int memcmp(const void* s1, const void* s2, size_t n) {
const u8* m1 = s1;
const u8* m2 = s2;
size_t i;
for (i = 0; i < n; i++) {
if (m1[i] < m2[i]) {
@ -26,17 +26,38 @@ int memcmp(void* s1, const void* s2, size_t n) {
return 0;
}
void* memset(void* str, s32 c, size_t n) {
u8* m1 = (u8*)str;
u32 i;
void* memset(void* str, int c, size_t n) {
u8* m = str;
size_t i;
for (i = 0; i < n; i++) {
m1[i] = c;
m[i] = c;
}
return str;
}
void* memmove(void* dest, const void* src, size_t len) {
u8* d = dest;
const u8* s = src;
if (d == s) {
return dest;
}
if (d < s) {
while (len--) {
*d++ = *s++;
}
} else {
d += len - 1;
s += len - 1;
while (len--) {
*d-- = *s--;
}
}
return dest;
}
// Conversions involving 64-bit integer types required by the O32 MIPS ABI.
// f32 -> u64, negative values become 0

View file

@ -36,8 +36,8 @@ static ColliderQuadInit sQuadInit = {
ELEMTYPE_UNK2,
{ 0x00000080, 0x00, 0x01 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_NEAREST | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_NEAREST | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_NONE,
},
{ { { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f } } },
@ -154,7 +154,7 @@ void ArmsHook_Shoot(ArmsHook* this, PlayState* play) {
Actor* touchedActor = this->collider.base.at;
if ((touchedActor->update != NULL) && (touchedActor->flags & (ACTOR_FLAG_9 | ACTOR_FLAG_10))) {
if (this->collider.elem.atHitElem->bumperFlags & BUMP_HOOKABLE) {
if (this->collider.elem.atHitElem->acElemFlags & ACELEM_HOOKABLE) {
ArmsHook_AttachHookToActor(this, touchedActor);
if (CHECK_FLAG_ALL(touchedActor->flags, ACTOR_FLAG_10)) {
func_80865044(this);

View file

@ -68,8 +68,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_HARD,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_HARD,
ACELEM_NONE,
OCELEM_NONE,
},
{ 0x00BB, 0x0050, 0x0000, { 0 } },

View file

@ -60,8 +60,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0xEFC1FFFE, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_ON,
},
{ 0, { { 0, 120, 0 }, 370 }, 100 },

View file

@ -26,8 +26,8 @@ static ColliderTrisElementInit sTrisElementsInit[3] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x40000048, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ { { -70.0f, 176.0f, 0.0f }, { -70.0f, -4.0f, 0.0f }, { 0.0f, -4.0f, 30.0f } } },
@ -37,8 +37,8 @@ static ColliderTrisElementInit sTrisElementsInit[3] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x40000048, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ { { 70.0f, 176.0f, 0.0f }, { -70.0f, 176.0f, 0.0f }, { 0.0f, -4.0f, 30.0f } } },
@ -48,8 +48,8 @@ static ColliderTrisElementInit sTrisElementsInit[3] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x40000048, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ { { 70.0f, -4.0f, 0.0f }, { 70.0f, 176.0f, 0.0f }, { 0.0f, -4.0f, 30.0f } } },

View file

@ -51,8 +51,8 @@ static ColliderQuadInit sQuadInit = {
ELEMTYPE_UNK0,
{ 0x00000048, 0x00, 0x00 },
{ 0x00000048, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ { { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f } } },

View file

@ -43,8 +43,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK2,
{ 0x00000000, 0x00, 0x00 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ 245, 180, -400, { 0, 0, 0 } },

View file

@ -45,8 +45,8 @@ static ColliderCylinderInit sColCylinderInitMain = {
ELEMTYPE_UNK2,
{ 0x00000000, 0x00, 0x00 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ 80, 30, 80, { 0, 0, 0 } },
@ -65,8 +65,8 @@ static ColliderCylinderInit sColCylinderInitLeftRight = {
ELEMTYPE_UNK2,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_NONE,
BUMP_NONE,
ATELEM_NONE,
ACELEM_NONE,
OCELEM_ON,
},
{ 50, 60, 280, { 0, 0, 0 } },

View file

@ -44,8 +44,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x00 },
{ 0x00020800, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ 50, 20, 20, { 0, 0, 0 } },

View file

@ -44,8 +44,8 @@ static ColliderTrisElementInit sTrisElementsInit[4] = {
ELEMTYPE_UNK2,
{ 0x20000000, 0x00, 0x04 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_NONE,
},
{ { { 365.0f, 45.0f, 27.0f }, { 130.0f, 45.0f, 150.0f }, { 290.0f, 45.0f, 145.0f } } },
@ -55,8 +55,8 @@ static ColliderTrisElementInit sTrisElementsInit[4] = {
ELEMTYPE_UNK2,
{ 0x20000000, 0x00, 0x04 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_NONE,
},
{ { { 250.0f, 45.0f, 90.0f }, { 50.0f, 45.0f, 80.0f }, { 160.0f, 45.0f, 160.0f } } },
@ -66,8 +66,8 @@ static ColliderTrisElementInit sTrisElementsInit[4] = {
ELEMTYPE_UNK2,
{ 0x20000000, 0x00, 0x04 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_NONE,
},
{ { { -305.0f, 33.0f, -7.0f }, { -220.0f, 33.0f, 40.0f }, { -130.0f, 33.0f, -5.0f } } },
@ -77,8 +77,8 @@ static ColliderTrisElementInit sTrisElementsInit[4] = {
ELEMTYPE_UNK2,
{ 0x20000000, 0x00, 0x04 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_NONE,
},
{ { { -190.0f, 33.0f, 40.0f }, { -30.0f, 33.0f, 15.0f }, { -70.0f, 33.0f, -30.0f } } },
@ -111,8 +111,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_NONE,
BUMP_NONE,
ATELEM_NONE,
ACELEM_NONE,
OCELEM_ON,
},
{ 80, 130, 0, { 0, 0, 0 } },

View file

@ -54,8 +54,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 30, 90, 0, { 0, 0, 0 } },
@ -67,8 +67,8 @@ static ColliderTrisElementInit sTrisElementsInit[2] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00020000, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ { { 1800.0f, 1200.0f, 0.0f }, { -1800.0f, 1200.0f, 0.0f }, { -1800.0f, 0.0f, 0.0f } } },
@ -78,8 +78,8 @@ static ColliderTrisElementInit sTrisElementsInit[2] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00020000, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ { { 1800.0f, 1200.0f, 0.0f }, { -1800.0f, 0.0f, 0.0f }, { 1800.0f, 0.0f, 0.0f } } },
@ -166,8 +166,8 @@ void BgHakaTrap_Init(Actor* thisx, PlayState* play) {
this->colliderCylinder.dim.radius = 18;
this->colliderCylinder.dim.height = 115;
this->colliderCylinder.elem.toucherFlags &= ~TOUCH_SFX_NORMAL;
this->colliderCylinder.elem.toucherFlags |= TOUCH_SFX_WOOD;
this->colliderCylinder.elem.atElemFlags &= ~ATELEM_SFX_NORMAL;
this->colliderCylinder.elem.atElemFlags |= ATELEM_SFX_WOOD;
this->actionFunc = func_808801B8;
}

View file

@ -43,8 +43,8 @@ static ColliderCylinderInit sPotColliderInit = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000008, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ 25, 60, 30, { 0, 0, 0 } },
@ -63,8 +63,8 @@ static ColliderCylinderInit sFlamesColliderInit = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x01, 0x04 },
{ 0x00000008, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NONE,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NONE,
ACELEM_NONE,
OCELEM_ON,
},
{ 60, 45, 235, { 0, 0, 0 } },

View file

@ -45,8 +45,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000008, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ 5, 60, 0, { 0, 0, 0 } },

View file

@ -42,8 +42,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x01, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NONE,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NONE,
ACELEM_NONE,
OCELEM_ON,
},
{ 81, 144, 0, { 0, 0, 0 } },

View file

@ -35,8 +35,8 @@ static ColliderTrisElementInit sTrisElementInit[4] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000040, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON | BUMP_NO_AT_INFO | BUMP_NO_DAMAGE | BUMP_NO_SWORD_SFX | BUMP_NO_HITMARK,
ATELEM_NONE,
ACELEM_ON | ACELEM_NO_AT_INFO | ACELEM_NO_DAMAGE | ACELEM_NO_SWORD_SFX | ACELEM_NO_HITMARK,
OCELEM_NONE,
},
{ { { 305.0f, 0.0f, -300.0f }, { 305.0f, 600.0f, -300.0f }, { 305.0f, 600.0f, 300.0f } } },
@ -46,8 +46,8 @@ static ColliderTrisElementInit sTrisElementInit[4] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000040, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON | BUMP_NO_AT_INFO | BUMP_NO_DAMAGE | BUMP_NO_SWORD_SFX | BUMP_NO_HITMARK,
ATELEM_NONE,
ACELEM_ON | ACELEM_NO_AT_INFO | ACELEM_NO_DAMAGE | ACELEM_NO_SWORD_SFX | ACELEM_NO_HITMARK,
OCELEM_NONE,
},
{ { { 305.0f, 0.0f, -300.0f }, { 305.0f, 600.0f, 300.0f }, { 305.0f, 0.0f, 300.0f } } },
@ -57,8 +57,8 @@ static ColliderTrisElementInit sTrisElementInit[4] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000040, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON | BUMP_NO_AT_INFO | BUMP_NO_DAMAGE | BUMP_NO_SWORD_SFX | BUMP_NO_HITMARK,
ATELEM_NONE,
ACELEM_ON | ACELEM_NO_AT_INFO | ACELEM_NO_DAMAGE | ACELEM_NO_SWORD_SFX | ACELEM_NO_HITMARK,
OCELEM_NONE,
},
{ { { -305.0f, 0.0f, -300.0f }, { -305.0f, 600.0f, 300.0f }, { -305.0f, 600.0f, -300.0f } } },
@ -68,8 +68,8 @@ static ColliderTrisElementInit sTrisElementInit[4] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000040, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON | BUMP_NO_AT_INFO | BUMP_NO_DAMAGE | BUMP_NO_SWORD_SFX | BUMP_NO_HITMARK,
ATELEM_NONE,
ACELEM_ON | ACELEM_NO_AT_INFO | ACELEM_NO_DAMAGE | ACELEM_NO_SWORD_SFX | ACELEM_NO_HITMARK,
OCELEM_NONE,
},
{ { { -305.0f, 0.0f, -300.0f }, { -305.0f, 0.0f, 300.0f }, { -305.0f, 600.0f, 300.0f } } },
@ -129,8 +129,8 @@ void BgHidanDalm_Wait(BgHidanDalm* this, PlayState* play) {
(player->meleeWeaponAnimation == PLAYER_MWA_HAMMER_FORWARD ||
player->meleeWeaponAnimation == PLAYER_MWA_HAMMER_SIDE)) {
this->collider.base.acFlags &= ~AC_HIT;
if ((this->collider.elements[0].base.bumperFlags & BUMP_HIT) ||
(this->collider.elements[1].base.bumperFlags & BUMP_HIT)) {
if ((this->collider.elements[0].base.acElemFlags & ACELEM_HIT) ||
(this->collider.elements[1].base.acElemFlags & ACELEM_HIT)) {
this->dyna.actor.world.rot.y -= 0x4000;
} else {
this->dyna.actor.world.rot.y += 0x4000;

View file

@ -46,8 +46,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x01, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NONE,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NONE,
ACELEM_NONE,
OCELEM_ON,
},
{ 30, 83, 0, { 0 } },

View file

@ -56,8 +56,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x01, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NONE,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NONE,
ACELEM_NONE,
OCELEM_ON,
},
{ 30, 130, 0, { 0, 0, 0 } },

View file

@ -31,8 +31,8 @@ static ColliderTrisElementInit sTrisElementsInit[2] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x40000040, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ { { -20.0f, 3.0f, -20.0f }, { -20.0f, 3.0f, 20.0f }, { 20.0f, 3.0f, 20.0f } } },
@ -42,8 +42,8 @@ static ColliderTrisElementInit sTrisElementsInit[2] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x40000040, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ { { 20.0f, 3.0f, 20.0f }, { 20.0f, 3.0f, -20.0f }, { -20.0f, 3.0f, -20.0f } } },

View file

@ -36,8 +36,8 @@ static ColliderTrisElementInit sTrisElementsInit[2] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x40000040, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON | BUMP_NO_AT_INFO | BUMP_NO_DAMAGE | BUMP_NO_SWORD_SFX | BUMP_NO_HITMARK,
ATELEM_NONE,
ACELEM_ON | ACELEM_NO_AT_INFO | ACELEM_NO_DAMAGE | ACELEM_NO_SWORD_SFX | ACELEM_NO_HITMARK,
OCELEM_NONE,
},
{ { { -40.0f, 3.0f, -40.0f }, { -40.0f, 3.0f, 40.0f }, { 40.0f, 3.0f, 40.0f } } },
@ -47,8 +47,8 @@ static ColliderTrisElementInit sTrisElementsInit[2] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x40000040, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON | BUMP_NO_AT_INFO | BUMP_NO_DAMAGE | BUMP_NO_SWORD_SFX | BUMP_NO_HITMARK,
ATELEM_NONE,
ACELEM_ON | ACELEM_NO_AT_INFO | ACELEM_NO_DAMAGE | ACELEM_NO_SWORD_SFX | ACELEM_NO_HITMARK,
OCELEM_NONE,
},
{ { { 40.0f, 3.0f, 40.0f }, { 40.0f, 3.0f, -40.0f }, { -40.0f, 3.0f, -40.0f } } },

View file

@ -46,8 +46,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[1] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000008, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ 0, { { 0, 0, 0 }, 100 }, 100 },

View file

@ -54,8 +54,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x01, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NONE,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NONE,
ACELEM_NONE,
OCELEM_NONE,
},
{ 45, 77, -40, { 3310, 120, 0 } },

View file

@ -32,8 +32,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[6] = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x01, 0x04 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NONE,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NONE,
ACELEM_NONE,
OCELEM_NONE,
},
{ 1, { { 0, 30, 40 }, 25 }, 100 },
@ -43,8 +43,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[6] = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x01, 0x04 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NONE,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NONE,
ACELEM_NONE,
OCELEM_NONE,
},
{ 1, { { -35, 32, 77 }, 32 }, 100 },
@ -54,8 +54,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[6] = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x01, 0x04 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NONE,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NONE,
ACELEM_NONE,
OCELEM_NONE,
},
{ 1, { { -80, 35, 130 }, 42 }, 100 },
@ -65,8 +65,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[6] = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x01, 0x04 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NONE,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NONE,
ACELEM_NONE,
OCELEM_NONE,
},
{ 1, { { 0, 30, -40 }, 25 }, 100 },
@ -76,8 +76,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[6] = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x01, 0x04 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NONE,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NONE,
ACELEM_NONE,
OCELEM_NONE,
},
{ 1, { { 35, 32, -77 }, 32 }, 100 },
@ -87,8 +87,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[6] = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x01, 0x04 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NONE,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NONE,
ACELEM_NONE,
OCELEM_NONE,
},
{ 1, { { 80, 35, -130 }, 42 }, 100 },

View file

@ -35,8 +35,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[6] = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x01, 0x04 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NONE,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NONE,
ACELEM_NONE,
OCELEM_ON,
},
{ 1, { { 0, 30, 40 }, 23 }, 100 },
@ -46,8 +46,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[6] = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x01, 0x04 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NONE,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NONE,
ACELEM_NONE,
OCELEM_ON,
},
{ 1, { { 0, 32, 87 }, 30 }, 100 },
@ -57,8 +57,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[6] = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x01, 0x04 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NONE,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NONE,
ACELEM_NONE,
OCELEM_ON,
},
{ 1, { { 0, 35, 150 }, 40 }, 100 },
@ -68,8 +68,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[6] = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x01, 0x04 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NONE,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NONE,
ACELEM_NONE,
OCELEM_ON,
},
{ 1, { { 0, 30, 40 }, 23 }, 100 },
@ -79,8 +79,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[6] = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x01, 0x04 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NONE,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NONE,
ACELEM_NONE,
OCELEM_ON,
},
{ 1, { { 0, 32, 87 }, 30 }, 100 },
@ -90,8 +90,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[6] = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x01, 0x04 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NONE,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NONE,
ACELEM_NONE,
OCELEM_ON,
},
{ 1, { { 0, 35, 150 }, 40 }, 100 },
@ -140,7 +140,7 @@ void func_8088CEC0(BgHidanSekizou* this, s32 arg1, s16 arg2) {
element->dim.worldSphere.center.y = (s16)this->dyna.actor.home.pos.y + element->dim.modelSphere.center.y;
element->dim.worldSphere.center.z = this->dyna.actor.home.pos.z - (sp30 * element->dim.modelSphere.center.x) +
(sp2C * element->dim.modelSphere.center.z);
element->base.toucherFlags |= TOUCH_ON;
element->base.atElemFlags |= ATELEM_ON;
element->base.ocElemFlags |= OCELEM_ON;
}
}
@ -211,7 +211,7 @@ void func_8088D434(BgHidanSekizou* this, PlayState* play) {
}
}
for (i = 3 * phi_s4; i < ARRAY_COUNT(this->elements); i++) {
this->collider.elements[i].base.toucherFlags &= ~TOUCH_ON;
this->collider.elements[i].base.atElemFlags &= ~ATELEM_ON;
this->collider.elements[i].base.ocElemFlags &= ~OCELEM_ON;
}
}

View file

@ -39,8 +39,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[2] = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x01, 0x04 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NONE,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NONE,
ACELEM_NONE,
OCELEM_NONE,
},
{ 1, { { 0, 40, 100 }, 22 }, 100 },
@ -50,8 +50,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[2] = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x01, 0x04 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NONE,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NONE,
ACELEM_NONE,
OCELEM_NONE,
},
{ 1, { { 0, 40, 145 }, 30 }, 100 },

View file

@ -53,8 +53,8 @@ static ColliderCylinderInit sCylinderInit1 = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_ON,
},
{ 0, 0, 0, { 0, 0, 0 } },
@ -73,8 +73,8 @@ static ColliderCylinderInit sCylinderInit2 = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x4FC1FFF6, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ 0, 0, 0, { 0, 0, 0 } },

View file

@ -33,8 +33,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0x4FC007CA, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_NONE,
},
{ 13, 120, 0, { 0, 0, 0 } },

View file

@ -50,8 +50,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_NONE,
BUMP_NONE,
ATELEM_NONE,
ACELEM_NONE,
OCELEM_ON,
},
{ 70, 80, -82, { 0, 0, 0 } },

View file

@ -32,8 +32,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[1] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000008, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_ON,
},
{ 0, { { -300, 0, 0 }, 40 }, 100 },

View file

@ -34,8 +34,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000008, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ 0, { { 0, 0, 0 }, 50 }, 100 },

View file

@ -41,8 +41,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[] = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x00, 0x04 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_ON,
},
{ 0, { { 0, 0, 0 }, 58 }, 100 },

View file

@ -40,8 +40,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[1] = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_NONE,
},
{ 0, { { 0, 0, 0 }, 10 }, 100 },

View file

@ -51,8 +51,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ 30, 150, 0, { 0, 0, 0 } },

View file

@ -38,8 +38,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00200000, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ 0, { { 0, -600, -200 }, 60 }, 100 },

View file

@ -34,8 +34,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[1] = {
ELEMTYPE_UNK4,
{ 0x00000000, 0x00, 0x00 },
{ 0x0001F820, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ 1, { { 0, 0, 0 }, 14 }, 100 },

View file

@ -37,8 +37,8 @@ static ColliderTrisElementInit sTrisElementInitFloor[2] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000008, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ { { -40.0f, 0.0f, -40.0f }, { -40.0f, 0.0f, 40.0f }, { 40.0f, 0.0f, 40.0f } } },
@ -48,8 +48,8 @@ static ColliderTrisElementInit sTrisElementInitFloor[2] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000008, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ { { -40.0f, 0.0f, -40.0f }, { 40.0f, 0.0f, 40.0f }, { 40.0f, 0.0f, -40.0f } } },
@ -75,8 +75,8 @@ static ColliderTrisElementInit sTrisElementInitRutoWall[1] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000008, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ { { 0.0f, 116.0f, 0.0f }, { 0.0f, 0.0f, 70.0f }, { 0.0f, 0.0f, -70.0f } } },
@ -102,8 +102,8 @@ static ColliderTrisElementInit sTrisElementInitWall[2] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000008, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ { { 0.0f, 120.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 60.0f, 0.0f, 0.0f } } },
@ -113,8 +113,8 @@ static ColliderTrisElementInit sTrisElementInitWall[2] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000008, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ { { 0.0f, 120.0f, 0.0f }, { 60.0f, 0.0f, 0.0f }, { 60.0f, 120.0f, 0.0f } } },

View file

@ -42,8 +42,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[1] = {
ELEMTYPE_UNK4,
{ 0x00000000, 0x00, 0x00 },
{ 0x0001F820, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ 0, { { 0, 0, 0 }, 25 }, 100 },

View file

@ -46,8 +46,8 @@ static ColliderTrisElementInit sTrisElementsInit[2] = {
ELEMTYPE_UNK4,
{ 0x00000000, 0x00, 0x00 },
{ 0x0001F820, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ { { 25.0f, 33.0f, 0.0f }, { -25.0f, 33.0f, 0.0f }, { -25.0f, -33.0f, 0.0f } } },
@ -57,8 +57,8 @@ static ColliderTrisElementInit sTrisElementsInit[2] = {
ELEMTYPE_UNK4,
{ 0x00000000, 0x00, 0x00 },
{ 0x0001F820, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ { { 25.0f, 33.0f, 0.0f }, { -25.0f, -33.0f, 0.0f }, { 25.0f, -33.0f, 0.0f } } },

View file

@ -37,8 +37,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_ON,
},
{ 12, 60, 0, { 0, 0, 0 } },

View file

@ -62,8 +62,8 @@ static ColliderJntSphElementInit sJntSphItemsInit[1] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000080, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON | BUMP_HOOKABLE,
ATELEM_NONE,
ACELEM_ON | ACELEM_HOOKABLE,
OCELEM_ON,
},
{ 1, { { 0, 0, -160 }, 18 }, 100 },

View file

@ -37,8 +37,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000008, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ 0, { { 0, 50, 50 }, 70 }, 100 },
@ -48,8 +48,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000008, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ 0, { { -100, 50, 50 }, 70 }, 100 },
@ -59,8 +59,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000008, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ 0, { { 100, 50, 50 }, 70 }, 100 },

View file

@ -41,8 +41,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000008, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ 40, 80, 0, { 2259, 108, -1580 } },

View file

@ -39,8 +39,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x4FC1FFF6, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_ON,
},
{ 0, { { 0, 50, 0 }, 288 }, 100 },
@ -73,8 +73,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000008, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ 190, 80, 0, { 10, 0, 50 } },

View file

@ -40,8 +40,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[2] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_NONE,
BUMP_NONE,
ATELEM_NONE,
ACELEM_NONE,
OCELEM_ON,
},
{ 0, { { 0, 2040, 0 }, 54 }, 100 },
@ -51,8 +51,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[2] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000008, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ 1, { { 0, 1400, 0 }, 13 }, 100 },

View file

@ -47,8 +47,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x00 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_NONE,
BUMP_NONE,
ATELEM_NONE,
ACELEM_NONE,
OCELEM_ON,
},
{ 10, 70, 0, { 0 } },

View file

@ -5,7 +5,7 @@
CutsceneData D_808BB2F0[] = {
CS_BEGIN_CUTSCENE(9, 425),
CS_PLAYER_CUE_LIST(1),
CS_PLAYER_CUE(PLAYER_CUEID_12, 0, 256, 0x0000, 0x0000, 0x0000, 0, 54, 52, 0, 54, 52, 0.0f, 0.0f, 0.0f),
CS_PLAYER_CUE(PLAYER_CUEID_12, 0, 256, 0x0000, 0x0000, 0x0000, 0, 54, 52, 0, 54, 52, CS_FLOAT(0x0, 0.0f), CS_FLOAT(0x0, 0.0f), CS_FLOAT(0x0, 0.0f)),
CS_LIGHT_SETTING_LIST(1),
CS_LIGHT_SETTING(0x0001, 110, 111, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFE3, 0xFFFFFFC5, 0x00000000, 0xFFFFFFE3, 0xFFFFFFC5),
CS_MISC_LIST(1),
@ -13,67 +13,67 @@ CutsceneData D_808BB2F0[] = {
CS_DESTINATION(CS_DEST_TEMPLE_OF_TIME_FROM_MASTER_SWORD, 230, 231),
CS_TRANSITION(CS_TRANS_GRAY_FILL_IN, 210, 230),
CS_CAM_EYE_SPLINE(0, 241),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -42, 72, -39, 0x018C),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -42, 72, -39, 0x019D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -42, 72, -39, 0x01AE),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -42, 72, -39, 0x02A8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -42, 72, -39, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -42, 72, -39, 0x007A),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -42, 72, -39, 0x0064),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -42, 72, -39, 0x0074),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 60.0f, -42, 72, -39, 0x005F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -42, 72, -39, 0x018C),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -42, 72, -39, 0x019D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -42, 72, -39, 0x01AE),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -42, 72, -39, 0x02A8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -42, 72, -39, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -42, 72, -39, 0x007A),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -42, 72, -39, 0x0064),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -42, 72, -39, 0x0074),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -42, 72, -39, 0x005F),
CS_CAM_EYE_SPLINE(80, 406),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -1, 95, -19, 0x2F73),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -1, 95, -19, 0x6B2F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -1, 95, -19, 0x6169),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -1, 95, -19, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -1, 95, -19, 0x0005),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -1, 129, -34, 0x7961),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -1, 173, -19, 0x742F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -17, 217, -20, 0x2E64),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -24, 328, -12, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -27, 509, -2, 0x2F73),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -41, 813, 10, 0x6B2F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -60, 1285, 38, 0x6D61),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -58, 1910, 91, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -53, 2526, 133, 0x0005),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -33, 3445, 193, 0x7961),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 0, 3960, 225, 0x742F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 7, 4317, 245, 0x6565),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 7, 4316, 245, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 7, 4316, 245, 0x2F73),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 60.0f, 7, 4316, 245, 0x6B2F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -1, 95, -19, 0x2F73),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -1, 95, -19, 0x6B2F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -1, 95, -19, 0x6169),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -1, 95, -19, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -1, 95, -19, 0x0005),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -1, 129, -34, 0x7961),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -1, 173, -19, 0x742F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -17, 217, -20, 0x2E64),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -24, 328, -12, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -27, 509, -2, 0x2F73),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -41, 813, 10, 0x6B2F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -60, 1285, 38, 0x6D61),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -58, 1910, 91, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -53, 2526, 133, 0x0005),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -33, 3445, 193, 0x7961),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), 0, 3960, 225, 0x742F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), 7, 4317, 245, 0x6565),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), 7, 4316, 245, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), 7, 4316, 245, 0x2F73),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), 7, 4316, 245, 0x6B2F),
CS_CAM_AT_SPLINE(0, 270),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -20, 85, -9, 0x2F73),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -20, 85, -9, 0x6B2F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -20, 85, -9, 0x6169),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -20, 85, -9, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -20, 85, -9, 0x0005),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -20, 85, -9, 0x7961),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -20, 85, -9, 0x742F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -20, 85, -9, 0x2E64),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 60.0f, -20, 85, -9, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x42700000, 60.0f), -20, 85, -9, 0x2F73),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x42700000, 60.0f), -20, 85, -9, 0x6B2F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x42700000, 60.0f), -20, 85, -9, 0x6169),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x42700000, 60.0f), -20, 85, -9, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x42700000, 60.0f), -20, 85, -9, 0x0005),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x42700000, 60.0f), -20, 85, -9, 0x7961),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x42700000, 60.0f), -20, 85, -9, 0x742F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x42700000, 60.0f), -20, 85, -9, 0x2E64),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, CS_FLOAT(0x42700000, 60.0f), -20, 85, -9, 0x0000),
CS_CAM_AT_SPLINE(80, 425),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, 60.0f, -1, 112, 7, 0x2F73),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, 60.0f, -1, 112, 7, 0x6B2F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, 60.0f, -1, 112, 7, 0x6169),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, 60.0f, -1, 112, 7, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 15, 60.0f, -1, 112, 7, 0x0005),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 60.0f, -1, 117, 7, 0x7961),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 25, 60.0f, -1, 117, 7, 0x742F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 25, 60.0f, -1, 117, 7, 0x2E64),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 60.0f, -1, 117, 7, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 60.0f, -1, 117, 7, 0x2F73),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 60.0f, -1, 117, 7, 0x6B2F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 60.0f, -1, 117, 7, 0x6D61),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 60.0f, -1, 117, 7, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 60.0f, -1, 117, 7, 0x0005),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 60.0f, -1, 117, 7, 0x7961),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 60.0f, -1, 117, 7, 0x742F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 60.0f, -1, 117, 7, 0x6565),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 60.0f, -1, 117, 7, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, 60.0f, -1, 117, 7, 0x2F73),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 20, 60.0f, -1, 117, 7, 0x6B2F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, CS_FLOAT(0x42700000, 60.0f), -1, 112, 7, 0x2F73),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, CS_FLOAT(0x42700000, 60.0f), -1, 112, 7, 0x6B2F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, CS_FLOAT(0x42700000, 60.0f), -1, 112, 7, 0x6169),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, CS_FLOAT(0x42700000, 60.0f), -1, 112, 7, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 15, CS_FLOAT(0x42700000, 60.0f), -1, 112, 7, 0x0005),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, CS_FLOAT(0x42700000, 60.0f), -1, 117, 7, 0x7961),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 25, CS_FLOAT(0x42700000, 60.0f), -1, 117, 7, 0x742F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 25, CS_FLOAT(0x42700000, 60.0f), -1, 117, 7, 0x2E64),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, CS_FLOAT(0x42700000, 60.0f), -1, 117, 7, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, CS_FLOAT(0x42700000, 60.0f), -1, 117, 7, 0x2F73),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, CS_FLOAT(0x42700000, 60.0f), -1, 117, 7, 0x6B2F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, CS_FLOAT(0x42700000, 60.0f), -1, 117, 7, 0x6D61),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, CS_FLOAT(0x42700000, 60.0f), -1, 117, 7, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, CS_FLOAT(0x42700000, 60.0f), -1, 117, 7, 0x0005),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, CS_FLOAT(0x42700000, 60.0f), -1, 117, 7, 0x7961),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, CS_FLOAT(0x42700000, 60.0f), -1, 117, 7, 0x742F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, CS_FLOAT(0x42700000, 60.0f), -1, 117, 7, 0x6565),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, CS_FLOAT(0x42700000, 60.0f), -1, 117, 7, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 20, CS_FLOAT(0x42700000, 60.0f), -1, 117, 7, 0x2F73),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 20, CS_FLOAT(0x42700000, 60.0f), -1, 117, 7, 0x6B2F),
CS_END(),
};
// clang-format on

View file

@ -5,89 +5,89 @@
CutsceneData D_808BB7A0[] = {
CS_BEGIN_CUTSCENE(9, 368),
CS_CAM_EYE_SPLINE(0, 126),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -1, 101, -110, 0x616D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.0f, -1, 101, -110, 0x6964),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.0f, -1, 101, -110, 0x00FB),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.0f, -1, 101, -110, 0x0111),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.0f, -1, 101, -109, 0x012D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.0f, -1, 71, -110, 0x0033),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.0f, -1, 72, -110, 0x00FB),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.0f, -1, 72, -110, 0x00FB),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.0f, -1, 72, -110, 0x2F68),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 40.0f, -1, 72, -110, 0x612F),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -1, 101, -110, 0x616D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42200000, 40.0f), -1, 101, -110, 0x6964),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42200000, 40.0f), -1, 101, -110, 0x00FB),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42200000, 40.0f), -1, 101, -110, 0x0111),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42200000, 40.0f), -1, 101, -109, 0x012D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42200000, 40.0f), -1, 71, -110, 0x0033),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42200000, 40.0f), -1, 72, -110, 0x00FB),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42200000, 40.0f), -1, 72, -110, 0x00FB),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42200000, 40.0f), -1, 72, -110, 0x2F68),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, CS_FLOAT(0x42200000, 40.0f), -1, 72, -110, 0x612F),
CS_CAM_EYE_SPLINE(58, 339),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.000004f, -9, 106, -3, 0xA1BC),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -9, 106, -3, 0xA5F3),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -9, 106, -3, 0xA5EB),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -9, 106, -3, 0xA5A2),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -67, 108, -53, 0xBAEE),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -67, 108, -53, 0xC9B8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -67, 108, -53, 0x0020),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -67, 108, -53, 0xA5A4),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -67, 108, -53, 0x0020),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -83, 102, -42, 0xA5E1),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -116, 81, -19, 0xA5D0),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -118, 81, 54, 0x0020),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -106, 78, 116, 0xA5A6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -27, 75, 226, 0xA5E5),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 121, 82, 312, 0xC0AE),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 296, 76, 374, 0xA5E5),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 565, 80, 257, 0x0020),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 614, 80, -1, 0xA5EB),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 594, 80, -145, 0xA5E1),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 475, 80, -380, 0x0020),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 323, 80, -513, 0xA5E1),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 192, 80, -574, 0xA5D0),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -45, 80, -604, 0x0020),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -142, 80, -589, 0xA5A6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -228, 80, -562, 0xA5E5),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -376, 93, -477, 0xC0AE),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -584, 95, -183, 0xA5E5),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -613, 95, -34, 0x0020),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 60.0f, -595, 95, 161, 0xA5EB),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700001, 60.000004f), -9, 106, -3, 0xA1BC),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -9, 106, -3, 0xA5F3),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -9, 106, -3, 0xA5EB),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -9, 106, -3, 0xA5A2),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -67, 108, -53, 0xBAEE),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -67, 108, -53, 0xC9B8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -67, 108, -53, 0x0020),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -67, 108, -53, 0xA5A4),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -67, 108, -53, 0x0020),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -83, 102, -42, 0xA5E1),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -116, 81, -19, 0xA5D0),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -118, 81, 54, 0x0020),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -106, 78, 116, 0xA5A6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -27, 75, 226, 0xA5E5),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), 121, 82, 312, 0xC0AE),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), 296, 76, 374, 0xA5E5),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), 565, 80, 257, 0x0020),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), 614, 80, -1, 0xA5EB),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), 594, 80, -145, 0xA5E1),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), 475, 80, -380, 0x0020),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), 323, 80, -513, 0xA5E1),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), 192, 80, -574, 0xA5D0),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -45, 80, -604, 0x0020),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -142, 80, -589, 0xA5A6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -228, 80, -562, 0xA5E5),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -376, 93, -477, 0xC0AE),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -584, 95, -183, 0xA5E5),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -613, 95, -34, 0x0020),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -595, 95, 161, 0xA5EB),
CS_CAM_AT_SPLINE(0, 155),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, 40.4f, -1, 111, 5, 0xA1BC),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, 40.0f, -1, 111, 5, 0xA5F3),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, 40.0f, -1, 111, 5, 0xA5EB),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 15, 40.0f, -1, 111, 5, 0xA5A2),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 15, 40.0f, -1, 111, 5, 0xBAEE),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 15, 40.0f, -1, 104, 8, 0xC9B8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, 40.0f, -1, 104, 8, 0x0020),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 40.0f, -1, 104, 8, 0xA5A4),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 40.0f, -1, 104, 8, 0x0020),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 40.0f, -1, 104, 8, 0xA5E1),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, CS_FLOAT(0x4221999A, 40.4f), -1, 111, 5, 0xA1BC),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, CS_FLOAT(0x42200000, 40.0f), -1, 111, 5, 0xA5F3),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, CS_FLOAT(0x42200000, 40.0f), -1, 111, 5, 0xA5EB),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 15, CS_FLOAT(0x42200000, 40.0f), -1, 111, 5, 0xA5A2),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 15, CS_FLOAT(0x42200000, 40.0f), -1, 111, 5, 0xBAEE),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 15, CS_FLOAT(0x42200000, 40.0f), -1, 104, 8, 0xC9B8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, CS_FLOAT(0x42200000, 40.0f), -1, 104, 8, 0x0020),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x42200000, 40.0f), -1, 104, 8, 0xA5A4),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x42200000, 40.0f), -1, 104, 8, 0x0020),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, CS_FLOAT(0x42200000, 40.0f), -1, 104, 8, 0xA5E1),
CS_CAM_AT_SPLINE(58, 368),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, 60.000004f, 0, 120, 12, 0xA1BC),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, 60.0f, 0, 120, 12, 0xA5F3),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, 60.0f, 0, 120, 12, 0xA5EB),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 60.0f, 0, 120, 12, 0xA5A2),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, 60.0f, -1, 95, 11, 0xBAEE),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, 60.0f, -1, 95, 11, 0xC9B8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, 60.0f, -1, 95, 11, 0x0020),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, 60.0f, -1, 95, 11, 0xA5A4),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, 60.0f, -1, 95, 11, 0x0020),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 60.0f, -3, 95, 8, 0xA5E1),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 60.0f, -3, 95, 8, 0xA5D0),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 60.0f, -3, 95, 8, 0x0020),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 60.0f, -3, 95, 8, 0xA5A6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 60.0f, -3, 95, 8, 0xA5E5),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 60.0f, -3, 95, 8, 0xC0AE),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 60.0f, -3, 95, 8, 0xA5E5),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 60.0f, -3, 95, 8, 0x0020),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 60.0f, -3, 95, 8, 0xA5EB),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 60.0f, -3, 95, 8, 0xA5E1),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 60.0f, -3, 95, 8, 0x0020),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 15, 60.0f, -3, 95, 8, 0xA5E1),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 15, 60.0f, -3, 95, 8, 0xA5D0),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 15, 60.0f, -3, 95, 8, 0x0020),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 15, 60.0f, -3, 95, 8, 0xA5A6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 15, 60.0f, -3, 95, 8, 0xA5E5),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 15, 60.0f, -3, 95, 8, 0xC0AE),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 15, 60.0f, -3, 95, 8, 0xA5E5),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 15, 60.0f, -3, 95, 8, 0x0020),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 60.0f, -3, 95, 8, 0xA5EB),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, CS_FLOAT(0x42700001, 60.000004f), 0, 120, 12, 0xA1BC),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, CS_FLOAT(0x42700000, 60.0f), 0, 120, 12, 0xA5F3),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, CS_FLOAT(0x42700000, 60.0f), 0, 120, 12, 0xA5EB),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, CS_FLOAT(0x42700000, 60.0f), 0, 120, 12, 0xA5A2),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, CS_FLOAT(0x42700000, 60.0f), -1, 95, 11, 0xBAEE),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, CS_FLOAT(0x42700000, 60.0f), -1, 95, 11, 0xC9B8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, CS_FLOAT(0x42700000, 60.0f), -1, 95, 11, 0x0020),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, CS_FLOAT(0x42700000, 60.0f), -1, 95, 11, 0xA5A4),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 5, CS_FLOAT(0x42700000, 60.0f), -1, 95, 11, 0x0020),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, CS_FLOAT(0x42700000, 60.0f), -3, 95, 8, 0xA5E1),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, CS_FLOAT(0x42700000, 60.0f), -3, 95, 8, 0xA5D0),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, CS_FLOAT(0x42700000, 60.0f), -3, 95, 8, 0x0020),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, CS_FLOAT(0x42700000, 60.0f), -3, 95, 8, 0xA5A6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, CS_FLOAT(0x42700000, 60.0f), -3, 95, 8, 0xA5E5),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, CS_FLOAT(0x42700000, 60.0f), -3, 95, 8, 0xC0AE),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, CS_FLOAT(0x42700000, 60.0f), -3, 95, 8, 0xA5E5),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, CS_FLOAT(0x42700000, 60.0f), -3, 95, 8, 0x0020),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, CS_FLOAT(0x42700000, 60.0f), -3, 95, 8, 0xA5EB),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, CS_FLOAT(0x42700000, 60.0f), -3, 95, 8, 0xA5E1),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, CS_FLOAT(0x42700000, 60.0f), -3, 95, 8, 0x0020),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 15, CS_FLOAT(0x42700000, 60.0f), -3, 95, 8, 0xA5E1),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 15, CS_FLOAT(0x42700000, 60.0f), -3, 95, 8, 0xA5D0),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 15, CS_FLOAT(0x42700000, 60.0f), -3, 95, 8, 0x0020),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 15, CS_FLOAT(0x42700000, 60.0f), -3, 95, 8, 0xA5A6),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 15, CS_FLOAT(0x42700000, 60.0f), -3, 95, 8, 0xA5E5),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 15, CS_FLOAT(0x42700000, 60.0f), -3, 95, 8, 0xC0AE),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 15, CS_FLOAT(0x42700000, 60.0f), -3, 95, 8, 0xA5E5),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 15, CS_FLOAT(0x42700000, 60.0f), -3, 95, 8, 0x0020),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, CS_FLOAT(0x42700000, 60.0f), -3, 95, 8, 0xA5EB),
CS_PLAYER_CUE_LIST(1),
CS_PLAYER_CUE(PLAYER_CUEID_12, 0, 180, 0x0000, 0x0000, 0x0000, 0, 28, -10, 0, -14, 9, 0.0f, -0.23333333f, 0.0f),
CS_PLAYER_CUE(PLAYER_CUEID_12, 0, 180, 0x0000, 0x0000, 0x0000, 0, 28, -10, 0, -14, 9, CS_FLOAT(0x0, 0.0f), CS_FLOAT(0xBE6EEEEF, -0.23333333f), CS_FLOAT(0x0, 0.0f)),
CS_LIGHT_SETTING_LIST(1),
CS_LIGHT_SETTING(0x0001, 90, 91, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFF2, 0x00000024, 0x00000000, 0xFFFFFFF2, 0x00000024),
CS_MISC_LIST(1),

View file

@ -7,13 +7,13 @@ CutsceneData D_808BBD90[] = {
CS_UNK_DATA_LIST(0x00000021, 1),
CS_UNK_DATA(0x00010000, 0x0BB80000, 0x00000000, 0x00000000, 0xFFFFFFF8, 0xFFFFFFFF, 0x00000000, 0xFFFFFFF8, 0xFFFFFFFF, 0x00000000, 0x00000000, 0x00000000),
CS_PLAYER_CUE_LIST(3),
CS_PLAYER_CUE(PLAYER_CUEID_5, 0, 1, 0x0000, 0x8000, 0x0000, 0, 0, 820, 0, 0, 820, 0.0f, 0.0f, 1.4e-45f),
CS_PLAYER_CUE(PLAYER_CUEID_2, 1, 16, 0x0000, 0x8000, 0x0000, 0, 0, 820, 0, 0, 720, 0.0f, 0.0f, 1.4e-45f),
CS_PLAYER_CUE(PLAYER_CUEID_5, 16, 176, 0x0000, 0x8000, 0x0000, 0, 0, 720, 0, 0, 720, 0.0f, 0.0f, 1.4e-45f),
CS_PLAYER_CUE(PLAYER_CUEID_5, 0, 1, 0x0000, 0x8000, 0x0000, 0, 0, 820, 0, 0, 820, CS_FLOAT(0x0, 0.0f), CS_FLOAT(0x0, 0.0f), CS_FLOAT(0x1, 1e-45f)),
CS_PLAYER_CUE(PLAYER_CUEID_2, 1, 16, 0x0000, 0x8000, 0x0000, 0, 0, 820, 0, 0, 720, CS_FLOAT(0x0, 0.0f), CS_FLOAT(0x0, 0.0f), CS_FLOAT(0x1, 1e-45f)),
CS_PLAYER_CUE(PLAYER_CUEID_5, 16, 176, 0x0000, 0x8000, 0x0000, 0, 0, 720, 0, 0, 720, CS_FLOAT(0x0, 0.0f), CS_FLOAT(0x0, 0.0f), CS_FLOAT(0x1, 1e-45f)),
CS_ACTOR_CUE_LIST(62, 3),
CS_ACTOR_CUE(0x0004, 40, 70, 0x7D74, 0x0000, 0x0000, -1, 49, 719, 1, 47, 687, 0.06666667f, -0.06666667f, -0.06666667f),
CS_ACTOR_CUE(0x0004, 70, 220, 0x8010, 0x0000, 0x0000, 1, 47, 687, 0, 134, 21, -0.006666667f, 0.58f, 0.006666667f),
CS_ACTOR_CUE(0x0002, 220, 272, 0x8000, 0x0000, 0x0000, 0, 134, 21, 0, 101, 2, 0.0f, -0.63461536f, 0.0f),
CS_ACTOR_CUE(0x0004, 40, 70, 0x7D74, 0x0000, 0x0000, -1, 49, 719, 1, 47, 687, CS_FLOAT(0x3D888889, 0.06666667f), CS_FLOAT(0xBD888889, -0.06666667f), CS_FLOAT(0xBD888889, -0.06666667f)),
CS_ACTOR_CUE(0x0004, 70, 220, 0x8010, 0x0000, 0x0000, 1, 47, 687, 0, 134, 21, CS_FLOAT(0xBBDA740E, -0.006666667f), CS_FLOAT(0x3F147AE1, 0.58f), CS_FLOAT(0x3BDA740E, 0.006666667f)),
CS_ACTOR_CUE(0x0002, 220, 272, 0x8000, 0x0000, 0x0000, 0, 134, 21, 0, 101, 2, CS_FLOAT(0x0, 0.0f), CS_FLOAT(0xBF227627, -0.63461536f), CS_FLOAT(0x0, 0.0f)),
CS_MISC_LIST(1),
CS_MISC(CS_MISC_STOP_CUTSCENE, 340, 341, 0x0000, 0x00000000, 0xFFFFFFFF, 0x00000000, 0xFFFFFFFD, 0xFFFFFFFF, 0x00000000, 0xFFFFFFFD, 0x00000000, 0x00000000, 0x00000000),
CS_TEXT_LIST(6),
@ -24,73 +24,73 @@ CutsceneData D_808BBD90[] = {
CS_TEXT_NONE(260, 290),
CS_TEXT(0x70E8, 290, 320, 0x0000, 0x0000, 0x0000),
CS_CAM_EYE_SPLINE(0, 251),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -59, 12, 690, 0x0222),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -59, 12, 690, 0x00FA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -59, 12, 690, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -59, 12, 690, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -59, 12, 690, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -31, 24, 701, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -31, 24, 701, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -31, 24, 701, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -31, 24, 701, 0x2D70),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -31, 24, 701, 0x0085),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -31, 24, 701, 0x01E6),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 60.0f, -31, 24, 701, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -59, 12, 690, 0x0222),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -59, 12, 690, 0x00FA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -59, 12, 690, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -59, 12, 690, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -59, 12, 690, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -31, 24, 701, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -31, 24, 701, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -31, 24, 701, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -31, 24, 701, 0x2D70),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -31, 24, 701, 0x0085),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -31, 24, 701, 0x01E6),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -31, 24, 701, 0x0000),
CS_CAM_EYE_SPLINE(90, 331),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -154, 92, 236, 0x0222),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -154, 92, 236, 0x00FA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -154, 92, 236, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -154, 92, 236, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -154, 92, 236, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -154, 92, 236, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -154, 92, 236, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -154, 92, 236, 0x0000),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 60.0f, -154, 92, 236, 0x2D70),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -154, 92, 236, 0x0222),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -154, 92, 236, 0x00FA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -154, 92, 236, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -154, 92, 236, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -154, 92, 236, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -154, 92, 236, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -154, 92, 236, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -154, 92, 236, 0x0000),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -154, 92, 236, 0x2D70),
CS_CAM_EYE_SPLINE(220, 491),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.000004f, -2, 122, 39, 0x0222),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.000004f, -2, 122, 39, 0x00FA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.000004f, -2, 102, 39, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.000004f, -2, 90, 39, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.000004f, -2, 81, 62, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.000004f, -2, 81, 62, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.000004f, -2, 81, 62, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.000004f, -2, 81, 62, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.000004f, -2, 81, 62, 0x2D70),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 60.000004f, -2, 81, 62, 0x0085),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700001, 60.000004f), -2, 122, 39, 0x0222),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700001, 60.000004f), -2, 122, 39, 0x00FA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700001, 60.000004f), -2, 102, 39, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700001, 60.000004f), -2, 90, 39, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700001, 60.000004f), -2, 81, 62, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700001, 60.000004f), -2, 81, 62, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700001, 60.000004f), -2, 81, 62, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700001, 60.000004f), -2, 81, 62, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700001, 60.000004f), -2, 81, 62, 0x2D70),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, CS_FLOAT(0x42700001, 60.000004f), -2, 81, 62, 0x0085),
CS_CAM_AT_SPLINE(0, 280),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, 43, 52, 716, 0x0222),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, 43, 52, 716, 0x00FA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 60.0f, 43, 52, 716, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 60.0f, 43, 52, 716, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 60.0f, 43, 52, 716, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, 60.0f, 63, 86, 722, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, 63, 86, 722, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, 63, 86, 722, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, 63, 86, 722, 0x2D70),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, 63, 85, 721, 0x0085),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, 63, 85, 721, 0x01E6),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 60.0f, 62, 85, 721, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x42700000, 60.0f), 43, 52, 716, 0x0222),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x42700000, 60.0f), 43, 52, 716, 0x00FA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, CS_FLOAT(0x42700000, 60.0f), 43, 52, 716, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, CS_FLOAT(0x42700000, 60.0f), 43, 52, 716, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, CS_FLOAT(0x42700000, 60.0f), 43, 52, 716, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 10, CS_FLOAT(0x42700000, 60.0f), 63, 86, 722, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x42700000, 60.0f), 63, 86, 722, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x42700000, 60.0f), 63, 86, 722, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x42700000, 60.0f), 63, 86, 722, 0x2D70),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x42700000, 60.0f), 63, 85, 721, 0x0085),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x42700000, 60.0f), 63, 85, 721, 0x01E6),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, CS_FLOAT(0x42700000, 60.0f), 62, 85, 721, 0x0000),
CS_CAM_AT_SPLINE(90, 360),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -105, 83, 366, 0x0222),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -104, 83, 364, 0x00FA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -63, 83, 339, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -16, 99, 255, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -30, 111, 177, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -80, 112, 121, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -80, 112, 121, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, -80, 112, 121, 0x0000),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 60.0f, -80, 112, 121, 0x2D70),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x42700000, 60.0f), -105, 83, 366, 0x0222),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x42700000, 60.0f), -104, 83, 364, 0x00FA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x42700000, 60.0f), -63, 83, 339, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x42700000, 60.0f), -16, 99, 255, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x42700000, 60.0f), -30, 111, 177, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x42700000, 60.0f), -80, 112, 121, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x42700000, 60.0f), -80, 112, 121, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x42700000, 60.0f), -80, 112, 121, 0x0000),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, CS_FLOAT(0x42700000, 60.0f), -80, 112, 121, 0x2D70),
CS_CAM_AT_SPLINE(220, 520),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.000004f, 0, 137, -55, 0x0222),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.000004f, 0, 137, -55, 0x00FA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.000004f, 0, 117, -55, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.000004f, 0, 105, -55, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.000004f, 0, 98, -31, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.000004f, 0, 98, -31, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.000004f, 0, 98, -31, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.000004f, 0, 98, -31, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.000004f, 0, 98, -31, 0x2D70),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 60.000004f, 0, 98, -31, 0x0085),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x42700001, 60.000004f), 0, 137, -55, 0x0222),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x42700001, 60.000004f), 0, 137, -55, 0x00FA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x42700001, 60.000004f), 0, 117, -55, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x42700001, 60.000004f), 0, 105, -55, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x42700001, 60.000004f), 0, 98, -31, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x42700001, 60.000004f), 0, 98, -31, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x42700001, 60.000004f), 0, 98, -31, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x42700001, 60.000004f), 0, 98, -31, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x42700001, 60.000004f), 0, 98, -31, 0x2D70),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, CS_FLOAT(0x42700001, 60.000004f), 0, 98, -31, 0x0085),
CS_END(),
};
// clang-format on

View file

@ -7,40 +7,40 @@ CutsceneData D_808BCE20[] = {
CS_UNK_DATA_LIST(0x00000015, 1),
CS_UNK_DATA(0x00010000, 0x0BB80000, 0x00000000, 0x00000000, 0x0000000F, 0xFFFFFFDE, 0x00000000, 0x0000000F, 0xFFFFFFDE, 0x00000000, 0x00000000, 0x00000000),
CS_PLAYER_CUE_LIST(2),
CS_PLAYER_CUE(PLAYER_CUEID_2, 0, 33, 0x54B2, 0x0000, 0x0000, 2614, 0, -451, 2808, 0, -559, 5.878788f, 0.0f, -5.878788f),
CS_PLAYER_CUE(PLAYER_CUEID_4, 33, 42, 0x5945, 0x0000, 0x0000, 2808, 0, -559, 2857, 0, -594, 5.4444447f, 0.0f, -5.4444447f),
CS_PLAYER_CUE(PLAYER_CUEID_2, 0, 33, 0x54B2, 0x0000, 0x0000, 2614, 0, -451, 2808, 0, -559, CS_FLOAT(0x40BC1F08, 5.878788f), CS_FLOAT(0x0, 0.0f), CS_FLOAT(0xC0BC1F08, -5.878788f)),
CS_PLAYER_CUE(PLAYER_CUEID_4, 33, 42, 0x5945, 0x0000, 0x0000, 2808, 0, -559, 2857, 0, -594, CS_FLOAT(0x40AE38E4, 5.4444447f), CS_FLOAT(0x0, 0.0f), CS_FLOAT(0xC0AE38E4, -5.4444447f)),
CS_CAM_EYE_SPLINE(0, 1091),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 47.199955f, 2753, 46, -354, 0x59A8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 47.199955f, 2753, 46, -354, 0x20B8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 47.199955f, 2753, 46, -354, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 47.199955f, 2753, 46, -354, 0x6430),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 47.199955f, 2753, 46, -354, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x423CCCC1, 47.199955f), 2753, 46, -354, 0x59A8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x423CCCC1, 47.199955f), 2753, 46, -354, 0x20B8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x423CCCC1, 47.199955f), 2753, 46, -354, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x423CCCC1, 47.199955f), 2753, 46, -354, 0x6430),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, CS_FLOAT(0x423CCCC1, 47.199955f), 2753, 46, -354, 0x0000),
CS_CAM_EYE_SPLINE(60, 1271),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 47.199955f, 2753, 46, -354, 0x20BA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 47.199955f, 2753, 46, -354, 0x44B8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 47.199955f, 2753, 46, -354, 0x8080),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 47.199955f, 2705, 67, -302, 0x2D9A),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 47.199955f, 2596, 127, -195, 0x005E),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 47.199955f, 2596, 127, -195, 0xFFFF),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 47.199955f, 2596, 127, -195, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 47.199955f, 2596, 127, -195, 0x5B80),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 47.199955f, 2596, 127, -195, 0x7805),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x423CCCC1, 47.199955f), 2753, 46, -354, 0x20BA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x423CCCC1, 47.199955f), 2753, 46, -354, 0x44B8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x423CCCC1, 47.199955f), 2753, 46, -354, 0x8080),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x423CCCC1, 47.199955f), 2705, 67, -302, 0x2D9A),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x423CCCC1, 47.199955f), 2596, 127, -195, 0x005E),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x423CCCC1, 47.199955f), 2596, 127, -195, 0xFFFF),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x423CCCC1, 47.199955f), 2596, 127, -195, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x423CCCC1, 47.199955f), 2596, 127, -195, 0x5B80),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, CS_FLOAT(0x423CCCC1, 47.199955f), 2596, 127, -195, 0x7805),
CS_CAM_AT_SPLINE(0, 1120),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 47.199955f, 2788, 23, -453, 0x20BA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 47.199955f, 2787, 23, -453, 0x44B8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 47.199955f, 2787, 23, -453, 0x8080),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 47.199955f, 2787, 23, -453, 0x2D9A),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 47.199955f, 2787, 23, -453, 0x005E),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x423CCCC1, 47.199955f), 2788, 23, -453, 0x20BA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x423CCCC1, 47.199955f), 2787, 23, -453, 0x44B8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, CS_FLOAT(0x423CCCC1, 47.199955f), 2787, 23, -453, 0x8080),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x423CCCC1, 47.199955f), 2787, 23, -453, 0x2D9A),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, CS_FLOAT(0x423CCCC1, 47.199955f), 2787, 23, -453, 0x005E),
CS_CAM_AT_SPLINE(60, 1300),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 47.199955f, 2788, 23, -453, 0x20BA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 47.199955f, 2787, 23, -453, 0x44B8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 47.199955f, 2787, 23, -453, 0x8080),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 47.199955f, 2777, 72, -378, 0x2D9A),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 47.199955f, 2673, 127, -267, 0x005E),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 47.199955f, 2673, 127, -267, 0xFFFF),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 47.199955f, 2673, 127, -267, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 47.199955f, 2673, 127, -267, 0x5B80),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 47.199955f, 2673, 127, -267, 0x7805),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x423CCCC1, 47.199955f), 2788, 23, -453, 0x20BA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x423CCCC1, 47.199955f), 2787, 23, -453, 0x44B8),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x423CCCC1, 47.199955f), 2787, 23, -453, 0x8080),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x423CCCC1, 47.199955f), 2777, 72, -378, 0x2D9A),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x423CCCC1, 47.199955f), 2673, 127, -267, 0x005E),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x423CCCC1, 47.199955f), 2673, 127, -267, 0xFFFF),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, CS_FLOAT(0x423CCCC1, 47.199955f), 2673, 127, -267, 0x0000),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x423CCCC1, 47.199955f), 2673, 127, -267, 0x5B80),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, CS_FLOAT(0x423CCCC1, 47.199955f), 2673, 127, -267, 0x7805),
CS_TEXT_LIST(4),
CS_TEXT_NONE(0, 40),
CS_TEXT(0x107D, 40, 60, 0x0000, 0xFFFF, 0xFFFF),
@ -49,12 +49,12 @@ CutsceneData D_808BCE20[] = {
CS_MISC_LIST(1),
CS_MISC(CS_MISC_STOP_CUTSCENE, 180, 200, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFF7, 0xFFFFFFDB, 0x00000000, 0xFFFFFFF7, 0xFFFFFFDB, 0x00000000, 0x00000000, 0x00000000),
CS_ACTOR_CUE_LIST(46, 1),
CS_ACTOR_CUE(0x0001, 0, 3000, 0x0000, 0x0000, 0x0000, 0, -41, -28, 0, -41, -28, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE(0x0001, 0, 3000, 0x0000, 0x0000, 0x0000, 0, -41, -28, 0, -41, -28, CS_FLOAT(0x0, 0.0f), CS_FLOAT(0x0, 0.0f), CS_FLOAT(0x0, 0.0f)),
CS_ACTOR_CUE_LIST(62, 4),
CS_ACTOR_CUE(0x0001, 0, 1, 0x0000, 0x0000, 0x0000, 2668, 46, -490, 2668, 46, -490, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE(0x0004, 1, 50, 0x5479, 0x0000, 0x0000, 2668, 46, -490, 2890, 43, -612, 4.5306125f, -0.06122449f, -4.5306125f),
CS_ACTOR_CUE(0x0004, 50, 100, 0x505C, 0x0000, 0x0000, 2890, 43, -612, 3109, 121, -705, 4.38f, 1.56f, -4.38f),
CS_ACTOR_CUE(0x0001, 100, 2084, 0x0000, 0x0000, 0x0000, 3109, 121, -705, 3109, 121, -705, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE(0x0001, 0, 1, 0x0000, 0x0000, 0x0000, 2668, 46, -490, 2668, 46, -490, CS_FLOAT(0x0, 0.0f), CS_FLOAT(0x0, 0.0f), CS_FLOAT(0x0, 0.0f)),
CS_ACTOR_CUE(0x0004, 1, 50, 0x5479, 0x0000, 0x0000, 2668, 46, -490, 2890, 43, -612, CS_FLOAT(0x4090FAC7, 4.5306125f), CS_FLOAT(0xBD7AC688, -0.06122449f), CS_FLOAT(0xC090FAC7, -4.5306125f)),
CS_ACTOR_CUE(0x0004, 50, 100, 0x505C, 0x0000, 0x0000, 2890, 43, -612, 3109, 121, -705, CS_FLOAT(0x408C28F6, 4.38f), CS_FLOAT(0x3FC7AE14, 1.56f), CS_FLOAT(0xC08C28F6, -4.38f)),
CS_ACTOR_CUE(0x0001, 100, 2084, 0x0000, 0x0000, 0x0000, 3109, 121, -705, 3109, 121, -705, CS_FLOAT(0x0, 0.0f), CS_FLOAT(0x0, 0.0f), CS_FLOAT(0x0, 0.0f)),
CS_START_SEQ_LIST(1),
CS_START_SEQ(NA_BGM_DEKU_TREE_CS, 140, 141, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFBA, 0x00000094, 0x00000000, 0xFFFFFFBA, 0x00000094),
CS_FADE_OUT_SEQ_LIST(1),
@ -69,31 +69,31 @@ CutsceneData D_808BD2A0[] = {
CS_MISC_LIST(1),
CS_MISC(CS_MISC_STOP_CUTSCENE, 90, 172, 0x0000, 0x00000000, 0x00000000, 0xFFFFFFE3, 0x00000012, 0x00000000, 0xFFFFFFE3, 0x00000012, 0x00000000, 0x00000000, 0x00000000),
CS_ACTOR_CUE_LIST(46, 1),
CS_ACTOR_CUE(0x0001, 0, 3000, 0x0000, 0x0000, 0x0000, 0, -27, 26, 0, -27, 26, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE(0x0001, 0, 3000, 0x0000, 0x0000, 0x0000, 0, -27, 26, 0, -27, 26, CS_FLOAT(0x0, 0.0f), CS_FLOAT(0x0, 0.0f), CS_FLOAT(0x0, 0.0f)),
CS_CAM_EYE_SPLINE(0, 1091),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 3740, -141, -530, 0x7065),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.999928f, 3740, -141, -530, 0x6167),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.999928f, 3740, -141, -530, 0x6D5D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.999928f, 3740, -141, -530, 0xF348),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 40.999928f, 3740, -141, -530, 0x9D94),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), 3740, -141, -530, 0x7065),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x4223FFED, 40.999928f), 3740, -141, -530, 0x6167),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x4223FFED, 40.999928f), 3740, -141, -530, 0x6D5D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x4223FFED, 40.999928f), 3740, -141, -530, 0xF348),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, CS_FLOAT(0x4223FFED, 40.999928f), 3740, -141, -530, 0x9D94),
CS_CAM_EYE_SPLINE_REL_TO_PLAYER(60, 1151),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -4, 5, 49, 0x7065),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -4, 5, 49, 0x6167),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -4, 5, 49, 0x6D5D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, -4, 5, 49, 0xF348),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 60.0f, -4, 5, 49, 0x9D94),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -4, 5, 49, 0x7065),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -4, 5, 49, 0x6167),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -4, 5, 49, 0x6D5D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -4, 5, 49, 0xF348),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), -4, 5, 49, 0x9D94),
CS_CAM_AT_SPLINE(0, 1120),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 40.999928f, 3777, -89, -605, 0x7065),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 40.999928f, 3777, -89, -605, 0x6167),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 40.999928f, 3776, -89, -605, 0x6D5D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 40.999928f, 3776, -89, -605, 0xF348),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 40.999928f, 3776, -89, -604, 0x9D94),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x4223FFED, 40.999928f), 3777, -89, -605, 0x7065),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x4223FFED, 40.999928f), 3777, -89, -605, 0x6167),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, CS_FLOAT(0x4223FFED, 40.999928f), 3776, -89, -605, 0x6D5D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x4223FFED, 40.999928f), 3776, -89, -605, 0xF348),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, CS_FLOAT(0x4223FFED, 40.999928f), 3776, -89, -604, 0x9D94),
CS_CAM_AT_SPLINE_REL_TO_PLAYER(60, 1180),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, 1, 35, -36, 0x7065),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, 1, 35, -36, 0x6167),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 60.0f, 1, 35, -36, 0x6D5D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 60.0f, 1, 35, -36, 0xF348),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 60.0f, 1, 35, -36, 0x9D94),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x42700000, 60.0f), 1, 35, -36, 0x7065),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x42700000, 60.0f), 1, 35, -36, 0x6167),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, CS_FLOAT(0x42700000, 60.0f), 1, 35, -36, 0x6D5D),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x42700000, 60.0f), 1, 35, -36, 0xF348),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, CS_FLOAT(0x42700000, 60.0f), 1, 35, -36, 0x9D94),
CS_TEXT_LIST(2),
CS_TEXT_NONE(0, 20),
CS_TEXT(0x1016, 20, 80, 0x0000, 0xFFFF, 0xFFFF),
@ -107,24 +107,24 @@ CutsceneData D_808BD520[] = {
CS_UNK_DATA_LIST(0x00000015, 1),
CS_UNK_DATA(0x00010000, 0x0BB80000, 0x00000000, 0x00000000, 0x0000000F, 0xFFFFFFDE, 0x00000000, 0x0000000F, 0xFFFFFFDE, 0x00000000, 0x00000000, 0x00000000),
CS_ACTOR_CUE_LIST(46, 2),
CS_ACTOR_CUE(0x0001, 0, 20, 0x0000, 0x0000, 0x0000, 42, 0, 77, 42, 0, 77, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE(0x0003, 20, 357, 0x0000, 0x0000, 0x0000, 42, 0, 77, 42, 0, 77, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE(0x0001, 0, 20, 0x0000, 0x0000, 0x0000, 42, 0, 77, 42, 0, 77, CS_FLOAT(0x0, 0.0f), CS_FLOAT(0x0, 0.0f), CS_FLOAT(0x0, 0.0f)),
CS_ACTOR_CUE(0x0003, 20, 357, 0x0000, 0x0000, 0x0000, 42, 0, 77, 42, 0, 77, CS_FLOAT(0x0, 0.0f), CS_FLOAT(0x0, 0.0f), CS_FLOAT(0x0, 0.0f)),
CS_CAM_EYE_SPLINE(0, 1151),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 60.0f, 3740, -141, -530, 0x00EA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.999928f, 3740, -141, -530, 0x00FB),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.999928f, 3740, -141, -530, 0x010C),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.999928f, 3740, -141, -530, 0x0198),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.999928f, 3740, -141, -530, 0x019A),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 40.999928f, 3740, -141, -530, 0x01AB),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 40.999928f, 3739, -141, -530, 0x01BC),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x42700000, 60.0f), 3740, -141, -530, 0x00EA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x4223FFED, 40.999928f), 3740, -141, -530, 0x00FB),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x4223FFED, 40.999928f), 3740, -141, -530, 0x010C),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x4223FFED, 40.999928f), 3740, -141, -530, 0x0198),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x4223FFED, 40.999928f), 3740, -141, -530, 0x019A),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x4223FFED, 40.999928f), 3740, -141, -530, 0x01AB),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, CS_FLOAT(0x4223FFED, 40.999928f), 3739, -141, -530, 0x01BC),
CS_CAM_AT_SPLINE(0, 1180),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 40.999928f, 3777, -89, -605, 0x00EA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 40.999928f, 3777, -89, -605, 0x00FB),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 40.999928f, 3777, -89, -605, 0x010C),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 40.999928f, 3763, -126, -621, 0x0198),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 40.999928f, 3763, -126, -621, 0x019A),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 40.999928f, 3763, -126, -621, 0x01AB),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 40.999928f, 3765, -118, -617, 0x01BC),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x4223FFED, 40.999928f), 3777, -89, -605, 0x00EA),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x4223FFED, 40.999928f), 3777, -89, -605, 0x00FB),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x4223FFED, 40.999928f), 3777, -89, -605, 0x010C),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x4223FFED, 40.999928f), 3763, -126, -621, 0x0198),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, CS_FLOAT(0x4223FFED, 40.999928f), 3763, -126, -621, 0x019A),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x4223FFED, 40.999928f), 3763, -126, -621, 0x01AB),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, CS_FLOAT(0x4223FFED, 40.999928f), 3765, -118, -617, 0x01BC),
CS_TEXT_LIST(2),
CS_TEXT_NONE(0, 20),
CS_TEXT(0x1017, 20, 60, 0x0000, 0xFFFF, 0xFFFF),
@ -142,19 +142,19 @@ CutsceneData D_808BD790[] = {
CS_UNK_DATA_LIST(0x00000015, 1),
CS_UNK_DATA(0x00010000, 0x0BB80000, 0x00000000, 0x00000000, 0x0000000F, 0xFFFFFFDE, 0x00000000, 0x0000000F, 0xFFFFFFDE, 0x00000000, 0x00000000, 0x00000000),
CS_ACTOR_CUE_LIST(46, 1),
CS_ACTOR_CUE(0x0001, 0, 119, 0x0000, 0x0000, 0x0000, 42, 0, 77, 42, 0, 77, 0.0f, 0.0f, 0.0f),
CS_ACTOR_CUE(0x0001, 0, 119, 0x0000, 0x0000, 0x0000, 42, 0, 77, 42, 0, 77, CS_FLOAT(0x0, 0.0f), CS_FLOAT(0x0, 0.0f), CS_FLOAT(0x0, 0.0f)),
CS_CAM_EYE_SPLINE(0, 1091),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 75.59984f, 3716, 790, -1171, 0x54EC),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 75.59984f, 3716, 790, -1171, 0x555C),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 75.59984f, 3716, 790, -1171, 0x55CC),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, 75.59984f, 3716, 790, -1171, 0x563C),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, 75.59984f, 3716, 790, -1171, 0x56AC),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x4297331E, 75.59984f), 3716, 790, -1171, 0x54EC),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x4297331E, 75.59984f), 3716, 790, -1171, 0x555C),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x4297331E, 75.59984f), 3716, 790, -1171, 0x55CC),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 0, CS_FLOAT(0x4297331E, 75.59984f), 3716, 790, -1171, 0x563C),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 0, CS_FLOAT(0x4297331E, 75.59984f), 3716, 790, -1171, 0x56AC),
CS_CAM_AT_SPLINE(0, 1120),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 75.59984f, 3769, 718, -1186, 0x54EC),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 75.59984f, 3769, 718, -1186, 0x555C),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, 75.59984f, 3769, 718, -1186, 0x55CC),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, 75.59984f, 3769, 718, -1186, 0x563C),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, 75.59984f, 3769, 718, -1186, 0x56AC),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x4297331E, 75.59984f), 3769, 718, -1186, 0x54EC),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x4297331E, 75.59984f), 3769, 718, -1186, 0x555C),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 1000, CS_FLOAT(0x4297331E, 75.59984f), 3769, 718, -1186, 0x55CC),
CS_CAM_POINT(CS_CAM_CONTINUE, 0x00, 30, CS_FLOAT(0x4297331E, 75.59984f), 3769, 718, -1186, 0x563C),
CS_CAM_POINT(CS_CAM_STOP, 0x00, 30, CS_FLOAT(0x4297331E, 75.59984f), 3769, 718, -1186, 0x56AC),
CS_TEXT_LIST(2),
CS_TEXT_NONE(0, 20),
CS_TEXT(0x1018, 20, 60, 0x0000, 0xFFFF, 0xFFFF),

View file

@ -38,8 +38,8 @@ static ColliderTrisElementInit sTrisElementsInit[2] = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x00, 0x04 },
{ 0x00000004, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_WOOD,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_WOOD,
ACELEM_ON,
OCELEM_NONE,
},
{ { { 220.0f, -10.0f, 0.0f }, { 220.0f, 10.0f, 0.0f }, { -220.0f, 10.0f, 0.0f } } },
@ -49,8 +49,8 @@ static ColliderTrisElementInit sTrisElementsInit[2] = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x00, 0x04 },
{ 0x00000004, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_WOOD,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_WOOD,
ACELEM_ON,
OCELEM_NONE,
},
{ { { 16.0f, 0.0f, 0.0f }, { 16.0f, 135.0f, 0.0f }, { -16.0f, 135.0f, 0.0f } } },

View file

@ -42,8 +42,8 @@ static ColliderTrisElementInit sTrisItemsInit[2] = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x00 },
{ 0x00020800, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ { { 75.0f, -8.0f, 75.0f }, { -75.0f, -8.0f, 75.0f }, { -75.0f, -8.0f, -75.0f } } },
@ -53,8 +53,8 @@ static ColliderTrisElementInit sTrisItemsInit[2] = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x00 },
{ 0x00020800, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ { { 140.0f, 288.8f, 0.0f }, { -140.0f, 288.0f, 0.0f }, { -140.0f, 0.0f, 0.0f } } },

View file

@ -105,27 +105,29 @@ void func_808C12C4(u8* arg1, s16 arg2) {
func_808C1278(SEGMENTED_TO_VIRTUAL(object_kingdodongo_Tex_016E10), arg1, arg2);
}
void func_808C1554(void* arg0, void* floorTex, s32 arg2, f32 arg3) {
u16* temp_s3 = SEGMENTED_TO_VIRTUAL(arg0);
u16* temp_s1 = SEGMENTED_TO_VIRTUAL(floorTex);
void func_808C1554(u16* arg0, u16* floorTex, s32 arg2, f32 arg3) {
s32 pad[2];
s16 i;
s16 i2;
u16 sp54[2048];
s16 temp;
s16 temp2;
arg0 = SEGMENTED_TO_VIRTUAL(arg0);
floorTex = SEGMENTED_TO_VIRTUAL(floorTex);
for (i = 0; i < 2048; i += 32) {
temp = sinf((((i / 32) + (s16)((arg2 * 50.0f) / 100.0f)) & 0x1F) * (M_PI / 16)) * arg3;
for (i2 = 0; i2 < 32; i2++) {
sp54[i + ((temp + i2) & 0x1F)] = temp_s1[i + i2];
sp54[i + ((temp + i2) & 0x1F)] = floorTex[i + i2];
}
}
for (i = 0; i < 32; i++) {
temp = sinf(((i + (s16)((arg2 * 80.0f) / 100.0f)) & 0x1F) * (M_PI / 16)) * arg3;
temp *= 32;
for (i2 = 0; i2 < 2048; i2 += 32) {
temp2 = (temp + i2) & 0x7FF;
temp_s3[i + temp2] = sp54[i + i2];
s16 temp2 = (temp + i2) & 0x7FF;
arg0[i + temp2] = sp54[i + i2];
}
}
}
@ -179,9 +181,6 @@ s32 BossDodongo_AteExplosive(BossDodongo* this, PlayState* play) {
void BossDodongo_Init(Actor* thisx, PlayState* play) {
BossDodongo* this = (BossDodongo*)thisx;
s16 i;
u16* temp_s1_3;
u16* temp_s2;
u32 temp_v0;
play->specialEffects = this->effects;
Actor_ProcessInitChain(&this->actor, sInitChain);
@ -202,8 +201,9 @@ void BossDodongo_Init(Actor* thisx, PlayState* play) {
Collider_SetJntSph(play, &this->collider, &this->actor, &sJntSphInit, this->items);
if (Flags_GetClear(play, play->roomCtx.curRoom.num)) { // KD is dead
temp_s1_3 = SEGMENTED_TO_VIRTUAL(gDodongosCavernBossLavaFloorTex);
temp_s2 = SEGMENTED_TO_VIRTUAL(sLavaFloorRockTex);
u16* temp_s1_3 = SEGMENTED_TO_VIRTUAL(gDodongosCavernBossLavaFloorTex);
u16* temp_s2 = SEGMENTED_TO_VIRTUAL(sLavaFloorRockTex);
u32 temp_v0;
Actor_Kill(&this->actor);
Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_DOOR_WARP1, -890.0f, -1523.76f, -3304.0f, 0, 0, 0,
@ -488,8 +488,7 @@ void BossDodongo_SetupRoll(BossDodongo* this) {
}
void BossDodongo_SetupBlowFire(BossDodongo* this) {
this->actor.speed = 0.0f;
this->unk_1E4 = 0.0f;
this->actor.speed = this->unk_1E4 = 0.0f;
Animation_Change(&this->skelAnime, &object_kingdodongo_Anim_0061D4, 1.0f, 0.0f,
Animation_GetLastFrame(&object_kingdodongo_Anim_0061D4), ANIMMODE_ONCE, 0.0f);
this->actionFunc = BossDodongo_BlowFire;
@ -913,8 +912,8 @@ void BossDodongo_Update(Actor* thisx, PlayState* play2) {
Math_SmoothStepToF(&this->colorFilterMax, 1099.0f, 1, 10.0f, 0.0);
} else {
Math_SmoothStepToF(&this->colorFilterR, play->lightCtx.fogColor[0], 1, 5.0f, 0.0);
Math_SmoothStepToF(&this->colorFilterG, play->lightCtx.fogColor[1], 1.0f, 5.0f, 0.0);
Math_SmoothStepToF(&this->colorFilterB, play->lightCtx.fogColor[2], 1.0f, 5.0f, 0.0);
Math_SmoothStepToF(&this->colorFilterG, play->lightCtx.fogColor[1], 1, 5.0f, 0.0);
Math_SmoothStepToF(&this->colorFilterB, play->lightCtx.fogColor[2], 1, 5.0f, 0.0);
Math_SmoothStepToF(&this->colorFilterMin, play->lightCtx.fogNear, 1.0, 5.0f, 0.0);
Math_SmoothStepToF(&this->colorFilterMax, 1000.0f, 1, 5.0f, 0.0);
}
@ -992,16 +991,17 @@ void BossDodongo_Update(Actor* thisx, PlayState* play2) {
}
}
func_808C1554(gDodongosCavernBossLavaFloorTex, sLavaFloorLavaTex, this->unk_19E, this->unk_224);
func_808C1554((u16*)gDodongosCavernBossLavaFloorTex, (u16*)sLavaFloorLavaTex, this->unk_19E, this->unk_224);
}
if (this->unk_1C6 != 0) {
u16* ptr1 = SEGMENTED_TO_VIRTUAL(sLavaFloorLavaTex);
u16* ptr2 = SEGMENTED_TO_VIRTUAL(sLavaFloorRockTex);
s16 i2;
s16 new_var;
for (i2 = 0; i2 < 20; i2++) {
s16 new_var = this->unk_1C2 & 0x7FF;
new_var = this->unk_1C2 & 0x7FF;
ptr1[new_var] = ptr2[new_var];
this->unk_1C2 += 37;
@ -1239,12 +1239,12 @@ void BossDodongo_UpdateDamage(BossDodongo* this, PlayState* play) {
if (this->unk_1C0 == 0) {
if (this->actionFunc == BossDodongo_Inhale) {
for (i = 0; i < 19; i++) {
if (this->collider.elements[i].base.bumperFlags & BUMP_HIT) {
if (this->collider.elements[i].base.acElemFlags & ACELEM_HIT) {
acHitElem = this->collider.elements[i].base.acHitElem;
if ((acHitElem->toucher.dmgFlags & DMG_BOOMERANG) ||
(acHitElem->toucher.dmgFlags & DMG_SLINGSHOT)) {
this->collider.elements[i].base.bumperFlags &= ~BUMP_HIT;
if ((acHitElem->atDmgInfo.dmgFlags & DMG_BOOMERANG) ||
(acHitElem->atDmgInfo.dmgFlags & DMG_SLINGSHOT)) {
this->collider.elements[i].base.acElemFlags &= ~ACELEM_HIT;
this->unk_1C0 = 2;
BossDodongo_SetupWalk(this);
this->unk_1DA = 0x32;
@ -1254,11 +1254,11 @@ void BossDodongo_UpdateDamage(BossDodongo* this, PlayState* play) {
}
}
if (this->collider.elements[0].base.bumperFlags & BUMP_HIT) {
this->collider.elements[0].base.bumperFlags &= ~BUMP_HIT;
if (this->collider.elements[0].base.acElemFlags & ACELEM_HIT) {
this->collider.elements[0].base.acElemFlags &= ~ACELEM_HIT;
acHitElem = this->collider.elements[0].base.acHitElem;
if ((this->actionFunc == BossDodongo_Vulnerable) || (this->actionFunc == BossDodongo_LayDown)) {
swordDamage = damage = CollisionCheck_GetSwordDamage(acHitElem->toucher.dmgFlags);
swordDamage = damage = CollisionCheck_GetSwordDamage(acHitElem->atDmgInfo.dmgFlags);
if (damage != 0) {
Actor_PlaySfx(&this->actor, NA_SE_EN_DODO_K_DAMAGE);
@ -1272,8 +1272,7 @@ void BossDodongo_UpdateDamage(BossDodongo* this, PlayState* play) {
}
void BossDodongo_SetupDeathCutscene(BossDodongo* this) {
this->actor.speed = 0.0f;
this->unk_1E4 = 0.0f;
this->actor.speed = this->unk_1E4 = 0.0f;
Animation_Change(&this->skelAnime, &object_kingdodongo_Anim_002D0C, 1.0f, 0.0f,
Animation_GetLastFrame(&object_kingdodongo_Anim_002D0C), ANIMMODE_ONCE, -5.0f);
this->actionFunc = BossDodongo_DeathCutscene;

View file

@ -16,8 +16,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK3,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 7, { { 8500, 1200, 0 }, 40 }, 100 },
@ -27,8 +27,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK3,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 33, { { 2000, -2000, 0 }, 60 }, 100 },
@ -38,8 +38,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 1, { { 0, 0, 0 }, 60 }, 100 },
@ -49,8 +49,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 15, { { 0, 0, 0 }, 20 }, 100 },
@ -60,8 +60,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 16, { { 0, 0, 0 }, 30 }, 100 },
@ -71,8 +71,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 17, { { 0, 0, 0 }, 40 }, 100 },
@ -82,8 +82,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 22, { { 0, 0, 0 }, 30 }, 100 },
@ -93,8 +93,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 23, { { 0, 0, 0 }, 20 }, 100 },
@ -104,8 +104,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 24, { { 0, 0, 0 }, 30 }, 100 },
@ -115,8 +115,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 29, { { 0, 0, 0 }, 30 }, 100 },
@ -126,8 +126,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 30, { { 0, 0, 0 }, 30 }, 100 },
@ -137,8 +137,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 31, { { 0, 0, 0 }, 30 }, 100 },
@ -148,8 +148,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 32, { { 0, 0, 0 }, 50 }, 100 },
@ -159,8 +159,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 38, { { 0, 0, 0 }, 30 }, 100 },
@ -170,8 +170,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 39, { { 0, 0, 0 }, 30 }, 100 },
@ -181,8 +181,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 40, { { 0, 0, 0 }, 40 }, 100 },
@ -192,8 +192,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 45, { { 0, 0, 0 }, 30 }, 100 },
@ -203,8 +203,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 46, { { 0, 0, 0 }, 30 }, 100 },
@ -214,8 +214,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 47, { { 0, 0, 0 }, 40 }, 100 },

View file

@ -258,7 +258,6 @@ static Vec3f sCeilingTargets[] = {
void BossFd_Fly(BossFd* this, PlayState* play) {
u8 sp1CF = false;
u8 temp_rand;
s16 i1;
s16 i2;
s16 i3;
@ -272,7 +271,6 @@ void BossFd_Fly(BossFd* this, PlayState* play) {
f32 temp_y;
f32 temp_x;
f32 temp_z;
f32 temp;
SkelAnime_Update(&this->skelAnimeHead);
SkelAnime_Update(&this->skelAnimeRightArm);
@ -476,13 +474,13 @@ void BossFd_Fly(BossFd* this, PlayState* play) {
this->subCamAtVel.y = 85.56f;
this->subCamAtVel.z = 25.0f;
} else {
// the following `temp` stuff is probably fake but is required to match
// the following `temp_z` stuff is probably fake but is required to match
// it's optimized to 1.0f because sp1CF is false at this point, but the 0.1f ends up in rodata
temp = 0.1f;
temp_z = 0.1f;
if (!sp1CF) {
temp = 1.0f;
temp_z = 1.0f;
}
Math_ApproachF(&this->subCamShake, 2.0f, temp, 0.1 * 0.08f);
Math_ApproachF(&this->subCamShake, 2.0f, temp_z, 0.1 * 0.08f);
this->subCamAtYOffset = Math_CosS(this->work[BFD_MOVE_TIMER] * 0x8000) * this->subCamShake;
}
if (this->timers[3] == 160) {
@ -561,6 +559,8 @@ void BossFd_Fly(BossFd* this, PlayState* play) {
this->timers[0] = 0;
this->timers[1] = 100;
} else {
u8 temp_rand;
if (this->introState != BFD_CS_NONE) {
this->holeIndex = 6;
} else {
@ -919,12 +919,6 @@ void BossFd_Fly(BossFd* this, PlayState* play) {
if (!this->work[BFD_STOP_FLAG]) {
s16 i4;
Vec3f spE0[3];
Vec3f spBC[3];
f32 phi_f20;
f32 padB4;
f32 padB0;
f32 padAC;
Math_ApproachS(&this->actor.world.rot.y, angleToTarget, 0xA, this->fwork[BFD_TURN_RATE]);
@ -993,6 +987,8 @@ void BossFd_Fly(BossFd* this, PlayState* play) {
}
if (!sp1CF) {
Vec3f spE0[3];
Vec3f spBC[3];
spE0[0].x = spE0[0].y = Math_SinS(this->work[BFD_MOVE_TIMER] * 1500.0f) * 3000.0f;
spE0[1].x = Math_SinS(this->work[BFD_MOVE_TIMER] * 2000.0f) * 4000.0f;
spE0[1].y = Math_SinS(this->work[BFD_MOVE_TIMER] * 2200.0f) * 4000.0f;
@ -1012,7 +1008,11 @@ void BossFd_Fly(BossFd* this, PlayState* play) {
}
} else {
for (i2 = 0; i2 < 3; i2++) {
phi_f20 = 0.0f;
f32 phi_f20 = 0.0f;
f32 padB4;
f32 padB0;
f32 padAC;
Math_ApproachZeroF(&this->rightArmRot[i2].y, 0.1f, 100.0f);
Math_ApproachZeroF(&this->leftArmRot[i2].y, 0.1f, 100.0f);
if (i2 == 0) {
@ -1027,14 +1027,16 @@ void BossFd_Fly(BossFd* this, PlayState* play) {
void BossFd_Wait(BossFd* this, PlayState* play) {
if (this->handoffSignal == FD2_SIGNAL_FLY) { // Set by BossFd2
u8 temp_rand;
this->handoffSignal = FD2_SIGNAL_NONE;
BossFd_SetupFly(this, play);
{
u8 temp_rand;
do {
temp_rand = Rand_ZeroFloat(8.9f);
} while (temp_rand == this->holeIndex);
this->holeIndex = temp_rand;
}
if (1) {} // Needed for matching
this->targetPosition.x = sHoleLocations[this->holeIndex].x;
this->targetPosition.y = sHoleLocations[this->holeIndex].y - 200.0f;
@ -1071,7 +1073,6 @@ void BossFd_Effects(BossFd* this, PlayState* play) {
s16 eyeStates[] = { EYE_OPEN, EYE_HALF, EYE_CLOSED, EYE_CLOSED, EYE_HALF };
f32 temp_x;
f32 temp_z;
s16 i;
if (1) {} // Needed for match
@ -1088,6 +1089,8 @@ void BossFd_Effects(BossFd* this, PlayState* play) {
play->envCtx.prevLightSetting = 0;
Math_ApproachF(&play->envCtx.lightBlend, 1.0f, 1.0f, 0.05f);
} else if (this->fogMode == 2) {
s16 pad;
this->fogMode--;
play->envCtx.lightSettingOverride = 0;
Math_ApproachF(&play->envCtx.lightBlend, 0.55f + 0.05f * Math_SinS(this->work[BFD_VAR_TIMER] * 0x3E00), 1.0f,
@ -1096,6 +1099,8 @@ void BossFd_Effects(BossFd* this, PlayState* play) {
play->envCtx.lightSetting = 3;
play->envCtx.prevLightSetting = 0;
} else if (this->fogMode == 10) {
s16 pad;
this->fogMode = 1;
play->envCtx.lightSettingOverride = 0;
Math_ApproachF(&play->envCtx.lightBlend, 0.21f + 0.07f * Math_SinS(this->work[BFD_VAR_TIMER] * 0xC00), 1.0f,
@ -1150,7 +1155,7 @@ void BossFd_Effects(BossFd* this, PlayState* play) {
Vec3f spawnVel1;
Vec3f spawnAccel1;
Vec3f spawnPos1;
s32 pad;
s16 i;
Audio_PlaySfxGeneral(NA_SE_EN_VALVAISA_APPEAR - SFX_FLAG, &this->actor.projectedPos, 4,
&gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
@ -1220,6 +1225,7 @@ void BossFd_Effects(BossFd* this, PlayState* play) {
breathOpacity = (this->fireBreathTimer >= 6) ? 255 : this->fireBreathTimer * 50;
}
if (breathOpacity != 0) {
s16 i;
f32 spawnAngleX;
f32 spawnAngleY;
Vec3f spawnSpeed2 = { 0.0f, 0.0f, 0.0f };
@ -1281,11 +1287,11 @@ void BossFd_CollisionCheck(BossFd* this, PlayState* play) {
ColliderJntSphElement* headCollider = &this->collider.elements[0];
ColliderElement* acHitElem;
if (headCollider->base.bumperFlags & BUMP_HIT) {
headCollider->base.bumperFlags &= ~BUMP_HIT;
if (headCollider->base.acElemFlags & ACELEM_HIT) {
headCollider->base.acElemFlags &= ~ACELEM_HIT;
acHitElem = headCollider->base.acHitElem;
this->actor.colChkInfo.health -= 2;
if (acHitElem->toucher.dmgFlags & DMG_ARROW_ICE) {
if (acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_ICE) {
this->actor.colChkInfo.health -= 2;
}
if ((s8)this->actor.colChkInfo.health <= 2) {
@ -1299,12 +1305,8 @@ void BossFd_CollisionCheck(BossFd* this, PlayState* play) {
}
void BossFd_Update(Actor* thisx, PlayState* play) {
s32 pad;
BossFd* this = (BossFd*)thisx;
f32 headGlow;
f32 rManeGlow;
f32 lManeGlow;
s16 i;
BossFd* this = (BossFd*)thisx;
PRINTF("FD MOVE START \n");
this->work[BFD_VAR_TIMER]++;
@ -1339,7 +1341,14 @@ void BossFd_Update(Actor* thisx, PlayState* play) {
this->fwork[BFD_TEX2_SCROLL_X] += 3.0f;
this->fwork[BFD_TEX2_SCROLL_Y] -= 2.0f;
Math_ApproachF(&this->fwork[BFD_BODY_TEX2_ALPHA], (this->work[BFD_VAR_TIMER] & 0x10) ? 30.0f : 158.0f, 1.0f, 8.0f);
if (1) {
f32 headGlow;
f32 rManeGlow;
f32 lManeGlow;
s32 pad;
Math_ApproachF(&this->fwork[BFD_BODY_TEX2_ALPHA], (this->work[BFD_VAR_TIMER] & 0x10) ? 30.0f : 158.0f, 1.0f,
8.0f);
if (this->skinSegments == 0) {
this->fwork[BFD_HEAD_TEX2_ALPHA] = this->fwork[BFD_BODY_TEX2_ALPHA];
} else {
@ -1378,8 +1387,9 @@ void BossFd_Update(Actor* thisx, PlayState* play) {
}
}
}
}
if (1) { // Needed for matching, and also to define new variables
if (1) {
Vec3f emberVel = { 0.0f, 0.0f, 0.0f };
Vec3f emberAccel = { 0.0f, 0.0f, 0.0f };
Vec3f emberPos;
@ -1432,7 +1442,7 @@ void BossFd_UpdateEffects(BossFd* this, PlayState* play) {
Color_RGB8 colors[4] = { { 255, 128, 0 }, { 255, 0, 0 }, { 255, 255, 0 }, { 255, 0, 0 } };
Vec3f diff;
s16 i1;
s16 i2;
s16 cInd;
for (i1 = 0; i1 < BOSSFD_EFFECT_COUNT; i1++, effect++) {
if (effect->type != BFD_FX_NONE) {
@ -1446,7 +1456,7 @@ void BossFd_UpdateEffects(BossFd* this, PlayState* play) {
effect->velocity.y += effect->accel.y;
effect->velocity.z += effect->accel.z;
if (effect->type == BFD_FX_EMBER) {
s16 cInd = effect->timer1 % 4;
cInd = effect->timer1 % 4;
effect->color.r = colors[cInd].r;
effect->color.g = colors[cInd].g;
@ -1477,6 +1487,8 @@ void BossFd_UpdateEffects(BossFd* this, PlayState* play) {
this->timers[3] = 50;
func_8002F6D4(play, NULL, 5.0f, effect->kbAngle, 0.0f, 0x30);
if (!player->bodyIsBurning) {
s16 i2;
for (i2 = 0; i2 < PLAYER_BODYPART_MAX; i2++) {
player->bodyFlameTimers[i2] = Rand_S16Offset(0, 200);
}
@ -1883,20 +1895,19 @@ void BossFd_DrawBody(PlayState* play, BossFd* this) {
Vec3f spF0 = { 0.0f, 0.0f, 0.0f };
Vec3f spE4;
Vec3s spDC;
f32 padD8;
f32 spD8;
f32 spD4;
if (this->bodyFallApart[i] < 2) {
f32 spD4 = 0.1f;
spD8 = spD4 = 0.1f;
temp_float = 0.1f;
Matrix_Translate(0.0f, 0.0f, -1100.0f, MTXMODE_APPLY);
Matrix_RotateY(-M_PI, MTXMODE_APPLY);
if (i >= 14) {
f32 sp84 = 1.0f - ((i - 14) * 0.2f);
Matrix_Scale(sp84, sp84, 1.0f, MTXMODE_APPLY);
spD4 = 0.1f * sp84;
temp_float = 0.1f * sp84;
spD4 = spD8 = spD8 * sp84;
}
Matrix_Scale(0.1f, 0.1f, 0.1f, MTXMODE_APPLY);
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEW(play->state.gfxCtx, "../z_boss_fd.c", 4768),
@ -1913,7 +1924,7 @@ void BossFd_DrawBody(PlayState* play, BossFd* this) {
bones = (EnVbBall*)Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_EN_VB_BALL, spE4.x,
spE4.y, spE4.z, spDC.x, spDC.y, spDC.z, i + 200);
bones->actor.scale.x = this->actor.scale.x * temp_float;
bones->actor.scale.x = this->actor.scale.x * spD8;
bones->actor.scale.y = this->actor.scale.y * spD4;
bones->actor.scale.z = this->actor.scale.z * 0.1f;
}

View file

@ -6,8 +6,8 @@ static ColliderJntSphElementInit sJntSphItemsInit[19] = {
ELEMTYPE_UNK3,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 0, { { 0, 0, 0 }, 20 }, 100 },
@ -17,8 +17,8 @@ static ColliderJntSphElementInit sJntSphItemsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_ON,
},
{ 1, { { 0, 0, 0 }, 20 }, 100 },
@ -28,8 +28,8 @@ static ColliderJntSphElementInit sJntSphItemsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_ON,
},
{ 2, { { 0, 0, 0 }, 20 }, 100 },
@ -39,8 +39,8 @@ static ColliderJntSphElementInit sJntSphItemsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_ON,
},
{ 3, { { 0, 0, 0 }, 20 }, 100 },
@ -50,8 +50,8 @@ static ColliderJntSphElementInit sJntSphItemsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_ON,
},
{ 4, { { 0, 0, 0 }, 20 }, 100 },
@ -61,8 +61,8 @@ static ColliderJntSphElementInit sJntSphItemsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_ON,
},
{ 5, { { 0, 0, 0 }, 20 }, 100 },
@ -72,8 +72,8 @@ static ColliderJntSphElementInit sJntSphItemsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_ON,
},
{ 6, { { 0, 0, 0 }, 20 }, 100 },
@ -83,8 +83,8 @@ static ColliderJntSphElementInit sJntSphItemsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_ON,
},
{ 7, { { 0, 0, 0 }, 20 }, 100 },
@ -94,8 +94,8 @@ static ColliderJntSphElementInit sJntSphItemsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_ON,
},
{ 8, { { 0, 0, 0 }, 20 }, 100 },
@ -105,8 +105,8 @@ static ColliderJntSphElementInit sJntSphItemsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_ON,
},
{ 9, { { 0, 0, 0 }, 20 }, 100 },
@ -116,8 +116,8 @@ static ColliderJntSphElementInit sJntSphItemsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_ON,
},
{ 10, { { 0, 0, 0 }, 20 }, 100 },
@ -127,8 +127,8 @@ static ColliderJntSphElementInit sJntSphItemsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_ON,
},
{ 11, { { 0, 0, 0 }, 20 }, 100 },
@ -138,8 +138,8 @@ static ColliderJntSphElementInit sJntSphItemsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_ON,
},
{ 12, { { 0, 0, 0 }, 20 }, 100 },
@ -149,8 +149,8 @@ static ColliderJntSphElementInit sJntSphItemsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_ON,
},
{ 13, { { 0, 0, 0 }, 20 }, 100 },
@ -160,8 +160,8 @@ static ColliderJntSphElementInit sJntSphItemsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_ON,
},
{ 14, { { 0, 0, 0 }, 18 }, 100 },
@ -171,8 +171,8 @@ static ColliderJntSphElementInit sJntSphItemsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_ON,
},
{ 15, { { 0, 0, 0 }, 16 }, 100 },
@ -182,8 +182,8 @@ static ColliderJntSphElementInit sJntSphItemsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_ON,
},
{ 16, { { 0, 0, 0 }, 14 }, 100 },
@ -193,8 +193,8 @@ static ColliderJntSphElementInit sJntSphItemsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_ON,
},
{ 17, { { 0, 0, 0 }, 12 }, 100 },
@ -204,8 +204,8 @@ static ColliderJntSphElementInit sJntSphItemsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_ON,
},
{ 18, { { 0, 0, 0 }, 10 }, 100 },

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