Merge pull request #201 from Kelebek1/fragment62
Some checks failed
C/C++ CI / build (push) Has been cancelled

Fragment62
This commit is contained in:
Maide 2025-06-19 23:12:24 +01:00 committed by GitHub
commit d218ac9361
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
99 changed files with 57010 additions and 3498 deletions

View File

@ -60,6 +60,8 @@ N64_EMULATOR ?=
MIPS_BINUTILS_PREFIX ?= mips-linux-gnu-
PRINT = printf
PREPROCESS :=
# Whether to hide commands or not
VERBOSE ?= 0
ifeq ($(VERBOSE),0)
@ -296,6 +298,8 @@ DECOMP_POKESTADIUM_FILTERED := $(patsubst %.c,%.o,$(addprefix build/,$(shell fin
# only run asm processor on files that need it.
$(DECOMP_POKESTADIUM_FILTERED): CC := $(ASM_PROC) $(ASM_PROC_FLAGS) $(CC) -- $(AS) $(ASFLAGS) --
$(BUILD_DIR)/src/%.o: PREPROCESS := ./tools/preprocess.sh -i $(ICONV) --
###################### Ugly hacksz #############################
# This is unsanitary to do, -but-, because this file is encrypted we cant have splat decrypt it
@ -421,7 +425,7 @@ $(BUILD_DIR)/%.o: %.s
$(BUILD_DIR)/%.o: %.c
$(call print,Compiling:,$<,$@)
$(V)$(CC_CHECK) $(CC_CHECK_FLAGS) $(IINC) -I $(dir $*) $(CHECK_WARNINGS) $(BUILD_DEFINES) $(COMMON_DEFINES) $(RELEASE_DEFINES) $(GBI_DEFINES) $(LIBULTRA_DEFINES) $(C_DEFINES) $(MIPS_BUILTIN_DEFS) -o $@ $<
$(V)$(CC) -c $(CFLAGS) $(BUILD_DEFINES) $(IINC) $(WARNINGS) $(MIPS_VERSION) $(ENDIAN) $(COMMON_DEFINES) $(RELEASE_DEFINES) $(GBI_DEFINES) $(LIBULTRA_DEFINES) $(C_DEFINES) $(OPTFLAGS) -o $@ $<
$(V)$(PREPROCESS) $(CC) -c $(CFLAGS) $(BUILD_DEFINES) $(IINC) $(WARNINGS) $(MIPS_VERSION) $(ENDIAN) $(COMMON_DEFINES) $(RELEASE_DEFINES) $(GBI_DEFINES) $(LIBULTRA_DEFINES) $(C_DEFINES) $(OPTFLAGS) -o $@ $<
$(V)$(OBJDUMP_CMD)
$(V)$(RM_MDEBUG)

View File

@ -147,17 +147,17 @@ typedef struct unk_D_86002F58_004_000 {
/* 0x054 */ unk_D_86002F58_004_000_054 unk_054;
/* 0x060 */ MtxF unk_060;
/* 0x0A0 */ Color_RGBA8_u32 unk_0A0;
/* 0x0A4 */ char pad0A4[2];
/* 0x0A4 */ char unk0A4[2];
/* 0x0A6 */ u8 unk_0A6;
/* 0x0A7 */ u8 unk_0A7;
/* 0x0A8 */ unk_D_86002F58_004_000_0A8 unk_0A8[1];
/* 0x0B8 */ char pad0B8[0x24];
/* 0x0B8 */ char unk0B8[0x24];
/* 0x0DC */ Vec3f unk_0DC;
/* 0x0E0 */ char pad0E0[0x4];
/* 0x0E0 */ char unk0E0[0x4];
/* 0x0EC */ Vec3f unk_0EC;
/* 0x0F8 */ char pad0F8[0x4];
/* 0x0F8 */ char unk0F8[0x4];
/* 0x0FC */ Vec3f unk_0FC;
/* 0x108 */ char pad108[0x60];
/* 0x108 */ char unk108[0x60];
} unk_D_86002F58_004_000; // size = 0x168
typedef struct unk_D_86002F34_000_014_004 {
@ -533,6 +533,8 @@ typedef struct TrainerData {
/* 0x03A */ char unk3A[0x1F6];
} TrainerData; // size = 0x230
extern s16 D_80075E40[];
#include "variables.h"
#endif

View File

@ -1,35 +0,0 @@
#ifndef MATH_H
#define MATH_H
#include "PR/ultratypes.h"
#define M_PI 3.14159265358979323846f
#define M_SQRT2 1.41421356237309504880f
#define M_SQRT1_2 0.70710678118654752440f /* 1/sqrt(2) */
#define FLT_MAX 340282346638528859811704183484516925440.0f
#define SHT_MAX 32767.0f
#define SHT_MINV (1.0f / SHT_MAX)
typedef union {
f64 d;
struct {
u32 hi;
u32 lo;
} word;
} du;
typedef union {
u32 i;
f32 f;
} fu;
extern f32 __libm_qnan_f;
float fabsf(float f);
#pragma intrinsic(fabsf)
float sqrtf(float f);
#pragma intrinsic(sqrtf)
double sqrt(double d);
#pragma intrinsic(sqrt)
#endif

View File

@ -3,12 +3,17 @@
#include "PR/ultratypes.h"
#define M_PI_F 3.14159265358979323846f
#define M_SQRT2 1.41421356237309504880f
#define M_SQRT1_2 0.70710678118654752440f /* 1/sqrt(2) */
#define FLT_MAX 340282346638528859811704183484516925440.0f
#define SHT_MAX 32767.0f
#define SHT_MINV (1.0f / SHT_MAX)
#define TWO_THIRDS_PI 2.094395160675049
#define TWO_PI 6.2831854820251469
#define TWO_PI_F 6.283185482f
extern long long __d_to_ll(double d);
extern long long __f_to_ll(float f);
extern unsigned long long __d_to_ull(double d);
@ -18,6 +23,10 @@ extern float __ll_to_f(long long s);
extern double __ull_to_d(unsigned long long u);
extern float __ull_to_f(unsigned long long u);
float fabsf(float f);
float sqrtf(float f);
double sqrt(double d);
#define SINS(x) gSineTable[(u16) (x) >> 4]
#define COSS(x) gCosineTable[(u16) (x) >> 4]

View File

@ -542,6 +542,8 @@ extern u8 _70D3A0_ROM_START[];
extern u8 _70D3A0_ROM_END[];
extern u8 D_70110[];
extern u8 D_70290[];
extern u8 D_6E910[];
extern u8 D_71E10[];
extern u8 D_70B10[];
extern u8 _6EB340_ROM_START[];
extern u8 _6EB340_ROM_END[];
@ -558,7 +560,8 @@ extern u8 trade_select_ui_ROM_END[];
extern u8 _798CD0_TEXT_START[];
extern u8 _798CD0_ROM_START[];
extern u8 _798CD0_ROM_END[];
extern u8 _7820E0_ROM_START[];
extern u8 _7820E0_ROM_END[];
extern u8 D_124570[];

View File

@ -758,6 +758,71 @@ extern u8 D_8C200090[];
extern u8 D_8C200920[];
extern u8 D_8C201070[];
extern u8 D_8C2011C4[];
extern u8 D_3008380[];
extern u8 D_3008400[];
extern u8 D_3008480[];
extern u8 D_3008500[];
extern u8 D_3008580[];
extern u8 D_3008600[];
extern u8 D_3008680[];
extern u8 D_3008700[];
extern u8 D_3000470[];
extern u8 D_3001F70[];
extern u8 D_30092C0[];
extern u8 D_3009560[];
extern u8 D_3008280[];
extern u8 D_3006170[];
extern u8 D_30061D0[];
extern u8 D_3006230[];
extern u8 D_1003DB0[];
extern u8 D_1003E50[];
extern u8 D_1003EA0[];
extern u8 D_1003EC8[];
extern u8 D_1003EF0[];
extern u8 D_300B870[];
extern u8 D_3008C00[];
extern u8 D_3008D80[];
extern u8 D_3008E40[];
extern u8 D_3008FC0[];
extern u8 D_3009080[];
extern u8 D_3009200[];
extern u8 D_3008780[];
extern u8 D_3008900[];
extern u8 D_30089C0[];
extern u8 D_3008B40[];
extern u8 D_3006290[];
extern u8 D_3006450[];
extern u8 D_3006530[];
extern u8 D_30066F0[];
extern u8 D_30067D0[];
extern u8 D_3006990[];
extern u8 D_3006A70[];
extern u8 D_3006C30[];
extern u8 D_300B630[];
extern u8 D_300A1F0[];
extern u8 D_30096B0[];
extern u8 D_300AAF0[];
extern u8 D_300A8B0[];
extern u8 D_300B3F0[];
extern u8 D_3009FB0[];
extern u8 D_30098F0[];
extern u8 D_300A430[];
extern u8 D_300B1B0[];
extern u8 D_300AF70[];
extern u8 D_300A670[];
extern u8 D_3009D70[];
extern u8 D_300AD30[];
extern u8 D_3009B30[];
extern u8 D_3006D10[];
extern u8 D_3007010[];
extern u8 D_3007310[];
extern u8 D_3007610[];
extern u8 D_3007A78[];
extern u8 D_3007EB0[];
extern u8 D_3007910[];
extern u8 D_3008018[];
extern u8 D_3007BE0[];
extern u8 D_3007D48[];
extern LEODiskID D_800818E0;
@ -872,10 +937,11 @@ typedef struct unk_D_70B10 {
extern u32 D_8C000000; // start of some rom area
typedef struct unk_D_80072B00 {
/* 0x00 */ char unk00[2];
/* 0x00 */ u8 unk_00;
/* 0x01 */ u8 unk_01;
/* 0x02 */ u8 unk_02;
/* 0x03 */ u8 unk_03;
/* 0x04 */ char unk04[1];
/* 0x04 */ u8 unk_04;
/* 0x05 */ u8 unk_05;
} unk_D_80072B00; // size = 0x6
extern unk_D_80072B00 D_80072B00[];
@ -883,10 +949,22 @@ extern unk_D_80072B00 D_80072B00[];
typedef struct unk_D_80072338 {
/* 0x00 */ char unk00[0x1];
/* 0x01 */ u8 unk_01;
/* 0x02 */ char unk02[0xA];
/* 0x02 */ char unk02[0x2];
/* 0x04 */ s32 unk_04;
/* 0x08 */ char unk08[0x4];
} unk_D_80072338; // size = 0xC
extern unk_D_80072338 D_80072338[];
extern char D_8006FEE8[][0x1C];
typedef struct unk_rom_70D3A0_offset_72780 {
/* 0x00 */ char unk00[0x20];
} unk_rom_70D3A0_offset_72780;
extern unk_rom_70D3A0_offset_72780 D_72780[];
typedef struct unk_rom_70D3A0_offset_73A60 {
/* 0x00 */ char unk00[0x20];
} unk_rom_70D3A0_offset_73A60;
extern unk_rom_70D3A0_offset_73A60 D_73A60[];
#endif

View File

@ -316,7 +316,6 @@ pad_D_879060B4 = 0x879060B4; // size:0x8
D_879060E0 = 0x879060E0; // size:0xC
D_87906100 = 0x87906100; // size:0xC
D_87906110 = 0x87906110; // size:0xC
D_8140E628 = 0x8140E628; // size:0x90
D_400C800 = 0x400C800;
D_400CA00 = 0x400CA00;
D_400CC00 = 0x400CC00;
@ -1018,3 +1017,399 @@ D_8C200920 = 0x8C200920;
D_8C201070 = 0x8C201070;
D_8C2011C4 = 0x8C2011C4;
D_80070F84 = 0x80070F84;
D_84385388 = 0x84385388; // size:0x3C8
D_84390068 = 0x84390068; // size:0x38
D_84390010 = 0x84390010; // size:0x8
D_84390028 = 0x84390028; // size:0x20
D_843901F0 = 0x843901F0; // size:0xC
D_84390048 = 0x84390048; // size:0x20
D_3008380 = 0x3008380;
D_3008400 = 0x3008400;
D_3008480 = 0x3008480;
D_3008500 = 0x3008500;
D_3008580 = 0x3008580;
D_3008600 = 0x3008600;
D_3008680 = 0x3008680;
D_3008700 = 0x3008700;
D_3000470 = 0x3000470;
D_3001F70 = 0x3001F70;
D_30092C0 = 0x30092C0;
D_3009560 = 0x3009560;
D_3008280 = 0x3008280;
D_3006170 = 0x3006170;
D_30061D0 = 0x30061D0;
D_3006230 = 0x3006230;
D_300B870 = 0x300B870;
D_3008C00 = 0x3008C00;
D_3008D80 = 0x3008D80;
D_3008E40 = 0x3008E40;
D_3008FC0 = 0x3008FC0;
D_3009080 = 0x3009080;
D_3009200 = 0x3009200;
D_3008780 = 0x3008780;
D_3008900 = 0x3008900;
D_30089C0 = 0x30089C0;
D_3008B40 = 0x3008B40;
D_3006290 = 0x3006290;
D_3006450 = 0x3006450;
D_3006530 = 0x3006530;
D_30066F0 = 0x30066F0;
D_30067D0 = 0x30067D0;
D_3006990 = 0x3006990;
D_3006A70 = 0x3006A70;
D_3006C30 = 0x3006C30;
D_300B630 = 0x300B630;
D_300A1F0 = 0x300A1F0;
D_30096B0 = 0x30096B0;
D_300AAF0 = 0x300AAF0;
D_300A8B0 = 0x300A8B0;
D_300B3F0 = 0x300B3F0;
D_3009FB0 = 0x3009FB0;
D_30098F0 = 0x30098F0;
D_300A430 = 0x300A430;
D_300B1B0 = 0x300B1B0;
D_300AF70 = 0x300AF70;
D_300A670 = 0x300A670;
D_3009D70 = 0x3009D70;
D_300AD30 = 0x300AD30;
D_3009B30 = 0x3009B30;
D_3006D10 = 0x3006D10;
D_3007010 = 0x3007010;
D_3007310 = 0x3007310;
D_3007610 = 0x3007610;
D_843901B0 = 0x843901B0; // size:0x40
D_84385B54 = 0x84385B54; // type:asciz
D_8438682C = 0x8438682C; // type:u8
D_84386844 = 0x84386844; // type:u8
D_84386848 = 0x84386848; // type:u8
D_8438684C = 0x8438684C; // type:u8
D_84386850 = 0x84386850; // type:u8
D_84386854 = 0x84386854; // type:u8
D_84386858 = 0x84386858; // type:u8
D_8438685C = 0x8438685C; // type:u8
D_84386860 = 0x84386860; // type:u8
D_84386868 = 0x84386868; // type:u8
D_8438686C = 0x8438686C; // type:u8
D_84386870 = 0x84386870; // type:u8
D_84386874 = 0x84386874; // type:u8
D_84386878 = 0x84386878; // type:u8
D_8438687C = 0x8438687C; // type:u8
D_84386880 = 0x84386880; // type:u8
D_84386884 = 0x84386884; // type:u8
D_8438688C = 0x8438688C; // type:u8
D_84386894 = 0x84386894; // type:u8
D_84386898 = 0x84386898; // type:u8
D_8438689C = 0x8438689C; // type:u8
D_843868A0 = 0x843868A0; // type:u8
D_843868A4 = 0x843868A4; // type:u8
D_843868A8 = 0x843868A8; // type:u8
D_843868AC = 0x843868AC; // type:u8
D_843868B0 = 0x843868B0; // type:u8
D_843868B4 = 0x843868B4; // type:u8
D_843868B8 = 0x843868B8; // type:u8
D_843868BC = 0x843868BC; // type:u8
D_843868C0 = 0x843868C0; // type:u8
D_843868C8 = 0x843868C8; // type:u8
D_843868CC = 0x843868CC; // type:u8
D_843868D0 = 0x843868D0; // type:u8
D_843868D4 = 0x843868D4; // type:u8
D_843868D8 = 0x843868D8; // type:u8
D_843868DC = 0x843868DC; // type:u8
D_843868E0 = 0x843868E0; // type:u8
D_843868E4 = 0x843868E4; // type:u8
D_843868E8 = 0x843868E8; // type:u8
D_843868EC = 0x843868EC; // type:u8
D_843868F4 = 0x843868F4; // type:u8
D_843868F8 = 0x843868F8; // type:u8
D_843868FC = 0x843868FC; // type:u8
D_84386900 = 0x84386900; // type:u8
D_84386904 = 0x84386904; // type:u8
D_84386908 = 0x84386908; // type:u8
D_8438690C = 0x8438690C; // type:u8
D_84386910 = 0x84386910; // type:u8
D_84386914 = 0x84386914; // type:u8
D_84386918 = 0x84386918; // type:u8
D_84386920 = 0x84386920; // type:u8
D_84386924 = 0x84386924; // type:u8
D_84386928 = 0x84386928; // type:u8
D_8438692C = 0x8438692C; // type:u8
D_84386930 = 0x84386930; // type:u8
D_84386934 = 0x84386934; // type:u8
D_84386938 = 0x84386938; // type:u8
D_8438693C = 0x8438693C; // type:u8
D_84386940 = 0x84386940; // type:u8
D_84386944 = 0x84386944; // type:u8
D_84386948 = 0x84386948; // type:u8
D_8438694C = 0x8438694C; // type:u8
D_84386950 = 0x84386950; // type:u8
D_84386954 = 0x84386954; // type:u8
D_84386958 = 0x84386958; // type:u8
D_8438695C = 0x8438695C; // type:u8
D_84386960 = 0x84386960; // type:u8
D_84386964 = 0x84386964; // type:u8
D_84386968 = 0x84386968; // type:u8
D_84386970 = 0x84386970; // type:u8
D_84386974 = 0x84386974; // type:u8
D_84386978 = 0x84386978; // type:u8
D_8438697C = 0x8438697C; // type:u8
D_84386980 = 0x84386980; // type:u8
D_84386988 = 0x84386988; // type:u8
D_8438698C = 0x8438698C; // type:u8
D_84386990 = 0x84386990; // type:u8
D_84386994 = 0x84386994; // type:u8
D_8438699C = 0x8438699C; // type:u8
D_843869A0 = 0x843869A0; // type:u8
D_843869A8 = 0x843869A8; // type:u8
D_843869AC = 0x843869AC; // type:u8
D_843869B0 = 0x843869B0; // type:u8
D_843869B4 = 0x843869B4; // type:u8
D_843869B8 = 0x843869B8; // type:u8
D_843869BC = 0x843869BC; // type:u8
D_843869C0 = 0x843869C0; // type:u8
D_843869C4 = 0x843869C4; // type:u8
D_843869C8 = 0x843869C8; // type:u8
D_843869D0 = 0x843869D0; // type:u8
D_843869D4 = 0x843869D4; // type:u8
D_843869D8 = 0x843869D8; // type:u8
D_843869DC = 0x843869DC; // type:u8
D_843869E0 = 0x843869E0; // type:u8
D_843869E8 = 0x843869E8; // type:u8
D_843869EC = 0x843869EC; // type:u8
D_843869F0 = 0x843869F0; // type:u8
D_843869F8 = 0x843869F8; // type:u8
D_843869FC = 0x843869FC; // type:u8
D_84386A00 = 0x84386A00; // type:u8
D_84386A04 = 0x84386A04; // type:u8
D_84386A08 = 0x84386A08; // type:u8
D_84386A0C = 0x84386A0C; // type:u8
D_84386A10 = 0x84386A10; // type:u8
D_84386A14 = 0x84386A14; // type:u8
D_84386A18 = 0x84386A18; // type:u8
D_84386A1C = 0x84386A1C; // type:u8
D_84386A20 = 0x84386A20; // type:u8
D_84386A24 = 0x84386A24; // type:u8
D_84386A28 = 0x84386A28; // type:u8
D_84386A2C = 0x84386A2C; // type:u8
D_84386A30 = 0x84386A30; // type:u8
D_84386A38 = 0x84386A38; // type:u8
D_84386A3C = 0x84386A3C; // type:u8
D_84386A40 = 0x84386A40; // type:u8
D_84386A44 = 0x84386A44; // type:u8
D_84386A48 = 0x84386A48; // type:u8
D_84386A4C = 0x84386A4C; // type:u8
D_84386A50 = 0x84386A50; // type:u8
D_84386A5C = 0x84386A5C; // type:u8
D_84386A60 = 0x84386A60; // type:u8
D_84386A64 = 0x84386A64; // type:u8
D_84386A68 = 0x84386A68; // type:u8
D_84386A6C = 0x84386A6C; // type:u8
D_84386A70 = 0x84386A70; // type:u8
D_84386A74 = 0x84386A74; // type:u8
D_84386A78 = 0x84386A78; // type:u8
D_84386A7C = 0x84386A7C; // type:u8
D_84386A80 = 0x84386A80; // type:u8
D_84386A84 = 0x84386A84; // type:u8
D_84386A88 = 0x84386A88; // type:u8
D_84386A8C = 0x84386A8C; // type:u8
D_84386A90 = 0x84386A90; // type:u8
D_84386A94 = 0x84386A94; // type:u8
D_84386A98 = 0x84386A98; // type:u8
D_84386A9C = 0x84386A9C; // type:u8
D_84386AA0 = 0x84386AA0; // type:u8
D_84386AA4 = 0x84386AA4; // type:u8
D_84386AA8 = 0x84386AA8; // type:u8
D_84386AAC = 0x84386AAC; // type:u8
D_84386AB0 = 0x84386AB0; // type:u8
D_84386AB4 = 0x84386AB4; // type:u8
D_84386AB8 = 0x84386AB8; // type:u8
D_84386ABC = 0x84386ABC; // type:u8
D_84386AC0 = 0x84386AC0; // type:u8
D_84386AC4 = 0x84386AC4; // type:u8
D_84386AC8 = 0x84386AC8; // type:u8
D_84386ACC = 0x84386ACC; // type:u8
D_84386AD0 = 0x84386AD0; // type:u8
D_84386AD4 = 0x84386AD4; // type:u8
D_84386AD8 = 0x84386AD8; // type:u8
D_84386ADC = 0x84386ADC; // type:u8
D_84386AE0 = 0x84386AE0; // type:u8
D_84386AE4 = 0x84386AE4; // type:u8
D_84386AE8 = 0x84386AE8; // type:u8
D_84386AEC = 0x84386AEC; // type:u8
D_84386AF0 = 0x84386AF0; // type:u8
D_84386AF4 = 0x84386AF4; // type:u8
D_84386AF8 = 0x84386AF8; // type:u8
D_84386AFC = 0x84386AFC; // type:u8
D_84386B00 = 0x84386B00; // type:u8
D_84386B04 = 0x84386B04; // type:u8
D_84386B08 = 0x84386B08; // type:u8
D_84386B0C = 0x84386B0C; // type:u8
D_84386B10 = 0x84386B10; // type:u8
D_84386B14 = 0x84386B14; // type:u8
D_84386B18 = 0x84386B18; // type:u8
D_84386B1C = 0x84386B1C; // type:u8
D_84386B20 = 0x84386B20; // type:u8
D_84386B24 = 0x84386B24; // type:u8
D_84386B28 = 0x84386B28; // type:u8
D_84386B2C = 0x84386B2C; // type:u8
D_84386B30 = 0x84386B30; // type:u8
D_84386B34 = 0x84386B34; // type:u8
D_84386B38 = 0x84386B38; // type:u8
D_84386B3C = 0x84386B3C; // type:u8
D_84386B40 = 0x84386B40; // type:u8
D_84386B44 = 0x84386B44; // type:u8
D_84386B48 = 0x84386B48; // type:u8
D_84386B4C = 0x84386B4C; // type:u8
D_84386B50 = 0x84386B50; // type:u8
D_84386B54 = 0x84386B54; // type:u8
D_84386B58 = 0x84386B58; // type:u8
D_84386B5C = 0x84386B5C; // type:u8
D_84386B60 = 0x84386B60; // type:u8
D_84386B64 = 0x84386B64; // type:u8
D_84386B68 = 0x84386B68; // type:u8
D_84386B6C = 0x84386B6C; // type:u8
D_84386B70 = 0x84386B70; // type:u8
D_84386B74 = 0x84386B74; // type:u8
D_84386B78 = 0x84386B78; // type:u8
D_84386B7C = 0x84386B7C; // type:u8
D_84386B80 = 0x84386B80; // type:u8
D_84386B84 = 0x84386B84; // type:u8
D_84386B88 = 0x84386B88; // type:u8
D_84386B8C = 0x84386B8C; // type:u8
D_84386B90 = 0x84386B90; // type:u8
D_84386B94 = 0x84386B94; // type:u8
D_84386B98 = 0x84386B98; // type:u8
D_84386B9C = 0x84386B9C; // type:u8
D_84386BA0 = 0x84386BA0; // type:u8
D_84386BA4 = 0x84386BA4; // type:u8
D_84386BA8 = 0x84386BA8; // type:u8
D_84386BAC = 0x84386BAC; // type:u8
D_84386BB0 = 0x84386BB0; // type:u8
D_84386BB4 = 0x84386BB4; // type:u8
D_84386BB8 = 0x84386BB8; // type:u8
D_84386BBC = 0x84386BBC; // type:u8
D_84386BC4 = 0x84386BC4; // type:u8
D_84386BC8 = 0x84386BC8; // type:u8
D_84386BD0 = 0x84386BD0; // type:u8
D_84386BD4 = 0x84386BD4; // type:u8
D_84386BD8 = 0x84386BD8; // type:u8
D_84386BE0 = 0x84386BE0; // type:u8
D_84386BE4 = 0x84386BE4; // type:u8
D_84386BE8 = 0x84386BE8; // type:u8
D_84386BEC = 0x84386BEC; // type:u8
D_84386BF0 = 0x84386BF0; // type:u8
D_84386C00 = 0x84386C00; // type:u8
D_84386C04 = 0x84386C04; // type:u8
D_84386C08 = 0x84386C08; // type:u8
D_84386C0C = 0x84386C0C; // type:u8
D_84386C10 = 0x84386C10; // type:u8
D_84386C14 = 0x84386C14; // type:u8
D_84386C18 = 0x84386C18; // type:u8
D_84386C1C = 0x84386C1C; // type:u8
D_84386C20 = 0x84386C20; // type:u8
D_84386C24 = 0x84386C24; // type:u8
D_84386C28 = 0x84386C28; // type:u8
D_84386C34 = 0x84386C34; // type:u8
D_84386C38 = 0x84386C38; // type:u8
D_84386C3C = 0x84386C3C; // type:u8
D_84386C40 = 0x84386C40; // type:u8
D_84386C44 = 0x84386C44; // type:u8
D_84386C48 = 0x84386C48; // type:u8
D_84386C4C = 0x84386C4C; // type:u8
D_84386C50 = 0x84386C50; // type:u8
D_84386C54 = 0x84386C54; // type:u8
D_84386C58 = 0x84386C58; // type:u8
D_84386C5C = 0x84386C5C; // type:u8
D_84386C64 = 0x84386C64; // type:u8
D_84386C68 = 0x84386C68; // type:u8
D_84386C6C = 0x84386C6C; // type:u8
D_84386C70 = 0x84386C70; // type:u8
D_84386C78 = 0x84386C78; // type:u8
D_84386C7C = 0x84386C7C; // type:u8
D_84386C80 = 0x84386C80; // type:u8
D_84386C84 = 0x84386C84; // type:u8
D_84386C88 = 0x84386C88; // type:u8
D_84386C8C = 0x84386C8C; // type:u8
D_84386C90 = 0x84386C90; // type:u8
D_84386C94 = 0x84386C94; // type:u8
D_84386C98 = 0x84386C98; // type:u8
D_84386C9C = 0x84386C9C; // type:u8
D_84386CA0 = 0x84386CA0; // type:u8
D_84386CA4 = 0x84386CA4; // type:u8
D_84386CA8 = 0x84386CA8; // type:u8
D_84386CAC = 0x84386CAC; // type:u8
D_84386CB0 = 0x84386CB0; // type:u8
D_84386CB4 = 0x84386CB4; // type:u8
D_84386CB8 = 0x84386CB8; // type:u8
D_84386CBC = 0x84386CBC; // type:u8
D_84386CC0 = 0x84386CC0; // type:u8
D_84386CC8 = 0x84386CC8; // type:u8
D_84386CCC = 0x84386CCC; // type:u8
D_84386CD0 = 0x84386CD0; // type:u8
D_84386CD4 = 0x84386CD4; // type:u8
D_84386CD8 = 0x84386CD8; // type:u8
D_84386CDC = 0x84386CDC; // type:u8
D_84386CE0 = 0x84386CE0; // type:u8
D_84386CE4 = 0x84386CE4; // type:u8
D_84386CE8 = 0x84386CE8; // type:u8
D_84386CEC = 0x84386CEC; // type:u8
D_84386CF0 = 0x84386CF0; // type:u8
D_84386CF4 = 0x84386CF4; // type:u8
D_84386CF8 = 0x84386CF8; // type:u8
D_84386CFC = 0x84386CFC; // type:u8
D_84386D00 = 0x84386D00; // type:u8
D_84386D04 = 0x84386D04; // type:u8
D_84386D08 = 0x84386D08; // type:u8
D_84386D0C = 0x84386D0C; // type:u8
D_84386D10 = 0x84386D10; // type:u8
D_84386D14 = 0x84386D14; // type:u8
D_84386D18 = 0x84386D18; // type:u8
D_84386D1C = 0x84386D1C; // type:u8
D_84386D24 = 0x84386D24; // type:u8
D_84386D2C = 0x84386D2C; // type:u8
D_84386D30 = 0x84386D30; // type:u8
D_84386D34 = 0x84386D34; // type:u8
D_84386D38 = 0x84386D38; // type:u8
D_84386D3C = 0x84386D3C; // type:u8
D_84386D40 = 0x84386D40; // type:u8
D_8140E628 = 0x8140E628; // size:0x8C
D_8140E720 = 0x8140E720; // size:0x4
D_8140E724 = 0x8140E724; // size:0x4
D_8140E728 = 0x8140E728; // size:0x4
D_8140E72C = 0x8140E72C; // size:0x4
D_84385E40 = 0x84385E40; // size:0x390
D_843861D0 = 0x843861D0; // size:0x2B0
D_8439037A = 0x8439037A; // size:0x2
D_8439037C = 0x8439037C; // size:0x2
D_8439037E = 0x8439037E; // size:0x2
D_84390380 = 0x84390380; // size:0x2
D_84390382 = 0x84390382; // size:0x2
D_84390384 = 0x84390384; // size:0x2
D_84390386 = 0x84390386; // size:0x2
D_84390388 = 0x84390388; // size:0x2
D_8439038A = 0x8439038A; // size:0x2
D_8439038C = 0x8439038C; // size:0x2
D_8439038E = 0x8439038E; // size:0x2
D_84390390 = 0x84390390; // size:0x2
D_84390392 = 0x84390392; // size:0x2
D_84390394 = 0x84390394; // size:0x2
D_84390396 = 0x84390396; // size:0x2
D_84390398 = 0x84390398; // size:0x2
D_8439039A = 0x8439039A; // size:0x2
D_8439039C = 0x8439039C; // size:0x2
D_8439039E = 0x8439039E; // size:0x2
D_843903A0 = 0x843903A0; // size:0x2
func_8432F998 = 0x8432F998; // type:func
func_843378CC = 0x843378CC; // type:func
func_8432F9A0 = 0x8432F9A0; // type:func
D_843920C0 = 0x843920C0; // size:0x400
func_8433765C = 0x8433765C; // type:func
func_84337664 = 0x84337664; // type:func
func_843593C8 = 0x843593C8; // type:func
D_84397610 = 0x84397610; // size:0x38
D_84397648 = 0x84397648; // size:0x1900
D_843951D0 = 0x843951D0; // size:0x2410
D_8439CA60 = 0x8439CA60; // size:0x1C14
D_843C5568 = 0x843C5568; // size:0xB38
D_843C60C0 = 0x843C60C0; // size:0x28
D_843C60F0 = 0x843C60F0; // size:0x48
D_843C5310 = 0x843C5310; // size:0x240

View File

@ -7080,7 +7080,7 @@ func_84359348 = 0x84359348; // type:func
func_84359380 = 0x84359380; // type:func
func_843593B0 = 0x843593B0; // type:func
func_843593B8 = 0x843593B8; // type:func
func_843593C0 = 0x843593C0; // type:func
func_843593C0 = 0x843593C0; // type:func size:0x8
func_843593D0 = 0x843593D0; // type:func
func_843593F0 = 0x843593F0; // type:func
func_84359410 = 0x84359410; // type:func

View File

@ -514,3 +514,79 @@ D_8C200920 = 0x8C200920;
D_8C201070 = 0x8C201070;
D_8C2011C4 = 0x8C2011C4;
D_80070F84 = 0x80070F84;
D_3008380 = 0x3008380;
D_3008400 = 0x3008400;
D_3008480 = 0x3008480;
D_3008500 = 0x3008500;
D_3008580 = 0x3008580;
D_3008600 = 0x3008600;
D_3008680 = 0x3008680;
D_3008700 = 0x3008700;
D_3000470 = 0x3000470;
D_3001F70 = 0x3001F70;
D_30092C0 = 0x30092C0;
D_3009560 = 0x3009560;
D_3008280 = 0x3008280;
D_3006170 = 0x3006170;
D_30061D0 = 0x30061D0;
D_3006230 = 0x3006230;
D_1003DB0 = 0x1003DB0;
D_1003E50 = 0x1003E50;
D_1003EA0 = 0x1003EA0;
D_1003EC8 = 0x1003EC8;
D_1003EF0 = 0x1003EF0;
D_1003DB0 = 0x1003DB0;
D_1003E50 = 0x1003E50;
D_1003EA0 = 0x1003EA0;
D_1003EC8 = 0x1003EC8;
D_1003EF0 = 0x1003EF0;
D_300B870 = 0x300B870;
D_3008C00 = 0x3008C00;
D_3008D80 = 0x3008D80;
D_3008E40 = 0x3008E40;
D_3008FC0 = 0x3008FC0;
D_3009080 = 0x3009080;
D_3009200 = 0x3009200;
D_3008780 = 0x3008780;
D_3008900 = 0x3008900;
D_30089C0 = 0x30089C0;
D_3008B40 = 0x3008B40;
D_3006290 = 0x3006290;
D_3006450 = 0x3006450;
D_3006530 = 0x3006530;
D_30066F0 = 0x30066F0;
D_30067D0 = 0x30067D0;
D_3006990 = 0x3006990;
D_3006A70 = 0x3006A70;
D_3006C30 = 0x3006C30;
D_300B630 = 0x300B630;
D_300A1F0 = 0x300A1F0;
D_30096B0 = 0x30096B0;
D_300AAF0 = 0x300AAF0;
D_300A8B0 = 0x300A8B0;
D_300B3F0 = 0x300B3F0;
D_3009FB0 = 0x3009FB0;
D_30098F0 = 0x30098F0;
D_300A430 = 0x300A430;
D_300B1B0 = 0x300B1B0;
D_300AF70 = 0x300AF70;
D_300A670 = 0x300A670;
D_3009D70 = 0x3009D70;
D_300AD30 = 0x300AD30;
D_3009B30 = 0x3009B30;
D_3006D10 = 0x3006D10;
D_3007010 = 0x3007010;
D_3007310 = 0x3007310;
D_3007610 = 0x3007610;
D_3007A78 = 0x3007A78;
D_3007EB0 = 0x3007EB0;
D_3007910 = 0x3007910;
D_3008018 = 0x3008018;
D_3007BE0 = 0x3007BE0;
D_3007D48 = 0x3007D48;
D_3007A78 = 0x3007A78;
D_3007EB0 = 0x3007EB0;
D_3007910 = 0x3007910;
D_3008018 = 0x3008018;
D_3007BE0 = 0x3007BE0;
D_3007D48 = 0x3007D48;

View File

@ -13,4 +13,4 @@ splat64[mips]==0.25.0
mapfile-parser>=2.4.0,<3.0.0
libyaz0
ipl3checksum>=1.2.0,<2.0.0
spimdisasm>=1.16.3,<2.0.0
git+https://github.com/Decompollaborate/spimdisasm.git@fe1338434c99240eb4adca0b7860edc12b847565

View File

@ -58,5 +58,7 @@ void func_80011DAC(unk_D_86002F34_00C* arg0, s16 arg1, s16 arg2, s16 arg3, s16 a
void func_80011E68(unk_D_86002F34_00C* arg0, f32 arg1, f32 arg2, f32 arg3);
void func_80011EB4(unk_D_86002F34_00C* arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6, s32 arg7);
void func_80011FC8(unk_D_86002F34_00C* arg0, s16 arg1, s16 arg2, u8 arg3, u8 arg4, u8 arg5);
void func_80012044(unk_D_86002F34_00C*, s32, s32, s32, u32);
void func_80012094(GraphNode* arg0, GraphNode* arg1);
#endif // _11BA0_H_

View File

@ -5,11 +5,7 @@
#include "src/3FB0.h"
#include "src/F420.h"
#include "src/1C720.h"
typedef struct arg1_func_80019420 {
/* 0x00 */ s8 unk_00;
/* 0x04 */ void* unk_04;
} arg1_func_80019420; // size = 0x8
#include "src/29BA0.h"
typedef struct unk_func_80019600 {
/* 0x00 */ s16 unk_00;

View File

@ -254,7 +254,7 @@ u32 func_80022170(s32 arg0, s32 arg1, u16 arg2, u16 arg3, u16 arg4) {
break;
case 5:
sp24 = D_80070F84[arg1].unk_0A;
sp24 = D_80070F84[arg1].unk_0A[0];
break;
}

View File

@ -8,13 +8,16 @@
typedef struct unk_D_80070F84 {
/* 0x00 */ u8 unk_00;
/* 0x04 */ char unk01[0x4];
/* 0x01 */ u8 unk_01;
/* 0x02 */ u8 unk_02;
/* 0x03 */ u8 unk_03;
/* 0x04 */ u8 unk_04;
/* 0x05 */ u8 unk_05;
/* 0x06 */ u8 unk_06;
/* 0x07 */ u8 unk_07;
/* 0x08 */ u8 unk_08;
/* 0x09 */ u8 unk_09;
/* 0x0A */ u8 unk_0A;
/* 0x0A */ u8 unk_0A[1];
/* 0x0B */ char unk0B[0x4];
/* 0x0F */ u8 unk_0F[1];
/* 0x10 */ char unk10[0x3];

View File

@ -6,6 +6,12 @@
#include "src/controller.h"
#include "PR/leo.h"
typedef struct arg1_func_80019420 {
/* 0x00 */ s8 unk_00;
/* 0x02 */ s16 unk_02;
/* 0x04 */ void* unk_04;
} arg1_func_80019420; // size = 0x8
typedef struct unk_D_800AE520 {
/* 0x00 */ s16 unk_00;
/* 0x02 */ s16 fragment_id;
@ -74,8 +80,7 @@ typedef struct unk_D_800AE540_0004 {
/* 0x008 */ char unk_008[4];
/* 0x00C */ char unk00C[0xC];
/* 0x018 */ s32 unk_018;
/* 0x01C */ unk_func_80026268_arg0 unk_01C[1];
/* 0x070 */ char unk070[0x1A4];
/* 0x01C */ unk_func_80026268_arg0 unk_01C[6];
/* 0x214 */ unk_D_800AE540_0874* unk_214;
/* 0x218 */ char unk218[0x4];
} unk_D_800AE540_0004; // size = 0x21C
@ -83,17 +88,17 @@ typedef struct unk_D_800AE540_0004 {
typedef struct unk_D_800AE540_1194 {
/* 0x00 */ u8 unk_00;
/* 0x01 */ u8 unk_01;
/* 0x02 */ u16 unk_02;
/* 0x04 */ s32 unk_04;
/* 0x02 */ s16 unk_02;
/* 0x04 */ unk_D_800AE540_0004* unk_04;
/* 0x04 */ unk_D_800AE540_0004* unk_08[2];
/* 0x04 */ char unk10[0x4];
/* 0x04 */ s32 unk_14;
/* 0x04 */ char unk18[0x4];
/* 0x04 */ s32 unk_10;
/* 0x04 */ unk_D_86002F58_004_000_004* unk_14;
/* 0x04 */ unk_D_86002F58_004_000_004* unk_18;
/* 0x1C */ u8 unk_1C;
/* 0x1D */ u8 unk_1D;
/* 0x1E */ u8 unk_1E;
/* 0x20 */ s32 unk_20;
/* 0x24 */ char unk24[0x4];
/* 0x24 */ arg1_func_80019420* unk_24;
} unk_D_800AE540_1194; // size = 0x28
typedef struct unk_D_800AE540 {

View File

@ -433,7 +433,7 @@ s32 func_8002ECDC(unk_func_80026268_arg0* arg0) {
}
ret_func_8002ED08* func_8002ED08(s32 arg0) {
if ((arg0 <= 0) || (arg0 >= 0xA6)) {
if ((arg0 <= 0) || (arg0 > 165)) {
return NULL;
}
return &D_80072338[arg0 - 1];

View File

@ -1,5 +1,5 @@
#include "30640.h"
#include "include/libc/math.h"
#include "include/math.h"
#include "src/11BA0.h"
#include "src/12D80.h"
#include "src/17300.h"

View File

@ -116,6 +116,9 @@ u16* func_800318AC(void);
void func_800318B8(void);
s32 func_800318C4(unk_D_83403C60*);
f32 func_80031A6C(f32);
void func_80031A94(f32, f32, f32, f32, f32, f32, f32*, f32*, f32*);
void func_80031B04(f32*, f32*, f32*);
void func_80031C6C(Mtx*, f32, f32, f32, f32, f32, f32);
void func_80031EF4(MtxF*, MtxF*);
void func_80032034(MtxF* arg0, Vec3f* arg1);

View File

@ -3,10 +3,15 @@
#include "global.h"
void func_80032110(u8, s16);
void func_80032244(u8, s16);
void func_8003260C(unk_D_86002F58_004_000*);
void func_80032670(u32, u32);
void func_80032738(u32, u32);
void func_80032110(u8 arg0, s16 arg1);
void func_80032244(u8 arg0, s16 arg1);
void func_80032570(void);
s32 func_800325AC(void);
u8 func_800325B4(void);
s16 func_800325E0(void);
void func_8003260C(unk_D_86002F58_004_000* arg0);
void func_80032670(u32 arg0, u32 arg1);
void func_80032738(u32 arg0, u32 arg1);
void func_800327CC(Gfx*, s32, s32, s32, s32, s32, s32, s32, s32, s32, s32, s32, s32, s32, s32, s32, s32);
#endif // _32D10_H_

View File

@ -3,6 +3,8 @@
#include "global.h"
void func_800328D0(s32);
s32 func_800328D8(s32);
void func_80032A34(s32);
#endif // _334D0_H_

View File

@ -96,6 +96,7 @@ extern u8 D_80078400;
extern u16 D_80078410[1][9];
extern u16 D_80078446[1][9];
extern u16 D_800784EA[1][9];
extern u32 D_80078544;
extern f64 D_8007C7E0;
extern f64 D_8007C7E8;
extern f64 D_8007C7F0;
@ -111,9 +112,9 @@ extern AudioInfo* lastInfo;
extern s32 min_only_one;
extern u8 D_800FC825;
extern s32 D_800FC828;
extern s32 D_800FCB28;
extern s32 D_800FCB2C;
extern u32 D_800FCCF0[10];
typedef struct unk_D_800FCB48 {
/* 0x00 */ u16 unk_00[16];
@ -929,10 +930,10 @@ void func_8003DB84(s32 arg0) {
}
}
if (D_800FCB18[0]->unk_1C != D_800FCB18[1]->unk_1C) {
if (D_800FCB18[0]->unk_1C != D_800FCB18[1]->unk_1D) {
if ((D_800FCB18[0]->unk_1D != D_800FCB18[1]->unk_1C) &&
(D_800FCB18[0]->unk_1D != D_800FCB18[1]->unk_1D)) {
if (D_800FCB18[0]->unk_16[6] != D_800FCB18[1]->unk_16[6]) {
if (D_800FCB18[0]->unk_16[6] != D_800FCB18[1]->unk_16[7]) {
if ((D_800FCB18[0]->unk_16[7] != D_800FCB18[1]->unk_16[6]) &&
(D_800FCB18[0]->unk_16[7] != D_800FCB18[1]->unk_16[7])) {
D_800FCCB0 = 0;
func_800420C0(D_80077E18);
return;
@ -1120,7 +1121,13 @@ void func_8003DB84(s32 arg0) {
#pragma GLOBAL_ASM("asm/us/nonmatchings/3D140/func_8003F4C0.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/3D140/func_8003F624.s")
void func_8003F624(u32 arg0) {
D_800FCCF0[D_80078544] = arg0;
D_80078544++;
if (D_80078544 >= 0xA) {
D_80078544--;
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/3D140/func_8003F660.s")

View File

@ -3,18 +3,66 @@
#include "global.h"
typedef struct unk_D_800FCB18_044 {
/* 0x00 */ u8 unk_00;
/* 0x01 */ u8 unk_01;
/* 0x02 */ u8 unk_02;
/* 0x03 */ u8 unk_03;
/* 0x04 */ u8 unk_04;
/* 0x05 */ u8 unk_05;
} unk_D_800FCB18_044; // size = 0x6
typedef struct unk_D_800FCB18 {
/* 0x00 */ char pad00[0xC];
/* 0x00 */ char unk00[0x1];
/* 0x01 */ u8 unk_01;
/* 0x02 */ char unk02[0x3];
/* 0x05 */ u8 unk_05;
/* 0x06 */ char unk06[0x5];
/* 0x0B */ u8 unk_0B;
/* 0x0C */ u16 unk_0C;
/* 0x0E */ char pad0E[0x7];
/* 0x0E */ u16 unk_0E;
/* 0x10 */ u16 unk_10;
/* 0x12 */ u16 unk_12;
/* 0x14 */ u8 unk_14;
/* 0x15 */ u8 unk_15;
/* 0x16 */ char pad16[0x6];
/* 0x1C */ u8 unk_1C;
/* 0x1D */ u8 unk_1D;
/* 0x1E */ char pad1E[0x8];
/* 0x16 */ u8 unk_16[9];
/* 0x1F */ u8 unk_1F[4];
/* 0x23 */ char unk23[0x1];
/* 0x24 */ u16 unk_24;
/* 0x26 */ u8 unk_26;
/* 0x28 */ u16 unk_28;
} unk_D_800FCB18; // size >= 0x2C
/* 0x2A */ u16 unk_2A;
/* 0x2C */ u16 unk_2C;
/* 0x2E */ u16 unk_2E;
/* 0x30 */ u16 unk_30;
/* 0x32 */ u8 unk_32[4];
/* 0x36 */ u16 unk_36;
/* 0x38 */ u16 unk_38;
/* 0x3A */ u16 unk_3A;
/* 0x3C */ u16 unk_3C;
/* 0x3E */ u16 unk_3E;
/* 0x40 */ char unk40[0x4];
/* 0x44 */ unk_D_800FCB18_044 unk_44;
/* 0x4A */ u8 unk_4A;
/* 0x4B */ u8 unk_4B;
/* 0x4C */ u8 unk_4C;
/* 0x4D */ u8 unk_4D;
/* 0x4E */ u8 unk_4E;
/* 0x4F */ u8 unk_4F;
/* 0x50 */ u8 unk_50;
/* 0x51 */ u8 unk_51;
/* 0x52 */ u8 unk_52;
/* 0x53 */ u8 unk_53;
/* 0x54 */ u16 unk_54;
/* 0x56 */ u8 unk_56;
/* 0x57 */ u8 unk_57;
/* 0x58 */ u8 unk_58;
/* 0x59 */ u8 unk_59;
/* 0x5A */ u8 unk_5A;
/* 0x5B */ u8 unk_5B;
/* 0x5C */ u8 unk_5C[6];
/* 0x62 */ char unk62[0x2];
} unk_D_800FCB18; // size = 0x64
typedef struct amConfig {
/* 0x00 */ u32 outputRate;
@ -42,8 +90,19 @@ void func_8003D32C(void);
s32 func_8003D494(void);
s32 func_8003D4A0(s32);
void func_8003D68C(s32);
void func_8003D6B0(u8, u8, u8, u8);
void func_8003D828(u8, u8, u8, u8);
void func_8003D918(u32 arg0, u32 arg1);
void func_8003DB84(s32 arg0);
void func_8003EB40(s32, unk_D_800FCB18*);
void func_8003F1AC(s32);
void func_8003F4C0(s32);
void func_8003F624(u32 arg0);
void func_8003F660(s32);
void func_80040A70(unk_D_800FCB18* arg0, s32 arg1, s32 arg2, s32 arg3);
void func_800414B8(s32);
void func_8004153C(void);
void func_80041688(void);
void func_800416BC(void);
void func_80041A98(void);
void func_80041C70(u32 arg0);
@ -53,5 +112,6 @@ void func_80041DF4(u16 arg0);
void func_80041E40(u16 arg0);
u32 func_80041EF4(u16* arg0);
void func_800420C0(u16* arg0);
void func_80048014(void);
#endif // _3D140_H_

View File

@ -266,7 +266,7 @@ s32 func_80003B04(s16 arg0) {
return func_8000CDB8(arg0 << 7);
}
void func_80003B30(u8* arg0, u8* arg1, u8* arg2, s32 arg3) {
void func_80003B30(u32 arg0, u32 arg1, u32 arg2, s32 arg3) {
s32 var_s0;
s32 var_s1;
OSMesgQueue* mesq = &D_800A62C0;

View File

@ -95,7 +95,7 @@ void func_80003890(u8* in_header, u8* memory);
void func_80003964(u8* arg0, s32 arg1, s32 arg2, s32 arg3);
s32 func_80003A14(u8* arg0, s16 arg1, s16 arg2, s32 arg3);
s32 func_80003B04(s16 arg0);
void func_80003B30(u8* arg0, u8* arg1, u8* arg2, s32 arg3);
void func_80003B30(u32 arg0, u32 arg1, u32 arg2, s32 arg3);
void func_80003BE0(u8* arg0, u8* arg1, u8* arg2);
void* func_80003C80(u8* addr, PRESJPEG* arg1, s32 side);
s32 func_80003D18(s32 arg0, PERSSZP* arg1, s32 side);

View File

@ -5,6 +5,7 @@
void func_8004B9C4(s32);
s32 func_8004B1CC(s32);
void func_8004BA88(s32, s32);
s32 func_8004BC84(s32, u32);
u32 func_8004BFB0(void);

View File

@ -48,7 +48,7 @@ void* func_80005F5C(s32 arg0) {
arg0 = ALIGN8(arg0);
temp_v0 = (D_800A7428.unk8 - arg0);
ret = 0;
ret = NULL;
if (temp_v0 >= (uintptr_t)gDisplayListHead) {
D_800A7428.unk8 = temp_v0;
ret = temp_v0;

View File

@ -2806,12 +2806,10 @@ s32 func_88311C64(s32 arg0, s32 arg1) {
static unk_D_80070F84 D_8831757C[] = {
{
0x06,
{
0x4E,
0x54,
0x4E,
0x64,
},
0x4E,
0x54,
0x4E,
0x64,
0x55,
0x14,
0x02,
@ -2841,12 +2839,10 @@ s32 func_88311C64(s32 arg0, s32 arg1) {
},
{
0x0C,
{
0x3C,
0x2D,
0x32,
0x46,
},
0x3C,
0x2D,
0x32,
0x46,
0x50,
0x07,
0x02,
@ -2876,12 +2872,10 @@ s32 func_88311C64(s32 arg0, s32 arg1) {
},
{
0x30,
{
0x3C,
0x37,
0x32,
0x2D,
},
0x3C,
0x37,
0x32,
0x2D,
0x28,
0x07,
0x03,
@ -2911,12 +2905,10 @@ s32 func_88311C64(s32 arg0, s32 arg1) {
},
{
0x31,
{
0x46,
0x41,
0x3C,
0x5A,
},
0x46,
0x41,
0x3C,
0x5A,
0x5A,
0x07,
0x03,
@ -2946,12 +2938,10 @@ s32 func_88311C64(s32 arg0, s32 arg1) {
},
{
0x32,
{
0x0A,
0x37,
0x19,
0x5F,
},
0x0A,
0x37,
0x19,
0x5F,
0x2D,
0x04,
0x04,
@ -2981,12 +2971,10 @@ s32 func_88311C64(s32 arg0, s32 arg1) {
},
{
0x33,
{
0x23,
0x50,
0x32,
0x78,
},
0x23,
0x50,
0x32,
0x78,
0x46,
0x04,
0x04,
@ -3016,12 +3004,10 @@ s32 func_88311C64(s32 arg0, s32 arg1) {
},
{
0x8D,
{
0x3C,
0x73,
0x69,
0x50,
},
0x3C,
0x73,
0x69,
0x50,
0x46,
0x05,
0x15,
@ -3051,12 +3037,10 @@ s32 func_88311C64(s32 arg0, s32 arg1) {
},
{
0x96,
{
0x6A,
0x6E,
0x5A,
0x82,
},
0x6A,
0x6E,
0x5A,
0x82,
0x9A,
0x18,
0x18,
@ -3086,12 +3070,10 @@ s32 func_88311C64(s32 arg0, s32 arg1) {
},
{
0x97,
{
0x64,
0x64,
0x64,
0x64,
},
0x64,
0x64,
0x64,
0x64,
0x64,
0x18,
0x18,

View File

@ -950,7 +950,7 @@ s32 func_88603468(unk_func_88205880_0098_008_058* arg0, s32 arg1, s32 arg2) {
s32 sp38;
s32 sp34;
sp38 = ((((sp130->unk00[4] * 0x64) / 255) + 2) / 5) * 5;
sp38 = ((((sp130->unk_04 * 0x64) / 255) + 2) / 5) * 5;
func_8001F324(sp12C->unk_04.r, sp12C->unk_04.g, sp12C->unk_04.b, sp12C->unk_04.a);
func_8001EBE0(8, 0);
func_8001F1E8(sp13C + 8, sp138 + 4, func_8002D7C0(NULL, 0, D_8861C518, sp134->unk_00[0] - 1));

View File

@ -6271,16 +6271,16 @@ void func_88804370(void) {
u32 sp2C;
unk_D_80068BB0* sp28;
sp28 = main_pool_alloc(sizeof(unk_func_80007444_018), 0);
sp28 = main_pool_alloc(sizeof(unk_D_80068BB0), 0);
sp34 = D_88826924->unk_18[0]->unk_08;
D_88826930 = D_88826924->unk_18[0]->unk_08 + 0x25800;
sp30 = D_88826924->unk_18[1]->unk_08;
D_88826934 = D_88826924->unk_18[1]->unk_08 + 0x25800;
sp2C = D_88826924->unk_18[1]->unk_08 + 0x70800;
sp34 = D_88826924->unk_18[0]->img_p;
D_88826930 = D_88826924->unk_18[0]->img_p + 0x25800;
sp30 = D_88826924->unk_18[1]->img_p;
D_88826934 = D_88826924->unk_18[1]->img_p + 0x25800;
sp2C = D_88826924->unk_18[1]->img_p + 0x70800;
D_88826928->unk_18[0] = main_pool_alloc(sizeof(unk_func_80007444_018), 0);
D_88826928->unk_18[1] = main_pool_alloc(sizeof(unk_func_80007444_018), 0);
D_88826928->unk_18[0] = main_pool_alloc(sizeof(unk_D_80068BB0), 0);
D_88826928->unk_18[1] = main_pool_alloc(sizeof(unk_D_80068BB0), 0);
func_800062E4(D_88826928->unk_18[0], 0, 2, 0x140, 0xF0, sp34);
func_800062E4(D_88826928->unk_18[1], 0, 2, 0x140, 0xF0, sp30);

View File

@ -217,8 +217,8 @@ void func_87901200(void);
void func_87901620(void);
s32 func_8790168C(void);
void func_87901720(unk_D_8140E728* arg0);
void func_87901804(s32 arg0, f32 arg1, Vec3f arg2, func_unk_D_8140E720_008 arg3, unk_D_8140E728_01C* arg4, s16 arg5, u8 arg6, u8 arg7);
void func_879018B0(s32 arg0, s32 arg1, s8 arg2, f32 arg3, Vec3f arg4, func_unk_D_8140E720_008 arg7, unk_D_8140E728_01C* arg8, s16 arg9, u8 argA, u8 argB);
void func_87901804(s32 arg0, f32 arg1, Vec3f arg2, func_unk_D_8140E724_008 arg3, unk_D_8140E728_01C* arg4, s16 arg5, u8 arg6, u8 arg7);
void func_879018B0(s32 arg0, s32 arg1, s8 arg2, f32 arg3, Vec3f arg4, func_unk_D_8140E724_008 arg7, unk_D_8140E728_01C* arg8, s16 arg9, u8 argA, u8 argB);
void func_87901958(unk_D_8140E720* arg0, unk_D_8140E728* arg1, s16 arg2);
void func_87901A28(unk_D_8140E728* arg0);
void func_87901ADC(unk_D_8140E728* arg0);

View File

@ -1,5 +1,5 @@
#include "fragment3.h"
#include "include/libc/math.h"
#include "include/math.h"
#include "src/17300.h"
#include "src/18140.h"
#include "src/1C720.h"

View File

@ -5,12 +5,12 @@
#include "src/12D80.h"
void func_87901620(void) {
D_8140E720 = main_pool_alloc(0xF870, 0);
bzero(D_8140E720, 0xF870);
D_8140E720 = main_pool_alloc(sizeof(unk_D_8140E720) * 300, 0);
bzero(D_8140E720, sizeof(unk_D_8140E720) * 300);
D_8140E72C = 0;
D_8140E728 = main_pool_alloc(0x1800, 0);
bzero(D_8140E728, 0x1800);
D_8140E728 = main_pool_alloc(sizeof(unk_D_8140E728) * 128, 0);
bzero(D_8140E728, sizeof(unk_D_8140E728) * 128);
D_8140E734 = 0;
}
@ -58,7 +58,7 @@ void func_87901720(unk_D_8140E728* arg0) {
arg0->unk_26 = arg0->unk_28;
}
s32 func_87901738(s32 arg0, s32 arg1, s8 arg2, f32 arg3, Vec3f arg4, Vec3s arg7, func_unk_D_8140E720_008 arg9,
s32 func_87901738(s32 arg0, s32 arg1, s8 arg2, f32 arg3, Vec3f arg4, Vec3s arg7, func_unk_D_8140E724_008 arg9,
unk_D_8140E728_01C* argA, s32 argB, u8 argC, s16 argD, u8 argE, u8 argF, u8 arg10) {
unk_D_8140E728* temp_v0 = (unk_D_8140E728*)func_8790168C();
@ -90,7 +90,7 @@ s32 func_87901738(s32 arg0, s32 arg1, s8 arg2, f32 arg3, Vec3f arg4, Vec3s arg7,
return (s32)temp_v0;
}
void func_87901804(s32 arg0, f32 arg1, Vec3f arg2, func_unk_D_8140E720_008 arg3, unk_D_8140E728_01C* arg4, s16 arg5,
void func_87901804(s32 arg0, f32 arg1, Vec3f arg2, func_unk_D_8140E724_008 arg3, unk_D_8140E728_01C* arg4, s16 arg5,
u8 arg6, u8 arg7) {
Vec3s sp50;
@ -99,7 +99,7 @@ void func_87901804(s32 arg0, f32 arg1, Vec3f arg2, func_unk_D_8140E720_008 arg3,
func_87901738(arg0, 0, 1, arg1, arg2, sp50, arg3, arg4, 0, 0, arg5, arg6, arg7, 0);
}
void func_879018B0(s32 arg0, s32 arg1, s8 arg2, f32 arg3, Vec3f arg4, func_unk_D_8140E720_008 arg7,
void func_879018B0(s32 arg0, s32 arg1, s8 arg2, f32 arg3, Vec3f arg4, func_unk_D_8140E724_008 arg7,
unk_D_8140E728_01C* arg8, s16 arg9, u8 argA, u8 argB) {
Vec3s sp50;
@ -213,7 +213,7 @@ void func_87901C98(void) {
gSPMatrix(gDisplayListHead++, D_87906054->unk_24.mtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
gSPMatrix(gDisplayListHead++, D_87906054->unk_60.p_mtxf, G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION);
D_8140E620 = func_80005F5C(0x5BE0);
D_8140E620 = func_80005F5C(sizeof(unk_D_8140E620));
D_8140E624 = 0;
gSPDisplayList(gDisplayListHead++, D_8140DB30);

View File

@ -3,8 +3,13 @@
#include "global.h"
typedef void (*func_unk_D_8140E720_008)(struct unk_D_8140E720*);
typedef void (*func_unk_D_8140E720_00C)(struct unk_D_8140E720*, unk_D_86002F34_00C*);
struct unk_D_8140E720;
struct unk_D_8140E728_01C_004_1;
struct unk_D_84390010;
struct unk_D_8140E724;
typedef void (*func_unk_D_8140E724_008)(struct unk_D_8140E720*);
typedef void (*func_unk_D_8140E724_00C)(struct unk_D_8140E720*, unk_D_86002F34_00C*);
typedef void (*unk_D_8140E728_01C_004_1_04)(struct unk_D_8140E720*, s32, struct unk_D_8140E728_01C_004_1*);
typedef void (*unk_D_8140E728_01C_004_1_08)(struct unk_D_8140E720*, s32, struct unk_D_8140E728_01C_004_1*);
@ -24,23 +29,23 @@ typedef struct unk_D_8140E728_01C_004_1 {
/* 0x04 */ unk_D_8140E728_01C_004_1_04 unk_04;
/* 0x08 */ unk_D_8140E728_01C_004_1_08 unk_08;
/* 0x0C */ unk_D_8140E728_01C_00C unk_0C;
} unk_D_8140E728_01C_004_1; // size >= 0x10
} unk_D_8140E728_01C_004_1; // size = 0x10
typedef union unk_D_8140E728_01C_004 {
unk_D_8140E728_01C_004_1* a;
func_unk_D_8140E720_00C func;
func_unk_D_8140E724_00C func;
} unk_D_8140E728_01C_004;
typedef struct unk_D_8140E728_01C {
/* 0x00 */ s32 unk_00; /* unk_04: 1 = a, 3 = func */
/* 0x04 */ unk_D_8140E728_01C_004 unk_04;
} unk_D_8140E728_01C; // size = 0x10
} unk_D_8140E728_01C; // size = 0x08
typedef struct unk_D_8140E728 {
/* 0x00 */ f32 unk_00;
/* 0x04 */ Vec3f unk_04;
/* 0x10 */ Vec3s unk_10;
/* 0x18 */ func_unk_D_8140E720_008 unk_18;
/* 0x18 */ func_unk_D_8140E724_008 unk_18;
/* 0x1C */ unk_D_8140E728_01C* unk_1C;
/* 0x20 */ s32 unk_20;
/* 0x24 */ u16 unk_24;
@ -54,21 +59,13 @@ typedef struct unk_D_8140E728 {
/* 0x2F */ u8 unk_2F;
} unk_D_8140E728; // size = 0x30
typedef struct unk_D_8140E720_014 {
/* 0x00 */ char unk00[0x1D];
/* 0x1D */ u8 unk_1D;
/* 0x1E */ Vec3s unk_1E;
/* 0x24 */ Vec3f unk_24;
/* 0x30 */ Vec3f unk_30;
} unk_D_8140E720_014; // size >= 0x3C
typedef struct unk_D_8140E720 {
/* 0x00 */ struct unk_D_8140E720* next;
/* 0x04 */ struct unk_D_8140E720* prev;
/* 0x08 */ func_unk_D_8140E720_008 unk_08;
/* 0x08 */ func_unk_D_8140E724_008 unk_08;
/* 0x0C */ unk_D_8140E728_01C* unk_0C;
/* 0x10 */ s32 unk_10;
/* 0x14 */ unk_D_8140E720_014* unk_14;
/* 0x10 */ struct unk_D_84390010* unk_10;
/* 0x14 */ unk_D_86002F58_004_000* unk_14;
/* 0x18 */ u32 unk_18;
/* 0x1C */ f32 unk_1C;
/* 0x20 */ f32 unk_20;
@ -111,7 +108,7 @@ typedef struct unk_D_8140E720 {
/* 0xC7 */ s8 unk_C7;
/* 0xC8 */ char unkC8[0x2];
/* 0xCA */ u8 unk_CA;
/* 0xCB */ char unkCB[0x1];
/* 0xCB */ u8 unk_CB;
/* 0xCC */ u8 unk_CC;
/* 0xCD */ u8 unk_CD;
/* 0xCE */ u8 unk_CE;
@ -119,10 +116,25 @@ typedef struct unk_D_8140E720 {
/* 0xD0 */ s8 unk_D0;
} unk_D_8140E720; // size = 0xD4
typedef struct arg1_func_8140213C {
/* 0x00 */ char unk00[0x64];
/* 0x64 */ MtxF unk_64;
} arg1_func_8140213C; // size >= 0xA4
typedef void (*func_unk_D_8140E724)(struct unk_D_8140E720*);
typedef struct unk_D_8140E724 {
/* 0x00 */ func_unk_D_8140E724 unk_00;
/* 0x04 */ unk_D_8140E728_01C* unk_04;
/* 0x08 */ struct unk_D_84390010* unk_08;
/* 0x0C */ s16 unk_0C;
/* 0x0E */ s16 unk_0E;
/* 0x10 */ s16 unk_10;
/* 0x12 */ s16 unk_12;
/* 0x14 */ s8 unk_14;
/* 0x15 */ s8 unk_15;
/* 0x16 */ u8 unk_16;
/* 0x17 */ u8 unk_17;
/* 0x18 */ u8 unk_18;
/* 0x19 */ u8 unk_19;
/* 0x1A */ u8 unk_1A;
/* 0x1B */ u8 unk_1B;
} unk_D_8140E724; // size = 0x1C
typedef struct arg1_func_87903D64_014 {
/* 0x00 */ s32 unk_00;
@ -132,7 +144,7 @@ typedef struct arg1_func_87903D64_014 {
/* 0x10 */ unk_D_86002F34_000_014_010* unk_10;
/* 0x14 */ unk_D_86002F34_000_014_010* unk_14;
/* 0x18 */ unk_D_86002F34_000_014_010* unk_18;
} arg1_func_87903D64_014;
} arg1_func_87903D64_014; // size = 0x1C
// Possibly unk_D_86002F34_alt7, unk_D_86002F34_alt8,
// unk_D_86002F34_alt9 or unk_D_86002F34_alt2
@ -217,10 +229,31 @@ typedef struct arg1_func_81407874 {
/* 0x00 */ arg1_func_81407874_014* unk_14;
} arg1_func_81407874; // size >= 0x18
typedef struct unk_D_8140E634_010 {
/* 0x00 */ MtxF unk_00;
/* 0x40 */ Vec3f unk_40;
/* 0x4C */ Vec3f unk_4C;
/* 0x58 */ Vec3f unk_58;
/* 0x64 */ Vec3f unk_64;
/* 0x70 */ s16 unk_70;
/* 0x72 */ s16 unk_72;
/* 0x74 */ char unk74[0x2];
/* 0x76 */ s16 unk_76;
/* 0x78 */ s16 unk_78;
} unk_D_8140E634_010; // size = 0x7C
typedef struct unk_D_8140E634 {
/* 0x00 */ Vec3f unk_00;
/* 0x0C */ char unk0C[0x84];
} unk_D_8140E634; // size = 0x90
/* 0x0C */ unk_D_86002F34_00C* unk_0C;
/* 0x10 */ unk_D_8140E634_010 unk_10;
} unk_D_8140E634; // size = 0x8C
typedef struct unk_D_8140E620 {
/* 0x0000 */ MtxF unk_0000[364];
/* 0x5B00 */ char unk5B00[0x80];
/* 0x5B80 */ Mtx unk_5B80;
/* 0x5BC0 */ char unk5BC0[0x20];
} unk_D_8140E620; // size = 0x5BE0
extern Gfx D_8140DAE0[];
extern Gfx D_8140DB30[];
@ -263,10 +296,11 @@ extern unk_D_8140E728_01C D_8140E460;
extern u8 D_8140E538[];
extern MtxF* D_8140E620;
extern unk_D_8140E620* D_8140E620;
extern s32 D_8140E624;
extern s32 D_8140E624;
extern unk_D_8140E634 D_8140E628;
extern unk_D_8140E634_010* D_8140E6B4;
extern u32 D_8140E6B8;
extern s32 D_8140E6BC;
extern s32 D_8140E6C0;
@ -291,8 +325,10 @@ extern s32 D_8140E708;
extern s32 D_8140E70C;
extern s32 D_8140E710;
extern unk_D_8140E720* D_8140E720;
extern unk_D_8140E724* D_8140E724;
extern unk_D_8140E728* D_8140E728;
extern s32 D_8140E72C;
extern s32 D_8140E730;
extern s32 D_8140E734;
void func_81400020(s32* arg0, s32 arg1);
@ -372,10 +408,10 @@ void func_81401E84(MtxF* arg0, Vec3f arg1, Vec3f arg2, s16 arg3, f32 arg4);
void func_81401FC0(Vec3f arg0, Vec3s arg1, f32 arg2);
void func_8140203C(Vec3f arg0, Vec3s arg1, f32 arg2);
void func_814020B8(Vec3f arg0, Vec3s arg1, f32 arg2, f32 arg3);
void func_8140213C(arg1_func_8140213C* arg0, Vec3f arg1, f32 arg4);
void func_814021A4(arg1_func_8140213C* arg0, Vec3f arg1, f32 arg4, s16 arg5);
void func_81402214(arg1_func_8140213C* arg0, Vec3f arg1, f32 arg4);
void func_8140227C(arg1_func_8140213C* arg0, Vec3f arg1, f32 arg4, s16 arg5);
void func_8140213C(unk_D_86002F34_00C* arg0, Vec3f arg1, f32 arg4);
void func_814021A4(unk_D_86002F34_00C* arg0, Vec3f arg1, f32 arg4, s16 arg5);
void func_81402214(unk_D_86002F34_00C* arg0, Vec3f arg1, f32 arg4);
void func_8140227C(unk_D_86002F34_00C* arg0, Vec3f arg1, f32 arg4, s16 arg5);
void func_814022EC(Vec3f arg0, Vec3s arg3, f32 arg5);
void func_8140238C(Vec3f arg0, Vec3f arg3, f32 arg6);
@ -399,6 +435,7 @@ void func_81402E14(u8* texture, s32 fmt, s32 width, s32 height, s32 cms, s32 cmt
void func_814030C0(u8* texture, s32 fmt, s32 width, s32 height, s32 cms, s32 cmt, s32 masks, s32 maskt, s32 shifts, s32 shiftt);
void func_814032B4(u8* texture, s32 fmt, s32 width, s32 height, s32 cms, s32 cmt, s32 masks, s32 maskt, s32 shifts, s32 shiftt);
void func_8140353C(u8* texture, s32 fmt, s32 width, s32 height, s32 cms, s32 cmt, s32 masks, s32 maskt, s32 shifts, s32 shiftt);
void func_81403754(u8* texture, s32 tmem, s32 rtile, s32 fmt, s32 width, s32 height, s32 cms, s32 cmt, s32 masks, s32 maskt, s32 shifts, s32 shiftt);
void func_81403A20(u8* texture, s32 width, s32 height);
void func_81403A6C(u8* texture, s32 width, s32 height);
void func_81403AB8(u8* texture, s32 width, s32 height);
@ -439,12 +476,12 @@ void func_81404ABC(Vec3f arg0, Vec3s arg1, f32 arg2, Vtx* arg3);
void func_81404B78(Vec3f arg0, Vec3s arg1, f32 arg3, Vtx* arg4);
void func_81404C34(Vec3f arg0, Vec3s arg1, f32 arg2, f32 arg3, Vtx* arg4);
void func_81404CF8(Vec3f arg0, Vec3s arg1, f32 arg2, Vtx* arg3);
void func_81404DB4(arg1_func_8140213C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3);
void func_81404E4C(arg1_func_8140213C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3, s16 arg4);
void func_81404EEC(arg1_func_8140213C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3);
void func_81404F84(arg1_func_8140213C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3, s16 arg4);
void func_81405024(arg1_func_8140213C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3);
void func_814050BC(arg1_func_8140213C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3, s16 arg4);
void func_81404DB4(unk_D_86002F34_00C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3);
void func_81404E4C(unk_D_86002F34_00C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3, s16 arg4);
void func_81404EEC(unk_D_86002F34_00C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3);
void func_81404F84(unk_D_86002F34_00C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3, s16 arg4);
void func_81405024(unk_D_86002F34_00C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3);
void func_814050BC(unk_D_86002F34_00C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3, s16 arg4);
void func_8140515C(u8* texture, Vtx* vtx, s32 arg2, s32 arg3, s32 width, s32 height);
void func_81405308(u8* texture, Vtx* vtx, s32 arg2, s32 arg3, s32 width, s32 height);
void func_814054B4(u8* texture, Vtx* vtx, s32 arg2, s32 arg3, s32 width, s32 height);
@ -485,10 +522,10 @@ unk_D_8140E720* func_81407A30(void);
void func_81407B04(unk_D_8140E720* arg0);
unk_D_8140E720* func_81407B3C(void);
unk_D_8140E720* func_81407B5C(u8 arg0);
void func_81407D48(f32 arg0, Vec3f arg1, Vec3s arg2, func_unk_D_8140E720_008 arg3, unk_D_8140E728_01C* arg4, s16 arg5);
void func_81407E30(f32 arg0, Vec3f arg1, Vec3s arg2, func_unk_D_8140E720_008 arg3, unk_D_8140E728_01C* arg4, s16 arg5, s16 arg6);
void func_81407F24(unk_D_86002F58_004_000* arg0, func_unk_D_8140E720_008 arg1, unk_D_8140E728_01C* arg2, s16 arg3, s16 arg4);
void func_81407FC8(unk_D_86002F58_004_000* arg0, func_unk_D_8140E720_008 arg1, unk_D_8140E728_01C* arg2, s16 arg3, s16 arg4, s16 arg5);
void func_81407D48(f32 arg0, Vec3f arg1, Vec3s arg2, func_unk_D_8140E724_008 arg3, unk_D_8140E728_01C* arg4, s16 arg5);
void func_81407E30(f32 arg0, Vec3f arg1, Vec3s arg2, func_unk_D_8140E724_008 arg3, unk_D_8140E728_01C* arg4, s16 arg5, s16 arg6);
void func_81407F24(unk_D_86002F58_004_000* arg0, func_unk_D_8140E724_008 arg1, unk_D_8140E728_01C* arg2, s16 arg3, s16 arg4);
void func_81407FC8(unk_D_86002F58_004_000* arg0, func_unk_D_8140E724_008 arg1, unk_D_8140E728_01C* arg2, s16 arg3, s16 arg4, s16 arg5);
s32 func_81408078(void);
s32 func_814080EC(void);
void func_8140810C(unk_D_8140E720* arg0);
@ -742,7 +779,7 @@ s32 func_8140BF98(unk_D_8140E720* arg0, s16 arg1, s16 arg2);
void func_8140BFEC(unk_D_8140E720* arg0, s16 arg1);
s32 func_8140C000(unk_D_8140E720* arg0, s16 arg1, s16 arg2);
s16 func_8140C038(unk_D_8140E720* arg0);
u8 func_8140C040(unk_D_8140E720* arg0);
s32 func_8140C040(unk_D_8140E720* arg0);
u8 func_8140C048(unk_D_8140E720* arg0);
s16 func_8140C050(unk_D_8140E720* arg0);
s16 func_8140C058(unk_D_8140E720* arg0);
@ -769,6 +806,58 @@ void func_8140C5BC(UNUSED unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1)
void func_8140C5D0(void);
void func_8140C734(void);
void func_8140D5A0(unk_D_8140E720*, u16);
void func_8140C760(UNUSED unk_D_8140E720* arg0, u8* texture);
void func_8140C78C(unk_D_8140E720* arg0, u8* texture);
void func_8140C7C0(UNUSED unk_D_8140E720* arg0, u8* texture);
void func_8140C7EC(unk_D_8140E720* arg0, u8* texture);
void func_8140C820(UNUSED unk_D_8140E720* arg0, u8* texture);
void func_8140C84C(unk_D_8140E720* arg0, u8* texture);
void func_8140C880(UNUSED unk_D_8140E720* arg0, u8* texture);
void func_8140C8B8(UNUSED unk_D_8140E720* arg0, u8* texture);
void func_8140C8F4(UNUSED unk_D_8140E720* arg0, u8* texture);
void func_8140C930(UNUSED unk_D_8140E720* arg0, u8* texture);
void func_8140C96C(UNUSED unk_D_8140E720* arg0, u8* texture);
void func_8140C9B0(unk_D_8140E720* arg0, u8* texture);
void func_8140C9EC(UNUSED unk_D_8140E720* arg0, u8* texture);
void func_8140CA30(unk_D_8140E720* arg0, u8* texture);
void func_8140CA64(UNUSED unk_D_8140E720* arg0, u8* texture);
void func_8140CA90(UNUSED unk_D_8140E720* arg0, u8* texture);
void func_8140CAC8(UNUSED unk_D_8140E720* arg0, u8* texture);
void func_8140CB04(unk_D_8140E720* arg0, u8* texture);
void func_8140CB38(UNUSED unk_D_8140E720* arg0, u8* texture);
void func_8140CB64(UNUSED unk_D_8140E720* arg0, u8* texture);
void func_8140CB90(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1);
void func_8140CC04(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1);
s32 func_8140CC90(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1);
void func_8140CD80(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1);
void func_8140CDDC(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1);
void func_8140CE68(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1);
void func_8140CED4(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1);
void func_8140CF30(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1);
void func_8140CFBC(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1);
void func_8140D050(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1);
void func_8140D0E4(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1);
void func_8140D170(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1);
void func_8140D1FC(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1);
void func_8140D288(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1);
s32 func_8140D314(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1);
void func_8140D404(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1);
void func_8140D4A8(u8* arg0, u16 arg1);
void func_8140D4E0(u8* arg0, u8* arg1, u16 arg2);
void func_8140D530(unk_D_8140E720* arg0, u16 arg1);
void func_8140D568(unk_D_8140E720* arg0, u16 arg1);
void func_8140D5A0(unk_D_8140E720* arg0, u16 arg1);
void func_8140D5F0(unk_D_8140E720* arg0, s16 arg1);
void func_8140D624(unk_D_8140E720* arg0, s16 arg1);
void func_8140D658(unk_D_8140E720* arg0, s16 arg1);
void func_8140D68C(unk_D_8140E720* arg0, s16 arg1);
void func_8140D6C0(unk_D_8140E720* arg0, s16 arg1);
void func_8140D708(unk_D_8140E720* arg0, s16 arg1);
void func_8140D750(unk_D_8140E720* arg0);
void func_8140D78C(unk_D_8140E720* arg0);
s32 func_8140D7C8(unk_D_8140E720* arg0, u16 arg1, u8 arg2);
s32 func_8140D868(unk_D_8140E720* arg0, u16 arg1, u8 arg2);
s32 func_8140D908(unk_D_8140E720* arg0, u16 arg1, u8 arg2);
#endif // _FRAGMENT34_H_

View File

@ -1,12 +1,13 @@
#include "fragment34.h"
#include "include/libc/math.h"
#include "include/math.h"
#include "src/F420.h"
#include "src/math_util.h"
MtxF* D_8140E620;
unk_D_8140E620* D_8140E620;
s32 D_8140E624;
s32 D_8140E624;
unk_D_8140E634 D_8140E628;
unk_D_8140E634_010* D_8140E6B4;
u32 D_8140E6B8;
s32 D_8140E6BC;
s32 D_8140E6C0;
@ -30,11 +31,12 @@ s32 D_8140E704;
s32 D_8140E708;
s32 D_8140E70C;
s32 D_8140E710;
s32 pad_D_8140E714[2];
static s32 pad_D_8140E714[2];
unk_D_8140E720* D_8140E720;
s32 pad_D_8140E724;
unk_D_8140E724* D_8140E724;
unk_D_8140E728* D_8140E728;
s32 D_8140E72C;
s32 D_8140E730;
s32 D_8140E734;
void func_81400020(s32* arg0, s32 arg1) {
@ -725,9 +727,9 @@ void func_8140138C(void) {
void func_81401394(MtxF* arg0) {
if (D_8140E624 < 0x16C) {
func_80010090((MtxF*)((u32)D_8140E620 + (D_8140E624 * sizeof(MtxF))), arg0);
func_80010090(&D_8140E620->unk_0000[D_8140E624], arg0);
gSPMatrix(gDisplayListHead++, ((u32)D_8140E620 + (D_8140E624 * sizeof(MtxF))) & 0x1FFFFFFF,
gSPMatrix(gDisplayListHead++, (u32)&D_8140E620->unk_0000[D_8140E624] & 0x1FFFFFFF,
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
D_8140E624++;
@ -1060,31 +1062,31 @@ void func_814020B8(Vec3f arg0, Vec3s arg1, f32 arg2, f32 arg3) {
func_81401394(&sp28);
}
void func_8140213C(arg1_func_8140213C* arg0, Vec3f arg1, f32 arg4) {
void func_8140213C(unk_D_86002F34_00C* arg0, Vec3f arg1, f32 arg4) {
MtxF sp20;
func_81401ABC(&sp20, &arg0->unk_64, arg1, arg4);
func_81401ABC(&sp20, &arg0->unk_60.mtxf, arg1, arg4);
func_81401394(&sp20);
}
void func_814021A4(arg1_func_8140213C* arg0, Vec3f arg1, f32 arg4, s16 arg5) {
void func_814021A4(unk_D_86002F34_00C* arg0, Vec3f arg1, f32 arg4, s16 arg5) {
MtxF sp28;
func_81401C04(&sp28, &arg0->unk_64, arg1, arg4, arg5);
func_81401C04(&sp28, &arg0->unk_60.mtxf, arg1, arg4, arg5);
func_81401394(&sp28);
}
void func_81402214(arg1_func_8140213C* arg0, Vec3f arg1, f32 arg4) {
void func_81402214(unk_D_86002F34_00C* arg0, Vec3f arg1, f32 arg4) {
MtxF sp20;
func_81401B6C(&sp20, &arg0->unk_64, arg1, arg4);
func_81401B6C(&sp20, &arg0->unk_60.mtxf, arg1, arg4);
func_81401394(&sp20);
}
void func_8140227C(arg1_func_8140213C* arg0, Vec3f arg1, f32 arg4, s16 arg5) {
void func_8140227C(unk_D_86002F34_00C* arg0, Vec3f arg1, f32 arg4, s16 arg5) {
MtxF sp28;
func_81401D50(&sp28, &arg0->unk_64, arg1, arg4, arg5);
func_81401D50(&sp28, &arg0->unk_60.mtxf, arg1, arg4, arg5);
func_81401394(&sp28);
}

View File

@ -702,42 +702,42 @@ void func_81404CF8(Vec3f arg0, Vec3s arg1, f32 arg2, Vtx* arg3) {
gSPDisplayList(gDisplayListHead++, D_8140E3F8);
}
void func_81404DB4(arg1_func_8140213C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3) {
void func_81404DB4(unk_D_86002F34_00C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3) {
func_8140213C(arg0, arg1, arg2);
gSPVertex(gDisplayListHead++, arg3, 4, 0);
gSPDisplayList(gDisplayListHead++, D_8140E408);
}
void func_81404E4C(arg1_func_8140213C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3, s16 arg4) {
void func_81404E4C(unk_D_86002F34_00C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3, s16 arg4) {
func_814021A4(arg0, arg1, arg2, arg4);
gSPVertex(gDisplayListHead++, arg3, 4, 0);
gSPDisplayList(gDisplayListHead++, D_8140E408);
}
void func_81404EEC(arg1_func_8140213C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3) {
void func_81404EEC(unk_D_86002F34_00C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3) {
func_81402214(arg0, arg1, arg2);
gSPVertex(gDisplayListHead++, arg3, 4, 0);
gSPDisplayList(gDisplayListHead++, D_8140E408);
}
void func_81404F84(arg1_func_8140213C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3, s16 arg4) {
void func_81404F84(unk_D_86002F34_00C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3, s16 arg4) {
func_8140227C(arg0, arg1, arg2, arg4);
gSPVertex(gDisplayListHead++, arg3, 4, 0);
gSPDisplayList(gDisplayListHead++, D_8140E408);
}
void func_81405024(arg1_func_8140213C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3) {
void func_81405024(unk_D_86002F34_00C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3) {
func_8140213C(arg0, arg1, arg2);
gSPVertex(gDisplayListHead++, arg3, 3, 0);
gSPDisplayList(gDisplayListHead++, D_8140E3F8);
}
void func_814050BC(arg1_func_8140213C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3, s16 arg4) {
void func_814050BC(unk_D_86002F34_00C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3, s16 arg4) {
func_814021A4(arg0, arg1, arg2, arg4);
gSPVertex(gDisplayListHead++, arg3, 3, 0);

View File

@ -110,7 +110,7 @@ unk_D_8140E720* func_81407B5C(u8 arg0) {
return sp28;
}
unk_D_8140E720* func_81407BE4(f32 arg0, Vec3f arg1, Vec3s arg2, func_unk_D_8140E720_008 arg3, unk_D_8140E728_01C* arg4,
unk_D_8140E720* func_81407BE4(f32 arg0, Vec3f arg1, Vec3s arg2, func_unk_D_8140E724_008 arg3, unk_D_8140E728_01C* arg4,
s16 arg5, s16 arg6, s16 arg7) {
unk_D_8140E720* sp1C = func_81407B3C();
@ -131,7 +131,7 @@ unk_D_8140E720* func_81407BE4(f32 arg0, Vec3f arg1, Vec3s arg2, func_unk_D_8140E
return sp1C;
}
unk_D_8140E720* func_81407C7C(unk_D_86002F58_004_000* arg0, func_unk_D_8140E720_008 arg1, unk_D_8140E728_01C* arg2,
unk_D_8140E720* func_81407C7C(unk_D_86002F58_004_000* arg0, func_unk_D_8140E724_008 arg1, unk_D_8140E728_01C* arg2,
s16 arg3, s16 arg4, s16 arg5) {
unk_D_8140E720* sp1C = func_81407B3C();
@ -161,7 +161,7 @@ unk_D_8140E720* func_81407C7C(unk_D_86002F58_004_000* arg0, func_unk_D_8140E720_
return sp1C;
}
void func_81407D48(f32 arg0, Vec3f arg1, Vec3s arg2, func_unk_D_8140E720_008 arg3, unk_D_8140E728_01C* arg4, s16 arg5) {
void func_81407D48(f32 arg0, Vec3f arg1, Vec3s arg2, func_unk_D_8140E724_008 arg3, unk_D_8140E728_01C* arg4, s16 arg5) {
s32 i;
for (i = 0; i < arg5; i++) {
@ -171,7 +171,7 @@ void func_81407D48(f32 arg0, Vec3f arg1, Vec3s arg2, func_unk_D_8140E720_008 arg
}
}
void func_81407E30(f32 arg0, Vec3f arg1, Vec3s arg2, func_unk_D_8140E720_008 arg3, unk_D_8140E728_01C* arg4, s16 arg5,
void func_81407E30(f32 arg0, Vec3f arg1, Vec3s arg2, func_unk_D_8140E724_008 arg3, unk_D_8140E728_01C* arg4, s16 arg5,
s16 arg6) {
s32 i;
@ -182,7 +182,7 @@ void func_81407E30(f32 arg0, Vec3f arg1, Vec3s arg2, func_unk_D_8140E720_008 arg
}
}
void func_81407F24(unk_D_86002F58_004_000* arg0, func_unk_D_8140E720_008 arg1, unk_D_8140E728_01C* arg2, s16 arg3,
void func_81407F24(unk_D_86002F58_004_000* arg0, func_unk_D_8140E724_008 arg1, unk_D_8140E728_01C* arg2, s16 arg3,
s16 arg4) {
s32 i;
@ -193,7 +193,7 @@ void func_81407F24(unk_D_86002F58_004_000* arg0, func_unk_D_8140E720_008 arg1, u
}
}
void func_81407FC8(unk_D_86002F58_004_000* arg0, func_unk_D_8140E720_008 arg1, unk_D_8140E728_01C* arg2, s16 arg3,
void func_81407FC8(unk_D_86002F58_004_000* arg0, func_unk_D_8140E724_008 arg1, unk_D_8140E728_01C* arg2, s16 arg3,
s16 arg4, s16 arg5) {
s32 i;
@ -573,20 +573,20 @@ void func_81408AF0(unk_D_8140E720* arg0) {
arg0->unk_2C.z = arg0->unk_68.z + arg0->unk_38.z + arg0->unk_50.z;
if (arg0->unk_14 != NULL) {
arg0->unk_14->unk_24.x = arg0->unk_2C.x;
arg0->unk_14->unk_24.y = arg0->unk_2C.y;
arg0->unk_14->unk_24.z = arg0->unk_2C.z;
arg0->unk_14->unk_024.x = arg0->unk_2C.x;
arg0->unk_14->unk_024.y = arg0->unk_2C.y;
arg0->unk_14->unk_024.z = arg0->unk_2C.z;
arg0->unk_14->unk_30.x = arg0->unk_1C;
arg0->unk_14->unk_30.y = arg0->unk_1C;
arg0->unk_14->unk_30.z = arg0->unk_1C;
arg0->unk_14->unk_030.x = arg0->unk_1C;
arg0->unk_14->unk_030.y = arg0->unk_1C;
arg0->unk_14->unk_030.z = arg0->unk_1C;
if (func_81408308(arg0, 0x200) != 0) {
arg0->unk_14->unk_1E.x = arg0->unk_94.x;
arg0->unk_14->unk_1E.y = arg0->unk_94.y;
arg0->unk_14->unk_1E.z = arg0->unk_94.z;
arg0->unk_14->unk_01E.x = arg0->unk_94.x;
arg0->unk_14->unk_01E.y = arg0->unk_94.y;
arg0->unk_14->unk_01E.z = arg0->unk_94.z;
}
arg0->unk_14->unk_1D = arg0->prim_a;
arg0->unk_14->unk_01D = arg0->prim_a;
}
}
@ -1880,7 +1880,7 @@ s16 func_8140C038(unk_D_8140E720* arg0) {
return arg0->unk_AC;
}
u8 func_8140C040(unk_D_8140E720* arg0) {
s32 func_8140C040(unk_D_8140E720* arg0) {
return arg0->unk_CE;
}

View File

@ -124,17 +124,17 @@ void func_8140CB64(UNUSED unk_D_8140E720* arg0, u8* texture) {
func_81404024(texture, 64, 64);
}
void func_8140CB90(unk_D_8140E720* arg0, arg1_func_8140213C* arg1) {
void func_8140CB90(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1) {
func_81405B70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->prim_a);
func_81404DB4(arg1, arg0->unk_2C, arg0->unk_1C, D_8140E018);
}
void func_8140CC04(unk_D_8140E720* arg0, arg1_func_8140213C* arg1) {
void func_8140CC04(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1) {
func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a);
func_81404DB4(arg1, arg0->unk_2C, arg0->unk_1C, D_8140DFD8);
}
s32 func_8140CC90(unk_D_8140E720* arg0, UNUSED arg1_func_8140213C* arg1) {
s32 func_8140CC90(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1) {
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a);
@ -143,60 +143,60 @@ s32 func_8140CC90(unk_D_8140E720* arg0, UNUSED arg1_func_8140213C* arg1) {
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
}
void func_8140CD80(unk_D_8140E720* arg0, arg1_func_8140213C* arg1) {
void func_8140CD80(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1) {
func_81404DB4(arg1, arg0->unk_2C, arg0->unk_1C, D_8140E018);
}
void func_8140CDDC(unk_D_8140E720* arg0, arg1_func_8140213C* arg1) {
void func_8140CDDC(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1) {
func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a);
func_81404DB4(arg1, arg0->unk_2C, arg0->unk_1C, D_8140E018);
}
void func_8140CE68(unk_D_8140E720* arg0, arg1_func_8140213C* arg1) {
void func_8140CE68(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1) {
func_81405C04(arg0->prim_a);
func_81404E4C(arg1, arg0->unk_2C, arg0->unk_1C, D_8140E108, arg0->unk_94.z);
}
void func_8140CED4(unk_D_8140E720* arg0, arg1_func_8140213C* arg1) {
void func_8140CED4(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1) {
func_81404DB4(arg1, arg0->unk_2C, arg0->unk_1C, D_8140E058);
}
void func_8140CF30(unk_D_8140E720* arg0, arg1_func_8140213C* arg1) {
void func_8140CF30(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1) {
func_81405D38(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a);
func_81404DB4(arg1, arg0->unk_2C, arg0->unk_1C, D_8140E018);
}
void func_8140CFBC(unk_D_8140E720* arg0, arg1_func_8140213C* arg1) {
void func_8140CFBC(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1) {
func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a);
func_81404E4C(arg1, arg0->unk_2C, arg0->unk_1C, D_8140E018, arg0->unk_94.z);
}
void func_8140D050(unk_D_8140E720* arg0, arg1_func_8140213C* arg1) {
void func_8140D050(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1) {
func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a);
func_814050BC(arg1, arg0->unk_2C, arg0->unk_1C, D_8140E0D8, arg0->unk_94.z);
}
void func_8140D0E4(unk_D_8140E720* arg0, arg1_func_8140213C* arg1) {
void func_8140D0E4(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1) {
func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a);
func_81404DB4(arg1, arg0->unk_2C, arg0->unk_1C, D_8140E178);
}
void func_8140D170(unk_D_8140E720* arg0, arg1_func_8140213C* arg1) {
void func_8140D170(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1) {
func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a);
func_81404DB4(arg1, arg0->unk_2C, arg0->unk_1C, D_8140E1F8);
}
void func_8140D1FC(unk_D_8140E720* arg0, arg1_func_8140213C* arg1) {
void func_8140D1FC(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1) {
func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a);
func_81404DB4(arg1, arg0->unk_2C, arg0->unk_1C, D_8140E1B8);
}
void func_8140D288(unk_D_8140E720* arg0, arg1_func_8140213C* arg1) {
void func_8140D288(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1) {
func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a);
func_81404DB4(arg1, arg0->unk_2C, arg0->unk_1C, D_8140E2B8);
}
s32 func_8140D314(unk_D_8140E720* arg0, UNUSED arg1_func_8140213C* arg1) {
s32 func_8140D314(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1) {
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a);
@ -205,7 +205,7 @@ s32 func_8140D314(unk_D_8140E720* arg0, UNUSED arg1_func_8140213C* arg1) {
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
}
void func_8140D404(unk_D_8140E720* arg0, arg1_func_8140213C* arg1) {
void func_8140D404(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1) {
func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a);
func_81404ABC(arg0->unk_2C, arg0->unk_94, arg0->unk_1C, D_8140E378);
}

File diff suppressed because it is too large Load Diff

View File

@ -1,50 +1,634 @@
#include "global.h"
#include "fragment62.h"
#include "src/11BA0.h"
#include "src/12D80.h"
#include "src/19840.h"
#include "src/1C720.h"
#include "src/1CF30.h"
#include "src/20330.h"
#include "src/32D10.h"
#include "src/3D140.h"
#include "src/3FB0.h"
#include "src/4BDC0.h"
#include "src/6A40.h"
#include "src/F420.h"
#include "src/controller.h"
#include "src/geo_layout.h"
#include "src/memmap.h"
#include "src/memory.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EA8E0/func_84300020.s")
static unk_D_86002F34_00C D_8438E440;
static unk_D_8690A610 D_8438E530;
static GraphNode D_8438E550;
static GraphNode D_8438E568;
static GraphNode D_8438E580;
static unk_D_86002F34_00C D_8438E598;
static unk_D_86002F34_00C D_8438E688;
u8* D_8438E778;
u8* D_8438E77C;
static void* D_8438E780;
static GraphNode* D_8438E784;
static GraphNode* D_8438E788;
static GraphNode* D_8438E78C;
static unk_D_80068BB0* D_8438E790;
static unk_D_80068BB0* D_8438E794;
static unk_D_800AE540_1194* D_8438E798;
static s32 D_8438E79C;
static s32 D_8438E7A0;
static Color_RGBA8_u32 D_8438E7A4;
static f32 D_8438E7A8;
static s32 D_8438E7AC;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EA8E0/func_84300058.s")
static u8 D_84384350[] = {
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x11, 0x01,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01,
};
static u32 D_84384364[] = {
0x0C00FFFF, 0x05000000, 0x07000000, &D_8438E440, 0x05000000, 0x0D000000, 0x05000000, 0x07000000,
&D_8438E530, 0x14000000, 0x002D0019, 0xFFFFFF28, 0x08000000, func_84300058, 0x00000000, 0x14000000,
0x002D0019, 0x80808028, 0x08000000, func_843000C0, 0x00000000, 0x16646464, 0x0F000002, 0x05000000,
0x1F00FFFF, 0x00000000, 0x00000000, 0x00000000, 0x00640064, 0x00640000, 0x08000000, func_8430012C,
0x00000000, 0x05000000, 0x07000000, &D_8438E550, 0x06000000, 0x06000000, 0x0F000003, 0x05000000,
0x1F00FFFF, 0x00000000, 0x00000000, 0x00000000, 0x00640064, 0x00640000, 0x08000000, func_8430012C,
0x00000000, 0x05000000, 0x07000000, &D_8438E568, 0x06000000, 0x06000000, 0x0F000002, 0x05000000,
0x1F00FFFF, 0x00000000, 0x00000000, 0x00000000, 0x00640064, 0x00640000, 0x08000000, func_8430012C,
0x00000000, 0x05000000, 0x07000000, &D_8438E580, 0x06000000, 0x06000000, 0x0F000003, 0x05000000,
0x0A000000, &D_800AC840, 0x06000000, 0x0F000002, 0x05000000, 0x0A000000, &D_800AC858, 0x06000000,
0x09000000, 0x08000000, func_84300020, 0x00000000, 0x06000000, 0x06000000, 0x06000000, 0x01000000,
};
static u32 D_843844C4[] = {
0x0C00FFFF, 0x05000000, 0x07000000, &D_8438E598, 0x05000000, 0x0D000001, 0x05000000,
0x14000000, 0x002D0019, 0xFFFFFF28, 0x16FFFFFF, 0x0F000003, 0x05000000, 0x0A000000,
&D_800AC840, 0x06000000, 0x06000000, 0x06000000, 0x06000000, 0x01000000,
};
static u32 D_84384514[] = {
0x0C00FFFF, 0x05000000, 0x07000000, &D_8438E688, 0x05000000, 0x0D000002, 0x05000000,
0x14000000, 0x002D0019, 0xFFFFFF28, 0x16FFFFFF, 0x0F000003, 0x05000000, 0x0A000000,
&D_800AC840, 0x06000000, 0x06000000, 0x06000000, 0x06000000, 0x01000000,
};
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EA8E0/func_843000C0.s")
s32 func_84300020(s32 arg0, GraphNode* arg1) {
if (arg0 == 2) {
func_8432D0D8(5, &D_8438E440);
}
return 0;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EA8E0/func_8430012C.s")
s32 func_84300058(s32 arg0, unk_D_86002F34_alt18* arg1) {
UNUSED s32 pad;
f32 sp28;
s16 sp26;
s16 sp24;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EA8E0/func_84300184.s")
if (arg0 == 2) {
func_800102A4(&D_8006F088->unk_60.at, &D_8006F088->unk_60.eye, &sp28, &sp26, &sp24);
arg1->unk_1C = sp26 + 0x2000;
arg1->unk_1E = sp24 - 0x2000;
}
return 0;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EA8E0/func_843001FC.s")
s32 func_843000C0(s32 arg0, unk_D_86002F34_alt18* arg1) {
UNUSED s32 pad;
f32 sp28;
s16 sp26;
s16 sp24;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EA8E0/func_84300208.s")
if (arg0 == 2) {
func_800102A4(&D_8006F088->unk_60.at, &D_8006F088->unk_60.eye, &sp28, &sp26, &sp24);
arg1->unk_1C = -0x2000 - sp26;
arg1->unk_1E = sp24 + 0x6000;
}
return 0;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EA8E0/func_84300340.s")
s32 func_8430012C(s32 arg0, unk_D_86002F58_004_000* arg1) {
if (arg0 == 2) {
func_8000E88C(&arg1->unk_030, D_8438E7A8, D_8438E7A8, D_8438E7A8);
arg1->unk_03C.rgba = D_8438E7A4.rgba;
}
return 0;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EA8E0/func_84300750.s")
void func_84300184(u8 arg0, u8 arg1, u8 arg2) {
D_8438E7A4.r = arg0;
D_8438E7A4.g = arg1;
D_8438E7A4.b = arg2;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EA8E0/func_84300810.s")
if (((arg0 & arg1 & arg2) & 0xFF) == 0xFF) {
if (D_8438E530.unk_00.unk_14 == 1) {
D_8438E530.unk_00.unk_01 |= 1;
}
} else {
D_8438E530.unk_00.unk_01 &= ~1;
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EA8E0/func_84300938.s")
void func_843001FC(f32 arg0) {
D_8438E7A8 = arg0;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EA8E0/func_84300B34.s")
u16 func_84300208(u16 arg0) {
s32 r;
s32 g;
s32 b;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EA8E0/func_84300D44.s")
r = ((((((arg0 >> 11) & 0x1F) << 3) + (((arg0 >> 11) & 0x1F) >> 2)) * D_8438E7A4.r) / 255) >> 3;
g = ((((((arg0 >> 6) & 0x1F) << 3) + (((arg0 >> 6) & 0x1F) >> 2)) * D_8438E7A4.g) / 255) >> 3;
b = ((((((arg0 >> 1) & 0x1F) << 3) + (((arg0 >> 1) & 0x1F) >> 2)) * D_8438E7A4.b) / 255) >> 3;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EA8E0/func_84300DC0.s")
return (r << 11) | (g << 6) | (b << 1) | 1;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EA8E0/func_84300E88.s")
void func_84300340(void) {
s16 sp4E;
s16 sp4C;
s16 sp4A;
s16 sp48;
s16 sp46;
s16 sp44;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EA8E0/func_84300FBC.s")
if ((u32)D_8438E780 == NULL) {
func_800067E4(&gDisplayListHead, 0, 0, 0x140, 0xF0);
return;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EA8E0/func_84301094.s")
if ((u32)D_8438E780 == -1) {
func_8000699C(&gDisplayListHead, 1);
return;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EA8E0/func_843010EC.s")
if ((u32)D_8438E780 < 0x10000) {
func_8000699C(&gDisplayListHead, func_84300208(D_8438E780));
return;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EA8E0/func_8430123C.s")
sp4E = D_8438E440.unk_18.x;
sp4A = D_8438E440.unk_18.y;
sp4C = D_8438E440.unk_18.width + sp4E;
sp48 = (D_8438E440.unk_18.height / 2) + sp4A;
sp46 = D_8438E440.unk_18.height + sp4A;
sp44 = 0x10000 / (D_8438E440.unk_18.height / 2);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EA8E0/func_8430128C.s")
if ((D_8438E440.unk_18.width < 0x140) || (D_8438E440.unk_18.height < 0xF0)) {
func_8000699C(&gDisplayListHead, 1);
} else {
func_800067E4(&gDisplayListHead, 0, 0, 0x140, 0xF0);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EA8E0/func_843013E4.s")
gDPSetCycleType(gDisplayListHead++, G_CYC_1CYCLE);
gDPSetTexturePersp(gDisplayListHead++, G_TP_NONE);
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEI_PRIM, G_CC_MODULATEI_PRIM);
gDPSetPrimColor(gDisplayListHead++, 0, 0, D_8438E7A4.r, D_8438E7A4.g, D_8438E7A4.b, 255);
gSPClearGeometryMode(gDisplayListHead++, G_ZBUFFER | G_LIGHTING);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EA8E0/func_84301430.s")
gDPLoadTextureBlock(gDisplayListHead++, Memmap_GetFragmentVaddr(D_8438E780), G_IM_FMT_RGBA, G_IM_SIZ_32b, 4, 64, 0,
G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD,
G_TX_NOLOD);
gSPTextureRectangle(gDisplayListHead++, sp4E << 2, sp4A << 2, sp4C << 2, sp48 << 2, G_TX_RENDERTILE, 0, 0, 0, sp44);
gSPTextureRectangle(gDisplayListHead++, sp4E << 2, sp48 << 2, sp4C << 2, sp46 << 2, G_TX_RENDERTILE, 0, 0x07E0, 0,
0);
gSPDisplayList(gDisplayListHead++, D_8006F630);
}
void func_84300750(GraphNode* arg0, unk_D_80068BB0* arg1) {
unk_D_86002F34_00C* sp2C = arg0->unk_0C;
unk_D_86002F34_00C_018 sp20;
if (sp2C->unk_00.unk_01 & 0x10) {
sp20 = sp2C->unk_18;
sp2C->unk_18.x = 0;
sp2C->unk_18.y = 0;
sp2C->unk_18.width = 0x4C;
sp2C->unk_18.height = 0x4C;
func_80006498(&gDisplayListHead, arg1);
func_8000699C(&gDisplayListHead, 0x10D);
func_80015094(arg0);
sp2C->unk_00.unk_01 &= ~0x10;
sp2C->unk_18 = sp20;
}
}
void func_84300810(s32 arg0, s32 arg1, s32 arg2, s32 arg3) {
unk_D_800A7440 sp38;
u16 tmp5;
u16 tmp6;
func_80005FC0(&sp38, arg0, arg1, arg2, arg3);
if (func_80006030(&sp38) != 0) {
if (!arg2) {}
tmp5 = ((sp38.x1 - arg0) << 5);
tmp6 = ((sp38.y2 - arg1) << 5);
tmp5 += 0x10;
tmp6 += 0x10;
gSPTextureRectangle(gDisplayListHead++, sp38.x1 << 2, sp38.y2 << 2, ((sp38.y1 + 1) ^ 0) << 2,
((sp38.x2 + 1) ^ 0) << 2, G_TX_RENDERTILE, tmp5, tmp6, 0x0800, 0x0800);
if ((arg2 && arg2) ^ 0) {}
}
}
void func_84300938(s32 arg0, s32 arg1, s32 arg2, s32 arg3, u8* arg4, s32 arg5) {
gDPLoadTextureBlock(gDisplayListHead++, arg4, G_IM_FMT_RGBA, G_IM_SIZ_16b, arg5, (arg3 * 2) + 2, 0,
G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD,
G_TX_NOLOD);
func_84300810(arg0, arg1, (arg0 + arg2) - 1, (arg1 + arg3) - 1);
}
void func_84300B34(GraphNode* arg0, unk_D_80068BB0* arg1) {
s32 temp_s2;
s32 temp_s3;
unk_D_86002F34_00C* temp_v1 = arg0->unk_0C;
unk_D_86002F34_00C_018* ptr = &arg0->unk_0C->unk_18;
s32 img;
temp_s2 = ptr->x;
temp_s3 = ptr->y;
temp_v1++;
gDPPipeSync(gDisplayListHead++);
gDPSetCycleType(gDisplayListHead++, G_CYC_1CYCLE);
gDPSetRenderMode(gDisplayListHead++, G_RM_OPA_SURF, G_RM_OPA_SURF2);
gDPSetCombineMode(gDisplayListHead++, G_CC_DECALRGBA, G_CC_DECALRGBA);
gDPSetTexturePersp(gDisplayListHead++, G_TP_NONE);
gDPSetTextureFilter(gDisplayListHead++, G_TF_AVERAGE);
img = arg1->img_p;
func_84300938(temp_s2, temp_s3, 0x25, 0xA, img, 0x4C);
img = arg1->img_p + 0xBE0;
func_84300938(temp_s2, temp_s3 + 0xA, 0x25, 0xA, img, 0x4C);
img = arg1->img_p + 0x17C0;
func_84300938(temp_s2, temp_s3 + 0x14, 0x25, 0xA, img, 0x4C);
img = arg1->img_p + 0x23A0;
func_84300938(temp_s2, temp_s3 + 0x1E, 0x25, 7, img, 0x4C);
gDPPipeSync(gDisplayListHead++);
gDPSetTexturePersp(gDisplayListHead++, G_TP_PERSP);
gDPSetTextureFilter(gDisplayListHead++, G_TF_BILERP);
}
void func_84300D44(void) {
s32 i;
s32 j;
s32 x;
unk_D_800AE540_0004* temp_a2;
unk_D_800AE540_1194* ptr = &D_8438E798[0];
for (i = 0; i < 2; i++, ptr++) {
for (j = 0; j < ptr->unk_01; j++) {
temp_a2 = ptr->unk_08[j];
for (x = 0; x < temp_a2->unk_002; x++) {
temp_a2->unk_01C[x].unk_25 = 0;
}
}
}
}
void func_84300DC0(void) {
s32 i;
s32 j;
s32 x;
s32 var_v0 = 0;
unk_D_800AE540_0004* temp_a3;
unk_D_800AE540_1194* ptr = &D_8438E798[0];
for (i = 0; i < 2; i++, ptr++) {
for (j = 0; j < ptr->unk_01; j++) {
temp_a3 = ptr->unk_08[j];
for (x = 0; x < temp_a3->unk_002; x++) {
if ((temp_a3->unk_01C[x].unk_25 == 0) && (temp_a3->unk_01C[x].unk_02 == 0)) {
var_v0 = 1;
temp_a3->unk_01C[x].unk_25 = D_8438E7A0;
}
}
}
}
if (var_v0 != 0) {
D_8438E7A0 += 1;
}
}
void func_84300E78(void) {
}
void func_84300E80(void) {
}
s32 func_84300E88(s32 arg0) {
s32 sp1C;
func_80015348();
func_80032570();
func_84307394(2, D_8438E798);
func_84307A50(2, &D_8438E598, &D_8438E688);
sp1C = func_8432AEE4(2, &D_8438E440);
func_8432D0D8(2, &D_8438E440);
func_84300750(D_8438E788, D_8438E790);
func_84300750(D_8438E78C, D_8438E794);
func_800079C4();
func_84300340();
func_80015094(D_8438E784);
func_84307394(5, D_8438E798);
func_84300B34(D_8438E788, D_8438E790);
func_84300B34(D_8438E78C, D_8438E794);
func_84300DC0();
if (sp1C == 1) {
D_8438E798[0].unk_1C = 1;
}
if (sp1C == 2) {
D_8438E798[1].unk_1C = 1;
}
return sp1C;
}
s32 func_84300FBC(s32 arg0) {
s32 sp1C = 0;
if ((arg0 == 0) && BTN_IS_PRESSED(gPlayer1Controller, BTN_A)) {
sp1C = func_84300E88(arg0);
} else {
func_80032570();
func_800079C4();
func_84300340();
func_80015094(D_8438E784);
func_84307394(5, D_8438E798);
func_84300B34(D_8438E788, D_8438E790);
func_84300B34(D_8438E78C, D_8438E794);
}
if ((arg0 == 0) && BTN_IS_PRESSED(gPlayer1Controller, BTN_START)) {
D_8438E79C = 0;
}
return sp1C;
}
void func_84301094(void) {
if (D_8438E7AC < 0) {
D_8438E7AC++;
} else if ((D_8438E7AC == 0) && (D_800AE540.unk_0000 == 0x10) && gPlayer1Controller->buttonPressed) {
D_8438E7AC = 1;
}
}
s32 func_843010EC(s32 arg0) {
s32 sp1C = 0;
Cont_StartReadInputs();
func_8001C07C(&D_8438E798[0]);
func_8001C1E8(&D_8438E798[0]);
func_8001C07C(&D_8438E798[1]);
func_8001C1E8(&D_8438E798[1]);
Cont_ReadInputs();
func_8001F730();
switch (D_8438E79C) {
case 0:
sp1C = func_84300E88(arg0);
break;
case 1:
sp1C = func_84300FBC(arg0);
break;
}
if ((sp1C != 0) && (D_8438E7AC <= 0)) {
D_8438E7AC = 1;
}
func_84301094();
func_8001C248(&D_8438E798[0]);
func_8001C248(&D_8438E798[1]);
if ((arg0 != 2) && (D_8438E7AC == 1)) {
D_8438E7AC = 2;
func_8003DB84(0);
if (D_800AE540.unk_0000 != 0x11) {
func_8004B9C4(0x1E);
}
return 1;
}
return 0;
}
void func_8430123C(u8* arg0, s32 arg1) {
s32 i;
s32 j;
for (i = 0; i < 6; i++) {
for (j = 0; j < arg1; j++) {
if (i == arg0[j]) {
break;
}
}
if (j == arg1) {
arg0[arg1++] = i;
}
}
}
void func_8430128C(void) {
unk_D_800AE540_0004* temp_s0;
unk_D_800AE540_0004* temp_s1;
u8 sp48[8];
unk_D_800AE540_0004* temp_s2;
s32 i;
s32 var_s1;
temp_s1 = D_800AE540.unk_1194[0].unk_08[0];
temp_s2 = D_800AE540.unk_1194[0].unk_08[1];
temp_s0 = D_800AE540.unk_1194[1].unk_08[0];
if (temp_s0->unk_000 & 2) {
if (D_800AE540.unk_0000 == 0) {
if (D_800AE540.unk_0001 == 0) {
var_s1 = temp_s0->unk_214->unk_002;
} else {
var_s1 = 3;
}
func_843831A0(temp_s1, temp_s2, temp_s0, D_800AE540.unk_11EC, sp48, D_800AE540.unk_0001, var_s1);
} else {
if (D_800AE540.unk_0001 == 8) {
var_s1 = temp_s0->unk_214->unk_002;
} else {
var_s1 = 3;
}
func_843831A0(temp_s1, NULL, temp_s0, temp_s0->unk_018 & 0xFF, sp48, D_800AE540.unk_0001, var_s1);
}
func_8430123C(sp48, var_s1);
temp_s0->unk_002 = var_s1;
for (i = 0; i < temp_s0->unk_214->unk_002; i++) {
temp_s0->unk_01C[i] = temp_s0->unk_214->unk_028[sp48[i]];
}
}
}
void func_843013E4(unk_D_800AE540_1194* arg0, unk_D_86002F30* arg1) {
unk_D_800AE540_0004* temp_v0 = arg0->unk_08[0];
arg0->unk_18 = arg1->unk_08->unk_00[0];
arg0->unk_00 |= 0xA0;
arg0->unk_1C = 0;
arg0->unk_02 = temp_v0->unk_01C[0].unk_00.unk_00;
arg0->unk_04 = temp_v0->unk_01C;
func_8001C07C(arg0);
}
void func_84301430(unk_func_80007444* arg0) {
MemoryBlock* sp44;
u32* temp_v0_4;
FragmentEntry sp3C;
unk_D_8690A610_018* temp_v0_7;
s32 pad;
s16 sp32;
unk_D_80068BB0* sp2C;
unk_D_86002F30* sp28;
func_84300184(0xFF, 0xFF, 0xFF);
func_843001FC(1.0f);
if (D_800AE540.unk_0000 == 0x11) {
func_8001E94C(4, 0);
} else if (D_800AE540.unk_0000 == 0x10) {
func_8001E94C(7, 0);
} else {
func_8001E94C(3, 0);
}
D_8438E798[0].unk_10 = func_80019760(3);
D_8438E798[1].unk_10 = func_80019760(3);
func_8001987C();
sp2C = main_pool_alloc(0x10, 0);
func_800062E4(sp2C, 0, 2, 0x4C, 0x4C, arg0->unk_18[0]->depth_p->img_p);
D_8438E790 = func_80006314(0, 2, 0x4C, 0x4C, 0);
D_8438E794 = func_80006314(0, 2, 0x4C, 0x4C, 0);
func_80006414(D_8438E790, sp2C);
func_80006414(D_8438E794, sp2C);
D_8438E778 = D_8438E790->img_p;
D_8438E77C = D_8438E794->img_p;
FRAGMENT_LOAD(fragment31);
ASSET_LOAD(D_1000000, common_menu1_ui, 0);
ASSET_LOAD(D_3000000, battle_ui, 0);
if ((D_800AE540.unk_0000 == 0x10) || (D_800AE540.unk_0000 == 0xA)) {
sp32 = D_84384350[D_800AE540.unk_0001];
if (D_800AE540.unk_0001 == 7) {
sp32 += D_800AE540.unk_0002;
}
} else {
sp32 = D_84384350[D_800AE540.unk_0000];
if (D_800AE540.unk_0000 == 7) {
sp32 += D_800AE540.unk_0002;
}
}
sp3C = func_8000484C(ASSET_LOAD2(stadium_models, 1, 1), sp32);
D_8438E780 = sp3C(2, 0);
sp28 = func_80019D18(0x9A);
func_8430128C();
func_843013E4(&D_8438E798[0], sp28);
func_843013E4(&D_8438E798[1], sp28);
func_84300D44();
func_800110E0(NULL, &D_8438E440, 0, 0, 0x140, 0xF0);
func_800110E0(NULL, &D_8438E598, 0x1E, 0x50, 0x4C, 0x4C);
func_800110E0(NULL, &D_8438E688, 0xE2, 0x50, 0x4C, 0x4C);
func_800113F8(0, &D_8438E530, 0x3C0, 0x3E8, 0xFF, 0xFF, 0xFF, 0xFF);
func_8001103C(NULL, &D_8438E550);
func_8001103C(NULL, &D_8438E568);
func_8001103C(NULL, &D_8438E580);
func_80011E68(&D_8438E440, 30.0f, 192.0f, 24576.0f);
func_8001BB20();
func_84307394(0, D_8438E798);
func_84307A50(0, &D_8438E598, &D_8438E688);
func_8432AEE4(0, &D_8438E440);
func_8432D0D8(0, &D_8438E440);
sp44 = func_80002D10(main_pool_get_available(), 0);
D_8438E784 = process_geo_layout(sp44, D_84384364);
D_8438E788 = process_geo_layout(sp44, D_843844C4);
D_8438E78C = process_geo_layout(sp44, D_84384514);
temp_v0_4 = sp3C(0, 0);
if (temp_v0_4 != NULL) {
func_80012094(&D_8438E550, process_geo_layout(sp44, temp_v0_4));
}
temp_v0_4 = sp3C(1, 0);
if (temp_v0_4 != NULL) {
func_80012094(&D_8438E568, process_geo_layout(sp44, temp_v0_4));
}
temp_v0_4 = sp3C(3, 0);
if (temp_v0_4 != NULL) {
func_80012094(&D_8438E580, process_geo_layout(sp44, temp_v0_4));
}
func_80002D60(sp44);
temp_v0_7 = sp3C(4, 0);
if (temp_v0_7 == NULL) {
D_8438E530.unk_00.unk_14 = 0;
D_8438E530.unk_00.unk_01 &= ~1;
} else {
D_8438E530.unk_18.unk_00 = temp_v0_7->unk_00;
D_8438E530.unk_18.unk_02 = temp_v0_7->unk_02;
D_8438E530.unk_18.unk_04.rgba = temp_v0_7->unk_04.rgba;
D_8438E530.unk_00.unk_14 = 1;
}
func_84307394(3, D_8438E798);
func_84307A50(3, &D_8438E598, &D_8438E688);
func_8432AEE4(3, &D_8438E440);
func_8432D0D8(3, &D_8438E440);
D_8438E7A0 = 1;
D_8438E79C = 0;
}
void func_84301A24(void) {
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EA8E0/func_84301A2C.s")
s32 func_84301A2C(s32 arg0, unk_D_800AE540* arg1) {
unk_func_80007444* sp24;
D_8438E798 = D_800AE540.unk_1194;
D_8438E7AC = -2;
main_pool_push_state('BATL');
func_80005E40(0x20000, 0);
sp24 = func_80007444(0, 1, 3, 1, 2, 1);
func_84301430(sp24);
func_80007678(sp24);
func_800077B4(1);
func_800078D4(func_843010EC, 0x20, 0x10);
func_800077B4(2);
func_800076C0();
func_80005EAC();
main_pool_pop_state('BATL');
return 0;
}

File diff suppressed because it is too large Load Diff

View File

@ -1,36 +1,192 @@
#include "global.h"
#include "fragment62.h"
#include "src/17300.h"
#include "src/1C720.h"
#include "src/334D0.h"
#include "src/F420.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F1D60/func_843074A0.s")
void func_843074A0(unk_D_84390010* arg0) {
func_80017464(&arg0->unk_728.unk_000, arg0->unk_728.unk_180);
func_8001BD04(&arg0->unk_728.unk_000, arg0->unk_728.unk_17C);
func_8430753C(arg0->unk_728.unk_168);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F1D60/func_843074EC.s")
void func_843074EC(unk_D_84390010* arg0) {
arg0->unk_728.unk_170 = 0;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F1D60/func_843074F4.s")
void func_843074F4(unk_D_84390010* arg0) {
arg0->unk_728.unk_170 = 1;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F1D60/func_84307500.s")
void func_84307500(void) {
D_84390010[0]->unk_728.unk_170 = 0;
D_84390010[1]->unk_728.unk_170 = 0;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F1D60/func_8430751C.s")
void func_8430751C(void) {
D_84390010[0]->unk_728.unk_170 = 1;
D_84390010[1]->unk_728.unk_170 = 1;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F1D60/func_8430753C.s")
void func_8430753C(unk_D_84390010_728_0168* arg0) {
arg0->unk_00.unk_01 |= 0x10;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F1D60/func_8430754C.s")
void func_8430754C(unk_D_84390010* arg0) {
s32 var_v0;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F1D60/func_843075D0.s")
if (arg0 == D_84390010[0]) {
var_v0 = 0;
} else {
var_v0 = 1;
}
arg0->unk_728.unk_168->unk_20 = D_843847BC[var_v0].unk_04;
arg0->unk_728.unk_168->unk_1C = D_843847BC[var_v0].unk_00;
arg0->unk_728.unk_168->unk_1E = D_843847BC[var_v0].unk_02;
arg0->unk_728.unk_178 = D_843847BC[var_v0].unk_14;
arg0->unk_728.unk_168->unk_34 = D_843847BC[var_v0].unk_0C;
arg0->unk_728.unk_168->unk_38 = D_843847BC[var_v0].unk_10;
arg0->unk_728.unk_168->unk_2C = D_843847BC[var_v0].unk_08;
}
void func_843075D0(unk_D_84390010* arg0, unk_D_84390010* arg1) {
if (D_84390240.unk_00->unk_1C == 1) {
func_8430751C();
} else {
func_84307500();
}
func_8430754C(arg0);
func_8430754C(arg1);
}
void func_84307630(void) {
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F1D60/func_84307638.s")
void func_84307638(unk_D_84390010* arg0) {
s32 temp_v0;
unk_D_84390010_728_0168* sp30;
f32 tmp;
f32 tmp2;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F1D60/func_84307748.s")
sp30 = arg0->unk_728.unk_168;
temp_v0 = func_84307F00(arg0);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F1D60/func_84307768.s")
arg0->unk_728.unk_184 = D_84384578[temp_v0]->unk_0C;
if (D_84384578[temp_v0]->unk_10 == 0xFF) {
arg0->unk_728.unk_186 = D_84384578[temp_v0]->unk_0E * arg0->unk_728.unk_178;
tmp = D_84384578[temp_v0]->unk_00.z * arg0->unk_728.unk_178;
} else {
arg0->unk_728.unk_186 = D_84384578[temp_v0]->unk_0E;
tmp = D_84384578[temp_v0]->unk_00.z;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F1D60/func_843077B0.s")
arg0->unk_728.unk_190 = tmp;
arg0->unk_728.unk_188 = D_84384578[temp_v0]->unk_00.x;
arg0->unk_728.unk_180 = D_84384578[temp_v0]->unk_12;
tmp2 = D_84384578[temp_v0]->unk_00.y;
arg0->unk_728.unk_194 = tmp2;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F1D60/func_843078F4.s")
func_8431AE7C(sp30, arg0->unk_728.unk_000.unk_024.x + arg0->unk_728.unk_190, arg0->unk_728.unk_000.unk_024.y + tmp2,
arg0->unk_728.unk_000.unk_024.z, arg0->unk_728.unk_188, arg0->unk_728.unk_184, arg0->unk_728.unk_186);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F1D60/func_843079C4.s")
void func_84307748(unk_D_84390010* arg0) {
func_84307638(arg0);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F1D60/func_84307A14.s")
void func_84307768(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1, unk_D_86002F34_00C* arg2, unk_D_84390010* arg3) {
arg1->unk_728.unk_168 = arg0;
arg3->unk_728.unk_168 = arg2;
func_843075D0(arg1, arg3);
func_84307748(arg1);
func_84307748(arg3);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F1D60/func_84307A50.s")
void func_843077B0(unk_D_84390010* arg0, s32 arg1) {
s16 var_a0;
unk_D_84390010_728_0168* temp_v0;
arg0->unk_728.unk_168->unk_00.unk_01 |= 1;
arg0->unk_728.unk_000.unk_000.unk_01 |= 1;
if (arg0->unk_728.unk_178 == 1) {
if ((arg0->unk_728.unk_168->unk_1C == -0x48) && !(arg0->unk_654.unk_34 & 0x800)) {
func_843074A0(arg0);
}
if ((func_800328D8(0) != 0) && (arg0->unk_728.unk_18C == 0)) {
arg0->unk_728.unk_18C = 2;
func_800328D0(0);
}
arg0->unk_728.unk_168->unk_1C = func_8001046C(arg0->unk_728.unk_168->unk_1C, 0x17, arg1, arg1);
} else {
if ((arg0->unk_728.unk_168->unk_1C == 0x15F) && !(arg0->unk_654.unk_34 & 0x800)) {
func_843074A0(arg0);
}
arg0->unk_728.unk_168->unk_1C = func_8001046C(arg0->unk_728.unk_168->unk_1C, 0x103, arg1, arg1);
if ((func_800328D8(1) != 0) && (arg0->unk_728.unk_18C == 0)) {
arg0->unk_728.unk_18C = 2;
func_800328D0(1);
}
}
}
void func_843078F4(unk_D_84390010* arg0, s32 arg1) {
if (arg0->unk_728.unk_178 == 1) {
arg0->unk_728.unk_18C = 0;
arg0->unk_728.unk_168->unk_1C = func_8001046C(arg0->unk_728.unk_168->unk_1C, -0x48, arg1, arg1);
if (arg0->unk_728.unk_168->unk_1C == -0x48) {
arg0->unk_728.unk_168->unk_00.unk_01 &= ~1;
arg0->unk_728.unk_000.unk_000.unk_01 &= ~1;
}
} else {
arg0->unk_728.unk_18C = 0;
arg0->unk_728.unk_168->unk_1C = func_8001046C(arg0->unk_728.unk_168->unk_1C, 0x15F, arg1, arg1);
if (arg0->unk_728.unk_168->unk_1C == 0x15F) {
arg0->unk_728.unk_168->unk_00.unk_01 &= ~1;
arg0->unk_728.unk_000.unk_000.unk_01 &= ~1;
}
}
}
void func_843079C4(unk_D_84390010* arg0) {
switch (arg0->unk_728.unk_170) {
case 0:
func_843078F4(arg0, 9);
break;
case 1:
func_843077B0(arg0, 9);
break;
}
}
void func_84307A14(unk_D_84390010* arg0, unk_D_84390010* arg1) {
if (D_800AE540.unk_0000 != 0x10) {
func_843079C4(arg0);
func_843079C4(arg1);
}
}
s32 func_84307A50(s32 arg0, unk_D_86002F34_00C* arg1, unk_D_86002F34_00C* arg2) {
switch (arg0) {
case 0:
func_84307630();
break;
case 1:
case 2:
func_84307A14(D_84390010[0], D_84390010[1]);
break;
case 3:
func_84307768(arg1, D_84390010[0], arg2, D_84390010[1]);
break;
}
return 0;
}

View File

@ -1,119 +1,614 @@
#include "global.h"
#include "fragment62.h"
#include "src/17300.h"
#include "src/18140.h"
#include "src/1C720.h"
#include "src/2E110.h"
#include "src/F420.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307AE0.s")
s32 func_84307AE0(u8 arg0, u8* arg1, s32 arg2) {
while (arg2--) {
if (arg0 == *arg1) {
return 1;
}
arg1++;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307B28.s")
return 0;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307B60.s")
unk_func_80026268_arg0* func_84307B28(unk_D_84390010* arg0) {
unk_func_80026268_arg0* ptr = &arg0->unk_720->unk_08[arg0->unk_654.unk_2C]->unk_01C[arg0->unk_654.unk_08];
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307BAC.s")
return ptr;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307BD8.s")
s32 func_84307B60(unk_D_84390010* arg0) {
unk_func_80026268_arg0* temp_v0 = func_84307B28(arg0);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307C04.s")
if ((arg0->unk_000.unk_01A == 0x19) && (temp_v0->unk_52 & 0x80)) {
return 1;
}
return 0;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307C30.s")
f32 func_84307BAC(unk_D_84390010* arg0) {
return D_84390028[func_84307F00(arg0)].unk_08;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307C5C.s")
f32 func_84307BD8(unk_D_84390010* arg0) {
return D_84390028[func_84307F00(arg0)].unk_00;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307DE0.s")
f32 func_84307C04(unk_D_84390010* arg0) {
return D_84390028[func_84307F00(arg0)].unk_04;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307EAC.s")
f32 func_84307C30(unk_D_84390010* arg0) {
return D_84390028[func_84307F00(arg0)].unk_0C;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307EC4.s")
void func_84307C5C(unk_D_84390010* arg0) {
if (func_84307F00(arg0) == 0) {
if (arg0->unk_000.unk_01A == 0x82) {
func_8000E88C(&arg0->unk_000.unk_024, -225.0f, func_84307BAC(arg0), 0.0f);
} else if ((arg0->unk_000.unk_01A == 3) || (arg0->unk_000.unk_01A == 0x83)) {
func_8000E88C(&arg0->unk_000.unk_024, -175.0f, func_84307BAC(arg0), 0.0f);
} else if (arg0->unk_000.unk_01A == 0x5F) {
func_8000E88C(&arg0->unk_000.unk_024, -225.0f, func_84307BAC(arg0), 7.5000005f);
} else {
func_8000E88C(&arg0->unk_000.unk_024, -150.0f, func_84307BAC(arg0), 0.0f);
}
} else if ((arg0->unk_000.unk_01A == 0x82) || (arg0->unk_000.unk_01A == 0x5F)) {
func_8000E88C(&arg0->unk_000.unk_024, 225.0f, func_84307BAC(arg0), 0.0f);
} else if ((arg0->unk_000.unk_01A == 3) || (arg0->unk_000.unk_01A == 0x83)) {
func_8000E88C(&arg0->unk_000.unk_024, 175.0f, func_84307BAC(arg0), 0.0f);
} else {
func_8000E88C(&arg0->unk_000.unk_024, 150.0f, func_84307BAC(arg0), 0.0f);
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307EE0.s")
f32 func_84307DE0(unk_D_84390010* arg0) {
if (func_84307F00(arg0) == 0) {
if ((arg0->unk_000.unk_01A == 0x82) || (arg0->unk_000.unk_01A == 0x5F)) {
return -200.0f;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307F00.s")
if ((arg0->unk_000.unk_01A == 3) || (arg0->unk_000.unk_01A == 0x83)) {
return -175.0f;
}
return -150.0f;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307F24.s")
if ((arg0->unk_000.unk_01A == 0x82) || (arg0->unk_000.unk_01A == 0x5F)) {
return 200.0f;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307F68.s")
if ((arg0->unk_000.unk_01A == 3) || (arg0->unk_000.unk_01A == 0x83)) {
return 175.0f;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307FAC.s")
return 150.0f;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307FE0.s")
void func_84307EAC(unk_D_84390010* arg0, f32 arg1) {
arg0->unk_000.unk_030.x = arg1;
arg0->unk_000.unk_030.y = arg1;
arg0->unk_000.unk_030.z = arg1;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308014.s")
s32 func_84307EC4(unk_D_84390010* arg0) {
return arg0->unk_720->unk_08[arg0->unk_654.unk_2B]->unk_002;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308058.s")
s32 func_84307EE0(unk_D_84390010* arg0) {
s32 idx = arg0->unk_654.unk_2B == 0;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_8430808C.s")
return arg0->unk_720->unk_08[idx]->unk_002;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308094.s")
s32 func_84307F00(unk_D_84390010* arg0) {
if (arg0 == D_84390018) {
return 0;
}
return 1;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308148.s")
u8 func_84307F24(unk_D_84390010* arg0) {
UNUSED s32 pad;
UNUSED s16 pad2;
s16 sp18 = arg0->unk_654.unk_38.unk_5A - 1;
unk_D_8438E7B0_A50* ptr = &D_84384570[func_84307F00(arg0)]->unk_000[sp18];
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308164.s")
return ptr->unk_02;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308190.s")
u8 func_84307F68(unk_D_84390010* arg0) {
UNUSED s32 pad;
UNUSED s16 pad2;
s16 sp18 = arg0->unk_654.unk_38.unk_5A - 1;
unk_D_8438E7B0_A50* ptr = &D_84384570[func_84307F00(arg0)]->unk_000[sp18];
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_843081A4.s")
return ptr->unk_03;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_843081BC.s")
s16 func_84307FAC(unk_D_84390010* arg0) {
unk_D_8438E7B0_A50* ptr = &D_84384570[func_84307F00(arg0)]->unk_A80;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_843081C4.s")
return ptr->unk_02;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_843081D4.s")
s32 func_84307FE0(unk_D_84390010* arg0) {
unk_D_8438E7B0_A50* ptr = &D_84384570[func_84307F00(arg0)]->unk_A80;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_843081F0.s")
return ptr->unk_03;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_843083A0.s")
f32 func_84308014(unk_D_84390010* arg0) {
return ((func_84307C04(arg0) * 2) / 50.0f) * arg0->unk_000.unk_030.y;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308520.s")
f32 func_84308058(unk_D_84390010* arg0) {
return (func_84307C04(arg0) * 2) / 50.0f;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308548.s")
s16 func_8430808C(unk_D_84390010* arg0) {
return arg0->unk_654.unk_38.unk_5A;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308598.s")
void func_84308094(unk_D_84390010* arg0, Vec3f* arg1) {
arg1->x = ((func_84307BD8(arg0) * 2) / 50.0f) * arg0->unk_000.unk_030.x;
arg1->y = ((func_84307C04(arg0) * 2) / 50.0f) * arg0->unk_000.unk_030.y;
arg1->z = ((func_84307BD8(arg0) * 2) / 50.0f) * arg0->unk_000.unk_030.x;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_843085C4.s")
void func_84308148(unk_D_84390010* arg0, Vec3s* arg1) {
arg1->x = arg0->unk_000.unk_01E.x;
arg1->y = arg0->unk_000.unk_01E.y;
arg1->z = arg0->unk_000.unk_01E.z;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_843085E0.s")
u16 func_84308164(unk_D_84390010* arg0) {
unk_func_80026268_arg0* ptr = &arg0->unk_724->unk_01C[arg0->unk_654.unk_08];
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_843085F0.s")
return ptr->unk_02;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_8430862C.s")
s16 func_84308190(unk_D_84390010* arg0) {
return arg0->unk_4B0 << 0xE;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308654.s")
s32 func_843081A4(s32 arg0) {
return D_84390010[arg0]->unk_000.unk_01A;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308660.s")
s32 func_843081BC(unk_D_84390010* arg0) {
return arg0->unk_000.unk_01A;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_843087F8.s")
u8 func_843081C4(unk_D_84390010* arg0) {
s32 ret = arg0->unk_000.unk_000.unk_01 & 1;
return ret;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_8430897C.s")
void func_843081D4(unk_D_84390010* arg0, Vec3f* arg1) {
arg1->x = arg0->unk_000.unk_024.x;
arg1->y = arg0->unk_000.unk_024.y;
arg1->z = arg0->unk_000.unk_024.z;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_843089DC.s")
void func_843081F0(unk_D_84390010* arg0, Vec3f* arg1) {
f32 var_fs0 = 0.0f;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_843089F4.s")
if (func_84307AE0(arg0->unk_000.unk_01A, &D_843845F0, 1) != 0) {
var_fs0 = func_84308548(arg0) / 1.5f;
} else if (func_84307AE0(arg0->unk_000.unk_01A, &D_843845F4, 1) != 0) {
var_fs0 = func_84308548(arg0) * 0.5f;
} else if ((func_84307AE0(arg0->unk_000.unk_01A, &D_843845F8, 1) != 0) && (arg0->unk_654.unk_34 & 0x200)) {
var_fs0 = 2.0f * func_84308548(arg0);
} else if ((func_84307AE0(arg0->unk_000.unk_01A, D_843845FC, 2) != 0) && (arg0->unk_654.unk_34 & 0x200)) {
var_fs0 = func_84308548(arg0) * 1.5f;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_843089FC.s")
if (func_84307BAC(arg0) != 0.0f) {
arg1->x = arg0->unk_000.unk_024.x;
arg1->y = arg0->unk_000.unk_024.y + var_fs0;
arg1->z = arg0->unk_000.unk_024.z;
} else {
arg1->x = arg0->unk_000.unk_024.x;
arg1->y = func_84308548(arg0) + arg0->unk_000.unk_024.y + var_fs0;
arg1->z = arg0->unk_000.unk_024.z;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308A04.s")
if (arg1->y < 0.0f) {
arg1->y = func_84308548(arg0);
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308A4C.s")
void func_843083A0(unk_D_84390010* arg0, Vec3f* arg1) {
if (func_84307F00(arg0) == 0) {
if (arg0->unk_000.unk_01A == 0x82) {
func_8000E88C(arg1, -225.0f, func_84307BAC(arg0), 0.0f);
} else if ((arg0->unk_000.unk_01A == 3) || (arg0->unk_000.unk_01A == 0x83)) {
func_8000E88C(arg1, -175.0f, func_84307BAC(arg0), 0.0f);
} else if (arg0->unk_000.unk_01A == 0x5F) {
func_8000E88C(arg1, -225.0f, func_84307BAC(arg0), 7.5000005f);
} else {
func_8000E88C(arg1, -150.0f, func_84307BAC(arg0), 0.0f);
}
} else if ((arg0->unk_000.unk_01A == 0x82) || (arg0->unk_000.unk_01A == 0x5F)) {
func_8000E88C(arg1, 225.0f, func_84307BAC(arg0), 0.0f);
} else if ((arg0->unk_000.unk_01A == 3) || (arg0->unk_000.unk_01A == 0x83)) {
func_8000E88C(arg1, 175.0f, func_84307BAC(arg0), 0.0f);
} else {
func_8000E88C(arg1, 150.0f, func_84307BAC(arg0), 0.0f);
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308BD0.s")
void func_84308520(unk_D_84390010* arg0, Vec3f* arg1) {
arg1->x = arg0->unk_4EC.unk_024.x;
arg1->y = arg0->unk_4EC.unk_024.y + 2.5f;
arg1->z = arg0->unk_4EC.unk_024.z;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308D54.s")
f32 func_84308548(unk_D_84390010* arg0) {
if (arg0->unk_4B4 == 0x10) {
return func_84307C04(arg0);
}
return func_84307C04(arg0) * arg0->unk_000.unk_030.y;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308D90.s")
f32 func_84308598(unk_D_84390010* arg0) {
return func_84307BD8(arg0) * arg0->unk_000.unk_030.y;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308D98.s")
unk_D_86002F58_004_000_004* func_843085C4(unk_D_84390010* arg0, s32 arg1) {
return arg0->unk_720->unk_14->unk_00[2]->unk_00[arg1];
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308DB8.s")
s32 func_843085E0(unk_D_84390010* arg0, UNUSED s32 arg1) {
return arg0->unk_720->unk_02;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308ED4.s")
char* func_843085F0(unk_D_84390010* arg0) {
return func_8002D7C0(NULL, 0, D_843900B8, arg0->unk_654.unk_38.unk_5A - 1);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308F94.s")
u8* func_8430862C(unk_D_84390010* arg0) {
return arg0->unk_724->unk_01C[arg0->unk_654.unk_08].unk_30;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84309110.s")
void func_84308654(unk_D_84390010* arg0, s32 arg1, s32 arg2) {
arg0->unk_4B4 = arg1;
arg0->unk_4B8 = arg2;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84309168.s")
void func_84308660(unk_D_84390010* arg0, unk_D_84390010* arg1) {
s32 idx;
unk_D_8438E7B0_A50* sp30;
unk_D_8438E7B0_A50* sp2C;
unk_D_8438E7B0_A50* sp28;
unk_D_84390010_654* sp20 = &arg0->unk_654;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_8430920C.s")
idx = func_84307F00(arg0);
sp30 = &D_84384570[idx]->unk_A50;
idx = func_84307F00(arg0);
sp2C = &D_84384570[idx]->unk_B00;
idx = func_84307F00(arg0);
sp28 = &D_84384570[idx]->unk_AF0;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_843092B4.s")
if (!(sp20->unk_34 & 0x4002)) {
if ((func_84301FF0(arg0) == 0) && (arg1->unk_000.unk_040.unk_00 != -1) &&
(func_80017514(&arg1->unk_000) == 1)) {
if (sp20->unk_34 & 0x200) {
func_8001BD04(&arg1->unk_000, sp2C->unk_00);
} else if ((sp20->unk_34 & 1) && (func_84307AE0(arg1->unk_000.unk_01A, D_84384590, 8) != 0)) {
func_8001BD04(&arg1->unk_000, sp28->unk_00);
} else {
if (arg1->unk_000.unk_01A == 0x84) {
idx = func_8430C414(5);
func_8001BD04(&arg1->unk_000, idx + 0xE);
} else {
func_8001BD04(&arg1->unk_000, sp30->unk_00);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84309328.s")
if (!(sp20->unk_34 & 1)) {
func_84305A74(arg0, 0xA5, 1);
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84309368.s")
func_80017464(&arg1->unk_000, 0);
}
}
}
void func_843087F8(unk_D_84390010* arg0) {
s32 idx;
unk_D_84390010_654* sp24;
unk_D_8438E7B0_A50* sp34;
unk_D_8438E7B0_A50* sp30;
unk_D_8438E7B0_A50* sp2C;
sp24 = &arg0->unk_654;
idx = func_84307F00(arg0);
sp34 = &D_84384570[idx]->unk_A50;
idx = func_84307F00(arg0);
sp30 = &D_84384570[idx]->unk_B00;
idx = func_84307F00(arg0);
sp2C = &D_84384570[idx]->unk_AF0;
if (!(sp24->unk_34 & 0x4002) && (func_84301FF0(arg0) == 0) && (arg0->unk_000.unk_040.unk_00 != -1)) {
func_80017464(&arg0->unk_000, 0);
if (sp24->unk_34 & 0x200) {
func_8001BD04(&arg0->unk_000, sp30->unk_00);
} else if ((sp24->unk_34 & 1) && (func_84307AE0(arg0->unk_000.unk_01A, D_84384590, 8) != 0)) {
func_8001BD04(&arg0->unk_000, sp2C->unk_00);
} else {
if (arg0->unk_000.unk_01A == 0x84) {
func_8001BD04(&arg0->unk_000, func_8430C414(5) + 0xE);
} else {
func_8001BD04(&arg0->unk_000, sp34->unk_00);
}
if (!(sp24->unk_34 & 1)) {
func_84305A74(arg0, 0xA5, 1);
}
}
}
}
void func_8430897C(unk_D_84390010* arg0) {
unk_D_8438E7B0_A50* sp1C = &D_84384570[func_84307F00(arg0)]->unk_A80;
if (arg0->unk_000.unk_040.unk_00 != -1) {
func_80017464(&arg0->unk_000, 0);
func_8001BD04(&arg0->unk_000, sp1C->unk_00);
}
}
void func_843089DC(unk_D_84390010* arg0, s32 arg1) {
arg0->unk_724 = arg0->unk_720->unk_08[arg1];
}
void func_843089F4(unk_D_84390010* arg0, s32 arg1) {
arg0->unk_654.unk_2B = arg1;
}
void func_843089FC(unk_D_84390010* arg0, Controller* arg1) {
arg0->unk_654.unk_C8 = arg1;
}
void func_84308A04(unk_D_84390010* arg0, s32 arg1) {
unk_D_84390010_654* temp_v0 = &arg0->unk_654;
func_843089DC(arg0, arg1);
func_843089F4(arg0, arg1);
temp_v0->unk_08 = temp_v0->unk_18;
arg0->unk_728.unk_16C = temp_v0->unk_2B;
}
s32 func_84308A4C(unk_D_84390010* arg0) {
s32 i;
unk_D_84390010_654* temp_s0;
unk_func_80026268_arg0* ptr;
temp_s0 = &arg0->unk_654;
for (i = 0; i < func_84307EC4(arg0); i++) {
ptr = &arg0->unk_724->unk_01C[i];
if ((ptr->unk_05 & 0x20) && (arg0->unk_654.unk_38.unk_16[temp_s0->unk_08 + temp_s0->unk_2B * 3] == 0)) {
return 1;
}
}
if (arg0->unk_720->unk_01 == 2) {
for (i = 0; i < func_84307EE0(arg0); i++) {
ptr = &arg0->unk_720->unk_08[temp_s0->unk_2B == 0]->unk_01C[i];
if ((ptr->unk_05 & 0x20) &&
(arg0->unk_654.unk_38.unk_16[temp_s0->unk_08 + (temp_s0->unk_2B == 0) * 3] == 0)) {
return 1;
}
}
}
return 0;
}
s32 func_84308BD0(unk_D_84390010* arg0) {
s32 i;
unk_D_84390010_654* temp_s0;
unk_func_80026268_arg0* ptr;
temp_s0 = &arg0->unk_654;
for (i = 0; i < func_84307EC4(arg0); i++) {
ptr = &arg0->unk_724->unk_01C[i];
if ((ptr->unk_05 & 7) && (arg0->unk_654.unk_38.unk_16[temp_s0->unk_08 + temp_s0->unk_2B * 3] == 0)) {
return 1;
}
}
if (arg0->unk_720->unk_01 == 2) {
for (i = 0; i < func_84307EE0(arg0); i++) {
ptr = &arg0->unk_720->unk_08[temp_s0->unk_2B == 0]->unk_01C[i];
if ((ptr->unk_05 & 7) && (arg0->unk_654.unk_38.unk_16[temp_s0->unk_08 + (temp_s0->unk_2B == 0) * 3] == 0)) {
return 1;
}
}
}
return 0;
}
s32 func_84308D54(unk_D_84390010* arg0) {
if (arg0->unk_720->unk_01 != 2) {
return arg0->unk_720->unk_08[0]->unk_002;
}
return arg0->unk_720->unk_08[1]->unk_002 + arg0->unk_720->unk_08[0]->unk_002;
}
u8 func_84308D90(unk_D_800AE540_0004* arg0) {
return arg0->unk_002;
}
s32 func_84308D98(unk_D_84390010* arg0) {
return arg0->unk_720->unk_08[arg0->unk_728.unk_16C]->unk_001 + 1;
}
void func_84308DB8(unk_D_84390010* arg0, unk_D_84390010* arg1, s32 arg2, s32 arg3) {
UNUSED s32 pad;
unk_D_86002F58_004_000_004* sp20 = func_843085C4(arg0, 0);
func_84307F00(arg0);
func_8001BCF0(&arg1->unk_000);
if (arg0 == D_84390010[0]) {
arg1->unk_000.unk_0A6 = 0;
} else {
arg1->unk_000.unk_0A6 = 1;
}
func_8001BC34(&arg1->unk_000, 0, arg2, sp20);
func_84302658(arg0, arg3);
func_80017464(&arg1->unk_000, 0);
func_8001BD04(&arg1->unk_000, 0);
if ((arg1->unk_000.unk_01A == 0x32) || (arg1->unk_000.unk_01A == 0x33)) {
arg1->unk_000.unk_000.unk_02 &= 0xFFBF;
} else {
arg1->unk_000.unk_000.unk_02 |= 0x40;
}
if (!(arg0->unk_654.unk_34 & 0x200)) {
if (arg0 == D_84390010[0]) {
func_84307C5C(arg0);
arg1->unk_000.unk_01E.y = 0x4000;
} else {
func_84307C5C(arg0);
arg1->unk_000.unk_01E.y = -0x4000;
}
}
}
void func_84308ED4(unk_D_84390010* arg0, unk_D_84390010_728* arg1, s16 arg2) {
unk_D_86002F58_004_000_004* sp24;
sp24 = func_843085C4(arg0, 0);
func_8001BCF0(&arg1->unk_000);
if (arg0 == D_84390010[0]) {
arg1->unk_000.unk_0A6 = 0xFF;
} else {
arg1->unk_000.unk_0A6 = 0xFF;
}
if (arg0 == D_84390010[0]) {
func_8001BC34(&arg1->unk_000, 1, arg2, sp24);
} else {
func_8001BC34(&arg1->unk_000, 2, arg2, sp24);
}
func_80017464(&arg1->unk_000, 0);
func_8001BD04(&arg1->unk_000, 0);
arg1->unk_000.unk_000.unk_02 &= ~0x40;
}
void func_84308F94(unk_D_84390010* arg0, s16 arg1) {
s32 i;
unk_D_86002F58_004_000_004* sp58;
unk_D_84390010_168* var_s0;
sp58 = func_843085C4(arg0, 0);
for (i = 0; i < 2; i++) {
var_s0 = &arg0->unk_168[i];
func_8001BCF0(&var_s0->unk_000);
if (arg0 == D_84390010[0]) {
var_s0->unk_000.unk_0A6 = 0xFF;
} else {
var_s0->unk_000.unk_0A6 = 0xFF;
}
func_8001BC34(&var_s0->unk_000, 0, arg1, sp58);
func_80017464(&var_s0->unk_000, 0);
func_8001BD04(&var_s0->unk_000, 0);
var_s0->unk_000.unk_000.unk_02 &= ~0x40;
if (arg0 == D_84390010[0]) {
func_8000E88C(&var_s0->unk_000.unk_024, -150.0f, 0.0f, 0.0f);
var_s0->unk_000.unk_01E.y = 0x4000;
} else {
func_8000E88C(&var_s0->unk_000.unk_024, 150.0f, 0.0f, 0.0f);
var_s0->unk_000.unk_01E.y = -0x4000;
}
var_s0->unk_000.unk_000.unk_01 &= ~1;
}
}
void func_84309110(unk_D_84390010* arg0) {
if (arg0->unk_654.unk_34 & 1) {
func_843059C0(arg0, 0xAF, 2);
} else {
arg0->unk_654.unk_36 = 0;
func_80017804(&arg0->unk_000, 0);
func_8001BD9C(&arg0->unk_000, -1);
}
}
void func_84309168(unk_D_84390010* arg0) {
unk_D_84390010_654* ptr = &arg0->unk_654;
UNUSED s32 pad[3];
s16 sp26;
func_843085C4(arg0, 0);
sp26 = func_843085E0(arg0, 0);
func_84308DB8(arg0, arg0, sp26, 0);
func_84308ED4(arg0, &arg0->unk_728, sp26);
func_84308F94(arg0, sp26);
func_84309110(arg0);
ptr->unk_34 &= 0x1800;
func_8000E88C(&arg0->unk_000.unk_030, 1.0f, 1.0f, 1.0f);
}
void func_8430920C(unk_D_84390010* arg0) {
unk_D_84390010_654* ptr = &arg0->unk_654;
UNUSED s32 pad[3];
s16 sp26;
func_843085C4(arg0, 0);
sp26 = func_843085E0(arg0, 0);
func_84308DB8(arg0, arg0, sp26, 1);
func_84308ED4(arg0, &arg0->unk_728, sp26);
func_84308F94(arg0, sp26);
func_84309110(arg0);
ptr->unk_2D = 0;
ptr->unk_34 &= 0x1800;
func_8000E88C(&arg0->unk_000.unk_030, 1.0f, 1.0f, 1.0f);
}
void func_843092B4(unk_D_84390010* arg0) {
func_8001BE34(&arg0->unk_000, 0xFF, 0xFF, 0xFF, arg0->unk_654.unk_2E = 0xFF);
arg0->unk_654.unk_BC = arg0->unk_000.unk_01A;
func_84308DB8(arg0, arg0, 0x98, 0);
func_84308F94(arg0, 0x98);
func_84309110(arg0);
}
void func_84309328(unk_D_84390010* arg0) {
func_84308DB8(arg0, arg0, 0x98, 0);
func_84308F94(arg0, 0x98);
func_84309110(arg0);
}
void func_84309368(unk_D_84390010* arg0) {
UNUSED s32 pad[3];
unk_D_84390010_654* ptr = &arg0->unk_654;
s16 sp2E = func_843085E0(arg0, 0);
ptr->unk_2E = 0xFF;
func_8001BE34(&arg0->unk_000, 0xFF, 0xFF, 0xFF, ptr->unk_2E);
func_84308DB8(arg0, arg0, sp2E, 0);
func_84308F94(arg0, sp2E);
func_84309110(arg0);
}

File diff suppressed because it is too large Load Diff

View File

@ -1,45 +1,269 @@
#include "global.h"
#include "fragment62.h"
#include "src/math_util.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F6930/func_8430C070.s")
void func_8430C070(Vec3f* arg0, Vec3f* arg1, f32* arg2, s16* arg3, s16* arg4) {
f32 sp2C = arg1->x - arg0->x;
f32 sp28 = arg1->y - arg0->y;
f32 sp24 = arg1->z - arg0->z;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F6930/func_8430C120.s")
*arg2 = sqrtf(SQ(sp2C) + SQ(sp28) + SQ(sp24));
*arg3 = MathUtil_Atan2s(sqrtf(SQ(sp2C) + SQ(sp24)), sp28);
*arg4 = MathUtil_Atan2s(sp24, sp2C);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F6930/func_8430C138.s")
Vec3f* func_8430C120(Vec3f* arg0) {
arg0->x = 0.0f;
arg0->y = 0.0f;
arg0->z = 0.0f;
return arg0;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F6930/func_8430C19C.s")
Vec3f* func_8430C138(Vec3f* arg0, Vec3f* arg1, f32 arg2, s16 arg3) {
arg0->x = (SINS(arg3) * arg2) + arg1->x;
arg0->y = arg1->y;
arg0->z = (COSS(arg3) * arg2) + arg1->z;
return arg0;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F6930/func_8430C1E4.s")
void func_8430C19C(Vec3f* arg0, f32 arg1, s16 arg2) {
arg0->x = COSS(arg2) * arg1;
arg0->z = SINS(arg2) * arg1;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F6930/func_8430C204.s")
Vec3f* func_8430C1E4(Vec3f* arg0, Vec3f* arg1) {
arg0->x = arg1->x;
arg0->y = arg1->y;
arg0->z = arg1->z;
return arg0;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F6930/func_8430C224.s")
Vec3s* func_8430C204(Vec3s* arg0, Vec3s* arg1) {
arg0->x = arg1->x;
arg0->y = arg1->y;
arg0->z = arg1->z;
return arg0;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F6930/func_8430C260.s")
Vec3f* func_8430C224(Vec3f* arg0, f32 arg1, f32 arg2, f32 arg3) {
arg0->x = arg0->x * arg1;
arg0->y = arg0->y * arg2;
arg0->z = arg0->z * arg3;
return arg0;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F6930/func_8430C2A4.s")
s16 func_8430C260(f32 arg0, f32 arg1, f32 arg2, f32 arg3) {
return MathUtil_Atan2s(arg2 - arg0, arg3 - arg1);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F6930/func_8430C308.s")
f32 func_8430C2A4(Vec3f arg0, Vec3f arg1) {
return sqrtf(SQ(arg1.x - arg0.x) + SQ(arg1.y - arg0.y) + SQ(arg1.z - arg0.z));
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F6930/func_8430C384.s")
f32 func_8430C308(f32 arg0, f32 arg1, f32 arg2, f32 arg3) {
static f32 D_843900D0;
static f32 D_843900D4;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F6930/func_8430C414.s")
D_843900D0 = SQ(arg0 - arg2);
D_843900D4 = SQ(arg1 - arg3);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F6930/func_8430C4F8.s")
if (D_843900D0 + D_843900D4 == 0.0f) {
return 0.0f;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F6930/func_8430C59C.s")
return sqrtf(D_843900D0 + D_843900D4);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F6930/func_8430C718.s")
s32 func_8430C384(f32 arg0) {
s32 temp_v1;
s32 var_v1;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F6930/func_8430C780.s")
temp_v1 = osGetCount() & 0xFF;
while (temp_v1-- > 0) {
MathUtil_Random_ZeroOne();
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F6930/func_8430C7B4.s")
var_v1 = MathUtil_Random_ZeroOne() * arg0;
if (arg0 <= var_v1) {
var_v1 = (s32)arg0 - 1;
}
return var_v1;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F6930/func_8430C7E4.s")
u16 func_8430C414(s32 arg0) {
f32 tmp = (u32)MathUtil_Random16();
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F6930/func_8430C8A0.s")
return (tmp / 65535.0) * arg0;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F6930/func_8430C97C.s")
s32 func_8430C4F8(s16* arg0, s16 arg1, s16 arg2) {
s16 temp_v0 = arg1 - *arg0;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F6930/func_8430CA4C.s")
if (arg2 < 0) {
arg2 *= -1;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F6930/func_8430CB3C.s")
if (temp_v0 > 0) {
temp_v0 -= arg2;
if (temp_v0 >= 0) {
*arg0 = arg1 - temp_v0;
} else {
*arg0 = arg1;
}
} else {
temp_v0 += arg2;
if (temp_v0 <= 0) {
*arg0 = arg1 - temp_v0;
} else {
*arg0 = arg1;
}
}
if (arg1 == *arg0) {
return 0;
}
return 1;
}
s32 func_8430C59C(s16* arg0, s16 arg1, f32 arg2) {
f32 var_fv0;
s16 temp_v0;
temp_v0 = arg1 - *arg0;
if (arg2 < 0.0f) {
arg2 = -1.0f * arg2;
}
var_fv0 = temp_v0 * arg2;
if (temp_v0 > 0) {
if ((s16)var_fv0 >= 0x444) {
var_fv0 = 1092.0f;
}
if ((s16)var_fv0 < 0x29) {
var_fv0 = 40.0f;
}
temp_v0 -= (s16)var_fv0;
if (temp_v0 >= 0) {
*arg0 = arg1 - temp_v0;
} else {
*arg0 = arg1;
}
} else {
if ((s16)var_fv0 < -0x443) {
var_fv0 = -1092.0f;
}
if ((s16)var_fv0 >= -0x28) {
var_fv0 = -40.0f;
}
temp_v0 -= (s16)var_fv0;
if (temp_v0 <= 0) {
*arg0 = arg1 - temp_v0;
} else {
*arg0 = arg1;
}
}
if (arg1 == *arg0) {
return 0;
}
return 1;
}
void func_8430C718(f32* arg0, f32 arg1, f32 arg2) {
*arg0 = *arg0 + ((arg1 - *arg0) * arg2);
if ((*arg0 < 0.001) && (*arg0 > -0.001)) {
*arg0 = 0.0f;
}
}
void func_8430C780(s16* arg0, s16 arg1, s16 arg2) {
*arg0 = *arg0 + ((arg1 - *arg0) * arg2);
}
void func_8430C7B4(u16* arg0, u16 arg1, s16 arg2) {
*arg0 = *arg0 + ((arg1 - *arg0) * arg2);
}
void func_8430C7E4(f32* arg0, f32 arg1) {
static f32 D_843900D8;
static f32 D_843900DC;
static f32 D_843900E0;
D_843900E0 = 1.0f - arg1;
D_843900DC = SQ(arg1);
D_843900D8 = D_843900DC * arg1;
arg0[0] = (SQ(D_843900E0) * D_843900E0) / 6.0f;
arg0[1] = ((0.5f * D_843900D8) - D_843900DC) + 0.6666667f;
arg0[2] = (-0.5f * D_843900D8) + (0.5f * D_843900DC) + (0.5f * arg1) + 0.16666667f;
arg0[3] = D_843900D8 / 6.0;
}
void func_8430C8A0(f32* arg0, f32 arg1) {
static f32 D_843900E4;
static f32 D_843900E8;
static f32 D_843900EC;
D_843900EC = 1.0 - arg1;
D_843900E8 = SQ(arg1);
D_843900E4 = D_843900E8 * arg1;
arg0[0] = SQ(D_843900EC) * D_843900EC;
arg0[1] = (((21.0f * D_843900E4) / 12.0f) - (9.0f * D_843900E8 * 0.5f)) + (3.0f * arg1);
arg0[2] = ((-11.0f * D_843900E4) / 12.0f) + (3.0f * D_843900E8 * 0.5f);
arg0[3] = D_843900E4 / 6.0f;
}
void func_8430C97C(f32* arg0, f32 arg1) {
static f32 D_843900F0;
static f32 D_843900F4;
static f32 D_843900F8;
D_843900F8 = 1.0f - arg1;
D_843900F4 = SQ(arg1);
D_843900F0 = D_843900F4 * arg1;
arg0[0] = SQ(D_843900F8) * D_843900F8 * 0.25f;
arg0[1] = ((0.5833333f * D_843900F0) - (1.25f * D_843900F4)) + (arg1 * 0.25f) + 0.5833333f;
arg0[2] = (-0.5f * D_843900F0) + (0.5f * D_843900F4) + (0.5f * arg1) + 0.16666667f;
arg0[3] = D_843900F0 / 6.0f;
}
void func_8430CA4C(f32* arg0, f32 arg1) {
static f32 D_843900FC;
static f32 D_84390100;
static f32 D_84390104;
static f32 D_84390108;
D_84390100 = 1.0f - arg1;
D_84390104 = SQ(D_84390100);
D_84390108 = D_84390104 * D_84390100;
D_843900FC = CB(arg1);
arg0[0] = D_84390108 / 6.0f;
arg0[1] = (-0.5f * D_84390108) + (0.5f * D_84390104) + (0.5f * D_84390100) + 0.16666667f;
arg0[2] = (((7.0f * D_84390108) / 12.0f) - (5.0f * D_84390104 * 0.25f)) + (D_84390100 * 0.25f) + 0.5833333f;
arg0[3] = D_843900FC * 0.25f;
}
void func_8430CB3C(f32* arg0, f32 arg1) {
static f32 D_8439010C;
static f32 D_84390110;
static f32 D_84390114;
static f32 D_84390118;
D_84390110 = 1.0f - arg1;
D_84390114 = SQ(D_84390110);
D_84390118 = D_84390114 * D_84390110;
D_8439010C = CB(arg1);
arg0[0] = D_84390118 / 6.0f;
arg0[1] = ((-11.0f * D_84390118) / 12.0f) + (3.0f * D_84390114 * 0.5f);
arg0[2] = (((21.0f * D_84390118) / 12.0f) - (9.0f * D_84390114 * 0.5f)) + (3.0f * D_84390110);
arg0[3] = D_8439010C;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,793 @@
#include "fragment62.h"
#include "src/1CF30.h"
#include "src/20470.h"
#include "src/225A0.h"
#include "src/29BA0.h"
#include "src/2E110.h"
#include "src/3D140.h"
#include "src/6A40.h"
#include "src/6BC0.h"
#include "src/F420.h"
#include "src/controller.h"
#include "src/memmap.h"
#include "src/memory.h"
#include "stdarg.h"
unk_D_843901A0* D_843901A0;
static u8 D_84385990[] = { 0xE, 0x4A };
static u8 D_84385994[] = { 0x60, 0x69, 0x75, 0x78, 0x85 };
static u8 D_8438599C[] = { 0x61, 0x64, 0x66, 0x68, 0x8C };
static u8 D_843859A4[] = {
1, 0xA, 0xB, 0x11, 0x13, 0x14, 0x15, 0x1E, 0x22, 0x23, 0x25, 0x27, 0x2B, 0x2C, 0x2D, 0x2E,
0x2F, 0x40, 0x44, 0x46, 0x47, 0x51, 0x59, 0x5A, 0x5B, 0x5C, 0x67, 0x6A, 0x6B, 0x6E, 0x6F, 0x76,
0x7A, 0x80, 0x84, 0x8B, 0x8D, 0x91, 0x94, 0x96, 0x97, 0x9A, 0x9C, 0x9F, 0xA3, 0xA4,
};
void func_84317810(void) {
D_843901A0->unk_088[0] = 0;
D_843901A0->unk_088[1] = 0;
D_843901A0->unk_0C8[0] = 0;
D_843901A0->unk_0C8[1] = 0;
D_843901A0->unk_108[0] = 0;
D_843901A0->unk_108[1] = 0;
D_843901A0->unk_148[0] = 0;
D_843901A0->unk_148[1] = 0;
D_843901A0->unk_188[0] = 0;
D_843901A0->unk_188[1] = 0;
D_843901A0->unk_1C8[0] = 0;
D_843901A0->unk_1C8[1] = 0;
D_843901A0->unk_448[0][0] = 0;
D_843901A0->unk_448[0][1] = 0;
D_843901A0->unk_448[1][0] = 0;
D_843901A0->unk_448[1][1] = 0;
D_843901A0->unk_208[0] = 0;
D_843901A0->unk_208[1] = 0;
D_843901A0->unk_308[0] = 0;
D_843901A0->unk_308[1] = 0;
D_843901A0->unk_2C8[0] = 0;
D_843901A0->unk_2C8[1] = 0;
D_843901A0->unk_348[0] = 0;
D_843901A0->unk_348[1] = 0;
D_843901A0->unk_388[0] = 0;
D_843901A0->unk_388[1] = 0;
D_843901A0->unk_3C8[0] = 0;
D_843901A0->unk_3C8[1] = 0;
D_843901A0->unk_408[0] = 0;
D_843901A0->unk_408[1] = 0;
}
void func_8431790C(void) {
D_843901A0->unk_004 = 0;
D_843901A0->unk_048[0] = 0;
D_843901A0->unk_048[1] = 0;
D_843901A0->unk_008[0] = 0;
D_843901A0->unk_008[1] = 0;
}
#ifdef NON_MATCHING
void func_84317940(s8* arg0, s8* arg1, ...) {
va_list args;
s8** temp_v1;
s32 var_v0;
s8* var_a3;
var_v0 = 0;
temp_v1 = &args;
while (*arg1 != '\x00') {
if (*arg1 != 0x25) {
arg0[var_v0++] = *arg1;
} else {
arg1++;
if (*arg1 == 0x73) {
temp_v1 = ALIGN4((s32)temp_v1);
var_a3 = *(s8**)temp_v1;
temp_v1++;
while (*var_a3 != 0) {
arg0[var_v0] = *var_a3;
var_a3++;
var_v0++;
}
}
}
arg1++;
}
arg0[var_v0] = '\x00';
}
#else
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3020D0/func_84317940.s")
#endif
void func_843179F4(s8* arg0, s8 arg1) {
u8 tmp = arg1;
*arg0 = arg1;
if (tmp >= 0x80) {
if ((tmp - 0x80) >= 0xB) {
func_8002D7C0(arg0 + 1, 0x40, D_843900B0, tmp - 0x48);
} else {
func_8002D7C0(arg0 + 1, 0x40, D_843900B0, tmp - 0x49);
}
} else {
func_8002D7C0(arg0 + 1, 0x40, D_843900B0, D_84385BC0[arg1]);
}
}
void func_84317AA8(char* arg0, s32 arg1) {
UNUSED s32 pad[3];
unk_D_84390010_654* sp28 = &D_84390010[arg1]->unk_654;
UNUSED s32 pad2[2];
func_8431790C();
D_843901A0->unk_000 = D_84390010[arg1]->unk_720->unk_08[sp28->unk_2B]->unk_001;
func_84317940(D_843901A0->unk_048, arg0 + 1);
*arg0 = 0;
}
void func_84317B38(void) {
}
void func_84317B40(void) {
unk_D_84390010* ptr1 = D_84390010[0];
unk_D_84390010* ptr2 = D_84390010[1];
if ((D_800AE540.unk_0000 != 0x10) && (D_84390240.unk_00->unk_30 == 0)) {
func_8431595C(ptr1, 0x15, 0xF, ptr1->unk_720->unk_08[ptr1->unk_728.unk_16C]->unk_001);
func_8431595C(ptr2, 0xE1, 0xF, ptr2->unk_720->unk_08[ptr2->unk_728.unk_16C]->unk_001);
}
}
void func_84317BDC(void) {
u32 sp1C;
unk_D_800FCB18* sp18 = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654.unk_38;
sp18->unk_58 = sp18->unk_44.unk_00;
if (func_84307AE0(sp18->unk_44.unk_00, D_84385990, 2) != 0) {
sp1C = 0;
} else if (func_84307AE0(sp18->unk_44.unk_00, D_84385994, 5) != 0) {
sp1C = 1;
} else if (func_84307AE0(sp18->unk_44.unk_00, D_8438599C, 5) != 0) {
sp1C = 2;
} else if (func_84307AE0(sp18->unk_44.unk_00, D_843859A4, 0x2E) != 0) {
sp1C = 3;
} else {
sp1C = 4;
}
if ((sp18->unk_44.unk_00 == 0x76) || (sp18->unk_44.unk_00 == 0x77)) {
func_8002D5D4(0x19, func_8430862C(D_84390010[D_84390240.unk_00->unk_2C]));
func_8002D5D4(0x1D, func_843085F0(D_84390010[D_84390240.unk_00->unk_2C]));
switch (sp1C) {
case 0:
func_843179F4(D_843901A0->unk_388, 0x14);
break;
case 1:
func_843179F4(D_843901A0->unk_388, 0x15);
break;
case 2:
func_843179F4(D_843901A0->unk_388, 0x16);
break;
case 3:
func_843179F4(D_843901A0->unk_388, 0x17);
break;
case 4:
func_843179F4(D_843901A0->unk_388, 0x18);
break;
}
} else {
func_8002D5D4(0x19, func_8430862C(D_84390010[D_84390240.unk_00->unk_2C]));
func_8002D5D4(0x1D, func_843085F0(D_84390010[D_84390240.unk_00->unk_2C]));
switch (sp1C) {
case 0:
func_843179F4(D_843901A0->unk_0C8, 0x14);
break;
case 1:
func_843179F4(D_843901A0->unk_0C8, 0x15);
break;
case 2:
func_843179F4(D_843901A0->unk_0C8, 0x16);
break;
case 3:
func_843179F4(D_843901A0->unk_0C8, 0x17);
break;
case 4:
func_843179F4(D_843901A0->unk_0C8, 0x18);
break;
}
}
}
void func_84317EDC(void) {
u32 sp24;
UNUSED s32 pad;
unk_D_800FCB18* sp1C = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654.unk_38;
if (func_84307AE0(sp1C->unk_5A, D_84385990, 2) != 0) {
sp24 = 0;
} else if (func_84307AE0(sp1C->unk_5A, D_84385994, 5) != 0) {
sp24 = 1;
} else if (func_84307AE0(sp1C->unk_5A, D_8438599C, 5) != 0) {
sp24 = 2;
} else if (func_84307AE0(sp1C->unk_5A, D_843859A4, 0x2E) != 0) {
sp24 = 3;
} else {
sp24 = 4;
}
func_8002D5D4(0x19, func_8430862C(D_84390010[D_84390240.unk_00->unk_2C]));
func_8002D5D4(0x1D, func_843085F0(D_84390010[D_84390240.unk_00->unk_2C]));
switch (sp24) {
case 0:
func_843179F4(D_843901A0->unk_0C8, 0x14);
break;
case 1:
func_843179F4(D_843901A0->unk_0C8, 0x15);
break;
case 2:
func_843179F4(D_843901A0->unk_0C8, 0x16);
break;
case 3:
func_843179F4(D_843901A0->unk_0C8, 0x17);
break;
case 4:
func_843179F4(D_843901A0->unk_0C8, 0x18);
break;
}
}
void func_843180AC(void) {
s32 sp2C;
s32 tmp;
unk_D_800FCB18* sp24;
sp24 = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654.unk_38;
if (func_84307AE0(sp24->unk_5A, D_84385990, 2) != 0) {
sp2C = 0;
} else if (func_84307AE0(sp24->unk_5A, D_84385994, 5) != 0) {
sp2C = 1;
} else if (func_84307AE0(sp24->unk_5A, D_8438599C, 5) != 0) {
sp2C = 2;
} else if (func_84307AE0(sp24->unk_5A, D_843859A4, 0x2E) != 0) {
sp2C = 3;
} else {
sp2C = 4;
}
if (sp24->unk_5A == 0x76) {
do {
tmp = func_8436F6D8();
} while ((tmp == 0) || (tmp >= 0xA5) || tmp == 0x76);
sp24->unk_5A = tmp;
func_8002D5D4(0x19, func_8430862C(D_84390010[D_84390240.unk_00->unk_2C]));
func_8002D5D4(0x1D, func_843085F0(D_84390010[D_84390240.unk_00->unk_2C]));
switch (sp2C) {
case 0:
func_843179F4(D_843901A0->unk_0C8, 0x14);
break;
case 1:
func_843179F4(D_843901A0->unk_0C8, 0x15);
break;
case 2:
func_843179F4(D_843901A0->unk_0C8, 0x16);
break;
case 3:
func_843179F4(D_843901A0->unk_0C8, 0x17);
break;
case 4:
func_843179F4(D_843901A0->unk_0C8, 0x18);
break;
}
sp24->unk_5A = 0x76;
func_8002D5D4(0x19, func_8430862C(D_84390010[D_84390240.unk_00->unk_2C]));
func_8002D5D4(0x1D, func_843085F0(D_84390010[D_84390240.unk_00->unk_2C]));
switch (sp2C) {
case 0:
func_843179F4(D_843901A0->unk_388, 0x14);
break;
case 1:
func_843179F4(D_843901A0->unk_388, 0x15);
break;
case 2:
func_843179F4(D_843901A0->unk_388, 0x16);
break;
case 3:
func_843179F4(D_843901A0->unk_388, 0x17);
break;
case 4:
func_843179F4(D_843901A0->unk_388, 0x18);
break;
}
} else {
func_8002D5D4(0x19, func_8430862C(D_84390010[D_84390240.unk_00->unk_2C]));
func_8002D5D4(0x1D, func_843085F0(D_84390010[D_84390240.unk_00->unk_2C]));
switch (sp2C) {
case 0:
func_843179F4(D_843901A0->unk_0C8, 0x14);
break;
case 1:
func_843179F4(D_843901A0->unk_0C8, 0x15);
break;
case 2:
func_843179F4(D_843901A0->unk_0C8, 0x16);
break;
case 3:
func_843179F4(D_843901A0->unk_0C8, 0x17);
break;
case 4:
func_843179F4(D_843901A0->unk_0C8, 0x18);
break;
}
}
}
void func_843184E4(s32 arg0) {
unk_D_843901A0_4C8* ptr = &D_843901A0->unk_4C8;
ptr->unk_00 = 0;
ptr->unk_04 = arg0;
}
void func_843184FC(void) {
unk_D_843901A0_4C8* ptr = &D_843901A0->unk_4C8;
ptr->unk_00 = 0xFF;
}
void func_84318514(s8* arg0) {
s32 temp_v0;
if (arg0[1] == '\x00') {
return;
}
temp_v0 = arg0[0] & 0x7F;
if ((arg0[0] & 0x80) == '\x00') {
func_8003F624(arg0[0]);
} else if (temp_v0 == 'Q') {
func_8003F624(0xBC);
} else if (temp_v0 == 'R') {
func_8003F624(0xB5);
} else if (temp_v0 == 'S') {
func_8003F624(0xB6);
} else if (temp_v0 == 'T') {
func_8003F624(0xB7);
} else if (temp_v0 == 'U') {
func_8003F624(0xB8);
} else if (temp_v0 == 'V') {
func_8003F624(0xB9);
} else if (temp_v0 == 'W') {
func_8003F624(0xBA);
} else if (temp_v0 == 'X') {
func_8003F624(0xBB);
} else {
func_8003F624(temp_v0 + 0x64);
}
}
void func_84318640(unk_D_843901A0_4C8* arg0, s16 arg1, s16 arg2) {
UNUSED s32 pad;
s32 temp_s1;
if (1) {}
switch (arg0->unk_04) {
case 0:
if (func_84315BC0(&D_843901A0->unk_388[1], arg1 + 4, arg2 + (arg0->unk_10 * 0xC) + 3) != 0) {
arg0->unk_10 += 1;
}
if (func_84315BC0(&D_843901A0->unk_0C8[1], arg1 + 4, arg2 + (arg0->unk_10 * 0xC) + 3) != 0) {
arg0->unk_10 += 1;
}
if (func_84315BC0(&D_843901A0->unk_188[1], arg1 + 4, arg2 + (arg0->unk_10 * 0xC) + 3) != 0) {
arg0->unk_10 += 1;
}
break;
case 3:
if (func_84315BC0(&D_843901A0->unk_088[1], arg1 + 4, arg2 + (arg0->unk_10 * 0xC) + 3) != 0) {
arg0->unk_10 += 1;
}
if (func_84315BC0(&D_843901A0->unk_148[1], arg1 + 4, arg2 + (arg0->unk_10 * 0xC) + 3) != 0) {
arg0->unk_10 += 1;
}
if (func_84315BC0(&D_843901A0->unk_208[1], arg1 + 4, arg2 + (arg0->unk_10 * 0xC) + 3) != 0) {
arg0->unk_10 += 1;
}
break;
case 1:
if (func_84315BC0(&D_843901A0->unk_3C8[1], arg1 + 4, arg2 + (arg0->unk_10 * 0xC) + 3) != 0) {
arg0->unk_10 += 1;
}
if (func_84315BC0(&D_843901A0->unk_088[1], arg1 + 4, arg2 + (arg0->unk_10 * 0xC) + 3) != 0) {
arg0->unk_10 += 1;
}
if (func_84315BC0(&D_843901A0->unk_148[1], arg1 + 4, arg2 + (arg0->unk_10 * 0xC) + 3) != 0) {
arg0->unk_10 += 1;
}
if ((arg0->unk_10 < 3) &&
(func_84315BC0(&D_843901A0->unk_208[1], arg1 + 4, arg2 + (arg0->unk_10 * 0xC) + 3) != 0)) {
arg0->unk_10 += 1;
}
break;
case 2:
if (func_84315BC0(&D_843901A0->unk_088[1], arg1 + 4, arg2 + (arg0->unk_10 * 0xC) + 3) != 0) {
arg0->unk_10 += 1;
}
if (func_84315BC0(&D_843901A0->unk_148[1], arg1 + 4, arg2 + (arg0->unk_10 * 0xC) + 3) != 0) {
arg0->unk_10 += 1;
}
if (func_84315BC0(&D_843901A0->unk_208[1], arg1 + 4, arg2 + (arg0->unk_10 * 0xC) + 3) != 0) {
arg0->unk_10 += 1;
}
break;
case 4:
func_84315BC0(&D_843901A0->unk_248[1], arg1 + 4, arg2 + 3);
break;
case 5:
func_84315BC0(&D_843901A0->unk_288[1], arg1 + 4, arg2 + 3);
break;
case 6:
func_84315BC0(&D_843901A0->unk_408[1], arg1 + 4, arg2 + 3);
break;
case 7:
func_84315BC0(&D_843901A0->unk_348[1], arg1 + 4, arg2 + 3);
func_84315BC0(&D_843901A0->unk_2C8[1], arg1 + 4, arg2 + 0x10);
break;
case 8:
func_84315BC0(&D_843901A0->unk_448[arg0->unk_0C][1], arg1 + 4, arg2 + 3);
break;
case 9:
case 10:
func_84315BC0(&D_843901A0->unk_1C8[1], arg1 + 4, arg2 + 3);
break;
case 11:
func_84315BC0(&D_843901A0->unk_088[1], arg1 + 4, arg2 + 3);
break;
case 12:
func_84315BC0(&D_843901A0->unk_088[1], arg1 + 4, arg2 + 3);
break;
case 13:
temp_s1 = func_8001F5B0(1, 0, func_8002D7C0(NULL, 0, D_843900B0, 0xA4)) / 2;
func_84315BC0(func_8002D7C0(NULL, 0, D_843900B0, 0xA4), 0xA1 - temp_s1, 0x71);
break;
case 14:
func_84317004();
break;
case 15:
func_84315BC0(&D_843901A0->unk_088[1], arg1 + 4, arg2 + (arg0->unk_10 * 0xC) + 3);
break;
}
arg0->unk_10 = 0;
}
s32 func_84318CE4(unk_D_843901A0_4C8* arg0) {
unk_D_843901A0* temp_v0;
s32 tmp;
arg0->unk_10 = 0;
switch (arg0->unk_04) {
case 0:
if ((D_843901A0->unk_0C8[1] == 0) && (D_843901A0->unk_388[1] == 0) && (D_843901A0->unk_188[1] == 0)) {
arg0->unk_00 = 0xFF;
return 1;
}
arg0->unk_0C = D_84390240.unk_00->unk_2C;
if (D_843901A0->unk_0C8[1] != 0) {
func_84318514(D_843901A0->unk_0C8);
}
if (D_843901A0->unk_388[1] != 0) {
func_84318514(D_843901A0->unk_388);
}
if (D_843901A0->unk_188[1] != 0) {
func_84318514(D_843901A0->unk_188);
}
arg0->unk_00 += 1;
break;
case 1:
case 3:
arg0->unk_0C = D_84390240.unk_00->unk_2C;
func_84318514(D_843901A0->unk_088);
func_84318514(D_843901A0->unk_148);
func_84318514(D_843901A0->unk_208);
func_84318514(D_843901A0->unk_3C8);
func_84318514(D_843901A0->unk_308);
if ((D_843901A0->unk_088[1] == 0) && (D_843901A0->unk_148[1] == 0) && (D_843901A0->unk_208[1] == 0) &&
(D_843901A0->unk_3C8[1] == 0) && (D_843901A0->unk_308[1] == 0)) {
arg0->unk_00 = 0xFF;
return 1;
}
arg0->unk_00 += 1;
break;
case 2:
arg0->unk_0C = D_84390240.unk_00->unk_2C;
func_84318514(D_843901A0->unk_088);
func_84318514(D_843901A0->unk_148);
func_84318514(D_843901A0->unk_208);
if ((D_843901A0->unk_088[1] == 0) && (D_843901A0->unk_148[1] == 0) && (D_843901A0->unk_208[1] == 0)) {
arg0->unk_00 = 0xFF;
return 1;
}
arg0->unk_00 += 1;
break;
case 15:
arg0->unk_0C = D_84390240.unk_00->unk_2C;
func_84318514(D_843901A0->unk_088);
if (D_843901A0->unk_088[1] == 0) {
arg0->unk_00 = 0xFF;
return 1;
}
arg0->unk_00 += 1;
break;
case 8:
if (D_843901A0->unk_448[arg0->unk_0C][1] == 0) {
arg0->unk_00 = 0xFF;
return 1;
}
tmp = D_84390240.unk_00->unk_2C == 0;
arg0->unk_00 += 1;
arg0->unk_0C = tmp;
break;
case 9:
tmp = D_84390240.unk_00->unk_2C == 0;
arg0->unk_00 += 1;
arg0->unk_0C = tmp;
break;
case 4:
case 5:
case 6:
func_84318514(D_843901A0->unk_248);
func_84318514(D_843901A0->unk_288);
func_84318514(D_843901A0->unk_408);
arg0->unk_00 += 1;
break;
case 14:
D_84390190.z = 0.0f;
D_84390190.x = 321.0f;
D_84390190.y = 160.0f;
arg0->unk_0C = D_84390240.unk_00->unk_2C;
arg0->unk_00 += 1;
break;
default:
arg0->unk_0C = D_84390240.unk_00->unk_2C;
arg0->unk_00 += 1;
break;
}
return 0;
}
void func_843190A8(s16 arg0, s16 arg1) {
unk_D_843901A0_4C8* temp_s0 = &D_843901A0->unk_4C8;
if (D_800AE540.unk_0000 == 0x10) {
return;
}
switch (temp_s0->unk_00) {
case 0:
temp_s0->unk_08 = 0;
if (temp_s0->unk_04 == 0xD) {
func_843160C0(temp_s0, 0xA0, 0x78);
temp_s0->unk_00++;
} else if (temp_s0->unk_04 == 0xE) {
func_84318CE4(temp_s0);
} else if (func_84318CE4(temp_s0) == 0) {
func_84315D88(temp_s0, arg0, arg1);
}
break;
case 1:
if (temp_s0->unk_04 == 0xD) {
if (func_843161F8(temp_s0, 0xA0, 0x78) != 0) {
func_84318640(temp_s0, temp_s0->unk_14.x, temp_s0->unk_14.y);
temp_s0->unk_00++;
}
} else {
if (temp_s0->unk_04 == 0xE) {
func_8003F660(func_84308D98(D_84390010[temp_s0->unk_0C]));
func_84318640(temp_s0, temp_s0->unk_14.x, temp_s0->unk_14.y);
temp_s0->unk_00++;
} else if (func_84315EC0(temp_s0, arg0, arg1) != 0) {
func_8003F660(func_84308D98(D_84390010[temp_s0->unk_0C]));
func_84318640(temp_s0, temp_s0->unk_14.x, temp_s0->unk_14.y);
temp_s0->unk_00++;
}
}
break;
case 2:
if (temp_s0->unk_04 == 0xD) {
func_843161F8(temp_s0, 0xA0, 0x78);
func_84318640(temp_s0, temp_s0->unk_14.x, temp_s0->unk_14.y);
temp_s0->unk_08++;
if (temp_s0->unk_08 == 0x46) {
temp_s0->unk_00++;
}
} else {
if (temp_s0->unk_04 == 0xE) {
func_84318640(temp_s0, temp_s0->unk_14.x, temp_s0->unk_14.y);
} else {
func_84315EC0(temp_s0, arg0, arg1);
func_84318640(temp_s0, temp_s0->unk_14.x, temp_s0->unk_14.y);
temp_s0->unk_08++;
if (temp_s0->unk_08 == 0x2D) {
temp_s0->unk_00++;
}
}
}
break;
}
}
void func_843193F4(unk_D_84390010* arg0) {
arg0->unk_8C4.unk_00 = 0;
arg0->unk_8C4.unk_04 = 0;
arg0->unk_8C4.unk_48[0] = 0;
arg0->unk_8C4.unk_08[0] = 0;
}
void func_84319408(unk_D_84390010* arg0, s32 arg1) {
D_843901A0->unk_000 = arg0->unk_720->unk_08[arg0->unk_654.unk_2C]->unk_001;
arg0->unk_8C4.unk_00 = 1;
func_8002D5D4(0x19, arg0->unk_724->unk_01C[arg0->unk_654.unk_08].unk_30);
func_8002D7C0(arg0->unk_8C4.unk_48, 0x40, D_843900B0, arg1);
}
void func_843194A0(unk_D_84390010* arg0) {
unk_D_800AE540_0004* temp_t0 = arg0->unk_720->unk_08[arg0->unk_654.unk_2C];
if (arg0->unk_8C4.unk_48[arg0->unk_8C4.unk_04] != '\x00') {
arg0->unk_8C4.unk_08[arg0->unk_8C4.unk_04] = arg0->unk_8C4.unk_48[arg0->unk_8C4.unk_04];
arg0->unk_8C4.unk_04++;
}
if (arg0->unk_8C4.unk_48[arg0->unk_8C4.unk_04] != '\x00') {
arg0->unk_8C4.unk_08[arg0->unk_8C4.unk_04] = arg0->unk_8C4.unk_48[arg0->unk_8C4.unk_04];
arg0->unk_8C4.unk_04++;
}
arg0->unk_8C4.unk_08[arg0->unk_8C4.unk_04] = '\x00';
if (arg0->unk_8C4.unk_48[0] != 0) {
if (arg0 == D_84390018) {
func_843162E4(temp_t0->unk_001, 0x5F, 0xE, &arg0->unk_8C4.unk_08);
} else {
func_843162E4(temp_t0->unk_001, 0x17, 0xBB, &arg0->unk_8C4.unk_08);
}
}
}
void func_84319564(void) {
unk_D_84390010_654* sp1C = &D_84390010[0]->unk_654;
unk_D_84390010_654* sp18 = &D_84390010[1]->unk_654;
if ((D_800AE540.unk_11ED != 0) && (D_84390010[1]->unk_728.unk_168->unk_1C == 0x103) &&
(D_84390010[0]->unk_728.unk_168->unk_1C == 0x17)) {
func_843118A8(0x101, 0x64);
if (D_84390134 == 0) {
if (sp1C->unk_10 != 3) {
func_843116D8(0x46, 0x4D);
}
if (sp18->unk_10 != 3) {
func_843116D8(0xE8, 0x96);
}
}
}
}
void func_8431962C(void) {
D_843901A0 = main_pool_alloc(sizeof(unk_D_843901A0), 0);
bzero(D_843901A0, sizeof(unk_D_843901A0));
}
void func_84319668(void) {
D_843901A0->unk_004 = 0;
D_843901A0->unk_008[D_843901A0->unk_004] = 0;
func_8431790C();
}
void func_843196A4(void) {
unk_D_84390010_654* sp1C = &D_84390010[0]->unk_654;
unk_D_84390010_654* sp18 = &D_84390010[1]->unk_654;
if (1) {}
func_843190A8(0xA0, 0xC8);
if (D_800AE540.unk_0000 == 0x10) {
func_8431712C();
func_8431694C();
}
switch (D_84390240.unk_00->unk_1C) {
case 1:
func_843172A0(D_84390010[0], sp1C);
func_84317558(D_84390010[1], sp18);
func_843194A0(D_84390010[0]);
func_843194A0(D_84390010[1]);
func_84319564();
func_84316610();
break;
case 2:
func_84317B40();
func_84316610();
break;
}
}

View File

@ -1,47 +1,626 @@
#include "global.h"
#include "fragment62.h"
#include "src/17300.h"
#include "src/F420.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_304060/func_843197A0.s")
typedef struct unk_D_843859E0 {
/* 0x00 */ u8 unk_00;
/* 0x04 */ f32 unk_04;
/* 0x08 */ s16 unk_08;
/* 0x0A */ s16 unk_0A;
/* 0x0C */ f32 unk_0C;
} unk_D_843859E0; // size = 0x10
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_304060/func_84319878.s")
static unk_D_843859E0 D_843859E0[] = {
{
0x00,
2002.1199951171875f,
1367,
-20914,
50.0f,
},
{
0x01,
1693.1199951171875f,
183,
-11871,
50.0f,
},
{
0x02,
1934.97998046875f,
1217,
8182,
50.0f,
},
{
0x03,
1733.780029296875f,
397,
6520,
50.0f,
},
{
0x04,
1102.3900146484375f,
1577,
-3562,
50.0f,
},
{
0x05,
1425.7900390625f,
2285,
-5775,
50.0f,
},
{
0x06,
871.3599853515625f,
1825,
-8898,
50.0f,
},
{
0x07,
1170.8199462890625f,
4982,
-6725,
50.0f,
},
{
0x11,
1645.5699462890625f,
7861,
-122,
50.0f,
},
{
0x01,
1741.530029296875f,
6993,
-6029,
50.0f,
},
{
0x06,
1608.3199462890625f,
6419,
-16201,
50.0f,
},
{
0x00,
1122.8599853515625f,
2584,
-14668,
50.0f,
},
{
0x00,
1667.239990234375f,
5360,
4438,
50.0f,
},
{
0x00,
1315.9599609375f,
3001,
-7883,
50.0f,
},
{
0x00,
1575.4300537109375f,
5834,
10901,
50.0f,
},
{
0x00,
719.8599853515625f,
3047,
-16384,
50.0f,
},
{
0x00,
939.3900146484375f,
2300,
0,
50.0f,
},
{
0x01,
560.239990234375f,
773,
-8863,
50.0f,
},
{
0x01,
2002.1199951171875f,
1367,
-20914,
30.0f,
},
{
0x01,
2002.1199951171875f,
1367,
-20914,
30.0f,
},
};
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_304060/func_843198EC.s")
s32 func_843197A0(void) {
if (((func_84307C04(D_84390010[0]) + func_84307C04(D_84390010[1])) <= 85.0f) &&
(func_84307BAC(D_84390010[0]) == 0.0f) && (func_84307BAC(D_84390010[1]) == 0.0f) &&
(D_84390010[0]->unk_000.unk_024.y == 0.0f) && (D_84390010[1]->unk_000.unk_024.y == 0.0f)) {
return 1;
}
return 0;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_304060/func_8431995C.s")
s32 func_84319878(UNUSED unk_D_84390010* arg0, unk_D_86002F34_00C* arg1) {
unk_D_84390010_654* ptr = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_304060/func_84319AE8.s")
if ((ptr->unk_2D == 0x10) || ((ptr->unk_34 & 0x4000) != 0)) {
func_8431A4C4(arg1);
return 1;
}
return 0;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_304060/func_84319C58.s")
s32 func_843198EC(UNUSED unk_D_84390010* arg0, UNUSED unk_D_86002F34_00C* arg1) {
unk_D_84390010_654* ptr = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654;
s32 idx = D_84390240.unk_00->unk_2C == 0;
unk_D_84390010_654* ptr2 = &D_84390010[idx]->unk_654;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_304060/func_84319F10.s")
if ((ptr->unk_34 & 0x4000) || (ptr2->unk_34 & 0x4000)) {
return 1;
}
return 0;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_304060/func_8431A024.s")
void func_8431995C(unk_D_86002F34_00C* arg0) {
func_8431AE5C();
arg0->unk_24.fovy = 50.0f;
if (func_843197A0() != 0) {
func_8431BB24(arg0, D_84385B9C, 0, 0, 0.0f, 0.0f);
func_8431BC38(arg0, D_84385B9C, 0x5B0, 0, 550.0f, 0.0f);
} else {
func_8431BB24(arg0, D_84385B90, 0, 0, 0.0f, 0.0f);
func_8431BC38(arg0, D_84385B90, 0x5B0, 0, 550.0f, 0.0f);
}
arg0->unk_60.eye.z *= 0.6;
D_84390240.unk_00->unk_20++;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_304060/func_8431A098.s")
void func_84319AE8(unk_D_86002F34_00C* arg0) {
func_8431AE5C();
arg0->unk_24.fovy = 30.0f;
if (func_843197A0() != 0) {
func_8431BB24(arg0, D_84385B9C, 0, 0, 0.0f, 0.0f);
func_8431BC38(arg0, D_84385B9C, 0x1A4E, 0, 1000.0f, 0.0f);
} else {
func_8431BB24(arg0, D_84385B90, 0, 0, 0.0f, 0.0f);
func_8431BC38(arg0, D_84385B90, 0x1A4E, 0, 1000.0f, 0.0f);
}
D_84390240.unk_00->unk_20++;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_304060/func_8431A130.s")
void func_84319C58(unk_D_86002F34_00C* arg0, s32 arg1) {
UNUSED s32 pad;
f32 sp50;
f32 sp4C;
s16 sp4A;
unk_D_84390010_654* sp44;
UNUSED s32 pad2;
u16 sp3E;
unk_D_84390010* temp_s0;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_304060/func_8431A1C8.s")
sp44 = &D_84390010[arg1]->unk_654;
func_8431BA5C();
func_8431AE4C(arg1);
temp_s0 = D_84390010[D_84390240.unk_00->unk_2C];
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_304060/func_8431A2C8.s")
if (func_84319878(temp_s0, arg0) == 0) {
func_843081F0(temp_s0, &D_84390240.unk_00->unk_D0);
if (!(sp44->unk_34 & 2)) {
func_84305760(temp_s0, 1);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_304060/func_8431A4C4.s")
sp50 = func_84308598(temp_s0) * 3.5f;
sp3E = func_8430C414(3);
sp50 *= ((func_84308014(temp_s0) * 0.5f * sp3E) + 1.0f);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_304060/func_8431A718.s")
if (sp50 > 325.0f) {
sp50 = 325.0f;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_304060/func_8431A780.s")
sp3E = func_8430C414(4);
sp4C = func_84308548(temp_s0) * sp3E;
sp4A = func_8430C414(0xB4);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_304060/func_8431A7B8.s")
if (sp44->unk_34 & 0x200) {
sp4C = 0.0f;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_304060/func_8431A8B0.s")
func_8431BAB4(temp_s0, arg0, D_84390240.unk_00->unk_D0, 0, 0, 0, 0.0f);
func_8431BB80(arg0, D_84390240.unk_00->unk_D0, 0, 0x4000 - (sp4A * 0xB6), sp50, sp4C);
func_8431D5C8(arg0);
func_8431B858(temp_s0, arg0);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_304060/func_8431A94C.s")
if (temp_s0->unk_000.unk_01A == 0x5F) {
arg0->unk_24.fovy = 50.0f;
} else {
arg0->unk_24.fovy = 30.0f;
}
D_84390240.unk_00->unk_20++;
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_304060/func_8431A9E0.s")
void func_84319F10(unk_D_86002F34_00C* arg0, s32 arg1) {
UNUSED s32 pad[2];
unk_D_86B0C160* sp24;
s32 var_a0;
unk_D_84390010* temp_s0;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_304060/func_8431AA3C.s")
func_8431BA5C();
func_8431AE4C(arg1);
temp_s0 = D_84390010[D_84390240.unk_00->unk_2C];
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_304060/func_8431AA78.s")
if (func_84319878(temp_s0, arg0) == 0) {
if (temp_s0->unk_654.unk_34 & 0x200) {
sp24 = &D_84384888[0];
} else {
var_a0 = func_8430C414(5);
if (var_a0 >= 5) {
var_a0 = 0;
}
sp24 = &D_843847EC[var_a0];
}
arg0->unk_24.fovy = sp24->unk_30;
func_843081F0(temp_s0, &D_843901B0.unk_00);
func_8431D7D8(sp24, arg0, temp_s0);
func_8431D5D0(arg0, temp_s0, 1);
func_8431D5C8(arg0);
D_84390240.unk_00->unk_20++;
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_304060/func_8431AAAC.s")
void func_8431A024(unk_D_86002F34_00C* arg0, s32 arg1) {
arg0->unk_24.fovy = 30.0f;
func_8431AE4C(arg1);
if (func_84319878(D_84390010[arg1], arg0) == 0) {
func_8431B500(arg0, arg1);
D_84390240.unk_00->unk_20++;
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_304060/func_8431AAFC.s")
void func_8431A098(unk_D_86002F34_00C* arg0) {
func_8431AE4C(D_84390240.unk_00->unk_54 - 1);
if (func_843198EC(D_84390010[D_84390240.unk_00->unk_2C], arg0) != 0) {
D_84390240.unk_00->unk_54 = 0;
func_8431A4C4(arg0);
} else {
func_8431DC78(arg0, D_84390240.unk_00->unk_2C);
D_84390240.unk_00->unk_20++;
}
}
void func_8431A130(unk_D_86002F34_00C* arg0) {
func_8431AE4C(D_84390240.unk_00->unk_2C);
D_84390240.unk_00->unk_54 = 0;
if (func_843198EC(D_84390010[D_84390240.unk_00->unk_2C], arg0) != 0) {
func_8431A4C4(arg0);
} else {
func_8431DC78(arg0, D_84390240.unk_00->unk_2C);
D_84390240.unk_00->unk_20++;
}
}
void func_8431A1C8(unk_D_86002F34_00C* arg0) {
s16 var_v1;
func_8431AE5C();
if (D_800AE540.unk_0000 == 0x10) {
var_v1 = D_843859E0[D_800AE540.unk_0001].unk_00;
if (D_800AE540.unk_0001 == 7) {
var_v1 += D_800AE540.unk_0002;
}
} else {
var_v1 = D_843859E0[D_800AE540.unk_0000].unk_00;
if (D_800AE540.unk_0000 == 7) {
var_v1 += D_800AE540.unk_0002;
}
}
arg0->unk_24.fovy = D_843859E0[var_v1].unk_0C;
func_8000E88C(&arg0->unk_60.at, 0.0f, 10.0f, 0.0f);
func_80010354(&arg0->unk_60.at, &arg0->unk_60.eye, D_843859E0[var_v1].unk_04, D_843859E0[var_v1].unk_08,
D_843859E0[var_v1].unk_0A);
D_84390240.unk_00->unk_20++;
}
void func_8431A2C8(unk_D_86002F34_00C* arg0, s32 arg1) {
UNUSED s32 pad[5];
s32 var_v1;
unk_D_84390010* temp_s0;
f32 tmp1;
s16 tmp4;
s16 tmp3;
f32 tmp2;
func_8431AFD0(arg0, 10.0f, 12800.0f);
arg0->unk_24.fovy = 60.0f;
func_8431AE4C(arg1);
temp_s0 = D_84390010[arg1];
if (func_84319878(temp_s0, arg0) == 0) {
if ((temp_s0->unk_000.unk_01A == 0x98) || (temp_s0->unk_654.unk_34 & 2)) {
func_8431A4C4(arg0);
return;
}
if ((temp_s0->unk_000.unk_01A == 0x5F) && (arg1 == 1)) {
var_v1 = 0x97;
} else {
var_v1 = (temp_s0->unk_000.unk_01A - 1) & 0xFF;
}
tmp2 = (D_84384580[arg1]->unk_00.y + temp_s0->unk_000.unk_024.y) + D_84384C30[var_v1].z;
tmp1 = ((D_84384580[arg1]->unk_00.z + D_84384C30[var_v1].y) * temp_s0->unk_4B0) + temp_s0->unk_000.unk_024.x;
func_8000E88C(&arg0->unk_60.at, tmp1, tmp2, temp_s0->unk_000.unk_024.z);
tmp1 = D_84384580[D_84390240.unk_00->unk_2C]->unk_00.x * D_84384C30[var_v1].x;
tmp4 = D_84384580[D_84390240.unk_00->unk_2C]->unk_0C;
tmp3 = (temp_s0->unk_4B0 * D_84384580[D_84390240.unk_00->unk_2C]->unk_0E) + func_84308190(temp_s0);
func_80010354(&arg0->unk_60.at, &arg0->unk_60.eye, tmp1, tmp4, tmp3);
D_84390240.unk_00->unk_20++;
}
}
void func_8431A4C4(unk_D_86002F34_00C* arg0) {
UNUSED s32 pad[2];
s32 sp20[] = {
// D_84385B20
0x00000000, 0x00000008, 0x00000004, 0x00000014, 0x0000000A,
0x00000006, 0x00000002, 0x00000016, 0x00000018, 0x000000FF,
};
func_8431AFD0(arg0, 20.0f, 12800.0f);
arg0->unk_24.fovy = 30.0f;
if ((D_84390240.unk_00->unk_54 != 0) && (func_8431DBEC(arg0) != 0)) {
D_84390240.unk_00->unk_20 = 0x10;
} else {
D_84390240.unk_00->unk_54 = 0;
if (sp20[D_84390240.unk_00->unk_0C] == 0xFF) {
D_84390240.unk_00->unk_0C = 0;
}
D_84390240.unk_00->unk_20 = sp20[D_84390240.unk_00->unk_0C];
D_84390240.unk_00->unk_0C++;
}
func_843087F8(*D_84390010);
func_843087F8(D_84390010[1]);
func_8431AE5C();
switch (D_84390240.unk_00->unk_20) {
case 0:
func_8431995C(arg0);
break;
case 2:
func_84319AE8(arg0);
break;
case 4:
func_84319C58(arg0, 0);
break;
case 6:
func_84319C58(arg0, 1);
break;
case 8:
func_84319F10(arg0, 0);
break;
case 10:
func_84319F10(arg0, 1);
break;
case 12:
func_8431A024(arg0, 0);
break;
case 14:
func_8431A024(arg0, 1);
break;
case 16:
func_8431A098(arg0);
break;
case 18:
func_8431A130(arg0);
break;
case 20:
func_8431A1C8(arg0);
break;
case 22:
func_8431A2C8(arg0, 0);
break;
case 24:
func_8431A2C8(arg0, 1);
break;
}
}
void func_8431A718(unk_D_86002F34_00C* arg0) {
arg0->unk_24.fovy = 50.0f;
if (func_8431B34C(arg0, 0xB6, 0x78DC) != 0) {
func_8431A4C4(arg0);
} else {
arg0->unk_60.eye.z *= 0.6;
}
}
void func_8431A780(unk_D_86002F34_00C* arg0) {
if (func_8431B34C(arg0, 0xB6, 0x78DC) != 0) {
func_8431A4C4(arg0);
}
}
void func_8431A7B8(unk_D_86002F34_00C* arg0) {
UNUSED s32 pad;
unk_D_84390010_654* sp18 = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654;
if ((sp18->unk_2D == 0x10) || ((sp18->unk_34 & 0x4000) != 0)) {
func_8431A4C4(arg0);
return;
}
if (!(sp18->unk_34 & 0x200)) {
func_8431C784(arg0, D_84390010[D_84390240.unk_00->unk_2C]);
}
if ((sp18->unk_34 & 1) || (sp18->unk_34 & 2) || (D_84390010[D_84390240.unk_00->unk_2C]->unk_000.unk_01A == 0x98)) {
if (func_8431ADAC(0x5A) != 0) {
func_8431A4C4(arg0);
}
} else if (func_800174E4(&D_84390010[D_84390240.unk_00->unk_2C]->unk_000) != 0) {
func_8431A4C4(arg0);
}
}
void func_8431A8B0(unk_D_86002F34_00C* arg0) {
unk_D_84390010* sp1C = D_84390010[D_84390240.unk_00->unk_2C];
if ((sp1C->unk_654.unk_2D == 0x10) || (sp1C->unk_654.unk_34 & 0x4000)) {
func_8431A4C4(arg0);
} else if ((func_8431ADAC(0x5A) != 0) || (func_8431D118(arg0, sp1C, 1, 0) != 0)) {
func_8431A4C4(arg0);
}
}
void func_8431A94C(unk_D_86002F34_00C* arg0) {
unk_D_84390010_654* ptr = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654;
if ((ptr->unk_2D == 0x10) || (ptr->unk_34 & 0x4000)) {
func_8431A4C4(arg0);
} else {
arg0->unk_24.fovy = 60.0f;
if (func_8431ADAC(0x3C) != 0) {
func_8431A4C4(arg0);
}
}
}
void func_8431A9E0(unk_D_86002F34_00C* arg0) {
if (func_8431DE30(arg0, D_84390240.unk_00->unk_2C) != 0) {
s32 idx = D_84390240.unk_00->unk_2C == 0;
D_84390240.unk_00->unk_2C = idx;
D_84390240.unk_00->unk_20 = 0x12;
func_8431A130(arg0);
}
}
void func_8431AA3C(unk_D_86002F34_00C* arg0) {
if (func_8431DE30(arg0, D_84390240.unk_00->unk_2C) != 0) {
func_8431A4C4(arg0);
}
}
void func_8431AA78(unk_D_86002F34_00C* arg0) {
if (func_8431ADAC(0x78) != 0) {
func_8431A4C4(arg0);
}
}
void func_8431AAAC(unk_D_86002F34_00C* arg0) {
func_8431AFD0(arg0, 10.0f, 12800.0f);
arg0->unk_24.fovy = 60.0f;
if (func_8431ADAC(0x3C) != 0) {
func_8431A4C4(arg0);
}
}
void func_8431AAFC(unk_D_86002F34_00C* arg0) {
if ((D_800AE540.unk_0000 == 0x10) && (D_84390240.unk_00->unk_1C == 1)) {
func_8430FB68();
} else if (D_84390240.unk_00->unk_1C == 1) {
if ((D_84390240.unk_00->unk_30 == 0) && (D_84390010[0]->unk_728.unk_168->unk_1C == 0x17) &&
(D_84390010[1]->unk_728.unk_168->unk_1C == 0x103)) {
func_8430FB68();
} else if ((D_84390240.unk_00->unk_30 == 0) && (D_84390010[0]->unk_728.unk_168->unk_1C < 0xE) &&
(D_84390010[1]->unk_728.unk_168->unk_1C >= 0x10D)) {
func_8430D30C();
}
}
switch (D_84390240.unk_00->unk_20) {
case 1:
func_8431A718(arg0);
break;
case 3:
func_8431A780(arg0);
break;
case 5:
func_8431A7B8(arg0);
break;
case 7:
func_8431A7B8(arg0);
break;
case 9:
func_8431A8B0(arg0);
break;
case 11:
func_8431A8B0(arg0);
break;
case 13:
func_8431A94C(arg0);
break;
case 15:
func_8431A94C(arg0);
break;
case 17:
func_8431A9E0(arg0);
break;
case 19:
func_8431AA3C(arg0);
break;
case 21:
func_8431AA78(arg0);
break;
case 23:
func_8431AAAC(arg0);
break;
case 25:
func_8431AAAC(arg0);
break;
case 50:
func_8431A4C4(arg0);
break;
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,72 +1,216 @@
#include "global.h"
#include "fragment62.h"
#include "src/11BA0.h"
#include "src/17300.h"
#include "src/2E110.h"
#include "src/373A0.h"
#include "src/F420.h"
#include "src/memory.h"
#include "src/util.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_84328990.s")
void func_84328990(unk_D_86002F34_00C* arg0) {
func_8431AE5C();
func_8431AFD0(arg0, 20.0f, 12800.0f);
func_8432C9C0(D_84390010[0]->unk_720, 3);
arg0->unk_24.fovy = 40.0f;
D_84390010[0]->unk_000.unk_000.unk_01 &= ~1;
D_84390010[1]->unk_000.unk_000.unk_01 &= ~1;
func_8000E88C(&arg0->unk_60.at, 0.0f, 75.0f, 0.0f);
func_8000E88C(&arg0->unk_60.eye, -1.79f, 0.075f, 155.2f);
D_84390240.unk_00->unk_54 = 1;
func_8432BBC0();
D_84390240.unk_00->unk_20 += 1;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_84328A70.s")
void func_84328A70(UNUSED unk_D_86002F34_00C* arg0) {
if ((func_8431ADF0(0xA) != 0) && (func_84302000(D_84390010[0]) != 0)) {
D_84390010[0]->unk_000.unk_000.unk_01 &= ~1;
D_84390010[1]->unk_000.unk_000.unk_01 &= ~1;
func_84308654(D_84390010[0], 1, 0);
func_800367A0(1, 0xFE, 0);
func_8432C68C(8, D_84390010[0], D_84390010[0], 0xFF, 0xFF);
D_84390240.unk_00->unk_20 += 1;
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_84328B30.s")
void func_84328B30(UNUSED unk_D_86002F34_00C* arg0) {
D_84390010[0]->unk_000.unk_000.unk_01 &= ~1;
D_84390010[1]->unk_000.unk_000.unk_01 &= ~1;
if (D_84390010[0]->unk_4EC.unk_024.y == 0.0f) {
func_8432B808();
func_800367A0(1, 1, 0);
func_84308654(D_84390010[1], 1, 0);
func_8432C68C(0xA, D_84390010[1], D_84390010[1], 0xFF, 0xFF);
D_84390240.unk_00->unk_20 += 1;
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_84328BF0.s")
void func_84328BF0(unk_D_86002F34_00C* arg0) {
Vec3f sp3C;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_84328D70.s")
D_84390010[0]->unk_000.unk_000.unk_01 &= ~1;
D_84390010[1]->unk_000.unk_000.unk_01 &= ~1;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_84328EC0.s")
if (D_84390010[1]->unk_4EC.unk_024.y == 0.0f) {
arg0->unk_24.fovy = 30.0f;
func_84308654(D_84390010[0], 2, 0);
func_8432C68C(0xB, D_84390010[0], D_84390010[0], 0xFF, 0xFF);
func_8000E88C(&sp3C, -150.0f, 5.0f, 0.0f);
func_8431BAB4(D_84390010[0], arg0, sp3C, 0, 0, 0.0f, 0.0f);
func_8431BB80(arg0, sp3C, D_84390240.unk_00->unk_56 = 0x71C, 0x4000, D_84390240.unk_00->unk_84 = 300.0f, 0.0f);
D_84390240.unk_00->unk_20 += 1;
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_84328F2C.s")
void func_84328D70(unk_D_86002F34_00C* arg0) {
Vec3f sp2C;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_843290A0.s")
func_8000E88C(&sp2C, -150.0f, 5.0f, 0.0f);
D_84390010[0]->unk_000.unk_000.unk_01 &= ~1;
D_84390010[1]->unk_000.unk_000.unk_01 &= ~1;
func_8430C718(&D_84390240.unk_00->unk_84, 40.0f, 0.1f);
func_8430C4F8(&D_84390240.unk_00->unk_56, 0xB6, 0x1E);
func_8431BB80(arg0, sp2C, D_84390240.unk_00->unk_56, 0x4000, D_84390240.unk_00->unk_84, 0.0f);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_84329164.s")
if ((D_84390240.unk_00->unk_56 >= 0x2E) && (D_84390010[0]->unk_4EC.unk_024.y == 2.5f)) {
func_800367A0(2, 0, 0);
D_84390010[0]->unk_4EC.unk_000.unk_02 |= 0x20;
D_84390240.unk_00->unk_20 += 1;
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_843292D8.s")
void func_84328EC0(UNUSED unk_D_86002F34_00C* arg0) {
D_84390010[0]->unk_000.unk_000.unk_01 &= ~1;
D_84390010[1]->unk_000.unk_000.unk_01 &= ~1;
if (func_800174E4(&D_84390010[0]->unk_4EC) == 1) {
D_84390240.unk_00->unk_20 += 1;
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_843293A8.s")
void func_84328F2C(unk_D_86002F34_00C* arg0) {
unk_D_84390010_654* sp2C = &D_84390010[0]->unk_654;
unk_D_800AE540_0004* sp28 = D_84390010[0]->unk_720->unk_08[sp2C->unk_2C];
D_84390010[0]->unk_728.unk_168->unk_00.unk_01 |= 1;
D_84390010[0]->unk_728.unk_000.unk_000.unk_01 |= 1;
func_843074A0(D_84390010[0]);
D_84390010[0]->unk_000.unk_000.unk_01 &= ~1;
D_84390010[1]->unk_000.unk_000.unk_01 &= ~1;
func_8432C68C(3, D_84390010[0], D_84390010[0], 0xFF, 0xFF);
D_84390010[0]->unk_000.unk_000.unk_01 |= 1;
D_84390010[0]->unk_4EC.unk_000.unk_01 &= ~1;
func_8431F420(D_84390010[0], arg0, 3);
func_84305760(D_84390010[0], 0x10);
D_84390240.unk_00->unk_2C = 0;
func_8002D5D4(0x19, (u32)sp28->unk_01C[sp2C->unk_18].unk_30);
func_843179F4(D_843901A0->unk_088, 0x21);
func_843184E4(0xC);
func_8432B588(D_84390010[0]);
D_84390240.unk_00->unk_10 = 0;
D_84390240.unk_00->unk_20 += 1;
}
void func_843290A0(unk_D_86002F34_00C* arg0) {
if (D_84390240.unk_00->unk_10++ == 1) {
func_8431F420(D_84390010[0], arg0, 3);
}
D_84390010[0]->unk_728.unk_168->unk_00.unk_01 &= ~1;
D_84390010[0]->unk_728.unk_000.unk_000.unk_01 &= ~1;
D_84390010[1]->unk_000.unk_000.unk_01 &= ~1;
func_8431C750(arg0, D_84390010[0]);
if (func_84305BD8(D_84390010[0], 0x3C) != 0) {
D_84390240.unk_00->unk_20 += 1;
}
}
void func_84329164(unk_D_86002F34_00C* arg0) {
unk_D_84390010_654* sp2C = &D_84390010[1]->unk_654;
unk_D_800AE540_0004* sp28 = D_84390010[1]->unk_720->unk_08[sp2C->unk_2C];
D_84390010[1]->unk_728.unk_168->unk_00.unk_01 |= 1;
D_84390010[1]->unk_728.unk_000.unk_000.unk_01 |= 1;
func_843074A0(D_84390010[1]);
func_800367A0(2, 0, 0);
func_8432C68C(3, D_84390010[1], D_84390010[1], 0xFF, 0xFF);
func_8431AE5C();
D_84390010[1]->unk_000.unk_000.unk_01 |= 1;
func_8431F420(D_84390010[1], arg0, 3);
func_84305760(D_84390010[1], 0x10);
D_84390240.unk_00->unk_10 = 0;
D_84390240.unk_00->unk_2C = 1;
func_8002D5D4(0x19, (u32)sp28->unk_01C[sp2C->unk_18].unk_30);
func_843179F4(D_843901A0->unk_088, 0x21);
if (D_800AE540.unk_0000 != 8) {
func_843184E4(0xC);
}
func_8432B588(D_84390010[1]);
D_84390240.unk_00->unk_20 += 1;
}
void func_843292D8(unk_D_86002F34_00C* arg0) {
if (D_84390240.unk_00->unk_10++ == 1) {
func_8431F420(D_84390010[1], arg0, 3);
}
D_84390010[1]->unk_728.unk_168->unk_00.unk_01 &= ~1;
D_84390010[1]->unk_728.unk_000.unk_000.unk_01 &= ~1;
D_84390010[0]->unk_000.unk_000.unk_01 &= ~1;
func_8431C750(arg0, D_84390010[1]);
if (func_84305BD8(D_84390010[1], 0x3C) != 0) {
func_8432056C();
D_84390240.unk_00->unk_20 += 1;
}
}
void func_843293A8(UNUSED unk_D_86002F34_00C* arg0) {
}
void func_843293B0(void) {
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_843293B8.s")
void func_843293B8(unk_D_86002F34_00C* arg0) {
switch (D_84390240.unk_00->unk_20) {
case 0:
func_84328990(arg0);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_843294A0.s")
case 1:
func_84328A70(arg0);
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_843295D0.s")
case 2:
func_84328B30(arg0);
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_843296B8.s")
case 3:
func_84328BF0(arg0);
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_843297AC.s")
case 4:
func_84328D70(arg0);
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_843297E8.s")
case 5:
func_84328EC0(arg0);
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_843297F0.s")
case 6:
func_84328F2C(arg0);
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_843297F8.s")
case 7:
func_843290A0(arg0);
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_84329858.s")
case 8:
func_84329164(arg0);
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_84329B04.s")
case 9:
func_843292D8(arg0);
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_84329DB8.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_84329DFC.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_8432A024.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_8432A2D4.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_8432A398.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_8432A41C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_8432A448.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_8432A4B0.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_8432A510.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_8432A578.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_8432ABBC.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_8432ADD8.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_8432AEE4.s")
case 10:
func_843293A8(arg0);
break;
}
}

View File

@ -0,0 +1,746 @@
#include "fragment62.h"
#include "src/11BA0.h"
#include "src/17300.h"
#include "src/2E110.h"
#include "src/373A0.h"
#include "src/F420.h"
#include "src/memory.h"
#include "src/util.h"
unk_D_84390240 D_84390240;
static s32 pad_D_84390280;
static s32 D_84390284;
s32 D_84390288;
static s32 pad_D_84390290[4];
void func_843294A0(unk_D_86002F34_00C* arg0) {
f32 sp3C;
func_8431AFD0(arg0, 20.0f, 12800.0f);
func_843081F0(D_84390010[D_84390284], &D_84390240.unk_00->unk_D0);
sp3C = func_8431AD20(D_84390010[D_84390284], 3.5f, 300.0f);
func_8431BAB4(D_84390010[D_84390284], arg0, D_84390240.unk_00->unk_D0, 0, func_84308190(D_84390010[D_84390284]),
0.0f, 0.0f);
func_8431BBDC(arg0, 0, func_84308190(D_84390010[D_84390284]), sp3C, 0.0f);
if (D_84390010[0]) {}
D_84390240.unk_00->unk_20 += 1;
if (D_84390284) {}
}
void func_843295D0(unk_D_86002F34_00C* arg0) {
f32 sp3C;
func_8431AFD0(arg0, 20.0f, 12800.0f);
func_843081F0(D_84390010[0], &D_84390240.unk_00->unk_D0);
sp3C = func_8431AD20(D_84390010[0], 3.5f, 300.0f);
func_8431BAB4(D_84390010[0], arg0, D_84390240.unk_00->unk_D0, 0, func_84308190(*D_84390010), 0.0f, 0.0f);
func_8431BBDC(arg0, 0, func_84308190(*D_84390010), sp3C, 0.0f);
if (D_84390010[0]) {}
D_84390240.unk_00->unk_20 += 1;
}
void func_843296B8(unk_D_86002F34_00C* arg0, UNUSED unk_D_84390010* arg1, UNUSED unk_D_84390010* arg2) {
D_84390240.unk_00->unk_40 = 0;
D_84390240.unk_00->unk_60 = 30.0f;
D_84390240.unk_00->unk_6C = 10.0f;
switch (D_84390240.unk_00->unk_1C) {
case 0:
func_843294A0(arg0);
break;
case 1:
func_8431A4C4(arg0);
break;
case 2:
func_84321184(arg0);
func_8431FF3C(arg0, 1);
break;
case 3:
func_843295D0(arg0);
break;
case 4:
func_84328990(arg0);
break;
}
D_84390240.unk_00->unk_DC = arg0;
}
void func_843297AC(void) {
D_84390240.unk_00 = main_pool_alloc(sizeof(unk_D_84390240_000), 0);
bzero(D_84390240.unk_00, sizeof(unk_D_84390240_000));
}
void func_843297E8(UNUSED unk_D_86002F34_00C* arg0) {
}
void func_843297F0(UNUSED unk_D_86002F34_00C* arg0) {
}
void func_843297F8(unk_D_86002F34_00C* arg0) {
if (func_8430C308(arg0->unk_60.at.x, arg0->unk_60.at.z, arg0->unk_60.eye.x, arg0->unk_60.eye.z) < 0.0001f) {
arg0->unk_60.at.z += 0.001f;
}
}
void func_84329858(unk_D_86002F34_00C* arg0) {
switch (D_84390240.unk_00->unk_30) {
case 0:
D_84390240.unk_00->unk_18 = 0;
break;
case 1:
if (D_84390240.unk_00->unk_44 == 2) {
func_84307500();
}
D_84390240.unk_00->unk_30++;
break;
case 2:
if (D_84390010[0]->unk_728.unk_168->unk_1C == -0x48) {
D_84390240.unk_00->unk_30++;
}
break;
case 3:
func_80012044(arg0, 0x12C, 0xA, 2, Util_ConvertAddrToVirtAddr((u32)D_1000000));
func_80011FC8(arg0, 5, 0xA, 0, 0, 0);
D_84390240.unk_00->unk_18 = 0;
D_84390240.unk_00->unk_30 += 1;
case 4:
if (arg0->unk_CC.unk_0A == 0xA) {
func_8431F680();
func_843062F0();
func_843066E0(D_84390010[0]);
func_843066E0(D_84390010[1]);
D_84390240.unk_00->unk_30 += 1;
D_84390240.unk_00->unk_18 = 1;
}
break;
case 5:
if ((func_8431FAB4() == 0) && (func_8431F998(D_84390010[D_84390240.unk_00->unk_2A]) == 0)) {
if (D_84390240.unk_00->unk_44 == 1) {
func_8432E9D8(2);
func_8430CC84();
}
func_843058A8(D_84390010[0]);
func_843058A8(D_84390010[1]);
D_84390240.unk_00->unk_18 = 2;
func_80012044(arg0, 0xA, 0x12C, 2, Util_ConvertAddrToVirtAddr((u32)D_1000000));
func_80011FC8(arg0, 4, 0xA, 0, 0, 0);
arg0->unk_24.fovy = 30.0f;
D_84390240.unk_00->unk_60 = 30.0f;
D_84390240.unk_00->unk_30 += 1;
}
break;
case 6:
func_8431F680();
arg0->unk_24.fovy = 30.0f;
D_84390240.unk_00->unk_60 = 30.0f;
D_84390240.unk_00->unk_18 = 0;
if (arg0->unk_CC.unk_0A == 0xA) {
D_84390240.unk_00->unk_30 = 0;
if (D_84390240.unk_00->unk_44 == 1) {
func_8430751C();
}
}
break;
}
}
void func_84329B04(unk_D_86002F34_00C* arg0) {
switch (D_84390240.unk_00->unk_30) {
case 0:
D_84390240.unk_00->unk_18 = 0;
break;
case 1:
if (D_84390240.unk_00->unk_44 == 2) {
func_84307500();
}
D_84390240.unk_00->unk_30++;
break;
case 2:
if (D_84390010[0]->unk_728.unk_168->unk_1C == -0x48) {
D_84390240.unk_00->unk_30++;
}
break;
case 3:
func_8436EEF0(3, 0x1E);
func_8436EF54();
D_84390240.unk_00->unk_18 = 0;
D_84390240.unk_00->unk_30 += 1;
case 4:
func_8436EF54();
if (func_8436EF48() == 1) {
func_8431F680();
func_843062F0();
func_843066E0(D_84390010[0]);
func_843066E0(D_84390010[1]);
D_84390240.unk_00->unk_30 += 1;
D_84390240.unk_00->unk_18 = 1;
}
break;
case 5:
D_84390240.unk_00->unk_18 = 1;
D_84390240.unk_00->unk_30 += 1;
break;
case 6:
D_84390240.unk_00->unk_18 = 1;
D_84390240.unk_00->unk_30 += 1;
break;
case 7:
D_84390240.unk_00->unk_18 = 1;
D_84390240.unk_00->unk_30 += 1;
break;
case 8:
if ((func_8431FAB4() == 0) && (func_8431F998(D_84390010[D_84390240.unk_00->unk_2A]) == 0)) {
if (D_84390240.unk_00->unk_44 == 1) {
func_8432E9D8(2);
func_8430CC84();
}
func_843058A8(D_84390010[0]);
func_843058A8(D_84390010[1]);
D_84390240.unk_00->unk_18 = 2;
func_8436EEF0(2, 0x1E);
func_8436EF54();
arg0->unk_24.fovy = 30.0f;
D_84390240.unk_00->unk_60 = 30.0f;
D_84390240.unk_00->unk_30 += 1;
}
break;
case 9:
func_8431F680();
arg0->unk_24.fovy = 30.0f;
D_84390240.unk_00->unk_60 = 30.0f;
D_84390240.unk_00->unk_18 = 0;
func_8436EF54();
if (func_8436EF48() == 0) {
D_84390240.unk_00->unk_30 = 0;
if (D_84390240.unk_00->unk_44 == 1) {
func_8430751C();
}
}
break;
}
}
void func_84329DB8(unk_D_86002F34_00C* arg0) {
if (D_84390240.unk_00->unk_2E == 0) {
func_84329858(arg0);
} else {
func_84329B04(arg0);
}
}
u16 func_84329DFC(unk_D_84390010* arg0, unk_D_86002F34_00C* arg1, unk_D_84390010* a2, s16 arg3, f32 arg4) {
UNUSED s32 pad[6];
f32 sp6C;
f32 sp68;
f32 sp64;
f32 sp60;
f32 sp5C;
UNUSED s32 pad2;
f32 sp54;
f32 sp50;
UNUSED s32 pad3;
f32 sp48;
s16 sp46;
s16 sp44;
f32 sp40;
unk_D_84390010* arg2;
f32 sp38;
s32 sp34 = 0;
func_8430C070(&arg1->unk_60.at, &arg1->unk_60.eye, &sp48, &sp46, &sp44);
sp40 = (COSS((sp44 - 0x8000)) * 50.0f) + arg1->unk_60.eye.z;
sp38 = (SINS((sp44 - 0x8000)) * 30.0f) + arg1->unk_60.eye.x;
sp54 = (COSS(((sp44 - arg3) + 0x8000)) * arg4) + sp40;
sp60 = (SINS(((sp44 - arg3) + 0x8000)) * arg4) + sp38;
sp50 = (COSS((sp44 + arg3 + 0x8000)) * arg4) + sp40;
sp5C = (SINS((sp44 + arg3 + 0x8000)) * arg4) + sp38;
arg2 = a2;
sp6C = ((sp54 - arg2->unk_000.unk_024.z) * (sp5C - arg2->unk_000.unk_024.x)) -
((sp50 - arg2->unk_000.unk_024.z) * (sp60 - arg2->unk_000.unk_024.x));
sp68 = ((sp50 - arg2->unk_000.unk_024.z) * (sp38 - arg2->unk_000.unk_024.x)) -
((sp40 - arg2->unk_000.unk_024.z) * (sp5C - arg2->unk_000.unk_024.x));
sp64 = ((sp40 - arg2->unk_000.unk_024.z) * (sp60 - arg2->unk_000.unk_024.x)) -
((sp54 - arg2->unk_000.unk_024.z) * (sp38 - arg2->unk_000.unk_024.x));
if (((sp6C >= 0.0f) && (sp68 >= 0.0f) && (sp64 >= 0.0f)) || ((sp6C <= 0.0f) && (sp68 <= 0.0f) && (sp64 <= 0.0f))) {
sp34 = 1;
}
return sp34;
}
u16 func_8432A024(unk_D_84390010* arg0, unk_D_86002F34_00C* arg1, unk_D_84390010* a2, s16 arg3, f32 arg4) {
UNUSED s32 pad[6];
f32 sp94;
f32 sp90;
f32 sp8C;
f32 sp88;
f32 sp84;
UNUSED s32 pad2;
f32 sp7C;
f32 sp78;
unk_D_84390010* arg2;
f32 sp70;
s16 sp6E;
s16 sp6C;
Vec3f sp60;
s32 sp5C;
sp5C = 0;
func_8430C070(&arg1->unk_60.at, &arg1->unk_60.eye, &sp70, &sp6E, &sp6C);
sp60.z = (COSS((sp6C - 0x8000)) * 30.0f) + arg1->unk_60.eye.z;
sp60.x = (SINS((sp6C - 0x8000)) * 30.0f) + arg1->unk_60.eye.x;
sp7C = (COSS(((sp6C - arg3) + 0x8000)) * arg4) + sp60.z;
sp88 = (SINS(((sp6C - arg3) + 0x8000)) * arg4) + sp60.x;
sp78 = (COSS((sp6C + arg3 + 0x8000)) * arg4) + sp60.z;
sp84 = (SINS((sp6C + arg3 + 0x8000)) * arg4) + sp60.x;
arg2 = a2;
sp94 = ((sp7C - arg2->unk_000.unk_024.z) * (sp84 - arg2->unk_000.unk_024.x)) -
((sp78 - arg2->unk_000.unk_024.z) * (sp88 - arg2->unk_000.unk_024.x));
sp90 = ((sp78 - arg2->unk_000.unk_024.z) * (sp60.x - arg2->unk_000.unk_024.x)) -
((sp60.z - arg2->unk_000.unk_024.z) * (sp84 - arg2->unk_000.unk_024.x));
sp8C = ((sp60.z - arg2->unk_000.unk_024.z) * (sp88 - arg2->unk_000.unk_024.x)) -
((sp7C - arg2->unk_000.unk_024.z) * (sp60.x - arg2->unk_000.unk_024.x));
if (((sp94 >= 0.0f) && (sp90 >= 0.0f) && (sp8C >= 0.0f)) || ((sp94 <= 0.0f) && (sp90 <= 0.0f) && (sp8C <= 0.0f))) {
sp5C = 1;
}
sp60.x = a2->unk_000.unk_024.x;
sp60.y = a2->unk_000.unk_024.y;
sp60.z = a2->unk_000.unk_024.z;
if ((func_84308598(arg0) * 2.5f) >= func_8430C2A4(arg1->unk_60.eye, sp60)) {
sp5C = 0;
}
return sp5C;
}
void func_8432A2D4(unk_D_86002F34_00C* arg0) {
if (func_84329DFC(D_84390010[0], arg0, D_84390010[0], 0x2AA8, 2500.0f) != 0) {
D_84390010[0]->unk_000.unk_000.unk_01 |= 1;
} else {
D_84390010[0]->unk_000.unk_000.unk_01 &= ~1;
}
if (func_84329DFC(D_84390010[1], arg0, D_84390010[1], 0x2AA8, 2500.0f) != 0) {
D_84390010[1]->unk_000.unk_000.unk_01 |= 1;
} else {
D_84390010[1]->unk_000.unk_000.unk_01 &= ~1;
}
}
void func_8432A398(unk_D_86002F34_00C* arg0) {
unk_D_84390010* sp24 = D_84390010[!D_84390240.unk_00->unk_2C];
if (func_8432A024(sp24, arg0, sp24, 0x2AA8, 2500.0f) != 0) {
sp24->unk_000.unk_000.unk_01 |= 1;
} else {
sp24->unk_000.unk_000.unk_01 &= 0xFFFE;
}
}
void func_8432A414(void) {
}
void func_8432A41C(void) {
D_84390010[0]->unk_000.unk_000.unk_01 |= 1;
D_84390010[1]->unk_000.unk_000.unk_01 |= 1;
}
void func_8432A448(void) {
func_843087F8(D_84390010[!D_84390240.unk_00->unk_2C]);
D_84390010[!D_84390240.unk_00->unk_2C]->unk_000.unk_000.unk_01 &= ~1;
}
void func_8432A4B0(void) {
D_84390010[D_84390240.unk_00->unk_2C]->unk_000.unk_000.unk_01 &= ~1;
func_843087F8(D_84390010[D_84390240.unk_00->unk_2C]);
}
void func_8432A510(void) {
unk_D_84390010* ptr1 = D_84390010[0];
unk_D_84390010* ptr2 = D_84390010[1];
if ((ptr1->unk_654.unk_2D == 0x10) || ((ptr1 = D_84390010[0])->unk_654.unk_2D == 0x13)) {
ptr1->unk_000.unk_000.unk_01 &= ~1;
}
if ((ptr2->unk_654.unk_2D == 0x10) || (ptr2->unk_654.unk_2D == 0x13)) {
ptr2->unk_000.unk_000.unk_01 &= ~1;
}
}
void func_8432A578(unk_D_86002F34_00C* arg0) {
UNUSED s32 pad;
unk_D_84390010_654* sp40 = &D_84390204->unk_654;
s32 temp_lo;
unk_D_84390010_654* sp38 = &D_84390200->unk_654;
f32 sp34;
s16 sp32;
s16 sp30;
switch (D_84390240.unk_00->unk_1C) {
case 0:
case 3:
break;
case 1:
func_8432A41C();
switch (D_84390240.unk_00->unk_20) {
case 12:
case 13:
case 14:
case 15:
case 21:
func_8432A41C();
break;
case 16:
case 17:
case 18:
case 19:
D_84390010[D_84390240.unk_00->unk_2C]->unk_000.unk_000.unk_01 &= ~1;
break;
default:
func_8432A398(arg0);
break;
}
break;
case 2:
func_8432A41C();
switch (D_84390240.unk_00->unk_38) {
case 2:
case 3:
switch (D_84390240.unk_00->unk_20) {
case 0:
if ((sp40->unk_2D == 0xF) && (D_84390240.unk_00->unk_34 == 1)) {
func_8432A4B0();
} else {
func_800102A4(&D_84390240.unk_00->unk_B8, &D_84390240.unk_00->unk_C4, &sp34, &sp32,
&sp30);
temp_lo = sp30 / 182;
if (((temp_lo == 0x5A) || (temp_lo == -0x5A)) && (D_84390240.unk_00->unk_34 == 1)) {
func_8432A448();
} else {
func_8432A398(arg0);
}
}
break;
case 1:
D_84390240.unk_00->unk_08 = 0;
if (!(sp40->unk_34 & 0x4400)) {
func_8432A448();
}
break;
case 2:
if ((D_84390240.unk_00->unk_3C == 0) && (D_84390240.unk_00->unk_24 >= 0) &&
(D_84390240.unk_00->unk_24 < 2) && (sp38->unk_34 & 0x800)) {
func_8432A448();
} else if (((D_84390240.unk_00->unk_3C == 0) || (D_84390240.unk_00->unk_3C == 1)) &&
(D_84390240.unk_00->unk_48 == 0) && (D_84390240.unk_00->unk_1A != 1)) {
func_843087F8(D_84390204);
D_84390204->unk_000.unk_01D = 0;
} else {
if (sp40->unk_34 & 0x4000) {
if ((D_84390204->unk_000.unk_01A != 0x32) &&
(D_84390204->unk_000.unk_01A != 0x33)) {
D_84390204->unk_000.unk_01D = 0;
} else {
D_84390204->unk_000.unk_01D = 0xFF;
}
} else {
D_84390204->unk_000.unk_01D = 0xFF;
}
func_8432A4B0();
}
D_84390240.unk_00->unk_08 = 1;
break;
}
break;
case 36:
if (D_84390240.unk_00->unk_08 == 1) {
func_8432A448();
} else if (D_84390240.unk_00->unk_08 == 2) {
D_84390010[!D_84390240.unk_00->unk_2C]->unk_000.unk_000.unk_01 &= ~1;
} else if (D_84390240.unk_00->unk_08 == 3) {
D_84390010[D_84390240.unk_00->unk_2C]->unk_000.unk_000.unk_01 &= ~1;
} else if (D_84390240.unk_00->unk_08 == 4) {
D_84390010[D_84390240.unk_00->unk_2C]->unk_000.unk_000.unk_01 &= ~1;
}
break;
case 4:
if (D_84390240.unk_00->unk_08 == 1) {
func_8432A4B0();
} else if (D_84390240.unk_00->unk_08 == 2) {
D_84390010[!D_84390240.unk_00->unk_2C]->unk_000.unk_000.unk_01 &= ~1;
} else if (D_84390240.unk_00->unk_08 == 3) {
D_84390010[!D_84390240.unk_00->unk_2C]->unk_000.unk_000.unk_01 &= ~1;
} else if (D_84390240.unk_00->unk_08 == 4) {
D_84390010[!D_84390240.unk_00->unk_2C]->unk_000.unk_000.unk_01 &= ~1;
}
break;
case 11:
D_84390240.unk_00->unk_08 = 4;
if (D_84390240.unk_00->unk_34 == 1) {
func_8432A448();
} else if (D_84390240.unk_00->unk_20 == 0) {
func_8432A2D4(arg0);
} else {
func_8432A448();
}
break;
case 18:
D_84390240.unk_00->unk_08 = 3;
switch (D_84390240.unk_00->unk_20) {
case 0:
func_8432A2D4(arg0);
break;
default:
func_8432A448();
break;
}
break;
case 12:
D_84390240.unk_00->unk_08 = 0;
switch (D_84390240.unk_00->unk_20) {
case 2:
case 3:
case 4:
func_8432A41C();
break;
default:
func_8432A448();
break;
}
break;
case 37:
D_84390240.unk_00->unk_08 = 0;
func_8432A448();
break;
case 7:
case 13:
case 14:
case 15:
case 16:
case 17:
case 20:
case 21:
case 25:
case 27:
case 28:
case 29:
case 31:
case 38:
D_84390240.unk_00->unk_08 = 3;
func_8432A448();
break;
case 9:
case 35:
D_84390240.unk_00->unk_08 = 3;
func_8432A448();
break;
case 6:
D_84390240.unk_00->unk_08 = 0;
func_8432A448();
break;
case 8:
case 10:
D_84390240.unk_00->unk_08 = 0;
func_8432A4B0();
break;
case 30:
D_84390240.unk_00->unk_08 = 0;
switch (D_84390240.unk_00->unk_20) {
case 0:
case 1:
case 2:
func_8432A448();
break;
default:
func_8432A4B0();
break;
}
break;
case 5:
case 34:
D_84390240.unk_00->unk_08 = 0;
switch (D_84390240.unk_00->unk_20) {
case 0:
case 1:
D_84390010[D_84390240.unk_00->unk_2C]->unk_000.unk_000.unk_01 &= ~1;
break;
}
break;
}
break;
}
func_8432A510();
}
void func_8432ABBC(unk_D_86002F34_00C* arg0) {
switch (D_84390240.unk_00->unk_1C) {
case 1:
func_8432A41C();
switch (D_84390240.unk_00->unk_20) {
case 12:
case 13:
case 14:
case 15:
case 21:
func_8432A41C();
break;
case 16:
case 17:
case 18:
case 19:
D_84390010[D_84390240.unk_00->unk_2C]->unk_000.unk_000.unk_01 &= ~1;
break;
default:
func_8432A398(arg0);
break;
}
break;
case 2:
switch (D_84390240.unk_00->unk_38) {
case 30:
switch (D_84390240.unk_00->unk_20) {
case 0:
case 1:
case 2:
case 5:
D_84390010[!D_84390240.unk_00->unk_2C]->unk_000.unk_000.unk_01 &= ~1;
D_84390010[D_84390240.unk_00->unk_2C]->unk_000.unk_000.unk_01 |= 1;
break;
default:
D_84390010[D_84390240.unk_00->unk_2C]->unk_000.unk_000.unk_01 &= ~1;
D_84390010[!D_84390240.unk_00->unk_2C]->unk_000.unk_000.unk_01 |= 1;
}
break;
case 5:
case 34:
switch (D_84390240.unk_00->unk_20) {
case 0:
case 1:
D_84390010[D_84390240.unk_00->unk_2C]->unk_000.unk_000.unk_01 &= ~1;
D_84390010[!D_84390240.unk_00->unk_2C]->unk_000.unk_000.unk_01 |= 1;
break;
}
break;
}
break;
}
func_8432A510();
}
void func_8432ADD8(unk_D_86002F34_00C* arg0) {
func_84329DB8(arg0);
func_8431B004();
func_8432A578(arg0);
switch (D_84390240.unk_00->unk_1C) {
case 0:
func_843297E8(arg0);
break;
case 1:
func_8431AAFC(arg0);
break;
case 2:
func_8430CCC8();
func_84328734(arg0);
break;
case 3:
func_843297F0(arg0);
break;
case 4:
func_843293B8(arg0);
break;
default:
D_84390240.unk_00->unk_40 = 3;
break;
}
func_8432ABBC(arg0);
func_84305808();
func_84306914(D_84390018);
func_84306914(D_8439001C);
func_8431B174(arg0);
func_8431B830(arg0);
func_8431BD10(arg0);
func_843297F8(arg0);
}
s32 func_8432AEE4(s32 arg0, unk_D_86002F34_00C* arg1) {
switch (arg0) {
case 0:
func_843297AC();
break;
case 1:
case 2:
func_8432ADD8(arg1);
break;
case 3:
func_843296B8(arg1, D_84390010[0], D_84390010[1]);
break;
}
return D_84390240.unk_00->unk_40;
}

View File

@ -1,17 +1,119 @@
#include "global.h"
#include "fragment62.h"
#include "src/17300.h"
#include "src/18140.h"
#include "src/1C720.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315830/func_8432AF70.s")
void func_8432AF70(unk_D_84390010* arg0) {
UNUSED s32 pad[2];
unk_func_80026268_arg0* ptr;
unk_D_84390010_654* sp2C;
unk_D_800FCB18* sp28;
unk_D_8438E7B0_A50* sp20;
s32 idx = func_84307F00(arg0);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315830/func_8432B0A4.s")
sp28 = &arg0->unk_654.unk_38;
sp2C = &arg0->unk_654;
ptr = &arg0->unk_724->unk_01C[sp2C->unk_08];
sp20 = &D_84384570[idx]->unk_A80;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315830/func_8432B0E4.s")
if ((ptr->unk_05 & 0x20) && (sp2C->unk_34 & 2)) {
arg0->unk_000.unk_000.unk_02 &= ~0x20;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315830/func_8432B13C.s")
if ((sp28->unk_15 & 0x20) && (ptr->unk_05 & 0x20) && !(sp2C->unk_34 & 2) &&
((arg0->unk_000.unk_040.unk_08 >> 0x10) >= 3)) {
func_8001BD04(&arg0->unk_000, sp20->unk_00);
func_80017464(&arg0->unk_000, 4);
func_8001BD9C(&arg0->unk_000, sp20->unk_01);
func_80017804(&arg0->unk_000, 3);
arg0->unk_000.unk_000.unk_02 &= ~0x20;
func_843061EC(arg0, 2);
func_8432C7A0(1, arg0);
func_8432BF88(arg0, 0x13);
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315830/func_8432B1BC.s")
void func_8432B0A4(unk_D_84390010* arg0) {
unk_D_8438E7B0_A50* ptr = &D_84384570[func_84307F00(arg0)]->unk_A50;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315830/func_8432B228.s")
func_8001BD04(&arg0->unk_000, ptr->unk_00);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315830/func_8432B38C.s")
void func_8432B0E4(unk_D_84390010* arg0) {
if (arg0->unk_654.unk_34 & 2) {
func_8432C80C(1, arg0);
arg0->unk_000.unk_000.unk_02 |= 0x20;
func_84306200(arg0, 2);
func_8432B0A4(arg0);
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315830/func_8432B448.s")
void func_8432B13C(unk_D_84390010* arg0) {
unk_func_80026268_arg0* ptr = &arg0->unk_724->unk_01C[arg0->unk_654.unk_08];
if (arg0->unk_654.unk_34 & 2) {
ptr->unk_05 = 0;
func_8432C80C(1, arg0);
arg0->unk_000.unk_000.unk_02 |= 0x20;
func_84306200(arg0, 2);
func_8432B0A4(arg0);
}
}
void func_8432B1BC(unk_D_84390010* arg0) {
if ((arg0->unk_654.unk_34 & 2) && !(arg0->unk_654.unk_38.unk_15 & 0x20)) {
func_8432C80C(1, arg0);
arg0->unk_000.unk_000.unk_02 |= 0x20;
func_84306200(arg0, 2);
func_8432B0A4(arg0);
}
}
void func_8432B228(unk_D_84390010* arg0) {
unk_D_84390010_654* sp24 = &arg0->unk_654;
unk_D_800FCB18* sp28 = &sp24->unk_38;
unk_func_80026268_arg0* sp2C = &arg0->unk_724->unk_01C[arg0->unk_654.unk_08];
if ((D_84390240.unk_00->unk_38 != 0xB) || (D_84390240.unk_00->unk_20 >= 6)) {
if ((sp2C->unk_05 & 7) && (sp28->unk_15 & 7) && !(arg0->unk_654.unk_34 & 1)) {
func_84305A74(arg0, 0xAF, 2);
func_8432C7A0(3, arg0);
func_8432BF88(arg0, 0x32);
func_843061EC(arg0, 1);
}
if (!(sp2C->unk_05 & 7) && (sp24->unk_34 & 1)) {
if (D_84384570[func_84307F00(arg0)]->unk_B81 == 0xFF) {
sp24->unk_36 = 0;
func_843058C4(arg0, 0xA5);
} else {
func_84305A74(arg0, 0xB8, 1);
}
func_8432C80C(3, arg0);
func_84306200(arg0, 1);
}
}
}
void func_8432B38C(unk_D_84390010* arg0) {
unk_func_80026268_arg0* ptr = &arg0->unk_724->unk_01C[arg0->unk_654.unk_08];
if (arg0->unk_654.unk_34 & 1) {
ptr->unk_05 = 0;
if (D_84384570[func_84307F00(arg0)]->unk_B81 == 0xFF) {
arg0->unk_654.unk_36 = 0;
func_843058C4(arg0, 0xA5);
} else {
func_84305A74(arg0, 0xB8, 1);
}
func_8432C80C(3, arg0);
func_84306200(arg0, 1);
}
}
void func_8432B448(unk_D_84390010* arg0) {
if (arg0->unk_654.unk_34 & 1) {
func_8432C80C(3, arg0);
func_84306200(arg0, 1);
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,11 +1,62 @@
#include "global.h"
#include "fragment62.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31A7E0/func_8432FF20.s")
void func_8432FF20(unk_D_8140E720* arg0) {
func_8140B938(arg0, 0.1f);
func_8140BAC8(arg0, 0xFF, 0xFF, 0xFF);
func_8140BB74(arg0, 0x64, 0xC8, 0xFF);
func_8140BC20(arg0, 0xFF);
func_814081BC(arg0);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31A7E0/func_8432FF8C.s")
void func_8432FF8C(unk_D_8140E720* arg0) {
switch (arg0->unk_B2) {
case 1:
func_8432FF20(arg0);
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31A7E0/func_84330048.s")
case 2:
func_814084D8(arg0, 0, 7, 1, 2, 0);
func_8140BC2C(arg0, 0x20, 8);
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31A7E0/func_843300B4.s")
case 3:
func_81408150(arg0);
break;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31A7E0/func_8433010C.s")
if (func_8140819C(arg0) != 0) {
func_8140B98C(arg0, 0.5f, 0.05f);
}
}
void func_84330048(unk_D_8140E720* arg0) {
func_8140B938(arg0, 0.1f);
func_8140BAC8(arg0, 0xFF, 0xFF, 0xFF);
func_8140BB74(arg0, 0x64, 0xC8, 0xFF);
func_8140BC20(arg0, 0xFF);
func_814081BC(arg0);
}
void func_843300B4(unk_D_8140E720* arg0) {
if (arg0->unk_B2 == 1) {
func_84330048(arg0);
}
if (func_8140819C(arg0) != 0) {
func_8140B98C(arg0, 0.8f, 0.08f);
}
}
void func_8433010C(unk_D_8140E720* arg0, u8 arg1) {
switch (arg1) {
case 1:
arg0->unk_08 = func_8432FF8C;
arg0->unk_0C = &D_843861D0[25];
break;
case 2:
arg0->unk_08 = func_843300B4;
arg0->unk_0C = &D_843861D0[22];
break;
}
}

View File

@ -1,63 +1,302 @@
#include "global.h"
#include "fragment62.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_84330170.s")
s32 func_84330170(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1) {
func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a);
func_8140213C(arg1, arg0->unk_2C, arg0->unk_1C);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_84330218.s")
gSPDisplayList(gDisplayListHead++, D_8140E418);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_84330300.s")
void func_84330218(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1) {
func_81403F8C(D_843920C0[0x76] + (arg0->unk_C7 << 0xB), 0x20, 0x40);
func_814044FC(D_843920C0[0x77], 0x40, 0x40, 2, 1);
func_81406168(0, 0xA, 0x40, 0x40);
func_81405FAC(0x80, arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->prim_a, arg0->env_r, arg0->env_g, arg0->env_b);
func_81404DB4(arg1, arg0->unk_2C, arg0->unk_1C, D_8140E1F8);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_84330344.s")
void func_84330300(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1) {
gSPDisplayList(gDisplayListHead++, D_8140DCD8);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_84330388.s")
func_84330218(arg0, arg1);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_843304AC.s")
void func_84330344(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1) {
gSPDisplayList(gDisplayListHead++, D_8140DD58);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_84330574.s")
func_84330218(arg0, arg1);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_84330688.s")
void func_84330388(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1) {
func_8140213C(arg1, arg0->unk_2C, arg0->unk_1C);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_8433079C.s")
gSPDisplayList(gDisplayListHead++, D_8140DD58);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_84330934.s")
func_8140441C(D_843920C0[0x1F], 0x20, 0x40);
func_814060D4(0, 8, 0x20, 0x40);
func_81405E04(0xFF, 0xFF, 0xFF, arg0->prim_a, 0xFF, 0xFF, 0xFF, 0xFF);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_84330A18.s")
gDPSetRenderMode(gDisplayListHead++, G_RM_PASS, G_RM_AA_ZB_XLU_SURF2);
gSPDisplayList(gDisplayListHead++, D_843920C0[0x20]);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_84330AF0.s")
s32 func_843304AC(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1) {
func_81401FC0(arg0->unk_2C, arg0->unk_94, arg0->unk_1C);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_84330B18.s")
gSPDisplayList(gDisplayListHead++, D_8140DBA8);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_84330B40.s")
func_81403AB8(D_843920C0[0xBC], 0x20, 0x20);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_84330C70.s")
gSPDisplayList(gDisplayListHead++, D_843920C0[0xBD]);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_84330D64.s")
void func_84330574(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1) {
func_814015A0(arg0->unk_2C.x, arg0->unk_2C.y, arg0->unk_94.z, arg0->unk_1C);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_84330E58.s")
gSPDisplayList(gDisplayListHead++, D_8140DCD8);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_84330F4C.s")
func_81405ED8(0x80, arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->prim_a, arg0->env_r, arg0->env_g, arg0->env_b);
func_8140441C(D_843920C0[0x27], 0x40, 0x40);
func_814060D4(2, -2, 0x40, 0x40);
func_81404484(D_843920C0[0x28], 0x40, 0x40);
func_81406168(0, -1, 0x40, 0x40);
func_81404A6C(D_84385DC0);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_84331094.s")
void func_84330688(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1) {
func_814015A0(arg0->unk_2C.x, arg0->unk_2C.y, arg0->unk_94.z, arg0->unk_1C);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_843310A0.s")
gSPDisplayList(gDisplayListHead++, D_8140DCD8);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_843311D8.s")
func_81405ED8(0x80, arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->prim_a, arg0->env_r, arg0->env_g, arg0->env_b);
func_8140441C(D_843920C0[0x27], 0x40, 0x40);
func_814060D4(1, -3, 0x40, 0x40);
func_81404484(D_843920C0[0x28], 0x40, 0x40);
func_81406168(-2, -2, 0x40, 0x40);
func_81404A6C(D_84385E00);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_84331314.s")
void func_8433079C(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1) {
func_814015A0(arg0->unk_2C.x, arg0->unk_2C.y, arg0->unk_94.z, arg0->unk_1C);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_84331450.s")
gSPDisplayList(gDisplayListHead++, D_8140DCD8);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_8433157C.s")
func_81405ED8(0x80, arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->prim_a, arg0->env_r, arg0->env_g, arg0->env_b);
func_81403754(D_843920C0[0x29], 0, 0, 4, 0x20, 0x20, 1, 1, 5, 5, 2, 0);
func_814060D4(1, 1, 0x20, 0x20);
func_81403754(D_843920C0[0x29], 0x100, 1, 4, 0x20, 0x20, 1, 1, 5, 5, 1, 0xF);
func_81406168(-1, 1, 0x20, 0x20);
func_81404A6C(D_8140E3B8);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_843316A8.s")
void func_84330934(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1) {
func_814015A0(arg0->unk_2C.x, arg0->unk_2C.y, arg0->unk_94.z, arg0->unk_1C);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_843317D4.s")
gSPDisplayList(gDisplayListHead++, D_8140DCD8);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_843318F8.s")
func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a);
func_8140441C(D_843920C0[0x87], 0x20, 0x20);
func_814060D4(0, 2, 0x20, 0x20);
func_81404A6C(D_8140E3B8);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_84331A1C.s")
void func_84330A18(unk_D_8140E720* arg0, u8* arg1) {
func_814015F8(arg0->unk_2C.x, arg0->unk_2C.y, arg0->unk_94.z, arg0->unk_1C);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_84331B58.s")
gSPDisplayList(gDisplayListHead++, D_8140DCD8);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_84331C34.s")
func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a);
func_81405660(arg1, D_84385C80, 0x40, 0x40, 0x40, 0x40);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_84331D60.s")
void func_84330AF0(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1) {
func_84330A18(arg0, D_843920C0[0x19]);
}
void func_84330B18(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1) {
func_84330A18(arg0, D_843920C0[0x5E]);
}
void func_84330B40(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1) {
gSPDisplayList(gDisplayListHead++, D_8140DD58);
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
func_8140437C(D_843920C0[0x1A] + (arg0->unk_C7 << 9), 0x20, 0x20);
func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a);
func_81404ABC(arg0->unk_2C, arg0->unk_94, arg0->unk_1C, D_8140E018);
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
}
void func_84330C70(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1) {
gSPDisplayList(gDisplayListHead++, D_8140DC00);
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
func_81403AB8(D_843920C0[0x1C], 0x20, 0x20);
func_81404ABC(arg0->unk_2C, arg0->unk_94, arg0->unk_1C, D_8140E018);
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
}
void func_84330D64(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1) {
gSPDisplayList(gDisplayListHead++, D_8140DC00);
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
func_81403AB8(D_843920C0[0x1E], 0x20, 0x20);
func_81404ABC(arg0->unk_2C, arg0->unk_94, arg0->unk_1C, D_8140E018);
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
}
void func_84330E58(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1) {
gSPDisplayList(gDisplayListHead++, D_8140DC00);
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
func_81403AB8(D_843920C0[0xC3], 0x20, 0x20);
func_81404ABC(arg0->unk_2C, arg0->unk_94, arg0->unk_1C, D_8140E018);
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
}
void func_84330F4C(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1) {
Vec3s sp40;
gSPDisplayList(gDisplayListHead++, D_8140DCD8);
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
func_8140437C(D_843920C0[0x1D], 0x20, 0x20);
func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a);
sp40.x = arg0->unk_94.x + 0x4000;
sp40.y = arg0->unk_94.y + 0x4000;
sp40.z = arg0->unk_94.z;
func_81404ABC(arg0->unk_2C, sp40, arg0->unk_1C, D_8140E018);
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
}
void func_84331094(UNUSED unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1) {
}
void func_843310A0(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1) {
gSPDisplayList(gDisplayListHead++, D_8140DD58);
func_8140437C(D_843920C0[0x13] + (D_8140E6C8 * 0x600), 0x20, 0x60);
func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a);
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
func_81404B78(arg0->unk_2C, arg0->unk_94, arg0->unk_1C, D_84385CC0);
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
}
void func_843311D8(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1) {
gSPDisplayList(gDisplayListHead++, D_8140DD58);
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
func_8140437C(D_843920C0[0x13] + (D_8140E6C8 * 0x600), 0x20, 0x60);
func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a);
func_81404B78(arg0->unk_2C, arg0->unk_94, arg0->unk_1C, D_84385D00);
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
}
void func_84331314(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1) {
gSPDisplayList(gDisplayListHead++, D_8140DD58);
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
func_8140437C(D_843920C0[0x13] + (D_8140E6C8 * 0x600), 0x20, 0x60);
func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a);
func_81404B78(arg0->unk_2C, arg0->unk_94, arg0->unk_1C, D_84385D40);
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
}
void func_84331450(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1) {
gSPDisplayList(gDisplayListHead++, D_8140DD58);
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
func_8140437C(D_843920C0[0x13] + (D_8140E6C8 * 0x600), 0x20, 0x60);
func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a);
func_81404F84(arg1, arg0->unk_2C, arg0->unk_1C, D_84385CC0, arg0->unk_94.z);
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
}
void func_8433157C(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1) {
gSPDisplayList(gDisplayListHead++, D_8140DD58);
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
func_8140437C(D_843920C0[0x13] + (D_8140E6C8 * 0x600), 0x20, 0x60);
func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a);
func_81404F84(arg1, arg0->unk_2C, arg0->unk_1C, D_84385D00, arg0->unk_94.z);
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
}
void func_843316A8(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1) {
gSPDisplayList(gDisplayListHead++, D_8140DD58);
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
func_8140437C(D_843920C0[0x13] + (D_8140E6C8 * 0x600), 0x20, 0x60);
func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a);
func_81404F84(arg1, arg0->unk_2C, arg0->unk_1C, D_84385D40, arg0->unk_94.z);
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
}
void func_843317D4(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1) {
gSPDisplayList(gDisplayListHead++, D_8140DCD8);
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
func_8140437C(D_843920C0[0x1B], 0x10, 0x100);
func_81405C70(0xFF, 0xFF, 0xFF, arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->prim_a);
func_81404CF8(arg0->unk_2C, arg0->unk_94, arg0->unk_1C, D_8140DF78);
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
}
void func_843318F8(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1) {
gSPDisplayList(gDisplayListHead++, D_8140DCD8);
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
func_8140437C(D_843920C0[0x1B], 0x10, 0x100);
func_81405C70(0xFF, 0xFF, 0xFF, arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->prim_a);
func_81404CF8(arg0->unk_2C, arg0->unk_94, arg0->unk_1C, D_8140DFA8);
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
}
void func_84331A1C(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1) {
gSPDisplayList(gDisplayListHead++, D_8140DCD8);
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
func_8140437C(D_843920C0[0x13] + ((D_8140E6F0 & 7) * 0x600), 0x20, 0x60);
func_81405C70(0xFF, 0xFF, 0xFF, 0, 0x64, 0xC8, 0xFF);
func_81404ABC(arg0->unk_2C, arg0->unk_94, arg0->unk_1C, D_8140E238);
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
}
void func_84331B58(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1) {
gSPDisplayList(gDisplayListHead++, D_8140DD58);
func_8140437C(D_843920C0[0x18] + (arg0->unk_C7 << 9), 0x20, 0x20);
func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a);
func_81404E4C(arg1, arg0->unk_2C, arg0->unk_1C, D_8140E018, arg0->unk_94.z);
}
void func_84331C34(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1) {
gSPDisplayList(gDisplayListHead++, D_8140DD58);
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
func_8140437C(D_843920C0[0xA9], 0x20, 0x20);
func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a);
func_81404C34(arg0->unk_2C, arg0->unk_94, arg0->unk_1C, arg0->unk_20, D_8140E098);
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
}
void func_84331D60(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1) {
func_84359000(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->prim_a);
}

View File

@ -1,221 +1,554 @@
#include "global.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84331DA0.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84331DC8.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84331E64.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84331EAC.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84331F64.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84331FAC.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843320A4.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84332174.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843321BC.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_8433227C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843322C4.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_8433237C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843323BC.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843324A4.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843324EC.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843325C4.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84332604.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843326EC.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843327B8.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843328A8.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84332964.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84332AD8.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84332AFC.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84332BA4.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84332BE4.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84332C90.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84332CD0.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84332D68.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84332DB0.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84332E2C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84332E6C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84332EE8.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84332F30.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84332F90.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84332FD0.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84333060.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843330A0.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84333130.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84333210.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843332B4.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843334DC.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84333570.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84333600.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_8433378C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84333884.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84333928.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84333A20.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84333B04.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84333BA8.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84333DC4.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84333E28.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84333EE8.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84333FBC.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843340B8.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84334154.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84334294.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84334350.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843343F8.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843344A0.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84334558.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843345A0.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84334654.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843346BC.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843347A4.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84334808.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843348DC.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84334994.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84334A78.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84334B0C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84334BAC.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84334D7C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84334E4C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84334F84.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_8433507C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843351C8.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843352AC.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843353C4.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843354E0.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84335668.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_8433574C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84335848.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_8433595C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84335A84.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84335BA0.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84335D10.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84335DEC.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84335EF8.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84336014.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_8433617C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84336320.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84336340.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84336360.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84336480.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84336520.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_8433661C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_8433679C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84336830.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843369AC.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84336A58.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84336B8C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84336C80.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84336DD8.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84336EE8.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84337000.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843371C0.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843372D8.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843374A4.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843375B0.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_8433766C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843378D4.s")
#include "fragment62.h"
#include "src/1C720.h"
void func_84331DA0(unk_D_8140E720* arg0) {
func_8432FEEC(arg0);
func_814081BC(arg0);
}
void func_84331DC8(unk_D_8140E720* arg0) {
switch (arg0->unk_B2) {
case 1:
func_84331DA0(arg0);
break;
case 2:
if (func_8140D7C8(arg0, arg0->unk_CF, func_8140C068(arg0)) != 0) {
func_814081BC(arg0);
}
break;
case 3:
func_81408158(arg0);
break;
}
func_8432FEC4(arg0);
}
void func_84331E64(unk_D_8140E720* arg0) {
func_8140D530(arg0, func_8140C058(arg0));
func_8140BF4C(arg0, arg0->unk_A6);
func_814081BC(arg0);
}
void func_84331EAC(unk_D_8140E720* arg0) {
switch (arg0->unk_B2) {
case 1:
func_84331E64(arg0);
break;
case 2:
if (func_8140BF60(arg0, arg0->unk_CD, arg0->unk_AA) != 0) {
func_814081BC(arg0);
}
break;
case 3:
func_81408158(arg0);
break;
}
if (func_8140819C(arg0) != 0) {
func_8001BE34(&arg0->unk_10->unk_000, arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->unk_AE);
}
}
void func_84331F64(unk_D_8140E720* arg0) {
func_8140D530(arg0, func_8140C058(arg0));
func_8140BF4C(arg0, arg0->unk_CE);
func_814081BC(arg0);
}
void func_84331FAC(unk_D_8140E720* arg0) {
switch (arg0->unk_B2) {
case 1:
func_84331F64(arg0);
break;
case 2:
if (func_8140BF60(arg0, arg0->unk_CD, arg0->unk_AA) != 0) {
func_814081BC(arg0);
}
break;
case 3:
func_8140BDD0(arg0);
break;
case 4:
if (func_8140BF60(arg0, 0, arg0->unk_AA) != 0) {
func_814081BC(arg0);
}
break;
case 5:
func_81408158(arg0);
break;
}
if (func_8140819C(arg0) != 0) {
func_8001BE34(&arg0->unk_10->unk_000, arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->unk_AE);
}
}
void func_8433209C(void) {
}
void func_843320A4(unk_D_8140E720* arg0) {
switch (arg0->unk_B2) {
case 1:
func_84331F64(arg0);
break;
case 2:
func_8140BDD0(arg0);
break;
case 3:
if (func_8140BF60(arg0, 0, arg0->unk_AA) != 0) {
func_814081BC(arg0);
}
break;
case 4:
func_81408158(arg0);
break;
}
if (func_8140819C(arg0) != 0) {
func_8001BE34(&arg0->unk_10->unk_000, arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->unk_AE);
}
}
void func_84332174(unk_D_8140E720* arg0) {
func_8140D530(arg0, func_8140C058(arg0));
func_8140BF4C(arg0, arg0->unk_A6);
func_814081BC(arg0);
}
void func_843321BC(unk_D_8140E720* arg0) {
switch (arg0->unk_B2) {
case 1:
func_84332174(arg0);
break;
case 2:
if (func_8140D7C8(arg0, arg0->unk_CD, arg0->unk_AA) != 0) {
func_8140BF4C(arg0, 0);
func_814081BC(arg0);
}
break;
case 3:
func_81408150(arg0);
break;
}
if (func_8140819C(arg0) != 0) {
func_8001BE34(&arg0->unk_10->unk_000, arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->unk_AE);
}
}
void func_8433227C(unk_D_8140E720* arg0) {
func_8140D530(arg0, func_8140C058(arg0));
func_8140BF4C(arg0, arg0->unk_A6);
func_814081BC(arg0);
}
void func_843322C4(unk_D_8140E720* arg0) {
switch (arg0->unk_B2) {
case 1:
func_8433227C(arg0);
break;
case 2:
if (func_8140D7C8(arg0, arg0->unk_CD, arg0->unk_AA) != 0) {
func_814081BC(arg0);
}
break;
case 3:
func_81408150(arg0);
break;
}
if (func_8140819C(arg0) != 0) {
func_8001BE34(&arg0->unk_10->unk_000, arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->unk_AE);
}
}
void func_8433237C(unk_D_8140E720* arg0) {
func_8140D530(arg0, func_8140C058(arg0));
func_8140BF4C(arg0, 0);
func_814081BC(arg0);
}
void func_843323BC(unk_D_8140E720* arg0) {
switch (arg0->unk_B2) {
case 1:
func_8433237C(arg0);
break;
case 2:
func_8140BF98(arg0, arg0->unk_A6, arg0->unk_CE);
break;
case 3:
if (func_8140D7C8(arg0, arg0->unk_CD, arg0->unk_AA) != 0) {
func_814081BC(arg0);
}
break;
case 4:
func_8140BF98(arg0, 0, arg0->unk_CE);
break;
case 5:
func_81408150(arg0);
break;
}
if (func_8140819C(arg0) != 0) {
func_8001BE34(&arg0->unk_10->unk_000, arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->unk_AE);
}
}
void func_843324A4(unk_D_8140E720* arg0) {
func_8140D530(arg0, func_8140C058(arg0));
func_8140BF4C(arg0, arg0->unk_A6);
func_814081BC(arg0);
}
void func_843324EC(unk_D_8140E720* arg0) {
switch (arg0->unk_B2) {
case 1:
func_843324A4(arg0);
break;
case 2:
if (func_8140D7C8(arg0, arg0->unk_CD, arg0->unk_AA) != 0) {
func_814081BC(arg0);
}
break;
case 3:
func_8140BF98(arg0, 0, arg0->unk_CE);
break;
case 4:
func_81408150(arg0);
break;
}
if (func_8140819C(arg0) != 0) {
func_8001BE34(&arg0->unk_10->unk_000, arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->unk_AE);
}
}
void func_843325C4(unk_D_8140E720* arg0) {
func_8140D530(arg0, func_8140C058(arg0));
func_8140BF4C(arg0, 0);
func_814081BC(arg0);
}
void func_84332604(unk_D_8140E720* arg0) {
switch (arg0->unk_B2) {
case 1:
func_843325C4(arg0);
break;
case 2:
if (func_8140BF60(arg0, arg0->unk_A6, arg0->unk_CE) != 0) {
func_814081BC(arg0);
}
break;
case 3:
if (func_8140D7C8(arg0, arg0->unk_CD, arg0->unk_AA) != 0) {
func_814081BC(arg0);
}
break;
case 4:
func_81408150(arg0);
break;
}
if (func_8140819C(arg0) != 0) {
func_8001BE34(&arg0->unk_10->unk_000, arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->unk_AE);
}
}
void func_843326EC(unk_D_8140E720* arg0) {
func_8140D530(arg0, D_8140E538[func_81400A78(6)]);
func_8140BEEC(arg0, D_8140E538[func_81400A78(6)]);
func_8140BC20(arg0, arg0->unk_CD);
if (arg0->unk_AA == 0) {
arg0->unk_AA = 1;
}
func_8140BCA8(arg0, 0xFF / arg0->unk_AA);
func_814081BC(arg0);
}
void func_843327B8(unk_D_8140E720* arg0) {
switch (arg0->unk_B2) {
case 1:
func_843326EC(arg0);
break;
case 2:
func_8140D7C8(arg0, arg0->unk_CF, arg0->unk_AA);
if (func_8140BDAC(arg0) != 0) {
func_8140BCA8(arg0, 0xFF / arg0->unk_AA);
func_8140BEEC(arg0, D_8140E538[func_81400A78(6)]);
}
func_8001BE34(&arg0->unk_10->unk_000, arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->prim_a);
break;
}
}
void func_843328A8(unk_D_8140E720* arg0) {
func_8140D530(arg0, D_8140E538[0]);
func_8140BF4C(arg0, 1);
func_8140BEEC(arg0, D_8140E538[1]);
func_8140BC20(arg0, arg0->unk_CD);
if (arg0->unk_AA == 0) {
arg0->unk_AA = 1;
}
func_8140BE14(arg0, 0xFF / arg0->unk_AA);
func_814081BC(arg0);
}
void func_84332964(unk_D_8140E720* arg0) {
switch (arg0->unk_B2) {
case 1:
func_843328A8(arg0);
break;
case 2:
func_8140BDD0(arg0);
if (func_8140BE6C(arg0) != 0) {
func_8140BE14(arg0, 0xFF / arg0->unk_AA);
arg0->unk_AE = (arg0->unk_AE + 1) % 6;
func_8140BEEC(arg0, D_8140E538[arg0->unk_AE]);
}
func_8140D7C8(arg0, arg0->unk_CF, arg0->unk_AA);
func_8001BE34(&arg0->unk_10->unk_000, arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->prim_a);
break;
case 3:
if (func_8140BC2C(arg0, 0, 8) != 0) {
func_814081BC(arg0);
}
func_8001BE34(&arg0->unk_10->unk_000, arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->prim_a);
break;
case 4:
func_81408158(arg0);
break;
}
}
void func_84332AD8(unk_D_8140E720* arg0) {
arg0->prim_a = arg0->unk_A6;
func_814081BC(arg0);
}
void func_84332AFC(unk_D_8140E720* arg0) {
switch (arg0->unk_B2) {
case 1:
func_84332AD8(arg0);
break;
case 2:
if (func_8140BC2C(arg0, arg0->unk_CD, arg0->unk_AA) != 0) {
func_814081BC(arg0);
}
break;
case 3:
func_81408150(arg0);
break;
}
if (func_8140819C(arg0) != 0) {
func_8001BE78(&arg0->unk_10->unk_000, arg0->prim_a);
}
}
void func_84332BA4(unk_D_8140E720* arg0) {
func_8140D530(arg0, func_8140C058(arg0));
func_8140BC20(arg0, 0);
func_814081BC(arg0);
}
void func_84332BE4(unk_D_8140E720* arg0) {
switch (arg0->unk_B2) {
case 1:
func_84332BA4(arg0);
break;
case 2:
func_8140BC2C(arg0, 0x80, 4);
break;
case 3:
if (func_8140BC2C(arg0, 0, 8) != 0) {
func_81408158(arg0);
}
break;
}
func_8001BE34(&arg0->unk_10->unk_000, arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->prim_a);
}
void func_84332C90(unk_D_8140E720* arg0) {
func_8140D530(arg0, func_8140C058(arg0));
func_8140BC20(arg0, 0);
func_814081BC(arg0);
}
void func_84332CD0(unk_D_8140E720* arg0) {
switch (arg0->unk_B2) {
case 1:
func_84332C90(arg0);
break;
case 2:
func_8140BC5C(arg0, arg0->unk_CD, arg0->unk_AA);
break;
case 3:
func_8140BDD0(arg0);
break;
case 4:
if (func_8140BC2C(arg0, 0, arg0->unk_AA) != 0) {
func_81408150(arg0);
}
break;
}
}
void func_84332D68(unk_D_8140E720* arg0) {
func_8140D530(arg0, func_8140C058(arg0));
func_8140BC20(arg0, arg0->unk_CD);
func_814081BC(arg0);
}
void func_84332DB0(unk_D_8140E720* arg0) {
switch (arg0->unk_B2) {
case 1:
func_84332D68(arg0);
break;
case 2:
func_8140BDD0(arg0);
break;
case 3:
if (func_8140BC2C(arg0, 0, arg0->unk_AA) != 0) {
func_81408150(arg0);
}
break;
}
}
void func_84332E2C(unk_D_8140E720* arg0) {
func_8140D530(arg0, func_8140C058(arg0));
func_8140BC20(arg0, 0);
func_814081BC(arg0);
}
void func_84332E6C(unk_D_8140E720* arg0) {
switch (arg0->unk_B2) {
case 1:
func_84332E2C(arg0);
break;
case 2:
func_8140BC5C(arg0, arg0->unk_CD, arg0->unk_AA);
break;
case 3:
if (func_8140BDAC(arg0) != 0) {
func_81408150(arg0);
}
break;
}
}
void func_84332EE8(unk_D_8140E720* arg0) {
func_8140D530(arg0, func_8140C058(arg0));
func_8140BC20(arg0, arg0->unk_CD);
func_814081BC(arg0);
}
void func_84332F30(unk_D_8140E720* arg0) {
switch (arg0->unk_B2) {
case 1:
func_84332EE8(arg0);
break;
case 2:
if (func_8140BDAC(arg0) != 0) {
func_81408158(arg0);
}
break;
}
}
void func_84332F90(unk_D_8140E720* arg0) {
func_8140D530(arg0, func_8140C058(arg0));
func_8140BC20(arg0, 0xFF);
func_814081BC(arg0);
}
void func_84332FD0(unk_D_8140E720* arg0) {
switch (arg0->unk_B2) {
case 1:
func_84332F90(arg0);
break;
case 2:
func_8140BDD0(arg0);
break;
case 3:
func_8140D7C8(arg0, arg0->unk_CD, arg0->unk_AA);
if (func_8140BC2C(arg0, 0, arg0->unk_AA) != 0) {
func_81408150(arg0);
}
break;
}
}
void func_84333060(unk_D_8140E720* arg0) {
func_8140D530(arg0, func_8140C058(arg0));
func_8140BC20(arg0, 0);
func_814081BC(arg0);
}
void func_843330A0(unk_D_8140E720* arg0) {
switch (arg0->unk_B2) {
case 1:
func_84333060(arg0);
break;
case 2:
func_8140D7C8(arg0, arg0->unk_CD, arg0->unk_AA);
func_8140BC5C(arg0, 0xFF, arg0->unk_AA);
break;
case 3:
if (func_8140BDAC(arg0) != 0) {
func_81408150(arg0);
}
break;
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,57 +1,514 @@
#include "global.h"
#include "fragment62.h"
#include "src/math_util.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433CC10.s")
void func_8433CC10(unk_D_8140E720* arg0) {
UNUSED s32 pad;
Vec3s sp2C;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433CCFC.s")
func_8140C038(arg0);
func_8140B938(arg0, 0.05f);
sp2C.x = func_81400A78(0x8000) - 0x4000;
sp2C.y = func_81400A78(0x10000);
sp2C.z = func_81400A78(0x800) - 0x400;
func_8140A4F0(arg0, sp2C);
func_8140910C(arg0, func_81400A78(0xA));
func_8140A578(arg0, 0x4000);
func_8140D5A0(arg0, func_8140C058(arg0));
func_814081BC(arg0);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433CDAC.s")
void func_8433CCFC(unk_D_8140E720* arg0) {
switch (arg0->unk_B2) {
case 1:
func_8433CC10(arg0);
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433CEA4.s")
case 2:
func_8140BDD0(arg0);
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433CEFC.s")
case 3:
func_8140BC5C(arg0, 0, 0x40);
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433CFA8.s")
case 4:
func_81408158(arg0);
break;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433D070.s")
func_8140B98C(arg0, 1.0f, 0.05f);
func_81409DAC(arg0);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433D154.s")
void func_8433CDAC(unk_D_8140E720* arg0) {
f32 sp1C = 0.0f;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433D224.s")
switch (func_843081BC(arg0->unk_10)) {
case 0x6:
sp1C = 15.0f;
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433D308.s")
case 0x73:
sp1C = 15.0f;
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433D3B0.s")
case 0x87:
sp1C = 10.0f;
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433D460.s")
case 0x95:
sp1C = 10.0f;
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433D560.s")
case 0x1F:
sp1C = 10.0f;
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433D604.s")
case 0x22:
sp1C = 10.0f;
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433D6EC.s")
case 0x71:
sp1C = 10.0f;
break;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433D790.s")
func_81408F38(arg0, sp1C);
func_81408FAC(arg0, 5.0f);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433D868.s")
void func_8433CEA4(unk_D_8140E720* arg0) {
func_8140B938(arg0, 0.1f);
func_8140AD8C(arg0, 0.0f);
func_8433CDAC(arg0);
func_8140D5A0(arg0, 0x17);
func_814081BC(arg0);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433D90C.s")
void func_8433CEFC(unk_D_8140E720* arg0) {
switch (arg0->unk_B2) {
case 1:
func_8433CEA4(arg0);
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433DA54.s")
case 2:
func_8140B98C(arg0, 4.0f, 0.5f);
func_8140BDD0(arg0);
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433DAF8.s")
case 3:
func_8140B98C(arg0, 0.1f, 0.5f);
func_8140BC5C(arg0, 0, 0x20);
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433DBDC.s")
case 4:
func_81408158(arg0);
break;
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433DC80.s")
void func_8433CFA8(unk_D_8140E720* arg0) {
s16 sp2E = func_8140C038(arg0);
Vec3s sp28;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433DECC.s")
func_81408CA0(arg0, 15.0f);
func_8140B938(arg0, 0.1f);
func_8140AD8C(arg0, 0.0f);
sp28.x = 0x4000 - func_81400A78(0x8000);
sp28.y = sp2E << 0xD;
sp28.z = 0;
func_8140A4F0(arg0, sp28);
func_8140D5A0(arg0, func_8140C058(arg0));
func_81408348(arg0);
func_814081BC(arg0);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433DFF4.s")
void func_8433D070(unk_D_8140E720* arg0) {
switch (arg0->unk_B2) {
case 1:
func_8433CFA8(arg0);
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433E124.s")
case 2:
if (func_8140826C(arg0, func_8140C038(arg0)) != 0) {
func_81408328(arg0);
}
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433E33C.s")
case 3:
func_8140B98C(arg0, 3.0f, 0.1f);
func_8140BDD0(arg0);
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433E46C.s")
case 4:
func_8140BC5C(arg0, 0, 0x40);
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433E524.s")
case 5:
func_81408158(arg0);
break;
}
func_8140A594(arg0, 0x400);
func_81409D0C(arg0);
}
void func_8433D154(unk_D_8140E720* arg0) {
s16 sp2E = func_8140C038(arg0);
Vec3s sp28;
func_81408CA0(arg0, 15.0f);
func_8140B938(arg0, 0.1f);
func_8140AD8C(arg0, MathUtil_Random_ZeroOne());
sp28.x = 0x3000 - func_81400A78(0x6000);
sp28.y = sp2E << 0xD;
sp28.z = 0;
func_8140A4F0(arg0, sp28);
func_8140D5A0(arg0, func_8140C058(arg0));
func_81408348(arg0);
func_814081BC(arg0);
}
void func_8433D224(unk_D_8140E720* arg0) {
switch (arg0->unk_B2) {
case 1:
func_8433D154(arg0);
break;
case 2:
if (func_8140826C(arg0, func_8140C038(arg0)) != 0) {
func_81408328(arg0);
}
break;
case 3:
func_8140B98C(arg0, 3.5f, 0.1f);
func_8140BDD0(arg0);
break;
case 4:
func_8140BC5C(arg0, 0, 0x40);
break;
case 5:
func_81408158(arg0);
break;
}
func_8140A594(arg0, 0x400);
func_81409D0C(arg0);
}
void func_8433D308(unk_D_8140E720* arg0) {
Vec3s sp28;
func_8140C038(arg0);
func_8140B938(arg0, 0.5f);
func_8140AD8C(arg0, 0.0f);
sp28.x = -0x4000;
sp28.y = 0;
sp28.z = (func_81400A78(0x10) << 0xB) - 0x4000;
func_8140A4F0(arg0, sp28);
func_8140D5A0(arg0, func_8140C058(arg0));
func_814081BC(arg0);
}
void func_8433D3B0(unk_D_8140E720* arg0) {
switch (arg0->unk_B2) {
case 1:
func_8433D308(arg0);
break;
case 2:
func_8140B98C(arg0, 2.0f, 0.2f);
func_8140BDD0(arg0);
break;
case 3:
func_8140BC5C(arg0, 0, 0x40);
break;
case 4:
func_81408158(arg0);
break;
}
func_81409DAC(arg0);
}
void func_8433D460(unk_D_8140E720* arg0) {
UNUSED s32 pad;
Vec3s sp2C;
func_8140C038(arg0);
func_8140B938(arg0, 0.5f);
func_8140B95C(arg0, (MathUtil_Random_ZeroOne() * 5.0f) + 1.0f);
func_8140B974(arg0, 0.2f);
func_8140AD8C(arg0, MathUtil_Random_ZeroOne() * 4.0f);
sp2C.x = -0x4000;
sp2C.y = 0;
sp2C.z = (func_81400A78(0x10) << 0xB) - 0x4000;
func_8140A4F0(arg0, sp2C);
func_8140D5A0(arg0, func_8140C058(arg0));
func_814081BC(arg0);
}
void func_8433D560(unk_D_8140E720* arg0) {
switch (arg0->unk_B2) {
case 1:
func_8433D460(arg0);
break;
case 2:
func_8140BA1C(arg0);
func_8140BDD0(arg0);
break;
case 3:
func_8140BC5C(arg0, 0, 0x40);
break;
case 4:
func_81408158(arg0);
break;
}
func_81409DAC(arg0);
}
void func_8433D604(unk_D_8140E720* arg0) {
UNUSED s32 pad;
Vec3s sp2C;
UNUSED s32 pad2[2];
func_8140C038(arg0);
func_8140B938(arg0, 0.1f);
func_8140B95C(arg0, 1.4f);
func_8140B974(arg0, 0.1f);
MathUtil_Random_ZeroOne();
func_8140AD8C(arg0, 0.0f);
sp2C.x = -0x4000;
sp2C.y = 0;
sp2C.z = (func_81400A78(0x10) << 0xB) - 0x4000;
func_8140A4F0(arg0, sp2C);
func_8140910C(arg0, 150.0f);
func_8140A334(arg0);
func_8140D5A0(arg0, func_8140C058(arg0));
func_814081BC(arg0);
}
void func_8433D6EC(unk_D_8140E720* arg0) {
switch (arg0->unk_B2) {
case 1:
func_8433D604(arg0);
break;
case 2:
func_8140BDD0(arg0);
break;
case 3:
func_8140BC5C(arg0, 0, 0x10);
break;
case 4:
func_81408158(arg0);
break;
}
func_8140BA1C(arg0);
func_81409DAC(arg0);
}
void func_8433D790(unk_D_8140E720* arg0) {
UNUSED s32 pad;
Vec3s sp2C;
UNUSED s32 pad2[2];
func_8140C038(arg0);
func_8140B938(arg0, 0.1f);
func_8140B95C(arg0, 1.4f);
func_8140B974(arg0, 0.1f);
MathUtil_Random_ZeroOne();
func_8140AD8C(arg0, 0.0f);
sp2C.x = -0x4000;
sp2C.y = 0;
sp2C.z = 0;
func_8140A4F0(arg0, sp2C);
func_8140910C(arg0, 150.0f);
func_8140A334(arg0);
func_8140D5A0(arg0, func_8140C058(arg0));
func_814081BC(arg0);
}
void func_8433D868(unk_D_8140E720* arg0) {
switch (arg0->unk_B2) {
case 1:
func_8433D790(arg0);
break;
case 2:
func_8140BDD0(arg0);
break;
case 3:
func_8140BC5C(arg0, 0, 0x10);
break;
case 4:
func_81408158(arg0);
break;
}
func_8140BA1C(arg0);
func_81409DAC(arg0);
}
void func_8433D90C(unk_D_8140E720* arg0) {
UNUSED s32 pad;
Vec3f sp30;
Vec3s sp28;
func_8140C038(arg0);
func_8140B938(arg0, 0.1f);
func_8140B95C(arg0, 2.0f);
func_8140B974(arg0, 0.1f);
sp28.x = 0;
sp28.y = 0;
sp28.z = -0x8000;
func_8140A4F0(arg0, sp28);
sp30.x = func_81400A78(0x64) + -50.0f;
sp30.y = 200.0f;
sp30.z = func_81400A78(0x64) + -50.0f;
func_81408D78(arg0, sp30);
func_8140D5A0(arg0, func_8140C058(arg0));
func_814081BC(arg0);
}
void func_8433DA54(unk_D_8140E720* arg0) {
switch (arg0->unk_B2) {
case 1:
func_8433D90C(arg0);
break;
case 2:
func_8140BDD0(arg0);
break;
case 3:
func_8140BC5C(arg0, 0, 0x40);
break;
case 4:
func_81408158(arg0);
break;
}
func_8140BA1C(arg0);
func_81409DAC(arg0);
}
void func_8433DAF8(unk_D_8140E720* arg0) {
UNUSED s32 pad[4];
Vec3s sp28;
func_8140C038(arg0);
func_8140B938(arg0, 0.1f);
func_8140B95C(arg0, 2.0f);
func_8140B974(arg0, 0.1f);
sp28.x = -0x1000 - func_81400A78(0x6000);
sp28.y = func_81400A78(0x10000);
sp28.z = func_81400A78(0x800) - 0x400;
func_8140A4F0(arg0, sp28);
func_8140910C(arg0, 200.0f);
func_8140A578(arg0, -0x4000);
func_8140D5A0(arg0, func_8140C058(arg0));
func_814081BC(arg0);
}
void func_8433DBDC(unk_D_8140E720* arg0) {
switch (arg0->unk_B2) {
case 1:
func_8433DAF8(arg0);
break;
case 2:
func_8140BDD0(arg0);
break;
case 3:
func_8140BC5C(arg0, 0, 0x40);
break;
case 4:
func_81408158(arg0);
break;
}
func_8140BA1C(arg0);
func_81409DAC(arg0);
}
void func_8433DC80(void) {
func_8432F8E8(0x64, 1);
func_8432ED0C(0, 0x20, 3);
func_8432ECA0(0, 3, 8, func_8433CCFC, &D_843861D0[0x11], 8, 4, 2, 0, 0x25, 0);
func_8432EB2C(0x19);
func_8432EC28(0, func_8433CEFC, &D_843861D0[0x15], 0xE, 1, 2, 0, 0x25, 0);
func_8432EC28(0, func_8433CEFC, &D_843861D0[0x16], 0xE, 1, 2, 0, 0x25, 0);
func_8432EE5C(8, 2, 8, 0xA, 0xFF);
func_8432ECA0(8, 4, 2, func_8433D070, &D_843861D0[0xF], 0x14, 4, 7, 0, 0x25, 0);
func_8432ECA0(8, 4, 2, func_8433D224, &D_843861D0[0xF], 0x14, 4, 7, 0, 0x25, 0);
func_8432ECA0(8, 4, 2, func_8433D560, &D_843861D0[0x13], 0x14, 4, 7, 0, 0x25, 0);
func_8432ECA0(8, 4, 2, func_8433D3B0, &D_843861D0[0x13], 0x14, 4, 7, 0, 0x25, 0);
}
void func_8433DECC(void) {
func_8432EE5C(0x2C, 4, 0x10, 0xA, 0xFF);
func_8432ED0C(0x30, 0x20, 0xA);
func_8432ECA0(0, 8, 5, func_8433D3B0, &D_843861D0[0x12], 8, 3, 3, 0, 0x25, 0);
func_8432ECA0(0, 4, 2, func_8433D070, &D_843861D0[0xF], 0x14, 4, 3, 0, 0x25, 0);
func_8432ECA0(0, 4, 2, func_8433D224, &D_843861D0[0xF], 0x14, 4, 3, 0, 0x25, 0);
}
void func_8433DFF4(void) {
func_8432EE5C(0, 4, 8, 0xA, 0xC8);
func_8432ED0C(0x30, 0x20, 0xA);
func_8432ECA0(0, 8, 5, func_8433D3B0, &D_843861D0[0x12], 8, 3, 3, 0, 0x25, 0);
func_8432ECA0(0, 4, 2, func_8433D070, &D_843861D0[0xF], 0x14, 4, 3, 0, 0x25, 0);
func_8432ECA0(0, 4, 2, func_8433D224, &D_843861D0[0xF], 0x14, 4, 3, 0, 0x25, 0);
func_8434E6F4();
}
void func_8433E124(void) {
func_8432F8E8(0x64, 1);
func_8432ED0C(0, 0x10, 3);
func_8432ECA0(0, 8, 3, func_8433D6EC, &D_843861D0[0x14], 2, 1, 2, 0, 0x25, 0);
func_8432ECA0(0, 5, 5, func_8433D6EC, &D_843861D0[0x13], 2, 1, 2, 0, 0x25, 0);
func_8432EB2C(0x23);
func_8432EDE8(8, 4, 8, 0xA);
func_8432ECA0(0, 4, 2, func_8433D560, &D_843861D0[0x13], 0x14, 4, 2, 0, 0x25, 0);
func_8432ECA0(0, 5, 2, func_8433D3B0, &D_843861D0[0x13], 0x14, 4, 2, 0, 0x25, 0);
func_8432ECA0(0, 6, 2, func_8433D070, &D_843861D0[0xF], 0x14, 2, 1, 0, 0x25, 0);
func_8432ECA0(0, 4, 2, func_8433D224, &D_843861D0[0xF], 0x14, 2, 1, 0, 0x25, 0);
}
void func_8433E33C(void) {
func_8432EDE8(0x22, 4, 0x10, 0xA);
func_8432ED0C(0, 0x20, 3);
func_8432ED0C(0x30, 0x20, 0xA);
func_8432ECA0(0, 0xA, 2, func_8433DA54, &D_843861D0[0x10], 0xC, 1, 3, 0, 0x25, 0);
func_8432ECA0(0, 5, 3, func_8433DBDC, &D_843861D0[0x10], 0xC, 2, 3, 0, 0x25, 0);
func_8432ECA0(0, 8, 2, func_8433D6EC, &D_843861D0[0x13], 0xC, 3, 3, 0, 0x25, 0);
}
void func_8433E46C(void) {
func_8432ECA0(0, 4, 5, func_8433CCFC, &D_843861D0[0x11], 8, 4, 0x10, D_843902E2, 0x25, 0);
func_8432ECA0(0, 1, 0x24, func_8435375C, &D_843861D0[0x15], 0, 1, 0x11, D_843902E2, 0, 0);
}
void func_8433E524(void) {
func_8432ECA0(8, 4, 2, func_8433D560, &D_843861D0[0x13], 0x14, 4, 7, 0, 0x2C, 0);
func_8432ECA0(8, 4, 2, func_8433D3B0, &D_843861D0[0x13], 0x14, 3, 7, 0, 0xF, 0);
func_8432EC28(8, func_8433D070, &D_843861D0[0xF], 0x14, 1, 7, 0, 0x2C, 0);
func_8432EC28(8, func_8433D224, &D_843861D0[0xF], 0x14, 1, 7, 0, 0xF, 0);
}

View File

@ -1,49 +1,473 @@
#include "global.h"
#include "fragment62.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433E650.s")
void func_8433E650(unk_D_8140E720* arg0) {
Vec3s sp28;
s16 sp26 = func_8140C058(arg0);
s16 sp24 = func_8140C038(arg0);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433E758.s")
func_81408CA0(arg0, 2.5f);
func_8140B938(arg0, 0.065789476f);
func_8140AD8C(arg0, 0.0f);
sp28.x = func_81400B00(0x5000);
sp28.y = sp24 * (0x10000 / arg0->unk_AA);
sp28.z = 0;
func_8140A4F0(arg0, sp28);
func_8140D530(arg0, sp26);
func_8140BC20(arg0, 0x80);
func_81408348(arg0);
func_814081BC(arg0);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433E840.s")
void func_8433E758(unk_D_8140E720* arg0) {
switch (arg0->unk_B2) {
case 1:
func_8433E650(arg0);
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433E8A8.s")
case 2:
if (func_8140826C(arg0, func_8140C038(arg0)) != 0) {
func_81408328(arg0);
}
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433E950.s")
case 3:
func_8140B98C(arg0, 1.3157895f, 0.16447368f);
func_8140BDD0(arg0);
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433EA04.s")
case 4:
func_8140BC5C(arg0, 0, 0x10);
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433EB0C.s")
case 5:
func_81408158(arg0);
break;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433EB9C.s")
func_8140A594(arg0, 0x400);
func_81409D0C(arg0);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433EC40.s")
void func_8433E840(unk_D_8140E720* arg0) {
s16 sp26 = func_8140C058(arg0);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433ED3C.s")
func_8140B938(arg0, 0.65789473f);
func_8140D5A0(arg0, sp26);
func_814083E8(arg0, 2);
func_8140BC20(arg0, 0xC8);
func_814081BC(arg0);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433EE10.s")
void func_8433E8A8(unk_D_8140E720* arg0) {
switch (arg0->unk_B2) {
case 1:
func_8433E840(arg0);
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433F06C.s")
case 2:
func_8140B98C(arg0, 6.5789475f, 0.32894737f);
func_8140826C(arg0, 0xF);
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433F208.s")
case 3:
func_8140BDD0(arg0);
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433F270.s")
case 4:
func_8140BC5C(arg0, 0, 0x20);
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433F3B4.s")
case 5:
func_81408158(arg0);
break;
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433F414.s")
void func_8433E950(unk_D_8140E720* arg0) {
s16 sp2E = func_8140C058(arg0);
s16 sp2C = func_8140C038(arg0);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433F4CC.s")
func_8140B938(arg0, 0.05f);
func_8140A270(arg0, func_81400A78(0x10000), func_81400A78(0x10000), 0);
func_8140AD8C(arg0, 1.2f);
func_8140D5A0(arg0, sp2E);
func_8140BCA8(arg0, sp2C * 1);
func_81408348(arg0);
func_814081BC(arg0);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433F4EC.s")
void func_8433EA04(unk_D_8140E720* arg0) {
switch (arg0->unk_B2) {
case 1:
func_8433E950(arg0);
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433F5B4.s")
case 2:
if (func_8140BDD0(arg0) != 0) {
func_81408328(arg0);
}
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433F5D4.s")
case 3:
if (func_8140B98C(arg0, 0.15f, 0.025f) != 0) {
func_814081BC(arg0);
}
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433F758.s")
case 4:
if (func_8140B98C(arg0, 0.0f, 0.04f) != 0) {
func_814081BC(arg0);
}
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433F974.s")
case 5:
func_81408158(arg0);
break;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433FAF8.s")
func_8140ADBC(arg0, 0.2, 0.2f);
func_81409D0C(arg0);
func_81408E90(arg0, -1.0f);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433FD30.s")
void func_8433EB0C(unk_D_8140E720* arg0) {
UNUSED s16 pad;
s16 sp2C;
func_8140C038(arg0);
sp2C = func_8140C058(arg0);
func_8140B938(arg0, 0.175f);
func_8140A270(arg0, func_81400A78(0x10000), func_81400A78(0x10000), 0);
func_8140D5A0(arg0, sp2C);
func_8140BC20(arg0, 0x80);
func_814081BC(arg0);
}
void func_8433EB9C(unk_D_8140E720* arg0) {
switch (arg0->unk_B2) {
case 1:
func_8433EB0C(arg0);
break;
case 2:
func_8140B98C(arg0, 0.1f, 0.01f);
func_8140BC2C(arg0, 0, 8);
func_81409D0C(arg0);
func_8140BDD0(arg0);
break;
case 3:
func_81408158(arg0);
break;
}
}
void func_8433EC40(unk_D_8140E720* arg0) {
s16 sp2E;
s16 sp2C;
s16 temp_v0;
Vec3s sp24;
temp_v0 = func_8140C038(arg0);
sp2E = temp_v0 / 8;
sp2C = temp_v0 % 8;
func_8140B938(arg0, 0.5f);
sp24.x = 0x6000 - (sp2E * 0xC00);
sp24.y = (sp2C << 0xC) + 0xB000;
sp24.z = 0;
func_8140A4F0(arg0, sp24);
func_8140BAC8(arg0, 0xC8, 0xFF, 0xFF);
func_8140BC20(arg0, 0x60);
func_8140BCA8(arg0, sp2E);
func_81408348(arg0);
func_814081BC(arg0);
}
void func_8433ED3C(unk_D_8140E720* arg0) {
switch (arg0->unk_B2) {
case 1:
func_8433EC40(arg0);
break;
case 2:
if (func_8140BDD0(arg0) != 0) {
func_8140BCA8(arg0, 0xA);
func_81408328(arg0);
}
break;
case 3:
func_8140A594(arg0, 0x200);
func_8140B98C(arg0, 2.0f, 0.01f);
func_8140BDD0(arg0);
break;
case 4:
func_8140BC5C(arg0, 0, 0x10);
break;
case 5:
func_81408150(arg0);
break;
}
}
void func_8433EE10(unk_D_8140E720* arg0) {
s16 sp36;
s16 sp34;
s16 sp32 = func_8140C038(arg0);
s16 sp30 = func_8140C058(arg0);
s16 sp2E = func_8140C040(arg0);
func_8140A270(arg0, func_81400A78(0x10000), func_81400A78(0x10000), 0);
func_8140B938(arg0, 0.01f);
func_8140D5A0(arg0, sp30);
switch (sp2E) {
case 0:
func_8140BF4C(arg0, func_81400ADC(0x14, 0x14));
func_8140BFEC(arg0, 0);
sp36 = func_81400B4C(0x200, 0x200);
sp34 = func_81400B4C(0x200, 0x200);
func_8140BE14(arg0, 8);
break;
case 1:
func_8140BF4C(arg0, func_81400ADC(0x28, 0x14));
func_8140BFEC(arg0, 1);
sp36 = func_81400B4C(0x200, 0x200);
sp34 = func_81400B4C(0x200, 0x200);
func_8140BE14(arg0, 0x10);
break;
case 2:
func_8140BF4C(arg0, func_81400ADC(0x1E, 0x14));
func_8140BFEC(arg0, 2);
sp36 = func_81400B4C(0x200, 0x200);
sp34 = func_81400B4C(0x200, 0x200);
func_8140BE14(arg0, 0xA);
break;
case 3:
func_8140BF4C(arg0, 0x1E - sp32);
func_8140BFEC(arg0, 2);
sp36 = func_81400B4C(0x200, 0x200);
sp34 = func_81400B4C(0x200, 0x200);
func_8140BE14(arg0, 0xA);
break;
}
func_8140A3C4(arg0, sp36);
func_8140A3D8(arg0, sp34);
func_8140BCA8(arg0, sp32 * 2);
func_81408348(arg0);
func_814081BC(arg0);
}
void func_8433F06C(unk_D_8140E720* arg0) {
func_8140C040(arg0);
switch (arg0->unk_B2) {
case 1:
func_8433EE10(arg0);
break;
case 2:
if (func_8140BDD0(arg0) != 0) {
func_81408328(arg0);
func_81408A68(arg0);
}
break;
case 3:
if (func_8140B9D0(arg0, 0.3f, 0.05f) != 0) {}
break;
case 4:
if (func_8140826C(arg0, arg0->unk_A8) != 0) {
func_81408A68(arg0);
}
break;
case 5:
func_8140B9D0(arg0, 0.0f, 0.05f);
break;
case 6:
func_81408150(arg0);
break;
}
if (func_81408368(arg0) != 0) {
switch (arg0->unk_B8) {
case 1:
func_8140A4B4(arg0);
func_81408CD0(arg0, arg0->unk_AE);
break;
case 2:
func_8140A4B4(arg0);
func_8140BF60(arg0, 0, arg0->unk_B0);
func_81408CD0(arg0, arg0->unk_AE);
break;
}
}
func_81408E90(arg0, 10.0f);
}
void func_8433F208(unk_D_8140E720* arg0) {
s16 sp26 = func_8140C058(arg0);
func_8140B938(arg0, 0.2f);
func_81408E90(arg0, 5.0f);
func_8140D5A0(arg0, sp26);
func_8140BC20(arg0, 0x40);
func_814081BC(arg0);
}
void func_8433F270(unk_D_8140E720* arg0) {
switch (arg0->unk_B2) {
case 1:
func_8433F208(arg0);
break;
case 2:
func_8140B98C(arg0, 4.0f, 0.1f);
func_8140BC2C(arg0, 0xC8, 8);
func_8140BDD0(arg0);
break;
case 3:
func_8140B98C(arg0, 0.25f, 0.5f);
func_8432D8E8(arg0, func_8435226C, &D_843861D0[0x42], 6, 0x18, 7);
if (func_8140826C(arg0, 6) != 0) {
func_8140BF04(arg0, 9);
}
break;
case 4:
func_814099E0(arg0, 15.0f);
func_8140826C(arg0, 0xA);
func_8432D8E8(arg0, func_8435226C, &D_843861D0[0x42], 6, 0x18, 7);
break;
case 5:
func_81408158(arg0);
break;
}
}
s16 func_8433F3B4(void) {
s16 var_v1 = 0x3B;
switch (D_800AE540.unk_0000) {
case 0:
var_v1 = 0xD;
break;
case 1:
var_v1 = 0x3C;
break;
case 2:
var_v1 = 0x3C;
break;
case 3:
var_v1 = 3;
break;
case 4:
var_v1 = 3;
break;
case 5:
var_v1 = 3;
break;
}
return var_v1;
}
void func_8433F414(void) {
s16 sp3E = func_8433F3B4();
func_8432ECA0(0, 1, 0x1E, func_8433EB9C, &D_843861D0[0x22], 0x10, 1, 0x1E, 0, sp3E, 0);
func_8432ECA0(0, 1, 0x1E, func_8433EA04, &D_843861D0[0x42], 0x10, 2, 0x1E, 0, sp3E, 0);
}
void func_8433F4CC(void) {
func_8433F414();
}
void func_8433F4EC(void) {
func_8432ECA0(0xB, 1, 5, func_8435226C, &D_843861D0[0x42], 0, 5, 0x1E, 0, func_8433F3B4(), 8);
func_8432EFB4(0xA, 2, 0x16, 7, 0xFF);
func_8432EB20(0x10);
func_8432EC28(0, func_8433ED3C, &D_843861D0[0x1C], 0, 0x40, 0x1E, 0, 0xA, 0);
}
void func_8433F5B4(void) {
func_8433F4EC();
}
void func_8433F5D4(void) {
UNUSED s32 pad;
func_8432EDE8(0, 0, 0x10, 7);
func_8432F2C8(0, 0xA, 0xFF, 0xFF, 0xFF);
func_8432F7A0(0, 0xFF, 0xFF, 0xFF);
func_8432F2C8(0x14, 0xA, 0xFF, 0, 8);
func_8432EC28(0, func_8433E8A8, &D_843861D0[0x21], 4, 1, 2, 0, 0x50, 0);
func_8432EC28(0, func_8433E8A8, &D_843861D0[0x23], 4, 1, 2, 0, 0x50, 0);
func_8432EC28(0, func_8433E8A8, &D_843861D0[0x17], 4, 1, 2, 0, 0x50, 0);
func_8432ECA0(0, 1, 4, func_8433E758, &D_843861D0[0x1C], 5, 0x10, 7, 0, 0x39, 0);
func_8432ED0C(0x32, 0x10, 0xA);
}
void func_8433F758(void) {
func_8432ED0C(0, 8, 6);
func_8432ECA0(0, 4, 5, func_8433F06C, &D_843861D0[0x44], 0, 4, 9, 0, 0x3C, 1);
func_8432ECA0(0, 4, 5, func_8433F06C, &D_843861D0[0x44], 0, 4, 9, 0, 0x3C, 1);
func_8432ECA0(0x18, 1, 4, func_8433F06C, &D_843861D0[0x44], 0, 8, 9, 0, 0x3C, 2);
func_8432ECA0(0x1E, 1, 8, func_8433F06C, &D_843861D0[0x44], 0, 8, 9, 0, 0x3C, 3);
func_8432ECA0(0x1E, 1, 8, func_8433F06C, &D_843861D0[0x44], 0, 8, 9, 0, 0x3C, 3);
func_8432F2C8(0x26, 0xA, 0, 0xFF, 4);
func_8432EC28(0x2D, func_8433F270, &D_843861D0[0x38], 0x1A, 1, 2, 0, 0x3C, 0);
func_8432F7A0(0x48, 0x40, 0, 0xFF);
func_8432ED0C(0x55, 6, 0xA);
}
void func_8433F974(void) {
UNUSED s32 pad;
func_8432ED0C(0, 8, 6);
func_8432ECA0(0, 1, 4, func_8433F06C, &D_843861D0[0x44], 0, 8, 9, 0, 0x3C, 2);
func_8432ECA0(6, 1, 8, func_8433F06C, &D_843861D0[0x44], 0, 8, 9, 0, 0x3C, 3);
func_8432ECA0(6, 1, 8, func_8433F06C, &D_843861D0[0x44], 0, 8, 9, 0, 0x3C, 3);
func_8432F2C8(0xE, 0xA, 0, 0xFF, 4);
func_8432EC28(0x14, func_8433F270, &D_843861D0[0x38], 0x1A, 1, 2, 0, 0x3C, 0);
func_8432F7A0(0x2D, 0x40, 0, 0xFF);
func_8432ED0C(0x32, 6, 0xA);
}
void func_8433FAF8(void) {
func_8432ED0C(0, 8, 6);
func_8432ECA0(0, 4, 5, func_8433F06C, &D_843861D0[0x44], 0, 4, 9, 0, 0x3C, 1);
func_8432ECA0(0, 4, 5, func_8433F06C, &D_843861D0[0x44], 0, 4, 9, 0, 0x3C, 1);
func_8432ECA0(0x18, 1, 4, func_8433F06C, &D_843861D0[0x44], 0, 8, 9, 0, 0x3C, 2);
func_8432ECA0(0x1E, 1, 8, func_8433F06C, &D_843861D0[0x44], 0, 8, 9, 0, 0x3C, 3);
func_8432ECA0(0x1E, 1, 8, func_8433F06C, &D_843861D0[0x44], 0, 8, 9, 0, 0x3C, 3);
func_8432F2C8(0x26, 0xA, 0, 0xFF, 8);
func_8432EC28(0x28, func_8433F270, &D_843861D0[0x38], 0x18, 1, 2, 0, 0x3C, 0);
func_8432ED74(0x3C, 0, 0x40, 0xA, 0xFF);
func_8432F7A0(0x40, 0xFF, 0, 0xFF);
func_8432EB20(0x50);
func_8433F5D4();
}
void func_8433FD30(void) {
func_8432ED0C(0, 0xFF, 0);
func_8432F2C8(0x14, 0, 0, 0xFF, 0x10);
}

View File

@ -1,27 +1,338 @@
#include "global.h"
#include "fragment62.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32A640/func_8433FD80.s")
void func_8433FD80(unk_D_8140E720* arg0) {
func_8140BAC8(arg0, 0xFF, 0xFF, 0xFF);
func_8140BC20(arg0, 0xFF);
func_814081BC(arg0);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32A640/func_8433FDC0.s")
void func_8433FDC0(unk_D_8140E720* arg0) {
switch (arg0->unk_B2) {
case 0:
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32A640/func_8433FE80.s")
case 1:
func_8433FD80(arg0);
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32A640/func_8433FF44.s")
case 2:
func_8140B98C(arg0, 3.0f, 0.025f);
func_8140826C(arg0, 0x12C);
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32A640/func_843400BC.s")
case 3:
if (func_8140BC2C(arg0, 0x20, 0x20) != 0) {
func_814081BC(arg0);
}
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32A640/func_8434016C.s")
case 4:
func_81408158(arg0);
break;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32A640/func_84340230.s")
func_8140B7C8(arg0, 32.0f, 0x400);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32A640/func_843403D8.s")
void func_8433FE80(unk_D_8140E720* arg0) {
s16 sp26 = func_8140C038(arg0);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32A640/func_84340690.s")
func_8140B938(arg0, 0.2f);
func_8140AF24(arg0, 1.0f);
func_8140A2A4(arg0, func_81400A78(0x10000));
func_8140A2CC(arg0, func_81400A78(0x10000));
func_8140A3D8(arg0, func_81400A78(0x10000));
func_8140AD8C(arg0, 5.0f);
func_8140BCA8(arg0, sp26 * 4);
func_81408348(arg0);
func_814081BC(arg0);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32A640/func_84340940.s")
void func_8433FF44(unk_D_8140E720* arg0) {
switch (arg0->unk_B2) {
case 1:
func_8433FE80(arg0);
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32A640/func_84340ACC.s")
case 2:
if (func_8140BDD0(arg0) != 0) {
func_81408328(arg0);
func_81408A1C(arg0);
}
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32A640/func_84340CB0.s")
case 3:
if (func_8140826C(arg0, 0x32) != 0) {
func_81408A68(arg0);
}
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32A640/func_84340D14.s")
case 4:
if (func_8140826C(arg0, 0x14) != 0) {}
break;
case 5:
func_81408158(arg0);
break;
}
switch (arg0->unk_B8) {
case 1:
func_8140ADBC(arg0, 50.0f, 0.5f);
func_814099E0(arg0, 1.0f);
func_8140B7C8(arg0, arg0->unk_74, 0x1000);
func_8140A578(arg0, 0x2000);
func_8140A5B0(arg0, 0x3000);
break;
case 2:
func_8140ADBC(arg0, 0.0f, 1.0f);
func_814099E0(arg0, -2.0f);
func_8140B7C8(arg0, arg0->unk_74, 0x1000);
func_8140A578(arg0, 0x2000);
func_8140A5B0(arg0, 0x3000);
break;
}
}
void func_843400BC(unk_D_8140E720* arg0) {
s16 sp2E = func_8140C038(arg0);
func_8140B938(arg0, 0.5f);
func_8140AD8C(arg0, 10.0f);
func_8140A52C(arg0, func_81400B00(0x1000), func_81400B00(0x1000), 0);
func_8140BCA8(arg0, sp2E * 4);
func_8140D530(arg0, 0x24);
func_8140D568(arg0, 0x24);
func_81408348(arg0);
func_814081BC(arg0);
}
void func_8434016C(unk_D_8140E720* arg0) {
switch (arg0->unk_B2) {
case 1:
func_843400BC(arg0);
break;
case 2:
if (func_8140BDD0(arg0) != 0) {
func_81408328(arg0);
}
break;
case 3:
func_8140826C(arg0, 0x46);
break;
case 4:
func_81408158(arg0);
break;
}
if (func_81408368(arg0) != 0) {
func_81409D0C(arg0);
func_8140A5B0(arg0, 0x2000);
}
}
void func_84340230(unk_D_8140E720* arg0) {
s16 sp26 = func_8140C038(arg0);
func_8140B938(arg0, 0.12f);
func_8140AF24(arg0, (func_81400A78(0x14) * 0.02f) + 0.25f);
func_8140A2A4(arg0, func_81400A78(0x10000));
func_8140A2CC(arg0, func_81400A78(0x10000));
func_8140AD8C(arg0, 5.0f);
func_8140BF4C(arg0, func_81400A78(0x800) + 0xC00);
func_8140A3C4(arg0, func_81400B4C(0x800, 0x300));
func_8140BFEC(arg0, func_81400B4C(0x800, 0x300));
func_8140A3D8(arg0, func_81400A78(0x10000));
func_8140A3EC(arg0, func_81400B4C(0x800, 0x300));
func_81408E90(arg0, func_81400A78(0x1E));
func_8140BCA8(arg0, sp26 * 2);
func_81408348(arg0);
func_814081BC(arg0);
}
void func_843403D8(unk_D_8140E720* arg0) {
switch (arg0->unk_B2) {
case 1:
func_84340230(arg0);
break;
case 2:
if (func_8140BDD0(arg0) != 0) {
func_81408328(arg0);
func_81408A1C(arg0);
func_8140BCA8(arg0, func_81400A78(0xA) + 0x1E);
}
break;
case 3:
if (func_8140BDD0(arg0) != 0) {
func_8140BCA8(arg0, 8);
func_81408A68(arg0);
}
break;
case 4:
if (func_8140BDD0(arg0) != 0) {
func_8140A3C4(arg0, func_81400B4C(0x1000, 0x600));
func_8140BFEC(arg0, func_81400B4C(0x400, 0x400));
func_8140A3EC(arg0, func_81400B4C(0x1000, 0x600));
arg0->unk_38.x += arg0->unk_50.x;
arg0->unk_50.x = 0;
arg0->unk_38.z += arg0->unk_50.z;
arg0->unk_50.z = 0;
func_81408A68(arg0);
arg0->unk_7C.y = -((func_81400A78(8) * 0.1f) + 0.5f);
}
break;
case 5:
func_8140826C(arg0, 0x46);
break;
case 6:
func_81408150(arg0);
break;
}
switch (arg0->unk_B8) {
case 1:
func_8140ADBC(arg0, 20.0f, 0.5f);
func_814099E0(arg0, arg0->unk_7C.y);
func_8140B7C8(arg0, arg0->unk_74, arg0->unk_AE);
break;
case 2:
func_8140BF60(arg0, 0, 0x200);
func_814099E0(arg0, arg0->unk_7C.y);
func_8140B7C8(arg0, arg0->unk_74, arg0->unk_AE);
break;
case 3:
func_814099E0(arg0, arg0->unk_7C.y);
func_8140B7C8(arg0, 5.0f, 0x400);
break;
}
if (func_81408368(arg0) != 0) {
func_8140A4B4(arg0);
func_8140A594(arg0, arg0->unk_B0);
func_8140A4DC(arg0);
if (arg0->unk_2C.y < 0.0f) {
func_81408150(arg0);
}
}
}
void func_84340690(unk_D_8140E720* arg0) {
s16 sp26 = func_8140C038(arg0);
s16 sp24 = func_8140C040(arg0);
func_8140AF24(arg0, 0.5f);
switch (sp24) {
case 0:
func_8140B938(arg0, 0.12f);
arg0->unk_5C.y = -((func_81400A78(0xA) * 0.1f) + 0.5f);
func_81408E90(arg0, func_81400A78(0x28) + 0x1E);
func_81409404(arg0, 0x1E, 0);
func_81409514(arg0, 0x1E, 0);
break;
case 1:
func_8140B938(arg0, 0.2f);
arg0->unk_5C.y = -((func_81400A78(4) * 0.1f) + 0.2f);
func_81408E90(arg0, func_81400B00(0x14) + 0x1E);
func_81409404(arg0, 0xF, 5);
func_81409514(arg0, 0x14, 5);
break;
}
func_8140A2A4(arg0, func_81400A78(0x10000));
func_8140A2CC(arg0, func_81400A78(0x10000));
func_8140AD8C(arg0, func_81400A78(0x14) + 15.0f);
func_8140BF4C(arg0, func_81400A78(0x300) + 0x400);
func_8140A3D8(arg0, func_81400A78(0x10000));
func_8140A3C4(arg0, func_81400B4C(0x800, 0x400));
func_8140A3EC(arg0, func_81400B4C(0x800, 0x400));
func_8140BCA8(arg0, sp26 * 2);
func_81408348(arg0);
func_814081BC(arg0);
}
void func_84340940(unk_D_8140E720* arg0) {
s16 sp26 = func_8140C040(arg0);
switch (arg0->unk_B2) {
case 1:
func_84340690(arg0);
break;
case 2:
if (func_8140BDD0(arg0) != 0) {
func_81408328(arg0);
func_81408A1C(arg0);
switch (sp26) {
case 0:
func_8140BCA8(arg0, func_81400A78(0x1E) + 0x32);
break;
case 1:
func_8140BCA8(arg0, func_81400A78(0x1E) + 0x64);
break;
}
}
break;
case 3:
func_8140BDD0(arg0);
break;
case 4:
func_81408150(arg0);
break;
}
if (arg0->unk_B8 == 1) {
func_814099E0(arg0, arg0->unk_5C.y);
func_8140B7C8(arg0, 5.0f, 0x400);
}
if (func_81408368(arg0) != 0) {
func_8140A4B4(arg0);
func_8140A4C8(arg0);
func_8140A4DC(arg0);
if (arg0->unk_2C.y < 0.0f) {
func_81408150(arg0);
}
}
}
void func_84340AC4(void) {
}
void func_84340ACC(void) {
func_8432F8E8(0x80, 1);
func_8432EC28(0, func_8433FF44, &D_843861D0[0x2B], 0, 0x10, 0xA, 0, 0, 0);
func_8432EC28(2, func_8433FF44, &D_843861D0[0x2B], 0, 0x10, 0xA, 0, 0, 0);
func_8432EC28(4, func_8433FF44, &D_843861D0[0x2B], 0, 0x10, 0xA, 0, 0, 0);
func_8432EC28(8, func_8433FF44, &D_843861D0[0x2B], 0, 8, 0xA, 0, 0, 0);
func_8432EB2C(0x3A);
func_8432EC28(0, func_8434016C, &D_843861D0[0x2E], 0, 0x10, 2, 0, 0, 0);
func_8432EC28(0, func_8434016C, &D_843861D0[0x2E], 0, 0x10, 2, 0, 0, 0);
func_8432EC28(0, func_8434016C, &D_843861D0[0x2E], 0, 0x10, 2, 0, 0, 0);
func_8432EC28(0, func_8434016C, &D_843861D0[0x2E], 0, 0x10, 2, 0, 0, 0);
}
void func_84340CB0(void) {
func_8432ECA0(0, 2, 0x14, func_843403D8, &D_843861D0[0x2C], 0, 4, 0xE, 0, 0, 0);
func_84357BA8();
}
void func_84340D14(void) {
func_8432ECA0(0, 2, 5, func_84340940, &D_843861D0[0x2D], 0, 1, 0xE, 0, 0, 1);
func_8432ECA0(0, 4, 5, func_84340940, &D_843861D0[0x2D], 0, 1, 0xE, 0, 0, 1);
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,43 @@
#include "global.h"
#include "fragment62.h"
#include "src/6A40.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3438B0/func_84358FF0.s")
void func_84358FF0(void) {
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3438B0/func_84359000.s")
void func_84358FF8(void) {
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3438B0/func_843590E0.s")
void func_84359000(u8 arg0, u8 arg1, u8 arg2, u8 arg3) {
gSPDisplayList(gDisplayListHead++, D_8140DDF8);
func_814059C8(arg0, arg1, arg2, arg3);
gSPTextureRectangle(gDisplayListHead++, 0, 0, 0x04FC, 0x03BC, G_TX_RENDERTILE, 0, 0, 0x1000, 0x0400);
gSPDisplayList(gDisplayListHead++, D_8140DDD8);
}
void func_843590E0(unk_D_86002F34_00C* arg0) {
func_8432CF74(arg0);
D_8140E620 = func_80005F5C(sizeof(unk_D_8140E620));
D_8140E624 = 0;
D_843902A4 += 1;
gSPDisplayList(gDisplayListHead++, D_8140DB30);
func_814059C8(D_84390382, D_84390384, D_84390386, D_84390388);
func_81405A90(D_84390392, D_84390394, D_84390396, D_84390398);
func_81405A20(D_8439038A, D_8439038C, D_8439038E, D_84390390);
func_81405B00(D_8439039A, D_8439039C, D_8439039E, D_843903A0);
func_84300184(D_8439037A, D_8439037C, D_8439037E);
func_8140C204(arg0);
guOrtho(&D_8140E620->unk_5B80, 0.0f, 320.0f, 240.0f, 0.0f, -2.0f, 2.0f, 1.0f);
gSPMatrix(gDisplayListHead++, (u32)&D_8140E620->unk_5B80 & 0x1FFFFFFF,
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
gSPDisplayList(gDisplayListHead++, D_8140DD78);
func_81402410();
func_8140C2D8(arg0);
gSPDisplayList(gDisplayListHead++, D_8140DAE0);
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,13 +1,354 @@
#include "global.h"
#include "fragment62.h"
#include "include/math.h"
#include "src/30640.h"
#include "src/6A40.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_34E1A0/func_843638E0.s")
static unk_D_8439CA60 D_8439CA60;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_34E1A0/func_84363A5C.s")
static Lights2 D_84389300 = gdSPDefLights2(255, 255, 255, 255, 255, 255, 30, 30, 10, 255, 255, 255, 226, 30, 10);
static Gfx D_84389328[] = {
gsDPPipeSync(),
gsDPSetCycleType(G_CYC_2CYCLE),
gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN |
G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA),
gsSPSetGeometryMode(G_SHADE | G_LIGHTING | G_TEXTURE_GEN | G_SHADING_SMOOTH),
gsSPSetLights2(D_84389300),
gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA2),
gsDPSetTexturePersp(G_TP_PERSP),
gsDPSetTextureLUT(G_TT_NONE),
gsDPSetTextureFilter(G_TF_BILERP),
gsDPSetRenderMode(G_RM_PASS, G_RM_XLU_SURF2),
gsSPEndDisplayList(),
};
static Gfx D_843893A8[] = {
gsDPPipeSync(),
gsDPSetCycleType(G_CYC_1CYCLE),
gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN |
G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA),
gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_LIGHTING | G_SHADING_SMOOTH),
gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
gsDPSetTexturePersp(G_TP_PERSP),
gsDPSetTextureDetail(G_TD_CLAMP),
gsDPSetTextureLOD(G_TL_TILE),
gsDPSetTextureLUT(G_TT_NONE),
gsDPSetTextureConvert(G_TC_FILT),
gsDPSetTextureFilter(G_TF_BILERP),
gsDPSetColorDither(G_CD_NOISE),
gsDPSetRenderMode(G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2),
gsSPEndDisplayList(),
};
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_34E1A0/func_84363FF0.s")
void func_843638E0(s16 arg0) {
s32 i;
s32 j;
s16 tmp1;
s16 tmp2;
s16 tmp3;
unk_D_8439CA60_0014* var_v0 = &D_8439CA60.unk_0014[0][0];
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_34E1A0/func_843640A4.s")
D_8439CA60.unk_0000 = 0;
D_8439CA60.unk_0002 = arg0;
D_8439CA60.unk_0004 = 0;
D_8439CA60.unk_0008 = 0.01f;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_34E1A0/func_84364304.s")
for (i = 0; i < 16; i++) {
for (j = 0; j < 16; j++) {
tmp1 = i * 0x20;
tmp3 = tmp1 * 0x10;
tmp2 = j * 0x20;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_34E1A0/func_84364428.s")
var_v0->unk_00 = (i * 9.0f) - 72.0f;
var_v0->unk_04 = 1.0f;
var_v0->unk_08 = (j * 7.0f) - 56.0f;
var_v0->unk_18 = tmp1 * 0x10;
var_v0->unk_1A = tmp2 * 0x10;
var_v0++;
}
}
}
void func_84363A5C(s32 arg0, s32 arg1) {
f32 sp84;
f32 sp80;
f32 sp7C;
f32 sp78;
f32 sp74;
f32 sp70;
f32 sp6C;
f32 sp68;
f32 sp64;
f32 sp60;
f32 sp5C;
f32 sp58;
f32 sp54;
f32 sp50;
f32 sp4C;
UNUSED s32 pad;
s16 sp46;
sp6C = D_8439CA60.unk_0014[arg0][arg1].unk_00;
sp68 = D_8439CA60.unk_0014[arg0][arg1].unk_04;
sp64 = D_8439CA60.unk_0014[arg0][arg1].unk_08;
sp84 = 0.0f;
sp80 = 0.0f;
sp7C = 0.0f;
sp46 = 0;
if ((arg0 > 0) && (arg1 >= 1)) {
sp60 = D_8439CA60.unk_0014[arg0 - 1][arg1].unk_00 - sp6C;
sp5C = D_8439CA60.unk_0014[arg0 - 1][arg1].unk_04 - sp68;
sp58 = D_8439CA60.unk_0014[arg0 - 1][arg1].unk_08 - sp64;
func_80031B04(&sp60, &sp5C, &sp58);
sp54 = D_8439CA60.unk_0014[arg0][arg1 - 1].unk_00 - sp6C;
sp50 = D_8439CA60.unk_0014[arg0][arg1 - 1].unk_04 - sp68;
sp4C = D_8439CA60.unk_0014[arg0][arg1 - 1].unk_08 - sp64;
func_80031B04(&sp54, &sp50, &sp4C);
func_80031A94(sp60, sp5C, sp58, sp54, sp50, sp4C, &sp78, &sp74, &sp70);
func_80031B04(&sp78, &sp74, &sp70);
sp84 += sp78;
sp80 += sp74;
sp7C += sp70;
sp46 = 1;
}
if ((0 < arg0) && (arg1 < 15)) {
sp60 = D_8439CA60.unk_0014[arg0 - 1][arg1].unk_00 - sp6C;
sp5C = D_8439CA60.unk_0014[arg0 - 1][arg1].unk_04 - sp68;
sp58 = D_8439CA60.unk_0014[arg0 - 1][arg1].unk_08 - sp64;
func_80031B04(&sp60, &sp5C, &sp58);
sp54 = D_8439CA60.unk_0014[arg0][arg1 + 1].unk_00 - sp6C;
sp50 = D_8439CA60.unk_0014[arg0][arg1 + 1].unk_04 - sp68;
sp4C = D_8439CA60.unk_0014[arg0][arg1 + 1].unk_08 - sp64;
func_80031B04(&sp54, &sp50, &sp4C);
func_80031A94(sp60, sp5C, sp58, sp54, sp50, sp4C, &sp78, &sp74, &sp70);
func_80031B04(&sp78, &sp74, &sp70);
sp84 += sp78;
sp80 += sp74;
sp7C += sp70;
sp46 += 1;
}
if ((arg0 < 15) && (arg1 >= 1)) {
sp60 = D_8439CA60.unk_0014[arg0 + 1][arg1].unk_00 - sp6C;
sp5C = D_8439CA60.unk_0014[arg0 + 1][arg1].unk_04 - sp68;
sp58 = D_8439CA60.unk_0014[arg0 + 1][arg1].unk_08 - sp64;
func_80031B04(&sp60, &sp5C, &sp58);
sp54 = D_8439CA60.unk_0014[arg0][arg1 - 1].unk_00 - sp6C;
sp50 = D_8439CA60.unk_0014[arg0][arg1 - 1].unk_04 - sp68;
sp4C = D_8439CA60.unk_0014[arg0][arg1 - 1].unk_08 - sp64;
func_80031B04(&sp54, &sp50, &sp4C);
func_80031A94(sp60, sp5C, sp58, sp54, sp50, sp4C, &sp78, &sp74, &sp70);
func_80031B04(&sp78, &sp74, &sp70);
sp84 += sp78;
sp80 += sp74;
sp7C += sp70;
sp46 += 1;
}
if ((arg0 < 15) && (arg1 < 15)) {
sp60 = D_8439CA60.unk_0014[arg0 + 1][arg1].unk_00 - sp6C;
sp5C = D_8439CA60.unk_0014[arg0 + 1][arg1].unk_04 - sp68;
sp58 = D_8439CA60.unk_0014[arg0 + 1][arg1].unk_08 - sp64;
func_80031B04(&sp60, &sp5C, &sp58);
sp54 = D_8439CA60.unk_0014[arg0][arg1 + 1].unk_00 - sp6C;
sp50 = D_8439CA60.unk_0014[arg0][arg1 + 1].unk_04 - sp68;
sp4C = D_8439CA60.unk_0014[arg0][arg1 + 1].unk_08 - sp64;
func_80031B04(&sp54, &sp50, &sp4C);
func_80031A94(sp60, sp5C, sp58, sp54, sp50, sp4C, &sp78, &sp74, &sp70);
func_80031B04(&sp78, &sp74, &sp70);
sp84 -= sp78;
sp80 -= sp74;
sp7C -= sp70;
sp46 += 1;
}
if (sp46 != 0) {
if ((sp84 == 0.0) && (sp80 == 0.0) && (sp7C == 0.0)) {
sp80 = 1.0f;
} else {
func_80031B04(&sp84, &sp80, &sp7C);
}
D_8439CA60.unk_0014[arg0][arg1].unk_0C = sp84;
D_8439CA60.unk_0014[arg0][arg1].unk_10 = sp80;
D_8439CA60.unk_0014[arg0][arg1].unk_14 = sp7C;
}
}
void func_84363FF0(unk_D_8439CA60_0014* arg0, Vtx* arg1) {
f32 r;
f32 g;
f32 b;
arg1->v.ob[0] = arg0->unk_00;
arg1->v.ob[1] = arg0->unk_04;
arg1->v.ob[2] = arg0->unk_08;
arg1->v.tc[0] = arg0->unk_18;
arg1->v.tc[1] = arg0->unk_1A;
r = arg0->unk_0C;
g = arg0->unk_10;
b = arg0->unk_14;
arg1->v.cn[0] = (s32)(r * 120.0);
arg1->v.cn[1] = (s32)(g * 120.0);
arg1->v.cn[2] = (s32)(b * 120.0);
arg1->v.cn[3] = D_8439CA60.unk_0004;
}
s32 func_843640A4(void) {
unk_D_8439CA60_0014* var_s1;
s32 i;
s32 j;
f32 temp_fv1_2;
f32 tmp;
D_8439CA60.unk_0000 = D_8439CA60.unk_0000 + 1;
if (D_8439CA60.unk_0002 < D_8439CA60.unk_0000) {
return -1;
}
if (D_8439CA60.unk_0000 < 0x1E) {
D_8439CA60.unk_0004 += 0xA;
if (D_8439CA60.unk_0004 >= 0x81) {
D_8439CA60.unk_0004 = 0x80;
}
} else if ((D_8439CA60.unk_0002 - 0x1E) < D_8439CA60.unk_0000) {
D_8439CA60.unk_0004 -= 0xA;
if (D_8439CA60.unk_0004 < 0) {
D_8439CA60.unk_0004 = 0;
}
}
if (D_8439CA60.unk_0008 < 1.0) {
D_8439CA60.unk_0008 += 0.05;
}
var_s1 = &D_8439CA60.unk_0014[0][0];
for (i = 0; i < 16; i++) {
for (j = 0; j < 16; j++) {
temp_fv1_2 = 1.0 - (sqrtf(SQ(var_s1->unk_00) + SQ(var_s1->unk_08)) / 101.8224f);
tmp = __sinf((((f32)(D_8439CA60.unk_0000 % 20) / 20.0) + (3.0 * temp_fv1_2)) * 6.2831854820251465) *
((f64)D_8439CA60.unk_0008 * temp_fv1_2);
var_s1->unk_04 = tmp;
var_s1++;
}
}
for (i = 0; i < 16; i++) {
for (j = 0; j < 16; j++) {
func_84363A5C(i, j);
}
}
return 0;
}
void func_84364304(void) {
unk_D_86002F34_00C* temp_v0;
f32 tmp1;
f32 tmp2;
f32 tmp3;
f32 tmp4;
f32 tmp5;
f32 tmp6;
f32 sp68;
f32 sp64;
f32 sp60;
f32 sp5C;
f32 temp_fa0;
f32 temp_fa1;
f32 temp_fv0;
f32 temp_fv1;
D_8439CA60.unk_0010 = func_80005F5C(sizeof(Mtx) * 1);
temp_v0 = func_8432FD64();
tmp4 = temp_v0->unk_60.at.x;
tmp5 = temp_v0->unk_60.at.y;
tmp6 = temp_v0->unk_60.at.z;
tmp1 = temp_v0->unk_60.eye.x;
tmp2 = temp_v0->unk_60.eye.y;
tmp3 = temp_v0->unk_60.eye.z;
sp5C = temp_v0->unk_24.fovy;
sp68 = tmp4 - tmp1;
sp64 = tmp5 - tmp2;
sp60 = tmp6 - tmp3;
func_80031B04(&sp68, &sp64, &sp60);
temp_fv0 = sp5C / 30.0f;
temp_fv1 = (140.0f * sp68) / temp_fv0;
temp_fa0 = (140.0f * sp64) / temp_fv0;
temp_fa1 = (140.0f * sp60) / temp_fv0;
tmp4 += temp_fv1;
tmp5 += temp_fa0;
tmp6 += temp_fa1;
tmp1 += temp_fv1;
tmp2 += temp_fa0;
tmp3 += temp_fa1;
func_80031C6C(D_8439CA60.unk_0010, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6);
}
Gfx* func_84364428(Gfx* arg0) {
s32 i;
s32 j;
unk_D_8439CA60_0014* var_s2;
s32 var_s4;
Vtx* vtx;
s32 idx;
var_s4 = 0;
D_8439CA60.unk_000C = func_80005F5C(sizeof(Vtx) * 16 * 16);
vtx = D_8439CA60.unk_000C;
var_s2 = &D_8439CA60.unk_0014[0][0];
for (i = 0; i < 16; i++) {
for (j = 0; j < 16; j++) {
func_84363FF0(var_s2, vtx);
var_s2++;
vtx++;
}
}
func_84364304();
gDPLoadTextureBlock(arg0++, D_843920C0[0xA8], G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP,
G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD);
gSPDisplayList(arg0++, D_84389328);
gDPSetPrimColor(arg0++, 0, 0, 255, 255, 255, D_8439CA60.unk_0004);
gSPMatrix(arg0++, D_8439CA60.unk_0010, G_MTX_PUSH | G_MTX_MUL | G_MTX_MODELVIEW);
vtx = D_8439CA60.unk_000C;
for (i = 0; i < 15; i++) {
for (j = 0; j < 15; j++) {
idx = (i + 0) * 16 + j;
gSPVertex(arg0++, &vtx[idx + 0], 1, 0);
gSPVertex(arg0++, &vtx[idx + 1], 1, 1);
gSPVertex(arg0++, &vtx[((i + 1) * 16 + j) + (0 * 16) + 0], 1, 2);
gSPVertex(arg0++, &vtx[idx + (1 * 16) + 1], 1, 3);
if (!(var_s4 & 1)) {
gSP2Triangles(arg0++, 1, 2, 0, 0, 1, 3, 2, 0);
} else {
gSP2Triangles(arg0++, 3, 2, 0, 0, 1, 3, 0, 0);
}
var_s4++;
}
}
gSPPopMatrix(arg0++, G_MTX_MODELVIEW);
return arg0;
}

View File

@ -1,15 +1,392 @@
#include "global.h"
#include "fragment62.h"
#include "include/math.h"
#include "src/30640.h"
#include "src/6A40.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_34F1A0/func_843648E0.s")
static unk_D_8439E680 D_8439E680;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_34F1A0/func_84364A18.s")
static Lights2 D_84389430 = gdSPDefLights2(255, 255, 255, 255, 255, 255, 30, 30, 10, 255, 255, 255, 226, 30, 10);
static Gfx D_84389458[] = {
gsDPPipeSync(),
gsDPSetCycleType(G_CYC_2CYCLE),
gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN |
G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA),
gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_LIGHTING | G_TEXTURE_GEN | G_SHADING_SMOOTH),
gsSPSetLights2(D_84389430),
gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA2),
gsDPSetTexturePersp(G_TP_PERSP),
gsDPSetTextureLUT(G_TT_NONE),
gsDPSetTextureFilter(G_TF_BILERP),
gsDPSetRenderMode(G_RM_PASS, G_RM_XLU_SURF2),
gsSPEndDisplayList(),
};
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_34F1A0/func_84364C50.s")
static Gfx D_843894D8[] = {
gsDPPipeSync(),
gsDPSetCycleType(G_CYC_1CYCLE),
gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN |
G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA),
gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_LIGHTING | G_SHADING_SMOOTH),
gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
gsDPSetTexturePersp(G_TP_PERSP),
gsDPSetTextureDetail(G_TD_CLAMP),
gsDPSetTextureLOD(G_TL_TILE),
gsDPSetTextureLUT(G_TT_NONE),
gsDPSetTextureConvert(G_TC_FILT),
gsDPSetTextureFilter(G_TF_BILERP),
gsDPSetColorDither(G_CD_NOISE),
gsDPSetRenderMode(G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2),
gsSPEndDisplayList(),
};
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_34F1A0/func_843651D4.s")
void func_843648E0(s16 arg0, s16 arg1) {
unk_D_8439E680_0014* var_s0 = &D_8439E680.unk_0014[0][0];
s32 i;
s32 j;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_34F1A0/func_84365288.s")
for (i = 0; i < 16; i++) {
s32 tmp1 = arg1 - i;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_34F1A0/func_84365434.s")
for (j = 0; j < 16; j++) {
s32 tmp2 = arg0 - j;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_34F1A0/func_84365558.s")
if ((tmp2 == 0.0f) && (tmp1 == (0, 0.0f))) {
var_s0->unk_1C += 1.5707963705062866;
} else {
var_s0->unk_1C += 1.5707963705062866 / sqrtf(SQ((f32)tmp2) + SQ((f32)tmp1));
}
var_s0++;
}
}
}
void func_84364A18(s16 arg0) {
s32 i;
s32 j;
s32 k;
s16 tmp1;
s16 tmp2;
unk_D_8439E680_0014* var_v0 = &D_8439E680.unk_0014[0][0];
D_8439E680.unk_0000 = 0;
D_8439E680.unk_0002 = arg0;
D_8439E680.unk_0004 = 0;
D_8439E680.unk_0008 = 0.01f;
for (i = 0; i < 16; i++) {
for (j = 0; j < 16; j++) {
tmp1 = i * 0x20;
var_v0->unk_00 = (i * 9.0f) - 72.0f;
var_v0->unk_1C = 0.0f;
var_v0->unk_04 = (__sinf(var_v0->unk_1C) * 0.5) + 1.0;
tmp2 = j * 0x20;
var_v0->unk_08 = (j * 7.0f) - 56.0f;
var_v0->unk_18 = tmp1 * 0x10;
var_v0->unk_1A = tmp2 * 0x10;
var_v0++;
}
}
func_843648E0(8, 8);
for (k = 0; k < 10; k++) {
s16 rand1 = RAND(16);
s16 rand2 = RAND(16);
func_843648E0(rand1, rand2);
}
var_v0 = &D_8439E680.unk_0014[0][0];
for (i = 0; i < 16; i++) {
for (j = 0; j < 16; j++) {
var_v0->unk_04 = (__sinf(var_v0->unk_1C) * 0.5) + 1.0;
var_v0++;
}
}
}
void func_84364C50(s32 arg0, s32 arg1) {
f32 sp84;
f32 sp80;
f32 sp7C;
f32 sp78;
f32 sp74;
f32 sp70;
f32 sp6C;
f32 sp68;
f32 sp64;
f32 sp60;
f32 sp5C;
f32 sp58;
f32 sp54;
f32 sp50;
f32 sp4C;
UNUSED s32 pad;
s16 sp46;
sp6C = D_8439E680.unk_0014[arg0][arg1].unk_00;
sp68 = D_8439E680.unk_0014[arg0][arg1].unk_04;
sp64 = D_8439E680.unk_0014[arg0][arg1].unk_08;
sp84 = 0.0f;
sp80 = 0.0f;
sp7C = 0.0f;
sp46 = 0;
if ((arg0 > 0) && (arg1 >= 1)) {
sp60 = D_8439E680.unk_0014[arg0 - 1][arg1].unk_00 - sp6C;
sp5C = D_8439E680.unk_0014[arg0 - 1][arg1].unk_04 - sp68;
sp58 = D_8439E680.unk_0014[arg0 - 1][arg1].unk_08 - sp64;
func_80031B04(&sp60, &sp5C, &sp58);
sp54 = D_8439E680.unk_0014[arg0][arg1 - 1].unk_00 - sp6C;
sp50 = D_8439E680.unk_0014[arg0][arg1 - 1].unk_04 - sp68;
sp4C = D_8439E680.unk_0014[arg0][arg1 - 1].unk_08 - sp64;
func_80031B04(&sp54, &sp50, &sp4C);
func_80031A94(sp60, sp5C, sp58, sp54, sp50, sp4C, &sp78, &sp74, &sp70);
func_80031B04(&sp78, &sp74, &sp70);
sp84 += sp78;
sp80 += sp74;
sp7C += sp70;
sp46 = 1;
}
if ((0 < arg0) && (arg1 < 15)) {
sp60 = D_8439E680.unk_0014[arg0 - 1][arg1].unk_00 - sp6C;
sp5C = D_8439E680.unk_0014[arg0 - 1][arg1].unk_04 - sp68;
sp58 = D_8439E680.unk_0014[arg0 - 1][arg1].unk_08 - sp64;
func_80031B04(&sp60, &sp5C, &sp58);
sp54 = D_8439E680.unk_0014[arg0][arg1 + 1].unk_00 - sp6C;
sp50 = D_8439E680.unk_0014[arg0][arg1 + 1].unk_04 - sp68;
sp4C = D_8439E680.unk_0014[arg0][arg1 + 1].unk_08 - sp64;
func_80031B04(&sp54, &sp50, &sp4C);
func_80031A94(sp60, sp5C, sp58, sp54, sp50, sp4C, &sp78, &sp74, &sp70);
func_80031B04(&sp78, &sp74, &sp70);
sp84 += sp78;
sp80 += sp74;
sp7C += sp70;
sp46 += 1;
}
if ((arg0 < 15) && (arg1 >= 1)) {
sp60 = D_8439E680.unk_0014[arg0 + 1][arg1].unk_00 - sp6C;
sp5C = D_8439E680.unk_0014[arg0 + 1][arg1].unk_04 - sp68;
sp58 = D_8439E680.unk_0014[arg0 + 1][arg1].unk_08 - sp64;
func_80031B04(&sp60, &sp5C, &sp58);
sp54 = D_8439E680.unk_0014[arg0][arg1 - 1].unk_00 - sp6C;
sp50 = D_8439E680.unk_0014[arg0][arg1 - 1].unk_04 - sp68;
sp4C = D_8439E680.unk_0014[arg0][arg1 - 1].unk_08 - sp64;
func_80031B04(&sp54, &sp50, &sp4C);
func_80031A94(sp60, sp5C, sp58, sp54, sp50, sp4C, &sp78, &sp74, &sp70);
func_80031B04(&sp78, &sp74, &sp70);
sp84 += sp78;
sp80 += sp74;
sp7C += sp70;
sp46 += 1;
}
if ((arg0 < 15) && (arg1 < 15)) {
sp60 = D_8439E680.unk_0014[arg0 + 1][arg1].unk_00 - sp6C;
sp5C = D_8439E680.unk_0014[arg0 + 1][arg1].unk_04 - sp68;
sp58 = D_8439E680.unk_0014[arg0 + 1][arg1].unk_08 - sp64;
func_80031B04(&sp60, &sp5C, &sp58);
sp54 = D_8439E680.unk_0014[arg0][arg1 + 1].unk_00 - sp6C;
sp50 = D_8439E680.unk_0014[arg0][arg1 + 1].unk_04 - sp68;
sp4C = D_8439E680.unk_0014[arg0][arg1 + 1].unk_08 - sp64;
func_80031B04(&sp54, &sp50, &sp4C);
func_80031A94(sp60, sp5C, sp58, sp54, sp50, sp4C, &sp78, &sp74, &sp70);
func_80031B04(&sp78, &sp74, &sp70);
sp84 -= sp78;
sp80 -= sp74;
sp7C -= sp70;
sp46 += 1;
}
if (sp46 != 0) {
if ((sp84 == 0.0) && (sp80 == 0.0) && (sp7C == 0.0)) {
sp80 = 1.0f;
} else {
func_80031B04(&sp84, &sp80, &sp7C);
}
D_8439E680.unk_0014[arg0][arg1].unk_0C = sp84;
D_8439E680.unk_0014[arg0][arg1].unk_10 = sp80;
D_8439E680.unk_0014[arg0][arg1].unk_14 = sp7C;
}
}
void func_843651D4(unk_D_8439E680_0014* arg0, Vtx* arg1) {
f32 r;
f32 g;
f32 b;
arg1->v.ob[0] = arg0->unk_00;
arg1->v.ob[1] = arg0->unk_04;
arg1->v.ob[2] = arg0->unk_08;
arg1->v.tc[0] = arg0->unk_18;
arg1->v.tc[1] = arg0->unk_1A;
r = arg0->unk_0C;
g = arg0->unk_10;
b = arg0->unk_14;
arg1->v.cn[0] = (s32)(r * 120.0);
arg1->v.cn[1] = (s32)(g * 120.0);
arg1->v.cn[2] = (s32)(b * 120.0);
arg1->v.cn[3] = D_8439E680.unk_0004;
}
s32 func_84365288(void) {
unk_D_8439E680_0014* var_s1;
s32 i;
s32 j;
D_8439E680.unk_0000 = D_8439E680.unk_0000 + 1;
if (D_8439E680.unk_0002 < D_8439E680.unk_0000) {
return -1;
}
if (D_8439E680.unk_0000 < 0x1E) {
D_8439E680.unk_0004 += 0xA;
if (D_8439E680.unk_0004 >= 0x81) {
D_8439E680.unk_0004 = 0x80;
}
} else if ((D_8439E680.unk_0002 - 0x1E) < D_8439E680.unk_0000) {
D_8439E680.unk_0004 -= 0xA;
if (D_8439E680.unk_0004 < 0) {
D_8439E680.unk_0004 = 0;
}
}
if (D_8439E680.unk_0008 < 0.5) {
D_8439E680.unk_0008 += 0.05;
}
var_s1 = &D_8439E680.unk_0014[0][0];
for (i = 0; i < 16; i++) {
for (j = 0; j < 16; j++) {
var_s1->unk_04 = (__sinf(var_s1->unk_1C) * 0.5) + 1.0;
var_s1->unk_1C += 0.1;
var_s1++;
}
}
for (i = 0; i < 16; i++) {
for (j = 0; j < 16; j++) {
func_84364C50(i, j);
}
}
return 0;
}
void func_84365434(void) {
unk_D_86002F34_00C* temp_v0;
f32 tmp1;
f32 tmp2;
f32 tmp3;
f32 tmp4;
f32 tmp5;
f32 tmp6;
f32 sp68;
f32 sp64;
f32 sp60;
f32 sp5C;
f32 temp_fa0;
f32 temp_fa1;
f32 temp_fv0;
f32 temp_fv1;
D_8439E680.unk_0010 = func_80005F5C(sizeof(Mtx) * 1);
temp_v0 = func_8432FD64();
tmp4 = temp_v0->unk_60.at.x;
tmp5 = temp_v0->unk_60.at.y;
tmp6 = temp_v0->unk_60.at.z;
tmp1 = temp_v0->unk_60.eye.x;
tmp2 = temp_v0->unk_60.eye.y;
tmp3 = temp_v0->unk_60.eye.z;
sp5C = temp_v0->unk_24.fovy;
sp68 = tmp4 - tmp1;
sp64 = tmp5 - tmp2;
sp60 = tmp6 - tmp3;
func_80031B04(&sp68, &sp64, &sp60);
temp_fv0 = sp5C / 30.0f;
temp_fv1 = (140.0f * sp68) / temp_fv0;
temp_fa0 = (140.0f * sp64) / temp_fv0;
temp_fa1 = (140.0f * sp60) / temp_fv0;
tmp4 += temp_fv1;
tmp5 += temp_fa0;
tmp6 += temp_fa1;
tmp1 += temp_fv1;
tmp2 += temp_fa0;
tmp3 += temp_fa1;
func_80031C6C(D_8439E680.unk_0010, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6);
}
Gfx* func_84365558(Gfx* arg0) {
s32 i;
s32 j;
unk_D_8439E680_0014* var_s2;
s32 var_s4;
Vtx* vtx;
s32 idx;
var_s4 = 0;
D_8439E680.unk_000C = func_80005F5C(sizeof(Vtx) * 16 * 16);
vtx = D_8439E680.unk_000C;
var_s2 = &D_8439E680.unk_0014[0][0];
for (i = 0; i < 16; i++) {
for (j = 0; j < 16; j++) {
func_843651D4(var_s2, vtx);
var_s2++;
vtx++;
}
}
func_84365434();
gDPLoadTextureBlock(arg0++, D_843920C0[0x48], G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP,
G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD);
gSPDisplayList(arg0++, D_84389458);
gDPSetPrimColor(arg0++, 0, 0, 255, 255, 255, D_8439E680.unk_0004);
gSPMatrix(arg0++, D_8439E680.unk_0010, G_MTX_PUSH | G_MTX_MUL | G_MTX_MODELVIEW);
vtx = D_8439E680.unk_000C;
for (i = 0; i < 15; i++) {
for (j = 0; j < 15; j++) {
idx = (i + 0) * 16 + j;
gSPVertex(arg0++, &vtx[idx + 0], 1, 0);
gSPVertex(arg0++, &vtx[idx + 1], 1, 1);
gSPVertex(arg0++, &vtx[((i + 1) * 16 + j) + (0 * 16) + 0], 1, 2);
gSPVertex(arg0++, &vtx[idx + (1 * 16) + 1], 1, 3);
if (!(var_s4 & 1)) {
gSP2Triangles(arg0++, 1, 2, 0, 0, 1, 3, 2, 0);
} else {
gSP2Triangles(arg0++, 3, 2, 0, 0, 1, 3, 0, 0);
}
var_s4++;
}
}
gSPPopMatrix(arg0++, G_MTX_MODELVIEW);
return arg0;
}

View File

@ -1,13 +1,356 @@
#include "global.h"
#include "fragment62.h"
#include "include/math.h"
#include "src/30640.h"
#include "src/6A40.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3502D0/func_84365A10.s")
static unk_D_8439CA60 D_843A06A0;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3502D0/func_84365B88.s")
static Lights2 D_84389560 = gdSPDefLights2(255, 255, 255, 255, 255, 255, 30, 30, 10, 255, 255, 255, 226, 30, 10);
static Gfx D_84389588[] = {
gsDPPipeSync(),
gsDPSetCycleType(G_CYC_2CYCLE),
gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN |
G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA),
gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_LIGHTING | G_TEXTURE_GEN | G_SHADING_SMOOTH),
gsSPSetLights2(D_84389560),
gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA2),
gsDPSetTexturePersp(G_TP_PERSP),
gsDPSetTextureLUT(G_TT_NONE),
gsDPSetTextureFilter(G_TF_BILERP),
gsDPSetRenderMode(G_RM_PASS, G_RM_XLU_SURF2),
gsSPEndDisplayList(),
};
static Gfx D_84389608[] = {
gsDPPipeSync(),
gsDPSetCycleType(G_CYC_1CYCLE),
gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN |
G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA),
gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_LIGHTING | G_SHADING_SMOOTH),
gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
gsDPSetTexturePersp(G_TP_PERSP),
gsDPSetTextureDetail(G_TD_CLAMP),
gsDPSetTextureLOD(G_TL_TILE),
gsDPSetTextureLUT(G_TT_NONE),
gsDPSetTextureConvert(G_TC_FILT),
gsDPSetTextureFilter(G_TF_BILERP),
gsDPSetColorDither(G_CD_NOISE),
gsDPSetRenderMode(G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2),
gsSPEndDisplayList(),
};
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3502D0/func_8436611C.s")
void func_84365A10(s16 arg0) {
unk_D_8439CA60_0014* var_v0;
s32 i;
s32 j;
s16 tmp1;
s16 tmp2;
s16 tmp3;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3502D0/func_843661D0.s")
D_843A06A0.unk_0000 = 0;
D_843A06A0.unk_0002 = arg0;
D_843A06A0.unk_0004 = 0;
D_843A06A0.unk_0008 = 0.0f;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3502D0/func_8436643C.s")
var_v0 = &D_843A06A0.unk_0014[0][0];
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3502D0/func_84366560.s")
for (i = 0; i < 16; i++) {
for (j = 0; j < 16; j++) {
tmp1 = i * 0x20;
tmp3 = tmp1 * 0x10;
tmp2 = j * 0x20;
var_v0->unk_00 = (i * 9.0f) - 72.0f;
var_v0->unk_04 = 1.0f;
var_v0->unk_08 = (j * 7.0f) - 56.0f;
var_v0->unk_18 = tmp1 * 0x10;
var_v0->unk_1A = tmp2 * 0x10;
var_v0++;
}
}
}
void func_84365B88(s32 arg0, s32 arg1) {
f32 sp84;
f32 sp80;
f32 sp7C;
f32 sp78;
f32 sp74;
f32 sp70;
f32 sp6C;
f32 sp68;
f32 sp64;
f32 sp60;
f32 sp5C;
f32 sp58;
f32 sp54;
f32 sp50;
f32 sp4C;
UNUSED s32 pad;
s16 sp46;
sp6C = D_843A06A0.unk_0014[arg0][arg1].unk_00;
sp68 = D_843A06A0.unk_0014[arg0][arg1].unk_04;
sp64 = D_843A06A0.unk_0014[arg0][arg1].unk_08;
sp84 = 0.0f;
sp80 = 0.0f;
sp7C = 0.0f;
sp46 = 0;
if ((arg0 > 0) && (arg1 >= 1)) {
sp60 = D_843A06A0.unk_0014[arg0 - 1][arg1].unk_00 - sp6C;
sp5C = D_843A06A0.unk_0014[arg0 - 1][arg1].unk_04 - sp68;
sp58 = D_843A06A0.unk_0014[arg0 - 1][arg1].unk_08 - sp64;
func_80031B04(&sp60, &sp5C, &sp58);
sp54 = D_843A06A0.unk_0014[arg0][arg1 - 1].unk_00 - sp6C;
sp50 = D_843A06A0.unk_0014[arg0][arg1 - 1].unk_04 - sp68;
sp4C = D_843A06A0.unk_0014[arg0][arg1 - 1].unk_08 - sp64;
func_80031B04(&sp54, &sp50, &sp4C);
func_80031A94(sp60, sp5C, sp58, sp54, sp50, sp4C, &sp78, &sp74, &sp70);
func_80031B04(&sp78, &sp74, &sp70);
sp84 += sp78;
sp80 += sp74;
sp7C += sp70;
sp46 = 1;
}
if ((0 < arg0) && (arg1 < 15)) {
sp60 = D_843A06A0.unk_0014[arg0 - 1][arg1].unk_00 - sp6C;
sp5C = D_843A06A0.unk_0014[arg0 - 1][arg1].unk_04 - sp68;
sp58 = D_843A06A0.unk_0014[arg0 - 1][arg1].unk_08 - sp64;
func_80031B04(&sp60, &sp5C, &sp58);
sp54 = D_843A06A0.unk_0014[arg0][arg1 + 1].unk_00 - sp6C;
sp50 = D_843A06A0.unk_0014[arg0][arg1 + 1].unk_04 - sp68;
sp4C = D_843A06A0.unk_0014[arg0][arg1 + 1].unk_08 - sp64;
func_80031B04(&sp54, &sp50, &sp4C);
func_80031A94(sp60, sp5C, sp58, sp54, sp50, sp4C, &sp78, &sp74, &sp70);
func_80031B04(&sp78, &sp74, &sp70);
sp84 += sp78;
sp80 += sp74;
sp7C += sp70;
sp46 += 1;
}
if ((arg0 < 15) && (arg1 >= 1)) {
sp60 = D_843A06A0.unk_0014[arg0 + 1][arg1].unk_00 - sp6C;
sp5C = D_843A06A0.unk_0014[arg0 + 1][arg1].unk_04 - sp68;
sp58 = D_843A06A0.unk_0014[arg0 + 1][arg1].unk_08 - sp64;
func_80031B04(&sp60, &sp5C, &sp58);
sp54 = D_843A06A0.unk_0014[arg0][arg1 - 1].unk_00 - sp6C;
sp50 = D_843A06A0.unk_0014[arg0][arg1 - 1].unk_04 - sp68;
sp4C = D_843A06A0.unk_0014[arg0][arg1 - 1].unk_08 - sp64;
func_80031B04(&sp54, &sp50, &sp4C);
func_80031A94(sp60, sp5C, sp58, sp54, sp50, sp4C, &sp78, &sp74, &sp70);
func_80031B04(&sp78, &sp74, &sp70);
sp84 += sp78;
sp80 += sp74;
sp7C += sp70;
sp46 += 1;
}
if ((arg0 < 15) && (arg1 < 15)) {
sp60 = D_843A06A0.unk_0014[arg0 + 1][arg1].unk_00 - sp6C;
sp5C = D_843A06A0.unk_0014[arg0 + 1][arg1].unk_04 - sp68;
sp58 = D_843A06A0.unk_0014[arg0 + 1][arg1].unk_08 - sp64;
func_80031B04(&sp60, &sp5C, &sp58);
sp54 = D_843A06A0.unk_0014[arg0][arg1 + 1].unk_00 - sp6C;
sp50 = D_843A06A0.unk_0014[arg0][arg1 + 1].unk_04 - sp68;
sp4C = D_843A06A0.unk_0014[arg0][arg1 + 1].unk_08 - sp64;
func_80031B04(&sp54, &sp50, &sp4C);
func_80031A94(sp60, sp5C, sp58, sp54, sp50, sp4C, &sp78, &sp74, &sp70);
func_80031B04(&sp78, &sp74, &sp70);
sp84 -= sp78;
sp80 -= sp74;
sp7C -= sp70;
sp46 += 1;
}
if (sp46 != 0) {
if ((sp84 == 0.0) && (sp80 == 0.0) && (sp7C == 0.0)) {
sp80 = 1.0f;
} else {
func_80031B04(&sp84, &sp80, &sp7C);
}
D_843A06A0.unk_0014[arg0][arg1].unk_0C = sp84;
D_843A06A0.unk_0014[arg0][arg1].unk_10 = sp80;
D_843A06A0.unk_0014[arg0][arg1].unk_14 = sp7C;
}
}
void func_8436611C(unk_D_8439CA60_0014* arg0, Vtx* arg1) {
f32 r;
f32 g;
f32 b;
arg1->v.ob[0] = arg0->unk_00;
arg1->v.ob[1] = arg0->unk_04;
arg1->v.ob[2] = arg0->unk_08;
arg1->v.tc[0] = arg0->unk_18;
arg1->v.tc[1] = arg0->unk_1A;
r = arg0->unk_0C;
g = arg0->unk_10;
b = arg0->unk_14;
arg1->v.cn[0] = (s32)(r * 120.0);
arg1->v.cn[1] = (s32)(g * 120.0);
arg1->v.cn[2] = (s32)(b * 120.0);
arg1->v.cn[3] = D_843A06A0.unk_0004;
}
s32 func_843661D0(void) {
unk_D_8439CA60_0014* var_s1;
s32 i;
s32 j;
f32 temp_fv1_2;
f32 tmp;
D_843A06A0.unk_0000 = D_843A06A0.unk_0000 + 1;
if (D_843A06A0.unk_0002 < D_843A06A0.unk_0000) {
return -1;
}
if (D_843A06A0.unk_0000 < 0x1E) {
D_843A06A0.unk_0004 += 0xA;
if (D_843A06A0.unk_0004 > 0x50) {
D_843A06A0.unk_0004 = 0x50;
}
} else if ((D_843A06A0.unk_0002 - 0x1E) < D_843A06A0.unk_0000) {
D_843A06A0.unk_0004 -= 0xA;
if (D_843A06A0.unk_0004 < 0) {
D_843A06A0.unk_0004 = 0;
}
}
if (D_843A06A0.unk_0008 < 0.25) {
D_843A06A0.unk_0008 += 0.05;
}
var_s1 = &D_843A06A0.unk_0014[0][0];
for (i = 0; i < 16; i++) {
for (j = 0; j < 16; j++) {
temp_fv1_2 = 1.0 - (sqrtf(SQ(var_s1->unk_00) + SQ(var_s1->unk_08)) / 101.8224f);
tmp = __sinf((((f32)(D_843A06A0.unk_0000 % 20) / 20.0) + (3.0 * temp_fv1_2)) * 6.2831854820251465) *
((f64)D_843A06A0.unk_0008 * temp_fv1_2);
var_s1->unk_04 = tmp;
var_s1++;
}
}
for (i = 0; i < 16; i++) {
for (j = 0; j < 16; j++) {
func_84365B88(i, j);
}
}
return 0;
}
void func_8436643C(void) {
unk_D_86002F34_00C* temp_v0;
f32 tmp1;
f32 tmp2;
f32 tmp3;
f32 tmp4;
f32 tmp5;
f32 tmp6;
f32 sp68;
f32 sp64;
f32 sp60;
f32 sp5C;
f32 temp_fa0;
f32 temp_fa1;
f32 temp_fv0;
f32 temp_fv1;
D_843A06A0.unk_0010 = func_80005F5C(sizeof(Mtx) * 1);
temp_v0 = func_8432FD64();
tmp4 = temp_v0->unk_60.at.x;
tmp5 = temp_v0->unk_60.at.y;
tmp6 = temp_v0->unk_60.at.z;
tmp1 = temp_v0->unk_60.eye.x;
tmp2 = temp_v0->unk_60.eye.y;
tmp3 = temp_v0->unk_60.eye.z;
sp5C = temp_v0->unk_24.fovy;
sp68 = tmp4 - tmp1;
sp64 = tmp5 - tmp2;
sp60 = tmp6 - tmp3;
func_80031B04(&sp68, &sp64, &sp60);
temp_fv0 = sp5C / 30.0f;
temp_fv1 = (140.0f * sp68) / temp_fv0;
temp_fa0 = (140.0f * sp64) / temp_fv0;
temp_fa1 = (140.0f * sp60) / temp_fv0;
tmp4 += temp_fv1;
tmp5 += temp_fa0;
tmp6 += temp_fa1;
tmp1 += temp_fv1;
tmp2 += temp_fa0;
tmp3 += temp_fa1;
func_80031C6C(D_843A06A0.unk_0010, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6);
}
Gfx* func_84366560(Gfx* arg0) {
s32 i;
s32 j;
unk_D_8439CA60_0014* var_s2;
s32 var_s4;
Vtx* vtx;
s32 idx;
var_s4 = 0;
D_843A06A0.unk_000C = func_80005F5C(sizeof(Vtx) * 16 * 16);
vtx = D_843A06A0.unk_000C;
var_s2 = &D_843A06A0.unk_0014[0][0];
for (i = 0; i < 16; i++) {
for (j = 0; j < 16; j++) {
func_8436611C(var_s2, vtx);
var_s2++;
vtx++;
}
}
func_8436643C();
gDPLoadTextureBlock(arg0++, D_843920C0[0x48], G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP,
G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD);
gSPDisplayList(arg0++, D_84389588);
gDPSetPrimColor(arg0++, 0, 0, 255, 255, 255, D_843A06A0.unk_0004);
gSPMatrix(arg0++, D_843A06A0.unk_0010, G_MTX_PUSH | G_MTX_MUL | G_MTX_MODELVIEW);
vtx = D_843A06A0.unk_000C;
for (i = 0; i < 15; i++) {
for (j = 0; j < 15; j++) {
idx = (i + 0) * 16 + j;
gSPVertex(arg0++, &vtx[idx + 0], 1, 0);
gSPVertex(arg0++, &vtx[idx + 1], 1, 1);
gSPVertex(arg0++, &vtx[((i + 1) * 16 + j) + (0 * 16) + 0], 1, 2);
gSPVertex(arg0++, &vtx[idx + (1 * 16) + 1], 1, 3);
if (!(var_s4 & 1)) {
gSP2Triangles(arg0++, 1, 2, 0, 0, 1, 3, 2, 0);
} else {
gSP2Triangles(arg0++, 3, 2, 0, 0, 1, 3, 0, 0);
}
var_s4++;
}
}
gSPPopMatrix(arg0++, G_MTX_MODELVIEW);
return arg0;
}

View File

@ -1,13 +1,291 @@
#include "global.h"
#include "fragment62.h"
#include "src/6A40.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3512D0/func_84366A10.s")
static unk_D_843A22C0 D_843A22C0[40];
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3512D0/func_84366B38.s")
static Vtx D_84389690[] = {
VTX(-10, 0, -10, 2048, 0, 0xFF, 0xFF, 0xFF, 0xC8),
VTX(10, 0, -10, 0, 0, 0xFF, 0xFF, 0xFF, 0xC8),
VTX(-10, 0, 10, 2048, 2048, 0xFF, 0xFF, 0xFF, 0xC8),
VTX(10, 0, 10, 0, 2048, 0xFF, 0xFF, 0xFF, 0xC8),
};
static Gfx D_843896D0[] = {
gsDPPipeSync(),
gsDPSetCycleType(G_CYC_1CYCLE),
gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN |
G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA),
gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH),
gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetRenderMode(G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
gsDPSetColorDither(G_CD_NOISE),
gsSPEndDisplayList(),
};
static Gfx D_84389720[] = {
gsDPPipeSync(),
gsDPSetCycleType(G_CYC_1CYCLE),
gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN |
G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA),
gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH),
gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON),
gsDPPipeSync(),
gsDPSetRenderMode(G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2),
gsDPSetCombineMode(G_CC_BLENDIA, G_CC_BLENDIA),
gsDPSetEnvColor(255, 255, 64, 255),
gsSPVertex(D_84389690, 4, 0),
gsSP2Triangles(0, 2, 1, 0, 2, 3, 1, 0),
gsSPEndDisplayList(),
};
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3512D0/func_84366DCC.s")
void func_84366A10(void) {
unk_D_843A22C0* var_v0;
unk_D_843A22C0_038* var_a0;
s32 i;
s32 j;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3512D0/func_84366E54.s")
var_v0 = &D_843A22C0[0];
for (i = 0; i < 40; i++, var_v0++) {
var_v0->unk_000 = 0;
var_v0->unk_004 = 0;
var_v0->unk_006 = 0;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3512D0/func_84367014.s")
var_a0 = &var_v0->unk_038[0];
for (j = 0; j < 10; j++, var_a0++) {
var_a0->unk_00 = 0.0f;
var_a0->unk_04 = 0;
var_a0->unk_08 = 0.0f;
var_a0->unk_0C.z = var_a0->unk_0C.y = var_a0->unk_0C.x = 0.0f;
var_a0->unk_18.z = var_a0->unk_18.y = var_a0->unk_18.x = 0.0f;
}
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3512D0/func_843670C8.s")
void func_84366B38(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, u8 arg6, u8 arg7, u8 arg8, u8 arg9,
f32 argA, s16 argB) {
unk_D_843A22C0* var_v1;
unk_D_843A22C0_038* var_s0;
s32 i;
s32 j;
Vec3f sp74;
Vec3f sp68;
Vec3f sp5C;
f32 temp_fv0;
temp_fv0 = func_8432FCD4();
sp74.x = arg0;
sp74.y = arg1 + 10.0f + 25.0f;
sp74.z = arg2;
sp68.x = arg3;
sp68.y = arg4;
sp68.z = arg5;
sp5C.x = 0.0f;
sp5C.y = -1.0f;
sp5C.z = 0.0f;
var_v1 = &D_843A22C0[0];
for (i = 0; i < 40; i++, var_v1++) {
if (var_v1->unk_000 == 0) {
var_v1->unk_000 = 1;
var_v1->unk_002 = 0;
var_v1->unk_004 = 0;
var_v1->unk_006 = argB;
var_v1->unk_00A.r = arg6;
var_v1->unk_00A.g = arg7;
var_v1->unk_00A.b = arg8;
var_v1->unk_010 = temp_fv0 * 0.5f;
var_v1->unk_014 = argA;
if (arg0 > 0) {
var_v1->unk_008 = -1;
} else {
var_v1->unk_008 = 1;
}
var_s0 = &var_v1->unk_038[0];
for (j = 0; j < 10; j++, var_s0++) {
var_s0->unk_00 = j;
var_s0->unk_04 = (arg9 * (9 - j)) / 10;
var_s0->unk_08 = (RAND(100) * 6.2831854820251465) / 100.0;
var_s0->unk_0C = sp74;
var_s0->unk_18 = sp68;
var_s0->unk_24 = sp5C;
}
break;
}
}
}
void func_84366DCC(f32 arg0, Vec3f* arg1, f32 arg2) {
MtxF sp30;
guRotateRPYF(sp30.mf, 90.0f, (arg0 * 360.0) / 6.2831854820251465, (arg0 * 360.0) / 6.2831854820251465);
guMtxXFMF(sp30.mf, 0.0f, 0.0f, arg2, &arg1->x, &arg1->y, &arg1->z);
}
void func_84366E54(unk_D_843A22C0* arg0) {
s32 i;
s32 j;
Vtx* var_a1;
Vtx* var_a2;
unk_D_843A22C0_038* var_v0;
unk_D_843A22C0_038* var_v1;
var_v0 = &arg0->unk_038[9];
for (i = 0; i < 9; i++, var_v0--) {
var_a1 = &var_v0[0].unk_30[0];
var_a2 = &var_v0[-1].unk_30[0];
for (j = 0; j < 2; j++) {
*var_a1++ = *var_a2++;
}
}
var_v1 = &arg0->unk_038[0];
switch (arg0->unk_002) {
case 0:
var_v1->unk_0C.y += var_v1->unk_24.y;
if (arg0->unk_004 >= 0xB) {
arg0->unk_002 = 1;
}
var_v1->unk_08 += 2.0 * arg0->unk_014;
break;
case 1:
var_v1->unk_0C.x += var_v1->unk_18.x;
var_v1->unk_0C.y += var_v1->unk_18.y;
var_v1->unk_0C.z += var_v1->unk_18.z;
if (arg0->unk_008 > 0) {
var_v1->unk_18.x += 2.0;
if (var_v1->unk_18.x > 20.0) {
var_v1->unk_18.x = 20.0f;
}
} else {
var_v1->unk_18.x -= 2.0;
if (var_v1->unk_18.x < -20.0) {
var_v1->unk_18.x = -20.0f;
}
}
var_v1->unk_08 += arg0->unk_014;
break;
}
}
s32 func_84367014(void) {
s32 i;
s32 var_s2 = 0;
unk_D_843A22C0* var_s0 = &D_843A22C0[0];
for (i = 0; i < 40; i++, var_s0++) {
if (var_s0->unk_000 == 1) {
var_s0->unk_004 += 1;
if ((var_s0->unk_006 + 0xA) < var_s0->unk_004) {
var_s0->unk_000 = 0;
} else {
func_84366E54(var_s0);
var_s2++;
}
}
}
if (var_s2 > 0) {
return 0;
}
return -1;
}
Gfx* func_843670C8(Gfx* arg0) {
s32 i;
unk_D_843A22C0* var_s5;
unk_D_843A22C0_038* temp_s0;
s32 k;
s32 j;
Mtx* temp_s1;
Vec3f sp13C;
Vtx* vtx;
Mtx spF8;
Mtx spB8;
f32 spB4;
Vtx* vtx2;
f32 tmp;
gDPLoadTextureBlock_4b(arg0++, D_843920C0[0x10], G_IM_FMT_I, 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP,
G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD);
var_s5 = &D_843A22C0[0];
for (i = 0; i < 40; i++, var_s5++) {
if (var_s5->unk_000 == 1) {
temp_s0 = &var_s5->unk_038[0];
tmp = var_s5->unk_010;
temp_s1 = func_80005F5C(sizeof(Mtx) * 1);
spB4 = (temp_s0->unk_08 * 360.0) / 6.2831854820251465;
guTranslate(temp_s1, temp_s0->unk_0C.x, temp_s0->unk_0C.y, temp_s0->unk_0C.z);
if (var_s5->unk_002 == 0) {
guRotateRPY(&spF8, 90.0f, spB4, 0.0f);
} else {
guRotateRPY(&spF8, 90.0f, spB4, spB4);
}
guMtxCatL(&spF8, temp_s1, temp_s1);
guScale(&spB8, tmp, tmp, tmp);
guMtxCatL(&spB8, temp_s1, temp_s1);
gSPMatrix(arg0++, temp_s1, G_MTX_PUSH | G_MTX_MUL | G_MTX_MODELVIEW);
gSPDisplayList(arg0++, D_84389720);
gSPPopMatrix(arg0++, G_MTX_MODELVIEW);
var_s5->unk_018 = func_80005F5C(sizeof(Vtx) * 20);
vtx = var_s5->unk_018;
for (j = 0; j < 10; j++, temp_s0++) {
if ((j == 0) || (var_s5->unk_004 < 2)) {
for (k = 0, vtx2 = &temp_s0->unk_30[0]; k < 2; k++) {
if (temp_s0->unk_00 <= 0.0) {
func_84366DCC(temp_s0->unk_08 + ((2.0 * k * 3.1415927410125732) / 2), &sp13C,
(10.0f * tmp) * 0.8f);
}
vtx->v.ob[0] = temp_s0->unk_0C.x + sp13C.x;
vtx->v.ob[1] = temp_s0->unk_0C.y + sp13C.y;
vtx->v.ob[2] = temp_s0->unk_0C.z + sp13C.z;
vtx->v.cn[0] = var_s5->unk_00A.r;
vtx->v.cn[1] = var_s5->unk_00A.g;
vtx->v.cn[2] = var_s5->unk_00A.b;
vtx->v.cn[3] = temp_s0->unk_04;
*vtx2++ = *vtx++;
}
} else {
for (k = 0, vtx2 = &temp_s0->unk_30[0]; k < 2; k++) {
*vtx = *vtx2++;
vtx->v.cn[3] = temp_s0->unk_04;
vtx++;
}
}
}
if (var_s5->unk_002 == 1) {
vtx = var_s5->unk_018;
for (k = 0; k < 9; k++) {
gSPDisplayList(arg0++, D_843896D0);
gSPVertex(arg0++, vtx, 4, 0);
gSP2Triangles(arg0++, 0, 1, 2, 0, 1, 3, 2, 0);
vtx += 2;
}
}
}
}
return arg0;
}

View File

@ -1,3 +1,179 @@
#include "global.h"
#include "fragment62.h"
#include "src/30640.h"
#include "src/6A40.h"
static Gfx D_84389780[] = {
gsDPPipeSync(),
gsDPSetCycleType(G_CYC_1CYCLE),
gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN |
G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA),
gsSPSetGeometryMode(G_SHADE | G_SHADING_SMOOTH),
gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON),
gsDPPipeSync(),
gsDPLoadTextureBlock_4b(D_8438A648, G_IM_FMT_I, 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5,
5, G_TX_NOLOD, G_TX_NOLOD),
gsDPSetRenderMode(G_RM_XLU_SURF, G_RM_XLU_SURF2),
gsDPSetCombineMode(G_CC_BLENDIA, G_CC_BLENDIA),
gsDPSetAlphaDither(G_AD_NOISE),
gsDPSetAlphaCompare(G_AC_NONE),
gsSPEndDisplayList(),
};
static Vtx D_84389810[] = {
VTX(0, 20, 0, 1024, 2048, 0xFF, 0xFF, 0xFF, 0x00), VTX(30, 20, 0, 1024, 2048, 0xFF, 0xFF, 0xFF, 0x00),
VTX(-20, 10, 0, 0, 1024, 0xFF, 0xFF, 0xFF, 0x00), VTX(50, 10, 0, 2048, 1024, 0xFF, 0xFF, 0xFF, 0x00),
VTX(0, 0, 0, 1024, 1024, 0xFF, 0xFF, 0xFF, 0xFF), VTX(30, 0, 0, 1024, 1024, 0xFF, 0xFF, 0xFF, 0xFF),
VTX(-20, -10, 0, 0, 1024, 0xFF, 0xFF, 0xFF, 0x00), VTX(50, -10, 0, 2048, 1024, 0xFF, 0xFF, 0xFF, 0x00),
VTX(0, -20, 0, 1024, 0, 0xFF, 0xFF, 0xFF, 0x00), VTX(30, -20, 0, 1024, 0, 0xFF, 0xFF, 0xFF, 0x00),
};
#ifdef NON_MATCHING
Gfx* func_84367660(Gfx* arg0, Vec3f* arg1, Vec3f* arg2, Vec3f* arg3, f32 arg4, u8 arg5, u8 arg6, u8 arg7, u8 arg8) {
s32 i;
Vtx* sp1E8;
s32 pad[2];
Mtx* sp1DC;
s32 pad2[42];
f32 sp130;
f32 sp12C;
f32 sp128;
f32 sp8C;
f32 sp88;
f32 sp84;
f32 sp80;
f32 sp7C;
f32 sp78;
s32 pad4[7];
Vtx* var_a1;
Vtx* temp_v1;
f32 a1_x;
f32 a1_y;
f32 a1_z;
f32 a2_x;
f32 a2_y;
f32 a2_z;
f32 a3_x;
f32 a3_y;
f32 a3_z;
f32 tmp1;
f32 tmp2;
f32 tmp3;
sp1DC = func_80005F5C(sizeof(Mtx) * 1);
sp1E8 = func_80005F5C(sizeof(Vtx) * 10);
temp_v1 = sp1E8;
var_a1 = &D_84389810[0];
for (i = 0; i < 10; i++) {
*temp_v1 = *var_a1++;
if ((i == 4) || (i == 5)) {
temp_v1->v.cn[0] = arg5;
temp_v1->v.cn[1] = arg6;
temp_v1->v.cn[2] = arg7;
temp_v1->v.cn[3] = arg8;
}
temp_v1++;
}
a1_x = arg1->x;
a1_y = arg1->y;
a1_z = arg1->z;
a2_x = arg2->x;
a2_y = arg2->y;
a2_z = arg2->z;
a3_x = arg3->x;
a3_y = arg3->y;
a3_z = arg3->z;
func_80031A94(a2_x - a1_x, a2_y - a1_y, a2_z - a1_z, a1_x - a3_x, a1_y - a3_y, a1_z - a3_z, &sp130, &sp12C, &sp128);
if ((SQ(sp130) + SQ(sp12C) + SQ(sp128)) > 0.0f) {
func_80031B04(&sp130, &sp12C, &sp128);
}
gSPDisplayList(arg0++, D_84389780);
gDPPipeSync(arg0++);
gDPSetEnvColor(arg0++, arg5, arg6, arg7, arg8);
a3_x = arg4 * sp130;
a3_y = arg4 * sp12C;
a3_z = arg4 * sp128;
temp_v1 = sp1E8;
if (a3_z) {}
tmp1 = a2_y - a3_y * 2.0f;
temp_v1->v.ob[0] = a3_x * 2.0f + a1_x;
temp_v1->v.ob[1] = a3_y * 2.0f + a1_y;
temp_v1->v.ob[2] = a3_z * 2.0f + a1_z;
temp_v1++;
temp_v1->v.ob[0] = a3_x * 2.0f + a2_x;
temp_v1->v.ob[1] = a3_y * 2.0f + a2_y;
temp_v1->v.ob[2] = a3_z * 2.0f + a2_z;
temp_v1++;
sp8C = (-a2_x * 0.2f) + (a1_x * 1.2f);
sp88 = (-a2_y * 0.2f) + (a1_y * 1.2f);
sp84 = (-a2_z * 0.2f) + (a1_z * 1.2f);
sp80 = (a2_x * 1.2f) - (a1_x * 0.2f);
sp7C = (a2_y * 1.2f) - (a1_y * 0.2f);
sp78 = (a2_z * 1.2f) - (a1_z * 0.2f);
temp_v1->v.ob[0] = a3_x + sp8C;
temp_v1->v.ob[1] = a3_y + sp88;
temp_v1->v.ob[2] = a3_z + sp84;
temp_v1++;
temp_v1->v.ob[0] = a3_x + sp80;
temp_v1->v.ob[1] = a3_y + sp7C;
temp_v1->v.ob[2] = a3_z + sp78;
temp_v1++;
temp_v1->v.ob[0] = a1_x;
temp_v1->v.ob[1] = a1_y;
temp_v1->v.ob[2] = a1_z;
temp_v1++;
temp_v1->v.ob[0] = a2_x;
temp_v1->v.ob[1] = a2_y;
temp_v1->v.ob[2] = a2_z;
temp_v1++;
temp_v1->v.ob[0] = sp8C - a3_x;
temp_v1->v.ob[1] = sp88 - a3_y;
temp_v1->v.ob[2] = sp84 - a3_z;
temp_v1++;
temp_v1->v.ob[0] = sp80 - a3_x;
temp_v1->v.ob[1] = sp7C - a3_y;
temp_v1->v.ob[2] = sp78 - a3_z;
temp_v1++;
temp_v1->v.ob[0] = a1_x - a3_x * 2.0f;
temp_v1->v.ob[1] = a1_y - a3_y * 2.0f;
temp_v1->v.ob[2] = a1_z - a3_z * 2.0f;
temp_v1++;
temp_v1->v.ob[0] = a2_x - a3_x * 2.0f;
temp_v1->v.ob[1] = tmp1;
temp_v1->v.ob[2] = a2_z - a3_z * 2.0f;
temp_v1++;
guTranslate(sp1DC, 0.0f, 0.0f, 0.0f);
gSPMatrix(arg0++, sp1DC, G_MTX_PUSH | G_MTX_MUL | G_MTX_MODELVIEW);
gSPVertex(arg0++, sp1E8, 10, 0);
gSP2Triangles(arg0++, 0, 4, 2, 0, 2, 4, 6, 0);
gSP2Triangles(arg0++, 0, 1, 4, 0, 1, 5, 4, 0);
gSP2Triangles(arg0++, 1, 3, 5, 0, 3, 7, 5, 0);
gSP2Triangles(arg0++, 6, 4, 8, 0, 4, 5, 8, 0);
gSP2Triangles(arg0++, 8, 5, 9, 0, 5, 7, 9, 0);
gSPPopMatrix(arg0++, G_MTX_MODELVIEW);
return arg0;
}
#else
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_351F20/func_84367660.s")
#endif

View File

@ -1,13 +1,301 @@
#include "global.h"
#include "fragment62.h"
#include "src/6A40.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_352570/func_84367CB0.s")
static unk_D_843AA880 D_843AA880[4];
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_352570/func_84367E2C.s")
static Vtx D_843898B0[] = {
VTX(-30, 0, -20, 2048, 0, 0xFF, 0xFF, 0xFF, 0xC8),
VTX(10, 0, -20, 0, 0, 0xFF, 0xFF, 0xFF, 0xC8),
VTX(-30, 0, 20, 2048, 2048, 0xFF, 0xFF, 0xFF, 0xC8),
VTX(10, 0, 20, 0, 2048, 0xFF, 0xFF, 0xFF, 0xC8),
};
static Gfx D_843898F0[] = {
gsDPPipeSync(),
gsDPSetCycleType(G_CYC_1CYCLE),
gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN |
G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA),
gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH),
gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON),
gsDPPipeSync(),
gsDPSetRenderMode(G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2),
gsDPSetCombineMode(G_CC_BLENDIA, G_CC_BLENDIA),
gsDPSetPrimColor(0, 0, 255, 255, 255, 255),
gsDPSetEnvColor(255, 255, 255, 255),
gsSPVertex(0x843898B0, 4, 0),
gsSP2Triangles(0, 2, 1, 0, 2, 3, 1, 0),
gsSPEndDisplayList(),
};
static Gfx D_84389958[] = {
gsDPPipeSync(),
gsDPSetCycleType(G_CYC_1CYCLE),
gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN |
G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA),
gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH),
gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetRenderMode(G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
gsDPSetColorDither(G_CD_NOISE),
gsSPEndDisplayList(),
};
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_352570/func_84368080.s")
void func_84367CB0(void) {
s32 i;
s32 j;
f32 temp_fa0;
unk_D_843AA880* var_a2;
unk_D_843AA880_034* var_v0;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_352570/func_84368140.s")
temp_fa0 = func_8432FCD4() * 0.75f;
var_a2 = &D_843AA880[0];
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_352570/func_843684CC.s")
for (i = 0; i < 4; i++, var_a2++) {
var_a2->unk_000 = 0;
var_a2->unk_002 = 0;
var_a2->unk_004 = 0;
var_a2->unk_00C = temp_fa0;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_352570/func_84368560.s")
var_v0 = &var_a2->unk_034[0];
for (j = 0; j < 15; j++, var_v0++) {
var_v0->unk_00 = 0;
var_v0->unk_04 = 1.0f;
var_v0->unk_08 = 0.0f;
var_v0->unk_0C.z = var_v0->unk_0C.y = var_v0->unk_0C.x = 0.0f;
var_v0->unk_18.z = var_v0->unk_18.y = var_v0->unk_18.x = 0.0f;
}
}
}
void func_84367E2C(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, u8 arg6, u8 arg7, u8 arg8, u8 arg9,
f32 argA, f32 argB, f32 argC, s16 argD) {
unk_D_843AA880* var_v1;
unk_D_843AA880_034* var_s0;
s32 i;
s32 j;
Vec3f sp64;
Vec3f sp58;
sp64.x = arg0;
sp64.y = arg1;
sp64.z = arg2;
var_v1 = &D_843AA880[0];
for (i = 0; i < 4; i++, var_v1++) {
if (var_v1->unk_000 == 0) {
f32 tmp = var_v1->unk_00C;
var_v1->unk_000 = 1;
var_v1->unk_002 = 0;
var_v1->unk_004 = argD;
var_v1->unk_008.r = arg6;
var_v1->unk_008.g = arg7;
var_v1->unk_008.b = arg8;
var_v1->unk_01C = sp64;
var_v1->unk_010 = argC;
var_v1->unk_014 = argA;
sp58.x = arg3;
sp58.y = arg4 * tmp;
sp58.z = arg5 * tmp;
if (arg3 < 0.0) {
var_v1->unk_006 = -1;
} else {
var_v1->unk_006 = 1;
}
var_s0 = &var_v1->unk_034[0];
for (j = 0; j < 15; j++, var_s0++) {
var_s0->unk_00 = (arg9 * (0xE - j)) / 15;
var_s0->unk_04 = argB;
var_s0->unk_08 = (RAND(120) * 6.2831855f) / 120.0;
var_s0->unk_0C = sp64;
var_s0->unk_18 = sp58;
}
break;
}
}
}
void func_84368080(f32 arg0, Vec3f* arg1, f32 arg2, f32 arg3) {
MtxF spB0;
MtxF sp70;
MtxF sp30;
UNUSED s32 pad;
guScaleF(sp30.mf, arg3, arg3, arg3);
guRotateF(sp70.mf, (arg0 * 360.0) / 6.2831854820251465, 1.0f, 0.0f, 0.0f);
guMtxCatF(sp30.mf, sp70.mf, spB0.mf);
guMtxXFMF(spB0.mf, 0.0f, 0.0f, arg2, &arg1->x, &arg1->y, &arg1->z);
}
void func_84368140(unk_D_843AA880* arg0) {
unk_D_843AA880_034* var_v0 = &arg0->unk_034[0];
s32 i;
f32 temp_fa0;
f32 temp_fa1;
for (i = 0; i < 15; i++, var_v0++) {
if (i == 0) {
var_v0->unk_24 = var_v0->unk_04;
var_v0->unk_28 = var_v0->unk_08;
var_v0->unk_2C = var_v0->unk_0C;
var_v0->unk_38 = var_v0->unk_18;
var_v0->unk_0C.x += var_v0->unk_18.x;
var_v0->unk_0C.y += var_v0->unk_18.y;
var_v0->unk_0C.z += var_v0->unk_18.z;
var_v0->unk_08 += arg0->unk_014;
if (arg0->unk_006 < 0) {
var_v0->unk_18.x += 1.5;
if (var_v0->unk_18.x > 20.0) {
var_v0->unk_18.x = 20.0f;
}
} else {
var_v0->unk_18.x -= 1.5;
if (var_v0->unk_18.x < -20.0) {
var_v0->unk_18.x = -20.0f;
}
}
if (arg0->unk_002 < 0xF) {
temp_fa0 = ((0xF - arg0->unk_002) * 0.03) / 15.0;
temp_fa1 = (arg0->unk_002 * 0.15) / 15.0;
var_v0->unk_18.y += (arg0->unk_01C.y - var_v0->unk_0C.y) * temp_fa0;
var_v0->unk_18.z += (arg0->unk_01C.z - var_v0->unk_0C.z) * temp_fa0;
var_v0->unk_0C.y += (arg0->unk_01C.y - var_v0->unk_0C.y) * temp_fa1;
var_v0->unk_0C.z += (arg0->unk_01C.z - var_v0->unk_0C.z) * temp_fa1;
} else {
var_v0->unk_18.y += (arg0->unk_01C.y - var_v0->unk_0C.y) * 0.03;
var_v0->unk_18.z += (arg0->unk_01C.z - var_v0->unk_0C.z) * 0.03;
var_v0->unk_0C.y += (arg0->unk_01C.y - var_v0->unk_0C.y) * 0.15;
var_v0->unk_0C.z += (arg0->unk_01C.z - var_v0->unk_0C.z) * 0.15;
}
var_v0->unk_04 += 2.0;
if (arg0->unk_010 < var_v0->unk_04) {
var_v0->unk_04 = arg0->unk_010;
}
} else {
var_v0->unk_24 = var_v0->unk_04;
var_v0->unk_28 = var_v0->unk_08;
var_v0->unk_2C = var_v0->unk_0C;
var_v0->unk_38 = var_v0->unk_18;
var_v0->unk_0C = var_v0[-1].unk_2C;
var_v0->unk_08 = var_v0[-1].unk_28;
var_v0->unk_18 = var_v0[-1].unk_38;
var_v0->unk_04 = var_v0[-1].unk_24;
}
}
}
s32 func_843684CC(void) {
s32 i;
unk_D_843AA880* var_s0 = &D_843AA880[0];
for (i = 0; i < 4; i++, var_s0++) {
if (var_s0->unk_000 == 1) {
var_s0->unk_002 += 1;
if (var_s0->unk_004 < var_s0->unk_002) {
var_s0->unk_000 = 0;
} else {
func_84368140(var_s0);
}
}
}
return 0;
}
Gfx* func_84368560(Gfx* arg0) {
s32 i;
s32 j;
s32 k;
unk_D_843AA880* var_s4;
unk_D_843AA880_034* temp_s0;
Mtx* temp_v0;
Vec3f sp134;
Vtx* var_s0;
Mtx spF0;
Mtx spB0;
s16 var_s3;
UNUSED s32 pad;
gDPPipeSync(arg0++);
gDPLoadTextureBlock_4b(arg0++, D_843920C0[0x49], G_IM_FMT_I, 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP,
G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD);
var_s4 = &D_843AA880[0];
for (i = 0; i < 4; i++, var_s4++) {
if (var_s4->unk_000 == 1) {
guScale(&spB0, var_s4->unk_00C, var_s4->unk_00C, var_s4->unk_00C);
temp_s0 = &var_s4->unk_034[0];
if (temp_s0->unk_0C.y > 0.0f) {
temp_v0 = func_80005F5C(sizeof(Mtx) * 1);
guTranslate(temp_v0, temp_s0->unk_0C.x, temp_s0->unk_0C.y, temp_s0->unk_0C.z);
guRotateRPY(&spF0, (temp_s0->unk_08 * -360.0f * var_s4->unk_006) / 6.2831854820251465,
(var_s4->unk_006 * 0x5A) + 0x5A, 0.0f);
guMtxCatL(&spF0, temp_v0, temp_v0);
guMtxCatL(&spB0, temp_v0, temp_v0);
gSPMatrix(arg0++, temp_v0, G_MTX_PUSH | G_MTX_MUL | G_MTX_MODELVIEW);
gSPDisplayList(arg0++, D_843898F0);
gSPPopMatrix(arg0++, G_MTX_MODELVIEW);
}
var_s4->unk_018 = func_80005F5C(sizeof(Vtx) * 30);
var_s0 = var_s4->unk_018;
for (j = 0; j < 15; j++) {
func_84368080(temp_s0->unk_08, &sp134, temp_s0->unk_04, var_s4->unk_00C);
var_s3 = temp_s0->unk_0C.y + sp134.y;
if (var_s3 < 0) {
var_s3 = 0;
}
var_s0->v.ob[0] = temp_s0->unk_0C.x + sp134.x;
var_s0->v.ob[1] = var_s3;
var_s0->v.ob[2] = temp_s0->unk_0C.z + sp134.z;
var_s0->v.cn[0] = var_s4->unk_008.r;
var_s0->v.cn[1] = var_s4->unk_008.g;
var_s0->v.cn[2] = var_s4->unk_008.b;
var_s0->v.cn[3] = temp_s0->unk_00;
var_s0++;
func_84368080(temp_s0->unk_08 + M_PI_F, &sp134, temp_s0->unk_04, var_s4->unk_00C);
var_s3 = temp_s0->unk_0C.y + sp134.y;
if (var_s3 < 0) {
var_s3 = 0;
}
var_s0->v.ob[0] = temp_s0->unk_0C.x + sp134.x;
var_s0->v.ob[1] = var_s3;
var_s0->v.ob[2] = temp_s0->unk_0C.z + sp134.z;
var_s0->v.cn[0] = var_s4->unk_008.r;
var_s0->v.cn[1] = var_s4->unk_008.g;
var_s0->v.cn[2] = var_s4->unk_008.b;
var_s0->v.cn[3] = temp_s0->unk_00;
var_s0++;
temp_s0++;
}
var_s0 = var_s4->unk_018;
gSPDisplayList(arg0++, D_84389958);
for (k = 0; k < 14; k++) {
gSPVertex(arg0++, var_s0, 4, 0);
gSP2Triangles(arg0++, 0, 2, 1, 0, 2, 3, 1, 0);
var_s0 += 2;
}
}
}
return arg0;
}

View File

@ -1,13 +1,272 @@
#include "global.h"
#include "fragment62.h"
#include "src/6A40.h"
#include "src/math_util.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_353370/func_84368AB0.s")
static unk_D_843AB940 D_843AB940[4];
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_353370/func_84368C04.s")
static Gfx D_843899B0[] = {
gsDPPipeSync(),
gsDPSetCycleType(G_CYC_1CYCLE),
gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN |
G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA),
gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH),
gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetRenderMode(G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
gsDPSetColorDither(G_CD_NOISE),
gsSPEndDisplayList(),
};
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_353370/func_84368E78.s")
void func_84368AB0(void) {
s32 i;
s32 j;
unk_D_843AB940* var_a2 = &D_843AB940[0];
unk_D_843AB940_038* var_v0;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_353370/func_84368F08.s")
for (i = 0; i < 4; i++, var_a2++) {
var_a2->unk_000 = 0;
var_a2->unk_002 = 0;
var_a2->unk_004 = 0;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_353370/func_843692E8.s")
var_v0 = &var_a2->unk_038[0];
for (j = 0; j < 15; j++, var_v0++) {
var_v0->unk_00 = 0;
var_v0->unk_04 = 1.0f;
var_v0->unk_08 = 0.0f;
var_v0->unk_0C.z = var_v0->unk_0C.y = var_v0->unk_0C.x = 0.0f;
var_v0->unk_18.z = var_v0->unk_18.y = var_v0->unk_18.x = 0.0f;
}
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_353370/func_84369388.s")
void func_84368C04(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, u8 arg6, u8 arg7, u8 arg8, u8 arg9,
f32 argA, f32 argB, f32 argC, s16 argD) {
s32 i;
s32 j;
unk_D_843AB940* var_v1;
unk_D_843AB940_038* var_s0;
Vec3f sp64;
Vec3f sp58;
sp64.x = arg0;
sp64.y = arg1;
sp64.z = arg2;
sp58.x = arg3;
sp58.y = arg4;
sp58.z = arg5;
var_v1 = &D_843AB940[0];
for (i = 0; i < 4; i++, var_v1++) {
if (var_v1->unk_000 == 0) {
var_v1->unk_000 = 1;
var_v1->unk_002 = 0;
var_v1->unk_004 = argD;
var_v1->unk_008.r = arg6;
var_v1->unk_008.g = arg7;
var_v1->unk_008.b = arg8;
var_v1->unk_01C = sp64;
var_v1->unk_00C = argC;
var_v1->unk_010 = argA;
var_v1->unk_034 = func_8432FD70(sp64, 2);
if (arg3 < 0.0) {
var_v1->unk_006 = -1;
} else {
var_v1->unk_006 = 1;
}
var_s0 = &var_v1->unk_038[0];
for (j = 0; j < 15; j++, var_s0++) {
var_s0->unk_00 = (arg9 * (0xE - j)) / 15;
var_s0->unk_04 = argB;
var_s0->unk_08 = (RAND(120) * 6.2831855f) / 120.0;
var_s0->unk_0C = sp64;
var_s0->unk_18 = sp58;
}
break;
}
}
}
void func_84368E78(f32 arg0, Vec3f* arg1, f32 arg2) {
UNUSED MtxF sp70;
MtxF sp30;
UNUSED s32 pad;
guRotateF(sp30.mf, (arg0 * 360.0) / 6.2831854820251465, 1.0f, 0.0f, 0.0f);
guMtxXFMF(sp30.mf, 0.0f, 0.0f, arg2, &arg1->x, &arg1->y, &arg1->z);
}
void func_84368F08(unk_D_843AB940* arg0) {
unk_D_843AB940_038* var_s0 = &arg0->unk_038[0];
s32 i;
f32 var_ft4;
for (i = 0; i < 15; i++, var_s0++) {
if (i == 0) {
var_s0->unk_24 = var_s0->unk_04;
var_s0->unk_28 = var_s0->unk_08;
var_s0->unk_2C = var_s0->unk_0C;
var_s0->unk_38 = var_s0->unk_18;
var_s0->unk_0C.x += var_s0->unk_18.x;
var_s0->unk_0C.y += var_s0->unk_18.y;
var_s0->unk_0C.z += var_s0->unk_18.z;
var_s0->unk_08 += arg0->unk_010;
if (arg0->unk_006 > 0) {
var_s0->unk_18.x += 0.4;
if (var_s0->unk_18.x > 20.0) {
var_s0->unk_18.x = 20.0f;
}
} else {
var_s0->unk_18.x -= 0.4;
if (var_s0->unk_18.x < -20.0) {
var_s0->unk_18.x = -20.0f;
}
}
if (arg0->unk_002 < 0xA) {
f32 tmp1 = (((0xA - arg0->unk_002) * 0.01) / 10.0);
f32 tmp2 = ((arg0->unk_002 * 0.07) / 10.0);
var_s0->unk_18.y += (arg0->unk_01C.y - var_s0->unk_0C.y) * tmp1;
var_ft4 = (arg0->unk_01C.y - var_s0->unk_0C.y) * tmp2;
} else {
var_s0->unk_18.y += ((arg0->unk_01C.y - var_s0->unk_0C.y) * 0.01);
var_ft4 = (arg0->unk_01C.y - var_s0->unk_0C.y) * 0.07;
}
var_s0->unk_0C.y += var_ft4;
arg0->unk_014 = (MathUtil_Atan2s(var_s0->unk_18.x, var_s0->unk_18.y + var_ft4) * 360.0) / 65535.0;
func_8432FDF0(arg0->unk_034, var_s0->unk_0C);
if (arg0->unk_002 == 1) {
func_8432FD70(var_s0->unk_0C, 1);
}
var_s0->unk_04 += 2.0;
if (arg0->unk_00C < var_s0->unk_04) {
var_s0->unk_04 = arg0->unk_00C;
}
} else {
var_s0->unk_24 = var_s0->unk_04;
var_s0->unk_28 = var_s0->unk_08;
var_s0->unk_2C = var_s0->unk_0C;
var_s0->unk_38 = var_s0->unk_18;
var_s0->unk_0C = var_s0[-1].unk_2C;
var_s0->unk_08 = var_s0[-1].unk_28;
var_s0->unk_18 = var_s0[-1].unk_38;
var_s0->unk_04 = var_s0[-1].unk_24;
}
}
}
s32 func_843692E8(void) {
s32 i;
unk_D_843AB940* var_s0 = &D_843AB940[0];
for (i = 0; i < 4; i++, var_s0++) {
if (var_s0->unk_000 == 1) {
var_s0->unk_002 += 1;
if (var_s0->unk_004 < var_s0->unk_002) {
var_s0->unk_000 = 0;
func_8432FE24(var_s0->unk_034);
} else {
func_84368F08(var_s0);
}
}
}
return 0;
}
Gfx* func_84369388(Gfx* arg0) {
s32 i;
s32 j;
s32 k;
unk_D_843AB940* var_s5;
unk_D_843AB940_038* temp_s0;
Mtx* temp_v0;
Vec3f sp154;
UNUSED s32 pad[14];
s16 var_s3;
Vtx* var_s0;
Mtx spD0;
Mtx sp90;
UNUSED s32 pad2;
var_s5 = &D_843AB940[0];
for (i = 0; i < 4; i++, var_s5++) {
if (var_s5->unk_000 == 1) {
temp_s0 = &var_s5->unk_038[0];
if (temp_s0->unk_0C.y > 0.0f) {
temp_v0 = func_80005F5C(sizeof(Mtx) * 1);
guTranslate(temp_v0, temp_s0->unk_0C.x, temp_s0->unk_0C.y, temp_s0->unk_0C.z);
guRotateRPY(&spD0, (temp_s0->unk_08 * -360.0f * var_s5->unk_006) / 6.2831854820251465, 0.0f,
var_s5->unk_014);
guMtxCatL(&spD0, temp_v0, temp_v0);
guScale(&sp90, 0.09f, 0.09f, 0.09f);
guMtxCatL(&sp90, temp_v0, temp_v0);
gSPMatrix(arg0++, temp_v0, G_MTX_PUSH | G_MTX_MUL | G_MTX_MODELVIEW);
gSPDisplayList(arg0++, D_8438A980);
gSPPopMatrix(arg0++, G_MTX_MODELVIEW);
}
var_s5->unk_018 = func_80005F5C(sizeof(Vtx) * 30);
var_s0 = var_s5->unk_018;
for (j = 0; j < 15; j++) {
func_84368E78(temp_s0->unk_08, &sp154, temp_s0->unk_04);
var_s3 = temp_s0->unk_0C.y + sp154.y;
if (var_s3 < 0) {
var_s3 = 0;
}
var_s0->v.ob[0] = temp_s0->unk_0C.x + sp154.x;
var_s0->v.ob[1] = var_s3;
var_s0->v.ob[2] = temp_s0->unk_0C.z + sp154.z;
var_s0->v.cn[0] = var_s5->unk_008.r;
var_s0->v.cn[1] = var_s5->unk_008.g;
var_s0->v.cn[2] = var_s5->unk_008.b;
var_s0->v.cn[3] = temp_s0->unk_00;
var_s0++;
func_84368E78(temp_s0->unk_08 + 3.1415927f, &sp154, temp_s0->unk_04);
var_s3 = temp_s0->unk_0C.y + sp154.y;
if (var_s3 < 0) {
var_s3 = 0;
}
var_s0->v.ob[0] = temp_s0->unk_0C.x + sp154.x;
var_s0->v.ob[1] = var_s3;
var_s0->v.ob[2] = temp_s0->unk_0C.z + sp154.z;
var_s0->v.cn[0] = var_s5->unk_008.r;
var_s0->v.cn[1] = var_s5->unk_008.g;
var_s0->v.cn[2] = var_s5->unk_008.b;
var_s0->v.cn[3] = temp_s0->unk_00;
var_s0++;
temp_s0++;
}
var_s0 = var_s5->unk_018;
gSPDisplayList(arg0++, D_843899B0);
for (k = 0; k < 14; k++) {
gSPVertex(arg0++, var_s0, 4, 0);
gSP2Triangles(arg0++, 0, 2, 1, 0, 2, 3, 1, 0);
var_s0 += 2;
}
}
}
return arg0;
}

View File

@ -1,25 +1,263 @@
#include "global.h"
#include "fragment62.h"
#include "src/6A40.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3540B0/func_843697F0.s")
static unk_D_843ACA10 D_843ACA10[4];
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3540B0/func_84369950.s")
static Gfx D_84389A00[] = {
gsDPPipeSync(),
gsDPSetCycleType(G_CYC_1CYCLE),
gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN |
G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA),
gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH),
gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetRenderMode(G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
gsDPSetColorDither(G_CD_NOISE),
gsSPEndDisplayList(),
};
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3540B0/func_84369BF0.s")
void func_843697F0(void) {
s32 i;
s32 j;
unk_D_843ACA10* var_v0 = &D_843ACA10[0];
unk_D_843ACA10_01C* var_a0;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3540B0/func_84369C80.s")
for (i = 0; i < 4; i++, var_v0++) {
var_v0->unk_000 = 0;
var_v0->unk_002 = 0;
var_v0->unk_004 = 0;
var_v0->unk_418 = 0.16f;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3540B0/func_84369F0C.s")
var_a0 = &var_v0->unk_01C[0];
for (j = 0; j < 15; j++, var_a0++) {
var_a0->unk_00 = 0;
var_a0->unk_04 = 1.0f;
var_a0->unk_08 = 0.0f;
var_a0->unk_0C.x = 0.0f;
var_a0->unk_0C.y = 0.0f;
var_a0->unk_0C.z = 0.0f;
var_a0->unk_18.x = 0.0f;
var_a0->unk_18.y = 0.0f;
var_a0->unk_18.z = 0.0f;
}
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3540B0/func_84369FA0.s")
void func_84369950(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, u8 arg6, u8 arg7, u8 arg8, u8 arg9,
f32 argA, f32 argB, f32 argC, s16 argD) {
s32 i;
s32 j;
unk_D_843ACA10* var_v1;
unk_D_843ACA10_01C* var_s0;
Vec3f sp64;
Vec3f sp58;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3540B0/func_8436A410.s")
sp64.x = arg0;
sp64.y = arg1;
sp64.z = arg2;
sp58.x = arg3;
sp58.y = arg4;
sp58.z = arg5;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3540B0/func_8436A540.s")
var_v1 = &D_843ACA10[0];
for (i = 0; i < 4; i++, var_v1++) {
if (var_v1->unk_000 == 0) {
var_v1->unk_000 = 1;
var_v1->unk_002 = 0;
var_v1->unk_004 = argD;
var_v1->unk_008.r = arg6;
var_v1->unk_008.g = arg7;
var_v1->unk_008.b = arg8;
var_v1->unk_010 = argA;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3540B0/func_8436A808.s")
if (func_8432FA0C() == 0xD) {
var_v1->unk_418 = 0.08f;
var_v1->unk_00C = argC * 0.5f;
} else {
var_v1->unk_418 = 0.16f;
var_v1->unk_00C = argC;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3540B0/func_8436A890.s")
var_v1->unk_018 = func_8432FD70(sp64, 2);
if (arg3 < 0.0) {
var_v1->unk_006 = -1;
} else {
var_v1->unk_006 = 1;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3540B0/func_8436ABA8.s")
var_s0 = &var_v1->unk_01C[0];
for (j = 0; j < 15; j++, var_s0++) {
var_s0->unk_00 = (arg9 * (0xE - j)) / 15;
var_s0->unk_04 = argB;
var_s0->unk_08 = (RAND(120) * 6.2831855f) / 120.0;
var_s0->unk_0C = sp64;
var_s0->unk_18 = sp58;
}
break;
}
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3540B0/func_8436AC44.s")
void func_84369BF0(f32 arg0, Vec3f* arg1, f32 arg2) {
UNUSED MtxF sp70;
MtxF sp30;
UNUSED s32 pad;
guRotateF(sp30.mf, (arg0 * 360.0) / 6.2831854820251465, 1.0f, 0.0f, 0.0f);
guMtxXFMF(sp30.mf, 0.0f, 0.0f, arg2, &arg1->x, &arg1->y, &arg1->z);
}
void func_84369C80(unk_D_843ACA10* arg0) {
s32 i;
unk_D_843ACA10_01C* var_s0 = &arg0->unk_01C[0];
for (i = 0; i < 15; i++, var_s0++) {
if (i == 0) {
var_s0->unk_24 = var_s0->unk_04;
var_s0->unk_28 = var_s0->unk_08;
var_s0->unk_2C = var_s0->unk_0C;
var_s0->unk_38 = var_s0->unk_18;
var_s0->unk_0C.x += var_s0->unk_18.x;
var_s0->unk_0C.y += var_s0->unk_18.y;
var_s0->unk_0C.z += var_s0->unk_18.z;
var_s0->unk_08 += arg0->unk_010;
if (arg0->unk_006 > 0) {
var_s0->unk_18.x += 0.4;
if (var_s0->unk_18.x > 20.0) {
var_s0->unk_18.x = 20.0f;
}
} else {
var_s0->unk_18.x -= 0.4;
if (var_s0->unk_18.x < -20.0) {
var_s0->unk_18.x = -20.0f;
}
}
func_8432FDF0(arg0->unk_018, var_s0->unk_0C);
var_s0->unk_04 += 2.0;
if (arg0->unk_00C < var_s0->unk_04) {
var_s0->unk_04 = arg0->unk_00C;
}
} else {
var_s0->unk_24 = var_s0->unk_04;
var_s0->unk_28 = var_s0->unk_08;
var_s0->unk_2C = var_s0->unk_0C;
var_s0->unk_38 = var_s0->unk_18;
var_s0->unk_0C = var_s0[-1].unk_2C;
var_s0->unk_08 = var_s0[-1].unk_28;
var_s0->unk_18 = var_s0[-1].unk_38;
var_s0->unk_04 = var_s0[-1].unk_24;
}
}
}
s32 func_84369F0C(void) {
s32 i;
unk_D_843ACA10* var_s0 = &D_843ACA10[0];
for (i = 0; i < 4; i++, var_s0++) {
if (var_s0->unk_000 == 1) {
var_s0->unk_002 += 1;
if (var_s0->unk_004 < var_s0->unk_002) {
var_s0->unk_000 = 0;
} else {
func_84369C80(var_s0);
}
}
}
return 0;
}
Gfx* func_84369FA0(Gfx* arg0) {
s32 i;
s32 j;
s32 k;
unk_D_843ACA10_01C* temp_s0;
unk_D_843ACA10* var_s5;
Vtx* var_s0;
Vec3f sp154;
UNUSED s32 pad[15];
Mtx* temp_v0;
Mtx sp100;
Mtx spC0;
s16 var_s3;
var_s5 = &D_843ACA10[0];
for (i = 0; i < 4; i++, var_s5++) {
if (var_s5->unk_000 == 1) {
temp_s0 = &var_s5->unk_01C[0];
if (temp_s0->unk_0C.y > 0.0f) {
temp_v0 = func_80005F5C(sizeof(Mtx) * 1);
guTranslate(temp_v0, temp_s0->unk_0C.x, temp_s0->unk_0C.y, temp_s0->unk_0C.z);
guRotateRPY(&sp100, (temp_s0->unk_08 * -360.0f * var_s5->unk_006) / 6.2831854820251465,
0x5A - (var_s5->unk_006 * 0x5A), 0.0f);
guMtxCatL(&sp100, temp_v0, temp_v0);
guScale(&spC0, var_s5->unk_418, var_s5->unk_418, var_s5->unk_418);
guMtxCatL(&spC0, temp_v0, temp_v0);
gSPMatrix(arg0++, temp_v0, G_MTX_PUSH | G_MTX_MUL | G_MTX_MODELVIEW);
gSPDisplayList(arg0++, D_8438A980);
gSPPopMatrix(arg0++, G_MTX_MODELVIEW);
}
var_s5->unk_014 = func_80005F5C(sizeof(Vtx) * 30);
var_s0 = var_s5->unk_014;
for (j = 0; j < 15; j++) {
func_84369BF0(temp_s0->unk_08, &sp154, temp_s0->unk_04);
var_s3 = temp_s0->unk_0C.y + sp154.y;
if (var_s3 < 0) {
var_s3 = 0;
}
var_s0->v.ob[0] = temp_s0->unk_0C.x + sp154.x;
var_s0->v.ob[1] = var_s3;
var_s0->v.ob[2] = temp_s0->unk_0C.z + sp154.z;
var_s0->v.cn[0] = var_s5->unk_008.r;
var_s0->v.cn[1] = var_s5->unk_008.g;
var_s0->v.cn[2] = var_s5->unk_008.b;
var_s0->v.cn[3] = temp_s0->unk_00;
var_s0++;
func_84369BF0(temp_s0->unk_08 + 3.1415927f, &sp154, temp_s0->unk_04);
var_s3 = temp_s0->unk_0C.y + sp154.y;
if (var_s3 < 0) {
var_s3 = 0;
}
var_s0->v.ob[0] = temp_s0->unk_0C.x + sp154.x;
var_s0->v.ob[1] = var_s3;
var_s0->v.ob[2] = temp_s0->unk_0C.z + sp154.z;
var_s0->v.cn[0] = var_s5->unk_008.r;
var_s0->v.cn[1] = var_s5->unk_008.g;
var_s0->v.cn[2] = var_s5->unk_008.b;
var_s0->v.cn[3] = temp_s0->unk_00;
var_s0++;
temp_s0++;
}
var_s0 = var_s5->unk_014;
gSPDisplayList(arg0++, D_84389A00);
for (k = 0; k < 14; k++) {
gSPVertex(arg0++, var_s0, 4, 0);
gSP2Triangles(arg0++, 0, 2, 1, 0, 2, 3, 1, 0);
var_s0 += 2;
}
}
}
return arg0;
}

View File

@ -0,0 +1,312 @@
#include "fragment62.h"
#include "src/6A40.h"
static unk_D_843ADA80 D_843ADA80[50];
static Gfx D_84389A50[] = {
gsDPPipeSync(),
gsDPSetCycleType(G_CYC_1CYCLE),
gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN |
G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA),
gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH),
gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetRenderMode(G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
gsDPSetColorDither(G_CD_NOISE),
gsSPEndDisplayList(),
};
static Vtx D_84389AA0[] = {
VTX(-6, 0, -6, 2048, 0, 0xFF, 0xFF, 0xFF, 0x14),
VTX(6, 0, -6, 0, 0, 0xFF, 0xFF, 0xFF, 0x14),
VTX(-6, 0, 6, 2048, 2048, 0xFF, 0xFF, 0xFF, 0x14),
VTX(6, 0, 6, 0, 2048, 0xFF, 0xFF, 0xFF, 0x14),
};
Gfx D_84389AE0[] = {
gsDPPipeSync(),
gsDPSetCycleType(G_CYC_1CYCLE),
gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN |
G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA),
gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH),
gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON),
gsDPPipeSync(),
gsDPSetRenderMode(G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2),
gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),
gsDPSetTexturePersp(G_TP_PERSP),
gsDPSetTextureLUT(G_TT_NONE),
gsDPSetTextureFilter(G_TF_BILERP),
gsDPPipeSync(),
gsSPVertex(D_84389AA0, 4, 0),
gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0),
gsSPEndDisplayList(),
};
void func_8436A410(void) {
unk_D_843ADA80* var_v0 = &D_843ADA80[0];
unk_D_843ADA80_040* var_a0;
s32 i;
s32 j;
for (i = 0; i < 50; i++, var_v0++) {
var_v0->unk_000 = 0;
var_v0->unk_004 = 0;
var_v0->unk_006 = 0;
var_a0 = &var_v0->unk_040[0];
for (j = 0; j < 10; j++, var_a0++) {
var_a0->unk_00 = 0;
var_a0->unk_04 = 1.0f;
var_a0->unk_08 = 0.0f;
var_a0->unk_0C.x = 0.0f;
var_a0->unk_0C.y = 0.0f;
var_a0->unk_0C.z = 0.0f;
var_a0->unk_18.x = 0.0f;
var_a0->unk_18.y = 0.0f;
var_a0->unk_18.z = 0.0f;
}
}
}
void func_8436A540(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, u8 arg6, u8 arg7, u8 arg8, u8 arg9,
f32 argA, f32 argB, f32 argC, s16 argD) {
unk_D_843ADA80* var_v1;
unk_D_843ADA80_040* var_s0;
s32 i;
s32 j;
Vec3f sp7C;
Vec3f sp70;
Vec3f sp64;
f32 temp_fv1;
temp_fv1 = func_8432FCD4() * 0.5f;
sp7C.x = arg0;
sp7C.y = (80.0f * temp_fv1) + arg1;
sp7C.z = arg2;
sp70.x = arg3;
sp70.y = arg4;
sp70.z = arg5;
sp64.x = 0.0f;
sp64.y = temp_fv1 * -2.0;
sp64.z = 0.0f;
var_v1 = &D_843ADA80[0];
for (i = 0; i < 50; i++, var_v1++) {
if (var_v1->unk_000 == 0) {
var_v1->unk_000 = 1;
var_v1->unk_002 = 0;
var_v1->unk_004 = 0;
var_v1->unk_006 = argD;
var_v1->unk_00A.r = arg6;
var_v1->unk_00A.g = arg7;
var_v1->unk_00A.b = arg8;
var_v1->unk_024 = sp7C;
var_v1->unk_014 = argC;
var_v1->unk_018 = argA;
var_v1->unk_010 = temp_fv1;
if (arg0 > 0.0) {
var_v1->unk_008 = -1;
} else {
var_v1->unk_008 = 1;
}
var_s0 = var_v1->unk_040;
for (j = 0; j < 10; j++, var_s0++) {
var_s0->unk_00 = (arg9 * (9 - j)) / 10;
var_s0->unk_04 = argB;
var_s0->unk_08 = (RAND(120) * 6.2831855f) / 120.0;
var_s0->unk_0C = sp7C;
var_s0->unk_18 = sp70;
var_s0->unk_24 = sp64;
}
break;
}
}
}
void func_8436A808(f32 arg0, Vec3f* arg1, f32 arg2) {
MtxF sp30;
f32 temp_fv0 = (arg0 * 360.0) / 6.2831854820251465;
guRotateRPYF(sp30.mf, 90.0f, temp_fv0, temp_fv0);
guMtxXFMF(sp30.mf, 0.0f, 0.0f, arg2, &arg1->x, &arg1->y, &arg1->z);
}
void func_8436A890(unk_D_843ADA80* arg0) {
s32 i;
f32 temp_fs3 = arg0->unk_010;
unk_D_843ADA80_040* var_s0 = &arg0->unk_040[0];
for (i = 0; i < 10; i++, var_s0++) {
if (i == 0) {
var_s0->unk_30 = var_s0->unk_04;
var_s0->unk_34 = var_s0->unk_08;
var_s0->unk_38 = var_s0->unk_0C;
var_s0->unk_44 = var_s0->unk_18;
switch (arg0->unk_002) {
case 0:
var_s0->unk_0C.x += var_s0->unk_24.x;
var_s0->unk_0C.y += var_s0->unk_24.y;
var_s0->unk_0C.z += var_s0->unk_24.z;
var_s0->unk_08 += arg0->unk_018;
var_s0->unk_24.x += __sinf(var_s0->unk_08) * temp_fs3;
var_s0->unk_24.z += __cosf(var_s0->unk_08) * temp_fs3;
if (arg0->unk_004 >= 0x15) {
arg0->unk_002 = 1;
arg0->unk_004 = 0;
}
break;
case 1:
var_s0->unk_0C.x += var_s0->unk_18.x;
var_s0->unk_0C.y += var_s0->unk_18.y;
var_s0->unk_0C.z += var_s0->unk_18.z;
var_s0->unk_08 += arg0->unk_018;
if (arg0->unk_008 > 0) {
var_s0->unk_18.x += 2.0;
if (var_s0->unk_18.x > 20.0) {
var_s0->unk_18.x = 20.0f;
}
} else {
var_s0->unk_18.x -= 2.0;
if (var_s0->unk_18.x < -20.0) {
var_s0->unk_18.x = -20.0f;
}
}
break;
}
var_s0->unk_04 += 2.0;
if (arg0->unk_014 < var_s0->unk_04) {
var_s0->unk_04 = arg0->unk_014;
}
} else {
var_s0->unk_30 = var_s0->unk_04;
var_s0->unk_34 = var_s0->unk_08;
var_s0->unk_38 = var_s0->unk_0C;
var_s0->unk_44 = var_s0->unk_18;
var_s0->unk_0C = var_s0[-1].unk_38;
var_s0->unk_08 = var_s0[-1].unk_34;
var_s0->unk_18 = var_s0[-1].unk_44;
var_s0->unk_04 = var_s0[-1].unk_30;
}
}
}
s32 func_8436ABA8(void) {
s32 i;
unk_D_843ADA80* var_s0 = &D_843ADA80[0];
for (i = 0; i < 50; i++, var_s0++) {
if (var_s0->unk_000 == 1) {
var_s0->unk_004++;
if ((var_s0->unk_002 == 1) && (var_s0->unk_006 < var_s0->unk_004)) {
var_s0->unk_000 = 0;
} else {
func_8436A890(var_s0);
}
}
}
return 0;
}
Gfx* func_8436AC44(Gfx* arg0) {
s32 i;
s32 j;
s32 k;
unk_D_843ADA80_040* temp_s0;
unk_D_843ADA80* var_s5;
Vtx* var_s0;
Vec3f sp184;
UNUSED s32 pad[15];
Mtx* temp_v0;
Mtx sp100;
Mtx spC0;
f32 temp_fs1;
s16 var_s3;
f32 tmp;
gDPLoadTextureBlock(arg0++, D_843920C0[0x1E], G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP,
G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD);
var_s5 = &D_843ADA80[0];
for (i = 0; i < 50; i++, var_s5++) {
if (var_s5->unk_000 == 1) {
temp_s0 = &var_s5->unk_040[0];
tmp = var_s5->unk_010;
if (temp_s0->unk_0C.y > 0.0f) {
temp_fs1 = (temp_s0->unk_08 * 360.0f) / 6.2831854820251465;
temp_v0 = func_80005F5C(sizeof(Mtx) * 1);
guTranslate(temp_v0, temp_s0->unk_0C.x, temp_s0->unk_0C.y, temp_s0->unk_0C.z);
guRotateRPY(&sp100, 90.0f, temp_fs1, temp_fs1);
guMtxCatL(&sp100, temp_v0, temp_v0);
guScale(&spC0, tmp, tmp, tmp);
guMtxCatL(&spC0, temp_v0, temp_v0);
gSPMatrix(arg0++, temp_v0, G_MTX_PUSH | G_MTX_MUL | G_MTX_MODELVIEW);
gSPDisplayList(arg0++, D_84389AE0);
gSPPopMatrix(arg0++, G_MTX_MODELVIEW);
}
var_s5->unk_020 = func_80005F5C(0x140);
var_s0 = var_s5->unk_020;
for (j = 0; j < 10; j++) {
func_8436A808(temp_s0->unk_08, &sp184, temp_s0->unk_04 * tmp);
var_s3 = temp_s0->unk_0C.y + sp184.y;
if (var_s3 < 0) {
var_s3 = 0;
}
var_s0->v.ob[0] = temp_s0->unk_0C.x + sp184.x;
var_s0->v.ob[1] = var_s3;
var_s0->v.ob[2] = temp_s0->unk_0C.z + sp184.z;
var_s0->v.cn[0] = var_s5->unk_00A.r;
var_s0->v.cn[1] = var_s5->unk_00A.g;
var_s0->v.cn[2] = var_s5->unk_00A.b;
var_s0->v.cn[3] = temp_s0->unk_00;
var_s0++;
func_8436A808(temp_s0->unk_08 + 3.1415927f, &sp184, temp_s0->unk_04 * tmp);
var_s3 = temp_s0->unk_0C.y + sp184.y;
if (var_s3 < 0) {
var_s3 = 0;
}
var_s0->v.ob[0] = temp_s0->unk_0C.x + sp184.x;
var_s0->v.ob[1] = var_s3;
var_s0->v.ob[2] = temp_s0->unk_0C.z + sp184.z;
var_s0->v.cn[0] = var_s5->unk_00A.r;
var_s0->v.cn[1] = var_s5->unk_00A.g;
var_s0->v.cn[2] = var_s5->unk_00A.b;
var_s0->v.cn[3] = temp_s0->unk_00;
var_s0++;
temp_s0++;
}
var_s0 = var_s5->unk_020;
gSPDisplayList(arg0++, D_84389A50);
for (k = 0; k < 9; k++) {
gSPVertex(arg0++, var_s0, 4, 0);
gSP2Triangles(arg0++, 0, 2, 1, 0, 2, 3, 1, 0);
var_s0 += 2;
}
}
}
return arg0;
}

View File

@ -1,13 +1,312 @@
#include "global.h"
#include "fragment62.h"
#include "src/6A40.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_355A00/func_8436B140.s")
static unk_D_843ADA80 D_843B8340[50];
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_355A00/func_8436B270.s")
static Gfx D_84389B60[] = {
gsDPPipeSync(),
gsDPSetCycleType(G_CYC_1CYCLE),
gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN |
G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA),
gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH),
gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetRenderMode(G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
gsDPSetColorDither(G_CD_NOISE),
gsSPEndDisplayList(),
};
static Vtx D_84389BB0[] = {
VTX(-6, 0, -6, 2048, 0, 0xFF, 0xFF, 0xFF, 0x14),
VTX(6, 0, -6, 0, 0, 0xFF, 0xFF, 0xFF, 0x14),
VTX(-6, 0, 6, 2048, 2048, 0xFF, 0xFF, 0xFF, 0x14),
VTX(6, 0, 6, 0, 2048, 0xFF, 0xFF, 0xFF, 0x14),
};
static Gfx D_84389BF0[] = {
gsDPPipeSync(),
gsDPSetCycleType(G_CYC_1CYCLE),
gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN |
G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA),
gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH),
gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON),
gsDPPipeSync(),
gsDPSetRenderMode(G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2),
gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),
gsDPSetTexturePersp(G_TP_PERSP),
gsDPSetTextureLUT(G_TT_NONE),
gsDPSetTextureFilter(G_TF_BILERP),
gsDPPipeSync(),
gsSPVertex(D_84389BB0, 4, 0),
gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0),
gsSPEndDisplayList(),
};
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_355A00/func_8436B538.s")
void func_8436B140(void) {
unk_D_843ADA80* var_v0 = &D_843B8340[0];
unk_D_843ADA80_040* var_a0;
s32 i;
s32 j;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_355A00/func_8436B5C0.s")
for (i = 0; i < 50; i++, var_v0++) {
var_v0->unk_000 = 0;
var_v0->unk_004 = 0;
var_v0->unk_006 = 0;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_355A00/func_8436B8D8.s")
var_a0 = &var_v0->unk_040[0];
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_355A00/func_8436B974.s")
for (j = 0; j < 10; j++, var_a0++) {
var_a0->unk_00 = 0;
var_a0->unk_04 = 1.0f;
var_a0->unk_08 = 0.0f;
var_a0->unk_0C.x = 0.0f;
var_a0->unk_0C.y = 0.0f;
var_a0->unk_0C.z = 0.0f;
var_a0->unk_18.x = 0.0f;
var_a0->unk_18.y = 0.0f;
var_a0->unk_18.z = 0.0f;
}
}
}
void func_8436B270(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, u8 arg6, u8 arg7, u8 arg8, u8 arg9,
f32 argA, f32 argB, f32 argC, s16 argD) {
unk_D_843ADA80* var_v1;
unk_D_843ADA80_040* var_s0;
s32 i;
s32 j;
Vec3f sp7C;
Vec3f sp70;
Vec3f sp64;
f32 temp_fv1;
temp_fv1 = func_8432FCD4() * 0.5f;
sp7C.x = arg0;
sp7C.y = (80.0f * temp_fv1) + arg1;
sp7C.z = arg2;
sp70.x = arg3;
sp70.y = arg4;
sp70.z = arg5;
sp64.x = 0.0f;
sp64.y = temp_fv1 * -2.0;
sp64.z = 0.0f;
var_v1 = &D_843B8340[0];
for (i = 0; i < 50; i++, var_v1++) {
if (var_v1->unk_000 == 0) {
var_v1->unk_000 = 1;
var_v1->unk_002 = 0;
var_v1->unk_004 = 0;
var_v1->unk_006 = argD;
var_v1->unk_00A.r = arg6;
var_v1->unk_00A.g = arg7;
var_v1->unk_00A.b = arg8;
var_v1->unk_024 = sp7C;
var_v1->unk_014 = argC;
var_v1->unk_018 = argA;
var_v1->unk_010 = temp_fv1;
if (arg0 > 0.0) {
var_v1->unk_008 = -1;
} else {
var_v1->unk_008 = 1;
}
var_s0 = var_v1->unk_040;
for (j = 0; j < 10; j++, var_s0++) {
var_s0->unk_00 = (arg9 * (9 - j)) / 10;
var_s0->unk_04 = argB;
var_s0->unk_08 = (RAND(120) * 6.2831855f) / 120.0;
var_s0->unk_0C = sp7C;
var_s0->unk_18 = sp70;
var_s0->unk_24 = sp64;
}
break;
}
}
}
void func_8436B538(f32 arg0, Vec3f* arg1, f32 arg2) {
MtxF sp30;
f32 temp_fv0 = (arg0 * 360.0) / 6.2831854820251465;
guRotateRPYF(sp30.mf, 90.0f, temp_fv0, temp_fv0);
guMtxXFMF(sp30.mf, 0.0f, 0.0f, arg2, &arg1->x, &arg1->y, &arg1->z);
}
void func_8436B5C0(unk_D_843ADA80* arg0) {
s32 i;
f32 temp_fs3 = arg0->unk_010;
unk_D_843ADA80_040* var_s0 = &arg0->unk_040[0];
for (i = 0; i < 10; i++, var_s0++) {
if (i == 0) {
var_s0->unk_30 = var_s0->unk_04;
var_s0->unk_34 = var_s0->unk_08;
var_s0->unk_38 = var_s0->unk_0C;
var_s0->unk_44 = var_s0->unk_18;
switch (arg0->unk_002) {
case 0:
var_s0->unk_0C.x += var_s0->unk_24.x;
var_s0->unk_0C.y += var_s0->unk_24.y;
var_s0->unk_0C.z += var_s0->unk_24.z;
var_s0->unk_08 += arg0->unk_018;
var_s0->unk_24.x += __sinf(var_s0->unk_08) * temp_fs3;
var_s0->unk_24.z += __cosf(var_s0->unk_08) * temp_fs3;
if (arg0->unk_004 >= 0x15) {
arg0->unk_002 = 1;
arg0->unk_004 = 0;
}
break;
case 1:
var_s0->unk_0C.x += var_s0->unk_18.x;
var_s0->unk_0C.y += var_s0->unk_18.y;
var_s0->unk_0C.z += var_s0->unk_18.z;
var_s0->unk_08 += arg0->unk_018;
if (arg0->unk_008 > 0) {
var_s0->unk_18.x += 2.0;
if (var_s0->unk_18.x > 20.0) {
var_s0->unk_18.x = 20.0f;
}
} else {
var_s0->unk_18.x -= 2.0;
if (var_s0->unk_18.x < -20.0) {
var_s0->unk_18.x = -20.0f;
}
}
break;
}
var_s0->unk_04 += 2.0;
if (arg0->unk_014 < var_s0->unk_04) {
var_s0->unk_04 = arg0->unk_014;
}
} else {
var_s0->unk_30 = var_s0->unk_04;
var_s0->unk_34 = var_s0->unk_08;
var_s0->unk_38 = var_s0->unk_0C;
var_s0->unk_44 = var_s0->unk_18;
var_s0->unk_0C = var_s0[-1].unk_38;
var_s0->unk_08 = var_s0[-1].unk_34;
var_s0->unk_18 = var_s0[-1].unk_44;
var_s0->unk_04 = var_s0[-1].unk_30;
}
}
}
s32 func_8436B8D8(void) {
s32 i;
unk_D_843ADA80* var_s0 = &D_843B8340[0];
for (i = 0; i < 50; i++, var_s0++) {
if (var_s0->unk_000 == 1) {
var_s0->unk_004++;
if ((var_s0->unk_002 == 1) && (var_s0->unk_006 < var_s0->unk_004)) {
var_s0->unk_000 = 0;
} else {
func_8436B5C0(var_s0);
}
}
}
return 0;
}
Gfx* func_8436B974(Gfx* arg0) {
s32 i;
s32 j;
s32 k;
unk_D_843ADA80_040* temp_s0;
unk_D_843ADA80* var_s5;
Vtx* var_s0;
Vec3f sp184;
UNUSED s32 pad[15];
Mtx* temp_v0;
Mtx sp100;
Mtx spC0;
f32 temp_fs1;
s16 var_s3;
f32 tmp;
gDPLoadTextureBlock(arg0++, D_843920C0[0x1C], G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP,
G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD);
var_s5 = &D_843B8340[0];
for (i = 0; i < 50; i++, var_s5++) {
if (var_s5->unk_000 == 1) {
temp_s0 = &var_s5->unk_040[0];
tmp = var_s5->unk_010;
if (temp_s0->unk_0C.y > 0.0f) {
temp_fs1 = (temp_s0->unk_08 * 360.0f) / 6.2831854820251465;
temp_v0 = func_80005F5C(sizeof(Mtx) * 1);
guTranslate(temp_v0, temp_s0->unk_0C.x, temp_s0->unk_0C.y, temp_s0->unk_0C.z);
guRotateRPY(&sp100, 90.0f, temp_fs1, temp_fs1);
guMtxCatL(&sp100, temp_v0, temp_v0);
guScale(&spC0, tmp, tmp, tmp);
guMtxCatL(&spC0, temp_v0, temp_v0);
gSPMatrix(arg0++, temp_v0, G_MTX_PUSH | G_MTX_MUL | G_MTX_MODELVIEW);
gSPDisplayList(arg0++, D_84389BF0);
gSPPopMatrix(arg0++, G_MTX_MODELVIEW);
}
var_s5->unk_020 = func_80005F5C(0x140);
var_s0 = var_s5->unk_020;
for (j = 0; j < 10; j++) {
func_8436B538(temp_s0->unk_08, &sp184, temp_s0->unk_04 * tmp);
var_s3 = temp_s0->unk_0C.y + sp184.y;
if (var_s3 < 0) {
var_s3 = 0;
}
var_s0->v.ob[0] = temp_s0->unk_0C.x + sp184.x;
var_s0->v.ob[1] = var_s3;
var_s0->v.ob[2] = temp_s0->unk_0C.z + sp184.z;
var_s0->v.cn[0] = var_s5->unk_00A.r;
var_s0->v.cn[1] = var_s5->unk_00A.g;
var_s0->v.cn[2] = var_s5->unk_00A.b;
var_s0->v.cn[3] = temp_s0->unk_00;
var_s0++;
func_8436B538(temp_s0->unk_08 + 3.1415927f, &sp184, temp_s0->unk_04 * tmp);
var_s3 = temp_s0->unk_0C.y + sp184.y;
if (var_s3 < 0) {
var_s3 = 0;
}
var_s0->v.ob[0] = temp_s0->unk_0C.x + sp184.x;
var_s0->v.ob[1] = var_s3;
var_s0->v.ob[2] = temp_s0->unk_0C.z + sp184.z;
var_s0->v.cn[0] = var_s5->unk_00A.r;
var_s0->v.cn[1] = var_s5->unk_00A.g;
var_s0->v.cn[2] = var_s5->unk_00A.b;
var_s0->v.cn[3] = temp_s0->unk_00;
var_s0++;
temp_s0++;
}
var_s0 = var_s5->unk_020;
gSPDisplayList(arg0++, D_84389B60);
for (k = 0; k < 9; k++) {
gSPVertex(arg0++, var_s0, 4, 0);
gSP2Triangles(arg0++, 0, 2, 1, 0, 2, 3, 1, 0);
var_s0 += 2;
}
}
}
return arg0;
}

View File

@ -1,17 +1,401 @@
#include "global.h"
#include "fragment62.h"
#include "src/32D10.h"
#include "src/6A40.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_356730/func_8436BE70.s")
static unk_D_843C2C00 D_843C2C00[4];
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_356730/func_8436BFB8.s")
static Gfx D_84389C70[] = {
gsDPPipeSync(),
gsDPSetCycleType(G_CYC_2CYCLE),
gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN |
G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA),
gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
gsDPPipeSync(),
gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_XLU_SURF2),
gsDPSetTexturePersp(G_TP_PERSP),
gsDPSetTextureDetail(G_TD_CLAMP),
gsDPSetTextureLOD(G_TL_TILE),
gsDPSetTextureLUT(G_TT_NONE),
gsDPSetTextureConvert(G_TC_FILT),
gsDPSetTextureFilter(G_TF_BILERP),
gsSPEndDisplayList(),
};
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_356730/func_8436C344.s")
void func_8436BE70(void) {
s32 i;
s32 j;
unk_D_843C2C00* var_v0 = &D_843C2C00[0];
unk_D_843C2C00_0B0* var_a0;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_356730/func_8436C3CC.s")
for (i = 0; i < 4; i++, var_v0++) {
var_v0->unk_000 = 0;
var_v0->unk_002 = 0;
var_v0->unk_004 = 0;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_356730/func_8436C62C.s")
var_a0 = &var_v0->unk_0B0[0];
for (j = 0; j < 10; j++, var_a0++) {
var_a0->unk_00 = 0;
var_a0->unk_04 = 0;
var_a0->unk_08 = 1.0f;
var_a0->unk_0C = 0.0f;
var_a0->unk_10.x = 0.0f;
var_a0->unk_10.y = 0.0f;
var_a0->unk_10.z = 0.0f;
var_a0->unk_1C = 0.0f;
var_a0->unk_20 = 0.0f;
var_a0->unk_24 = 0.0f;
}
}
}
void func_8436BFB8(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6, f32 arg7, f32 arg8, f32 arg9,
f32 argA, s16 argB, s32 argC, s32 argD, s16 argE, s16 argF, s16 arg10, s16 arg11, s16 arg12,
s16 arg13, s16 arg14, s16 arg15, unk_D_843C2C00_024* arg16, unk_D_843C2C00_024* arg17, u8 arg18,
u8 arg19, u8 arg1A, u8 arg1B, u8 arg1C, u8 arg1D, u8 arg1E, u8 arg1F, u8 arg20, u8 arg21, u8 arg22,
u8 arg23, u8 arg24) {
unk_D_843C2C00* var_v0;
unk_D_843C2C00_0B0* var_a0;
s32 i;
s32 j;
Vec3f sp3C;
Vec3f sp30;
sp3C.x = arg0;
sp3C.y = arg1;
sp3C.z = arg2;
sp30.x = arg3;
sp30.y = arg4;
sp30.z = arg5;
var_v0 = &D_843C2C00[0];
for (i = 0; i < 4; i++, var_v0++) {
if (var_v0->unk_000 == 0) {
var_v0->unk_000 = 1;
var_v0->unk_002 = 0;
var_v0->unk_004 = argB;
var_v0->unk_008 = argA;
var_v0->unk_010 = arg7;
var_v0->unk_014 = arg8;
var_v0->unk_00C = arg6;
var_v0->unk_01C = argC;
var_v0->unk_020 = argD;
var_v0->unk_064.unk_00 = 0;
var_v0->unk_064.unk_02 = 0;
var_v0->unk_070.unk_00 = 0;
var_v0->unk_070.unk_02 = 0;
var_v0->unk_064.unk_04 = argE;
var_v0->unk_064.unk_06 = argF;
var_v0->unk_070.unk_04 = arg12;
var_v0->unk_070.unk_06 = arg13;
var_v0->unk_064.unk_08 = arg10;
var_v0->unk_064.unk_0A = arg11;
var_v0->unk_070.unk_08 = arg14;
var_v0->unk_070.unk_0A = arg15;
var_v0->unk_024 = *arg16;
var_v0->unk_044 = *arg17;
var_v0->unk_07C.unk_00.r = arg18;
var_v0->unk_07C.unk_00.g = arg19;
var_v0->unk_07C.unk_00.b = arg1A;
var_v0->unk_07C.unk_00.a = arg1B;
var_v0->unk_07C.unk_04 = arg1C;
var_v0->unk_081.unk_00.r = arg1D;
var_v0->unk_081.unk_00.g = arg1E;
var_v0->unk_081.unk_00.b = arg1F;
var_v0->unk_081.unk_00.a = arg20;
var_v0->unk_086.r = arg21;
var_v0->unk_086.g = arg22;
var_v0->unk_086.b = arg23;
var_v0->unk_086.a = arg24;
var_v0->unk_08C = 1.0f;
var_v0->unk_090 = 1.0f;
var_v0->unk_094 = 0x41;
var_a0 = &var_v0->unk_0B0[0];
for (j = 0; j < 10; j++, var_a0++) {
var_a0->unk_00 = j;
var_a0->unk_04 = 0xFF;
var_a0->unk_08 = arg9;
var_a0->unk_0C = 0.0f;
var_a0->unk_10 = sp3C;
var_a0->unk_1C = sp30.x * arg8;
var_a0->unk_20 = sp30.y * arg8;
var_a0->unk_24 = sp30.z * arg8;
}
break;
}
}
}
void func_8436C344(f32 arg0, Vec3f* arg1, f32 arg2) {
UNUSED MtxF sp70;
MtxF sp30;
UNUSED s32 pad;
guRotateF(sp30.mf, (360.0f * arg0) / 6.2831855f, 1.0f, 0.0f, 0.0f);
guMtxXFMF(sp30.mf, 0.0f, 0.0f, arg2, &arg1->x, &arg1->y, &arg1->z);
}
void func_8436C3CC(unk_D_843C2C00* arg0) {
unk_D_843C2C00_0B0* var_v0;
UNUSED s32 pad;
s32 i;
Vec3f sp58;
Vec3f sp4C;
f32 temp_fa0;
f32 temp_fa1;
f32 var_fv0;
f32 var_fv1;
func_8432FBBC(&sp58);
func_8432FC14(&sp4C);
if (sp4C.y > 200.0f) {
sp4C.y = 200.0f;
}
var_v0 = &arg0->unk_0B0[0];
for (i = 0; i < 10; i++, var_v0++) {
if (arg0->unk_002 < arg0->unk_004) {
temp_fa1 = ((f32)arg0->unk_002 * i) / 9.0f;
var_fv0 = arg0->unk_004 - 1;
var_fv1 = temp_fa1 / var_fv0;
temp_fa0 = 1.0f - var_fv1;
} else {
temp_fa1 = i;
var_fv1 = temp_fa1 / 9.0f;
temp_fa0 = 1.0f - var_fv1;
}
var_v0->unk_10.x = (sp58.x * temp_fa0) + (sp4C.x * var_fv1);
var_v0->unk_10.y = (sp58.y * temp_fa0) + (sp4C.y * var_fv1);
var_v0->unk_10.z = (sp58.z * temp_fa0) + (sp4C.z * var_fv1);
var_v0->unk_0C += arg0->unk_00C;
if (i == 0) {
var_v0->unk_08 = 1.0f;
} else if (i == 9) {
if (arg0->unk_002 < 5) {
var_v0->unk_08 = 1.0f;
} else {
var_v0->unk_08 += 0.5f;
if (arg0->unk_008 * 1.0f < var_v0->unk_08) {
var_v0->unk_08 = arg0->unk_008 * 1.0f;
}
}
} else if (i == 1) {
var_v0->unk_08 += arg0->unk_010;
if (arg0->unk_008 * 0.5f < var_v0->unk_08) {
var_v0->unk_08 = arg0->unk_008 * 0.5f;
}
} else if (i == 2) {
var_v0->unk_08 += arg0->unk_010;
if (arg0->unk_008 * 0.75f < var_v0->unk_08) {
var_v0->unk_08 = arg0->unk_008 * 0.75f;
}
} else {
var_v0->unk_08 += arg0->unk_010;
if (arg0->unk_008 * 1.0f < var_v0->unk_08) {
var_v0->unk_08 = arg0->unk_008 * 1.0f;
}
}
}
}
s32 func_8436C62C(void) {
s32 i;
unk_D_843C2C00* var_s0 = &D_843C2C00[0];
for (i = 0; i < 4; i++, var_s0++) {
if (var_s0->unk_000 == 1) {
var_s0->unk_002 += 1;
func_8436C3CC(var_s0);
}
}
return 0;
}
#define TRIANGLES(gfx) \
{ \
s32 j, k; \
for (j = 0; j < 2; j++) \
for (k = 0; k < 4; k++) \
gSP2Triangles(gfx++, (j * 4) + k, (j * 4) + (k + 9), (j * 4) + (k + 1), 0, (j * 4) + (k + 9), \
(j * 4) + (k + 10), (j * 4) + (k + 1), 0); \
}
#ifdef NON_MATCHING
Gfx* func_8436C6A4(Gfx* arg0, unk_D_843C2C00* arg1, s16 arg2, s16 arg3) {
s32 i;
s32 j;
Vtx* sp44;
s32 k;
unk_D_84389CE0* temp_v0;
unk_D_84389CE0* temp_v1;
u8 a1;
u8 a2;
s16 tmp;
temp_v1 = &arg1->unk_07C;
temp_v0 = &arg1->unk_081;
if (func_8432E8B0() == 1) {
if (arg1->unk_094 >= arg1->unk_002) {
arg1->unk_002 = arg1->unk_094 + 1;
}
}
if (arg3 == 0) {
if (arg1->unk_094 < arg1->unk_002) {
tmp = arg1->unk_002 - arg1->unk_094;
arg1->unk_08C = 1.0f - tmp * 0.1f;
arg1->unk_090 = 1.0f - tmp * 0.1f;
if (tmp * 0.1f > 1.0f) {
arg1->unk_08C = 0.0f;
}
if (arg1->unk_090 < 0.0f) {
arg1->unk_090 = 0.0f;
}
}
}
a1 = temp_v1->unk_00.a * arg1->unk_08C;
a2 = temp_v0->unk_00.a * arg1->unk_090;
gDPSetPrimColor(arg0++, 0, temp_v1->unk_04, temp_v1->unk_00.r, temp_v1->unk_00.g, temp_v1->unk_00.b, a1);
gDPSetEnvColor(arg0++, temp_v0->unk_00.r, temp_v0->unk_00.g, temp_v0->unk_00.b, a2);
sp44 = arg1->unk_018;
for (i = 0; i < 9; i++) {
gSPVertex(arg0++, sp44, 18, 0);
TRIANGLES(arg0);
sp44 += 9;
}
return arg0;
}
#else
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_356730/func_8436C6A4.s")
#endif
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_356730/func_8436CB60.s")
Gfx* func_8436CB60(Gfx* arg0, unk_D_843C2C00* arg1) {
unk_D_843C2C00_064* ptr;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_356730/func_8436CE34.s")
ptr = &arg1->unk_064;
gDPLoadTextureTile_4b(arg0++, D_843920C0[arg1->unk_01C], G_IM_FMT_I, 32, 0, 0, 0, 31, 31, 0,
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, ptr->unk_08, ptr->unk_0A);
gDPSetTileSize(arg0++, G_TX_RENDERTILE, ptr->unk_00, ptr->unk_02, (ptr->unk_00 + 31) << 2, (ptr->unk_02 + 31) << 2);
ptr = &arg1->unk_070;
gDPLoadMultiTile_4b(arg0++, D_843920C0[arg1->unk_020], 0x0100, 1, G_IM_FMT_I, 32, 0, 0, 0, 31, 31, 0,
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, ptr->unk_08, ptr->unk_0A);
gDPSetTileSize(arg0++, 1, ptr->unk_00, ptr->unk_02, (ptr->unk_00 + 31) << 2, (ptr->unk_02 + 31) << 2);
return arg0;
}
Gfx* func_8436CE34(Gfx* arg0) {
s32 i;
s32 j;
s32 k;
unk_D_843C2C00* var_fp;
unk_D_843C2C00_0B0* var_s2;
Vec3f sp100;
Vec3f spF4;
Vec3f spE8;
Vec3f spDC;
unk_D_86002F34_00C* spD8;
UNUSED s32 pad[3];
Vtx* var_s0;
spD8 = func_8432FD64();
var_fp = &D_843C2C00[0];
for (i = 0; i < 4; i++, var_fp++) {
if (var_fp->unk_000 == 1) {
if (func_800325AC() == 0) {
var_fp->unk_064.unk_00 += var_fp->unk_064.unk_04;
var_fp->unk_064.unk_02 += var_fp->unk_064.unk_06;
var_fp->unk_070.unk_00 += var_fp->unk_070.unk_04;
var_fp->unk_070.unk_02 += var_fp->unk_070.unk_06;
}
var_s2 = &var_fp->unk_0B0[0];
var_fp->unk_018 = func_80005F5C(sizeof(Vtx) * 90);
var_s0 = var_fp->unk_018;
for (j = 0; j < 10; j++, var_s2++) {
for (k = 0; k < 9; k++) {
func_8436C344(var_s2->unk_0C + ((2.0f * (k % 8) * 3.1415927f) / 8), &sp100, var_s2->unk_08);
var_s0->v.ob[0] = var_s2->unk_10.x + sp100.x;
var_s0->v.ob[1] = var_s2->unk_10.y + sp100.y;
var_s0->v.ob[2] = var_s2->unk_10.z + sp100.z;
var_s0->v.tc[0] = (k * 0x400) / 8;
var_s0->v.tc[1] = (j * 0x400) / 10;
var_s0->v.cn[0] = 0;
var_s0->v.cn[1] = 0;
var_s0->v.cn[2] = 0;
var_s0->v.cn[3] = 0;
var_s0++;
}
}
if ((var_fp->unk_086.r | var_fp->unk_086.g | var_fp->unk_086.b | var_fp->unk_086.a) != 0) {
spE8 = var_fp->unk_0B0[9].unk_10;
spF4 = var_fp->unk_0B0[0].unk_10;
spDC.x = spD8->unk_60.eye.x;
spDC.y = spD8->unk_60.eye.y;
spDC.z = spD8->unk_60.eye.z;
arg0 = func_84367660(arg0, &spF4, &spE8, &spDC, 20.0f, var_fp->unk_086.r, var_fp->unk_086.g,
var_fp->unk_086.b, var_fp->unk_086.a * var_fp->unk_08C);
}
gSPDisplayList(arg0++, D_84389C70);
func_800327CC(
arg0++, var_fp->unk_024.unk_00, var_fp->unk_024.unk_04, var_fp->unk_024.unk_08, var_fp->unk_024.unk_0C,
var_fp->unk_024.unk_10, var_fp->unk_024.unk_14, var_fp->unk_024.unk_18, var_fp->unk_024.unk_1C,
var_fp->unk_044.unk_00, var_fp->unk_044.unk_04, var_fp->unk_044.unk_08, var_fp->unk_044.unk_0C,
var_fp->unk_044.unk_10, var_fp->unk_044.unk_14, var_fp->unk_044.unk_18, var_fp->unk_044.unk_1C);
arg0 = func_8436CB60(arg0, var_fp);
gDPSetPrimColor(arg0++, 0, var_fp->unk_07C.unk_04, var_fp->unk_07C.unk_00.r, var_fp->unk_07C.unk_00.g,
var_fp->unk_07C.unk_00.b, var_fp->unk_07C.unk_00.a);
gDPSetEnvColor(arg0++, var_fp->unk_081.unk_00.r, var_fp->unk_081.unk_00.g, var_fp->unk_081.unk_00.b,
var_fp->unk_081.unk_00.a);
gSPClearGeometryMode(arg0++, G_CULL_BOTH);
gSPSetGeometryMode(arg0++, G_CULL_FRONT);
gDPPipeSync(arg0++);
arg0 = func_8436C6A4(arg0, var_fp, i, 0);
gSPClearGeometryMode(arg0++, G_CULL_BOTH);
gSPSetGeometryMode(arg0++, G_CULL_BACK);
gDPPipeSync(arg0++);
arg0 = func_8436C6A4(arg0, var_fp, i, 1);
}
}
return arg0;
}

View File

@ -1,35 +1,375 @@
#include "global.h"
#include "fragment62.h"
#include "6A40.h"
#include "12D80.h"
#include "30640.h"
#include "32D10.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436D370.s")
static s16 D_843C3500;
static unk_D_843C3508 D_843C3508[6];
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436D4A4.s")
void func_8436D370(void) {
s32 i;
s32 j;
unk_D_843C3508* var_v0;
unk_D_843C3508_0A4* var_a0;
unk_D_84389CE0 sp0 = {
{ 0, 0, 0, 0 },
0,
};
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436D920.s")
D_843C3500 = 0;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436DA38.s")
var_v0 = &D_843C3508[0];
for (i = 0; i < 6; i++, var_v0++) {
var_v0->unk_000 = 0;
var_v0->unk_004 = 0;
var_v0->unk_006 = 0;
var_v0->unk_008 = sp0;
var_v0->unk_00D = sp0;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436DAC4.s")
var_a0 = &var_v0->unk_0A4[0];
for (j = 0; j < 20; j++, var_a0++) {
var_a0->unk_00 = 0.0f;
var_a0->unk_04 = 1.0f;
var_a0->unk_08 = 0.0f;
var_a0->unk_0C.x = 0.0f;
var_a0->unk_0C.y = 0.0f;
var_a0->unk_0C.z = 0.0f;
var_a0->unk_18.x = 0.0f;
var_a0->unk_18.y = 0.0f;
var_a0->unk_18.z = 0.0f;
}
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436DE60.s")
void func_8436D4A4(s16 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6, u8 arg7, u8 arg8, u8 arg9,
u8 argA, u8 argB, u8 argC, u8 argD, u8 argE, u8 argF, f32 arg10, f32 arg11, f32 arg12, s16 arg13,
s32 arg14, s32 arg15, s16 arg16, s16 arg17, s16 arg18, s16 arg19, s16 arg1A, s16 arg1B, s16 arg1C,
s16 arg1D, unk_D_843C2C00_024* arg1E, unk_D_843C2C00_024* arg1F) {
unk_D_843C3508* var_v0;
unk_D_843C3508_0A4* var_v1_2;
s32 i;
s32 j;
Vec3f spC;
Vec3f sp0;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436DFB8.s")
var_v0 = &D_843C3508[0];
spC.x = arg1;
spC.y = arg2;
spC.z = arg3;
sp0.x = arg4;
sp0.y = arg5;
sp0.z = arg6;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436E0E8.s")
for (i = 0; i < 6; i++, var_v0++) {
if (var_v0->unk_000 == 0) {
var_v0->unk_000 = 1;
var_v0->unk_002 = arg0;
var_v0->unk_004 = 0;
var_v0->unk_006 = arg13;
var_v0->unk_080 = arg12;
var_v0->unk_084 = arg10;
var_v0->unk_020 = arg14;
var_v0->unk_024 = arg15;
var_v0->unk_068.unk_00 = 0;
var_v0->unk_068.unk_02 = 0;
var_v0->unk_074.unk_00 = 0;
var_v0->unk_074.unk_02 = 0;
var_v0->unk_068.unk_04 = arg16;
var_v0->unk_068.unk_06 = arg17;
var_v0->unk_074.unk_04 = arg1A;
var_v0->unk_074.unk_06 = arg1B;
var_v0->unk_068.unk_08 = arg18;
var_v0->unk_068.unk_0A = arg19;
var_v0->unk_074.unk_08 = arg1C;
var_v0->unk_074.unk_0A = arg1D;
var_v0->unk_028 = *arg1E;
var_v0->unk_048 = *arg1F;
var_v0->unk_01C = 0x46;
var_v0->unk_014 = 1.0f;
var_v0->unk_018 = 1.0f;
var_v0->unk_008.unk_00.r = arg7;
var_v0->unk_008.unk_00.g = arg8;
var_v0->unk_008.unk_00.b = arg9;
var_v0->unk_008.unk_00.a = argA;
var_v0->unk_008.unk_04 = argB;
var_v0->unk_00D.unk_00.r = argC;
var_v0->unk_00D.unk_00.g = argD;
var_v0->unk_00D.unk_00.b = argE;
var_v0->unk_00D.unk_00.a = argF;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436E3BC.s")
var_v1_2 = &var_v0->unk_0A4[0];
for (j = 0; j < 20; j++, var_v1_2++) {
var_v1_2->unk_00 = 2.0f * j;
var_v1_2->unk_04 = arg11;
var_v1_2->unk_08 = 0.0f;
var_v1_2->unk_0C = spC;
var_v1_2->unk_18 = sp0;
}
break;
}
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436E920.s")
void func_8436D920(s32 arg0, Vec3f* arg1, Vec3f* arg2, Vec3f* arg3, f32 arg4, UNUSED f32 arg5, UNUSED f32 arg6,
UNUSED f32 arg7) {
UNUSED s32 pad[36];
unk_D_86002F34_00C* temp_v0 = func_8432FD64();
f32 sp6C;
f32 sp68;
f32 sp64;
f32 sp54;
f32 sp50;
f32 sp4C;
f32 sp60;
f32 sp5C;
f32 sp58;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436E944.s")
sp60 = arg2->x - temp_v0->unk_60.eye.x;
sp5C = arg2->y - temp_v0->unk_60.eye.y;
sp58 = arg2->z - temp_v0->unk_60.eye.z;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436EA0C.s")
sp6C = arg1->x;
sp68 = arg1->y;
sp64 = arg1->z;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436EB54.s")
func_80031A94(sp6C, sp68, sp64, sp60, sp5C, sp58, &sp54, &sp50, &sp4C);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436ECB0.s")
func_80031B04(&sp54, &sp50, &sp4C);
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436EDE8.s")
switch (arg0) {
case 0:
arg3->x = arg4 * sp54;
arg3->y = arg4 * sp50;
arg3->z = arg4 * sp4C;
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436EED4.s")
case 1:
arg3->x = -arg4 * sp54;
arg3->y = -arg4 * sp50;
arg3->z = -arg4 * sp4C;
break;
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436EEE4.s")
void func_8436DA38(f32 arg0, Vec3f* arg1, Vec3f* arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6) {
UNUSED Mtx sp70;
Mtx sp30;
UNUSED s32 pad;
guRotateF(&sp30, (360.0f * arg0) / 6.2831855f, 1.0f, 0.0f, 0.0f);
guMtxXFMF(&sp30, 0.0f, 0.0f, arg3, &arg2->x, &arg2->y, &arg2->z);
}
void func_8436DAC4(unk_D_843C3508* arg0) {
unk_D_843C3508_0A4* var_s0;
s32 spA8;
s32 i;
Vec3f sp98;
UNUSED s32 pad;
f32 temp_fs1;
f32 temp_fs1_2;
f32 temp_fs2;
s32 temp_s1;
s32 temp_s2;
s32 temp_s3;
s32 temp_s4;
var_s0 = &arg0->unk_0A4[0];
for (i = 0; i < 20; i++, var_s0++) {
if (var_s0->unk_00 > 0.0) {
temp_s3 = RAND(20) + 2;
temp_s2 = RAND(10) + 4;
temp_s4 = RAND(20) + 2;
temp_s1 = RAND(10) + 4;
temp_fs1 = __sinf((((spA8 + temp_s3) % temp_s2) * 6.2831854820251465) / temp_s2);
temp_fs2 =
__sinf((((spA8 + temp_s4) % (temp_s1 + 20)) * 6.2831854820251465) / (temp_s1 + 20)) * (10.0 * temp_fs1);
temp_fs1_2 = __sinf((((spA8 + temp_s4) % temp_s1) * 6.2831854820251465) / temp_s1) * 10.0;
func_8432FBBC(&sp98);
var_s0->unk_0C.x = sp98.x;
var_s0->unk_0C.y = sp98.y + temp_fs2;
var_s0->unk_0C.z = sp98.z + temp_fs1_2;
var_s0->unk_00 -= 1.0;
} else {
var_s0->unk_0C.x += var_s0->unk_18.x;
var_s0->unk_0C.y += var_s0->unk_18.y;
var_s0->unk_0C.z += var_s0->unk_18.z;
var_s0->unk_08 += arg0->unk_084;
var_s0->unk_04 += 3.0f;
if (arg0->unk_080 < var_s0->unk_04) {
var_s0->unk_04 = arg0->unk_080;
}
}
}
}
s32 func_8436DE60(void) {
f32 temp_fv0;
s32 i;
s32 var_s2;
unk_D_843C3508* var_s0;
D_843C3500++;
var_s2 = 0;
var_s0 = &D_843C3508[0];
for (i = 0; i < 6; i++, var_s0++) {
if (var_s0->unk_000 == 1) {
var_s0->unk_004++;
if (var_s0->unk_006 < var_s0->unk_004) {
var_s0->unk_000 = 0;
} else {
func_8436DAC4(var_s0);
var_s2++;
}
if (var_s0->unk_01C < D_843C3500) {
s16 tmp = D_843C3500 - var_s0->unk_01C;
temp_fv0 = tmp * 0.02f;
var_s0->unk_014 = 1.0f - temp_fv0;
var_s0->unk_018 = 1.0f - temp_fv0;
if (temp_fv0 > 1.0f) {
var_s0->unk_014 = 0.0f;
}
if (var_s0->unk_018 < 0.0f) {
var_s0->unk_018 = 0.0f;
}
}
}
}
if (var_s2 > 0) {
return 0;
}
return -1;
}
Gfx* func_8436DFB8(Gfx* arg0, unk_D_843C3508* arg1) {
s32 i;
Vtx* temp_v0 = arg1->unk_088;
for (i = 0; i < 19; i++) {
gSPVertex(arg0++, temp_v0, 4, 0);
gSP2Triangles(arg0++, 0, 2, 1, 0, 1, 2, 3, 0);
temp_v0 += 2;
}
return arg0;
}
Gfx* func_8436E0E8(Gfx* arg0, unk_D_843C3508* arg1) {
unk_D_843C2C00_064* ptr;
UNUSED s32 pad[2];
ptr = &arg1->unk_068;
gDPLoadTextureTile_4b(arg0++, D_843920C0[arg1->unk_020], G_IM_FMT_I, 32, 0, 0, 0, 31, 31, 0,
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, ptr->unk_08, ptr->unk_0A);
gDPSetTileSize(arg0++, G_TX_RENDERTILE, ptr->unk_00, ptr->unk_02, (ptr->unk_00 + 31) << 2, (ptr->unk_02 + 31) << 2);
ptr = &arg1->unk_074;
gDPLoadMultiTile_4b(arg0++, D_843920C0[arg1->unk_024], 0x0100, 1, G_IM_FMT_I, 32, 0, 0, 0, 31, 31, 0,
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, ptr->unk_08, ptr->unk_0A);
gDPSetTileSize(arg0++, 1, ptr->unk_00, ptr->unk_02, (ptr->unk_00 + 31) << 2, (ptr->unk_02 + 31) << 2);
return arg0;
}
Gfx* func_8436E3BC(Gfx* arg0) {
static Gfx D_84389CE8[] = {
gsDPPipeSync(),
gsDPSetCycleType(G_CYC_2CYCLE),
gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN |
G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA),
gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
gsDPPipeSync(),
gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_XLU_SURF2),
gsDPSetTexturePersp(G_TP_PERSP),
gsDPSetTextureDetail(G_TD_CLAMP),
gsDPSetTextureLOD(G_TL_TILE),
gsDPSetTextureLUT(G_TT_NONE),
gsDPSetTextureConvert(G_TC_FILT),
gsDPSetTextureFilter(G_TF_BILERP),
gsSPEndDisplayList(),
};
s32 i;
unk_D_843C3508* var_s6;
unk_D_843C3508_0A4* var_s0;
s32 j;
s32 k;
Vec3f spF0;
Vtx* var_s1;
s32 pad[12];
func_8432FD64();
var_s6 = &D_843C3508[0];
for (i = 0; i < 6; i++, var_s6++) {
if (var_s6->unk_000 == 1) {
var_s0 = &var_s6->unk_0A4[0];
var_s6->unk_088 = func_80005F5C(sizeof(Vtx) * 40);
var_s1 = var_s6->unk_088;
for (j = 0; j < 20; j++, var_s0++) {
for (k = 0; k < 2; k++) {
switch (var_s6->unk_002) {
case 0:
if (var_s0->unk_00 <= 0.0) {
func_8436DA38(var_s0->unk_08 + ((k % 2) * 3.1415927f), &var_s0->unk_18, &spF0,
var_s0->unk_04, 1.0f, 0.0f, 0.0f);
}
break;
case 1:
if (var_s0->unk_00 <= 0.0) {
func_8436D920(k % 2, &var_s0->unk_18, &var_s0->unk_0C, &spF0, var_s0->unk_04, 1.0f,
0.0f, 0.0f);
}
break;
}
var_s1->v.ob[0] = var_s0->unk_0C.x + spF0.x;
var_s1->v.ob[1] = var_s0->unk_0C.y + spF0.y;
var_s1->v.ob[2] = var_s0->unk_0C.z + spF0.z;
var_s1->v.tc[0] = (k % 2) << 0xA;
var_s1->v.tc[1] = (j * 0x400) / 20;
var_s1->v.cn[0] = 0xFF;
var_s1->v.cn[1] = 0xFF;
var_s1->v.cn[2] = 0xFF;
var_s1->v.cn[3] = 0x40;
var_s1++;
}
}
gSPDisplayList(arg0++, D_84389CE8);
func_800327CC(
arg0++, var_s6->unk_028.unk_00, var_s6->unk_028.unk_04, var_s6->unk_028.unk_08, var_s6->unk_028.unk_0C,
var_s6->unk_028.unk_10, var_s6->unk_028.unk_14, var_s6->unk_028.unk_18, var_s6->unk_028.unk_1C,
var_s6->unk_048.unk_00, var_s6->unk_048.unk_04, var_s6->unk_048.unk_08, var_s6->unk_048.unk_0C,
var_s6->unk_048.unk_10, var_s6->unk_048.unk_14, var_s6->unk_048.unk_18, var_s6->unk_048.unk_1C);
gDPSetPrimColor(arg0++, 0, var_s6->unk_008.unk_04, var_s6->unk_008.unk_00.r, var_s6->unk_008.unk_00.g,
var_s6->unk_008.unk_00.b, (u8)(var_s6->unk_008.unk_00.a * var_s6->unk_014));
gDPSetEnvColor(arg0++, var_s6->unk_00D.unk_00.r, var_s6->unk_00D.unk_00.g, var_s6->unk_00D.unk_00.b,
(u8)(var_s6->unk_00D.unk_00.a * var_s6->unk_018));
arg0 = func_8436E0E8(arg0, var_s6);
gDPPipeSync(arg0++);
arg0 = func_8436DFB8(arg0, var_s6);
}
}
return arg0;
}

View File

@ -0,0 +1,253 @@
#include "fragment62.h"
#include "6A40.h"
#include "12D80.h"
#include "30640.h"
#include "32D10.h"
static unk_D_843C49C0 D_843C49C0[2];
static Vtx D_84389D60[] = {
VTX(-10, -10, 0, 0, 0, 0x88, 0x00, 0x00, 0x80),
VTX(-10, 10, 0, 1984, 0, 0x88, 0x00, 0x00, 0x80),
VTX(10, -10, 0, 0, 1984, 0x88, 0x00, 0x00, 0x80),
VTX(10, 10, 0, 1984, 1984, 0x88, 0x00, 0x00, 0x80),
};
static Gfx D_84389DA0[] = {
gsSPEndDisplayList(),
};
static u32 D_84389DA8[] = {
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000B0019, 0x000B0000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000F0620, 0x000F0000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00130F28, 0x00130000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00191A32, 0x00190000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0620253C,
0x06200000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0F28374C, 0x0F280000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00070007, 0x00030000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x1A324A5D, 0x1A320000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00030007, 0x00070007, 0x00070013, 0x0013000F, 0x00070000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x233A6273, 0x233A0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0007000F,
0x00130013, 0x00070000, 0x00000007, 0x00130620, 0x011C0017, 0x000B0000, 0x00000000, 0x00000000, 0x00000000,
0x2F458390, 0x2F450000, 0x00000000, 0x00000000, 0x00000000, 0x000B0017, 0x011C0620, 0x00170007, 0x00000000,
0x00000000, 0x00070017, 0x0C261A32, 0x142D0620, 0x000F0000, 0x00000000, 0x0003000F, 0x3C51A9B2, 0x3C51000F,
0x00030000, 0x00000000, 0x000F0620, 0x142D1A32, 0x0C260017, 0x00070000, 0x00000000, 0x00000000, 0x00000003,
0x00170F28, 0x2D433248, 0x253C0C26, 0x0000000B, 0x011C142D, 0x4F62E2E5, 0x4F62142D, 0x011C000B, 0x00000F28,
0x253C3248, 0x2D430F28, 0x00170003, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000F, 0x0C262F45,
0x5E6F586A, 0x3C510822, 0x233A4357, 0x818EFFFF, 0x818E4357, 0x233A0822, 0x3C51586A, 0x60713248, 0x0F28000F,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030620, 0x2F456979, 0xA6AF8C98,
0x6273B0B8, 0xFFFFFFFF, 0xFFFFB0B8, 0x62738E9A, 0xA8B16979, 0x2F450620, 0x00030000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00071D35, 0x6979E5E8, 0xFFFFFFFF, 0xFFFFFFFF,
0xFFFFFFFF, 0xFFFFE8EA, 0x69791D35, 0x00070000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000017, 0x20386C7C, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFF6C7C,
0x20380017, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000017, 0x233A707F, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFF707F, 0x233A0017, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000017,
0x20386C7C, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFF6C7C, 0x20380017, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00071D35, 0x6777E5E8, 0xFFFFFFFF,
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFE8EA, 0x69791D35, 0x00070000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00030620, 0x2F456979, 0xA6AF8E9A, 0x6273B0B8, 0xFFFFFFFF, 0xFFFFB0B8,
0x62738E9A, 0xA8B16979, 0x2F450620, 0x00030000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x0000000F, 0x0C262F45, 0x5E6F586A, 0x3C510822, 0x233A4357, 0x818EFFFF, 0x818E4357, 0x233A0822, 0x3C51586A,
0x5E6F3248, 0x0F28000F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000003, 0x00170F28, 0x2D433248,
0x253C0F28, 0x0000000B, 0x011C142D, 0x4F62E0E3, 0x4F62142D, 0x011C000B, 0x00000C26, 0x253C3248, 0x2D430F28,
0x00170003, 0x00000000, 0x00000000, 0x00000000, 0x00070017, 0x0C261A32, 0x142D0620, 0x000F0000, 0x00000000,
0x0003000F, 0x3C51A8B1, 0x3C51000F, 0x00030000, 0x00000000, 0x000F0620, 0x142D1A32, 0x0C260017, 0x00070000,
0x00000000, 0x00000007, 0x00130620, 0x011C0017, 0x000B0000, 0x00000000, 0x00000000, 0x00000000, 0x2F45818E,
0x2F450000, 0x00000000, 0x00000000, 0x00000000, 0x000B0017, 0x011C0620, 0x00130007, 0x00000000, 0x00070013,
0x0013000F, 0x00070000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x233A6273, 0x233A0000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x0007000F, 0x00130013, 0x00070000, 0x00070007, 0x00030000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x1730485B, 0x17300000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00030007, 0x00070007, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x0C26354A, 0x0C260000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x0620253C, 0x06200000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00191A32, 0x00190000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00130F28, 0x00130000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x000F0620, 0x000F0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x000B0019, 0x000B0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030013,
0x00030000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
};
static Gfx D_8438A5A8[] = {
gsDPPipeSync(),
gsDPSetCycleType(G_CYC_1CYCLE),
gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN |
G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA),
gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_LIGHTING | G_SHADING_SMOOTH),
gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON),
gsDPPipeSync(),
gsDPLoadTextureBlock(D_84389DA8, G_IM_FMT_IA, G_IM_SIZ_16b, 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP,
G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD),
gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, ENVIRONMENT,
TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0),
gsDPSetEnvColor(0, 64, 255, 0),
gsDPSetRenderMode(G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2),
gsSPVertex(D_84389D60, 4, 0),
gsSP2Triangles(0, 1, 2, 0, 2, 1, 3, 0),
gsSPEndDisplayList(),
};
Gfx D_8438A640[] = {
gsSPEndDisplayList(),
};
u32 D_8438A648[] = {
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00001112, 0x22111000, 0x00000000, 0x00000000,
0x00123344, 0x44433210, 0x00000000, 0x00000000, 0x12345566, 0x66655432, 0x10000000, 0x00000001, 0x34566777,
0x88776654, 0x31000000, 0x00000013, 0x45678899, 0x99988765, 0x43100000, 0x00000134, 0x67899AAA, 0xAAAA9987,
0x64310000, 0x00001346, 0x789ABBBC, 0xCCBBBA98, 0x76431000, 0x00002457, 0x89ABCCDD, 0xDDDCCBA9, 0x87542000,
0x00013568, 0x9ABCDDEE, 0xEEEDDCBA, 0x98653100, 0x00024679, 0xABCDEFFF, 0xFFFFEDCB, 0xA9764200, 0x00035689,
0xBCDEFFFF, 0xFFFFFEDC, 0xA9865300, 0x0013578A, 0xBCDFFFFF, 0xFFFFFFDC, 0xBA875310, 0x0014679A, 0xBDEFFFFF,
0xFFFFFFED, 0xBA976410, 0x0024679A, 0xCDEFFFFF, 0xFFFFFFED, 0xCA986420, 0x0024689A, 0xCDEFFFFF, 0xFFFFFFED,
0xCA986420, 0x0024689A, 0xCDEFFFFF, 0xFFFFFFED, 0xCA976420, 0x0014679A, 0xBDEFFFFF, 0xFFFFFFED, 0xBA976410,
0x0013578A, 0xBCDFFFFF, 0xFFFFFFDC, 0xBA875310, 0x00035689, 0xBCDEFFFF, 0xFFFFFEDC, 0xB9865300, 0x00024679,
0xABCDEFFF, 0xFFFFEDCB, 0xA9764200, 0x00013568, 0x9ABCDDEE, 0xEEEDDCBA, 0x98653100, 0x00002457, 0x89ABCCDD,
0xDDDCCBA9, 0x87542000, 0x00001346, 0x789ABBBC, 0xCCBBBA98, 0x76431000, 0x00000134, 0x67899AAA, 0xAAAA9987,
0x64310000, 0x00000013, 0x45678899, 0x99988765, 0x43100000, 0x00000001, 0x34566778, 0x87776654, 0x31000000,
0x00000000, 0x12345566, 0x66655432, 0x10000000, 0x00000000, 0x00123344, 0x44433210, 0x00000000, 0x00000000,
0x00001112, 0x22111000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000,
};
void func_8436E920(void) {
s32 i;
for (i = 0; i < 2; i++) {
D_843C49C0[i].unk_000 = 0;
}
}
s16 func_8436E944(void) {
unk_D_843C49C0* var_a0;
unk_D_843C49C0_004* var_v1;
s32 i;
s32 j;
for (i = 0, var_a0 = &D_843C49C0[0]; i < 2; i++, var_a0++) {
if (var_a0->unk_000 == 0) {
var_v1 = &var_a0->unk_004[0];
for (j = 0; j < 20; j++, var_v1++) {
var_v1->unk_00 = 0;
var_v1->unk_04 = 0;
var_v1->unk_08 = 1.0f;
var_v1->unk_0C.x = 0.0f;
var_v1->unk_0C.y = 0.0f;
var_v1->unk_0C.z = 0.0f;
}
var_a0->unk_000 = 1;
return i;
}
}
return -1;
}
void func_8436EA0C(s16 arg0, f32 arg1, f32 arg2, f32 arg3, s16 arg4, f32 arg5) {
s32 i;
unk_D_843C49C0* temp_v0 = &D_843C49C0[arg0];
unk_D_843C49C0_004* var_v1;
if (temp_v0->unk_000 != 0) {
var_v1 = &temp_v0->unk_004[0];
for (i = 0; i < 20; i++, var_v1++) {
if (var_v1->unk_00 == 0) {
var_v1->unk_00 = 1;
var_v1->unk_04 = 0;
var_v1->unk_06 = arg4;
var_v1->unk_08 = arg5;
var_v1->unk_0C.x = arg1;
var_v1->unk_0C.y = arg2;
var_v1->unk_0C.z = arg3;
return;
}
}
}
}
void func_8436EB54(s16 arg0) {
unk_D_843C49C0* temp_v0 = &D_843C49C0[arg0];
unk_D_843C49C0_004* var_v1;
s32 i;
if (temp_v0->unk_000 != 0) {
var_v1 = &temp_v0->unk_004[0];
for (i = 0; i < 20; i++, var_v1++) {
if (var_v1->unk_00 == 1) {
var_v1->unk_04++;
if (var_v1->unk_06 < var_v1->unk_04) {
var_v1->unk_00 = 0;
}
var_v1->unk_0C.y -= 0.75f;
}
}
}
}
Gfx* func_8436ECB0(Gfx* arg0, unk_D_843C49C0_004* arg1, MtxF* arg2) {
f32 spCC;
f32 spC8;
f32 spC4;
f32 spC0;
Mtx* spBC;
Mtx sp78;
Mtx sp38;
spCC = arg1->unk_0C.x;
spC8 = arg1->unk_0C.y;
spC4 = arg1->unk_0C.z;
spC0 = arg1->unk_08;
spC0 *= __sinf((arg1->unk_04 * 3.1415927f) / 10.0f);
guScale(&sp38, spC0, spC0, spC0);
guTranslate(&sp78, spCC, spC8, spC4);
spBC = func_80005F5C(sizeof(Mtx) * 1);
guMtxCatL(&sp38, &sp78, spBC);
guMtxCatL(arg2, spBC, spBC);
gSPMatrix(arg0++, spBC, G_MTX_PUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gDPSetPrimColor(arg0++, 0, 0, 255, 255, 255, 200);
gSPDisplayList(arg0++, D_8438A5A8);
gSPPopMatrix(arg0++, G_MTX_MODELVIEW);
return arg0;
}
Gfx* func_8436EDE8(s16 arg0, Gfx* arg1) {
UNUSED s32 pad;
unk_D_843C49C0* temp_s3 = &D_843C49C0[arg0];
unk_D_843C49C0_004* var_s0;
s32 i;
MtxF sp78;
MtxF sp38;
if (temp_s3->unk_000 == 0) {
return arg1;
}
func_80031EF4(sp78.mf, &D_8006F088->unk_60.mtxf);
guMtxF2L(sp78.mf, sp38.mf);
var_s0 = &temp_s3->unk_004;
for (i = 0; i < 20; i++, var_s0++) {
if (var_s0->unk_00 == 1) {
arg1 = func_8436ECB0(arg1, var_s0, &sp38);
}
}
return arg1;
}
void func_8436EED4(void) {
}
void func_8436EEDC(void) {
}
s32 func_8436EEE4(s32 arg0) {
return arg0;
}

View File

@ -1,11 +1,179 @@
#include "global.h"
#include "fragment62.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3597B0/func_8436EEF0.s")
static s16 D_843C4D90;
static s16 D_843C4D92;
static s16 D_843C4D94;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3597B0/func_8436EF48.s")
static f32 D_8438A850 = 30.0f;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3597B0/func_8436EF54.s")
static Vtx D_8438A858[] = {
VTX(1, -35, -35, 0, 0, 0x88, 0x00, 0x00, 0xFF), VTX(1, -50, 0, 0, 0, 0x88, 0x00, 0x00, 0xFF),
VTX(1, 0, 0, 0, 0, 0x88, 0x00, 0x00, 0xFF), VTX(1, -50, 0, 0, 0, 0x1D, 0x8C, 0x00, 0xFF),
VTX(1, -35, -35, 0, 0, 0x1D, 0xAE, 0xAE, 0xFF), VTX(200, 0, 0, 0, 0, 0x78, 0x00, 0x00, 0xFF),
VTX(1, 0, -49, 0, 0, 0x88, 0x00, 0x00, 0xFF), VTX(1, 0, -49, 0, 0, 0x1D, 0x00, 0x8C, 0xFF),
VTX(1, 35, -35, 0, 0, 0x88, 0x00, 0x00, 0xFF), VTX(1, 35, -35, 0, 0, 0x1D, 0x52, 0xAE, 0xFF),
VTX(1, 50, 0, 0, 0, 0x88, 0x00, 0x00, 0xFF), VTX(1, 50, 0, 0, 0, 0x1D, 0x74, 0x00, 0xFF),
VTX(1, 35, 35, 0, 0, 0x88, 0x00, 0x00, 0xFF), VTX(1, 35, 35, 0, 0, 0x1D, 0x52, 0x52, 0xFF),
VTX(1, 0, 49, 0, 0, 0x88, 0x00, 0x00, 0xFF), VTX(1, 0, 49, 0, 0, 0x1D, 0x00, 0x74, 0xFF),
VTX(1, -35, 35, 0, 0, 0x88, 0x00, 0x00, 0xFF), VTX(1, -35, 35, 0, 0, 0x1D, 0xAE, 0x52, 0xFF),
};
static u32 D_8438A978[] = {
0x77777777,
0x77777777,
};
Gfx D_8438A980[] = {
gsDPPipeSync(),
gsDPSetCycleType(G_CYC_1CYCLE),
gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN |
G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA),
gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_LIGHTING | G_SHADING_SMOOTH),
gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON),
gsDPPipeSync(),
gsDPLoadTextureBlock_4b(D_8438A978, G_IM_FMT_I, 4, 4, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 2, 2,
G_TX_NOLOD, G_TX_NOLOD),
gsDPSetCombineMode(G_CC_BLENDIA, G_CC_BLENDIA),
gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2),
gsDPSetPrimColor(0xFF, 0xFF, 197, 184, 122, 255),
gsDPSetEnvColor(197, 184, 122, 255),
gsSPVertex(D_8438A858, 18, 0),
gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0),
gsSP2Triangles(6, 0, 2, 0, 4, 7, 5, 0),
gsSP2Triangles(8, 6, 2, 0, 7, 9, 5, 0),
gsSP2Triangles(10, 8, 2, 0, 9, 11, 5, 0),
gsSP2Triangles(12, 10, 2, 0, 11, 13, 5, 0),
gsSP2Triangles(14, 12, 2, 0, 13, 15, 5, 0),
gsSP2Triangles(16, 14, 2, 0, 15, 17, 5, 0),
gsSP2Triangles(1, 16, 2, 0, 17, 3, 5, 0),
gsSPEndDisplayList(),
};
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3597B0/func_8436EFE8.s")
static s32 pad_D_8438AA58[] = { 0, 0 };
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3597B0/func_8436F664.s")
static Gfx D_8438AA60[] = {
gsSPEndDisplayList(),
};
static u32 D_8438AA68[] = {
0x9FFFFFFF, 0xFFFFFFFF, 0x09FFFFFF, 0xFFFFFFFF, 0x009FFFFF, 0xFFFFFFFF, 0x0009FFFF, 0xFFFFFFFF, 0x00009FFF,
0xFFFFFFFF, 0x000009FF, 0xFFFFFFFF, 0x0000009F, 0xFFFFFFFF, 0x00000009, 0xFFFFFFFF, 0x00000000, 0x9FFFFFFF,
0x00000000, 0x09FFFFFF, 0x00000000, 0x009FFFFF, 0x00000000, 0x000FFFFF, 0x00000000, 0x000FFFFF, 0x00000000,
0x009FFFFF, 0x00000000, 0x09FFFFFF, 0x00000000, 0x9FFFFFFF, 0x00000009, 0xFFFFFFFF, 0x0000009F, 0xFFFFFFFF,
0x000009FF, 0xFFFFFFFF, 0x00009FFF, 0xFFFFFFFF, 0x0009FFFF, 0xFFFFFFFF, 0x009FFFFF, 0xFFFFFFFF, 0x09FFFFFF,
0xFFFFFFFF, 0x9FFFFFFF, 0xFFFFFFFF, 0x9FFFFFFF, 0xFFFFFFFF, 0x09FFFFFF, 0xFFFFFFFF, 0x009FFFFF, 0xFFFFFFFF,
0x0009FFFF, 0xFFFFFFFF, 0x00009FFF, 0xFFFFFFFF, 0x000009FF, 0xFFFFFFFF, 0x0000009F, 0xFFFFFFFF, 0x00000009,
0xFFFFFFFF, 0x00000000, 0x9FFFFFFF, 0x00000000, 0x09FFFFFF, 0x00000000, 0x009FFFFF, 0x00000000, 0x000FFFFF,
0x00000000, 0x000FFFFF, 0x00000000, 0x009FFFFF, 0x00000000, 0x09FFFFFF, 0x00000000, 0x9FFFFFFF, 0x00000009,
0xFFFFFFFF, 0x0000009F, 0xFFFFFFFF, 0x000009FF, 0xFFFFFFFF, 0x00009FFF, 0xFFFFFFFF, 0x0009FFFF, 0xFFFFFFFF,
0x009FFFFF, 0xFFFFFFFF, 0x09FFFFFF, 0xFFFFFFFF, 0x9FFFFFFF, 0xFFFFFFFF,
};
static Gfx D_8438ABE8[] = {
gsDPPipeSync(),
gsDPSetCycleType(G_CYC_1CYCLE),
gsSPClearGeometryMode(G_ZBUFFER | G_CULL_BACK | G_LIGHTING),
gsDPSetRenderMode(G_RM_XLU_SURF, G_RM_NOOP2),
gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM),
gsDPSetPrimColor(0, 0, 5, 5, 5, 255),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
gsDPSetTexturePersp(G_TP_NONE),
gsSPEndDisplayList(),
};
static Gfx D_8438AC30[] = {
gsDPSetCycleType(G_CYC_2CYCLE),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPSetTexturePersp(G_TP_PERSP),
gsSPSetGeometryMode(G_ZBUFFER | G_CULL_BACK | G_LIGHTING),
gsSPEndDisplayList(),
};
void func_8436EEF0(s32 arg0, s32 arg1) {
D_843C4D90 = arg0;
D_843C4D94 = arg1;
if ((D_843C4D90 == 0) || ((D_843C4D90 != 1) && (D_843C4D90 != 2) && (D_843C4D90 == 3))) {
D_843C4D92 = 0x140;
} else {
D_843C4D92 = 0;
}
}
s32 func_8436EF48(void) {
return D_843C4D90;
}
void func_8436EF54(void) {
s16 var_v0 = D_843C4D92;
switch (D_843C4D90) {
case 2:
if (var_v0 < 0x140) {
var_v0 += D_843C4D94;
} else {
D_843C4D90 = 0;
}
break;
case 3:
if (var_v0 > 0) {
var_v0 -= D_843C4D94;
} else {
D_843C4D90 = 1;
}
if (var_v0 < 0) {
var_v0 = 0;
}
break;
}
D_843C4D92 = var_v0;
}
Gfx* func_8436EFE8(Gfx* arg0, s32 arg1) {
s32 i;
s16 left;
s16 top;
s32 temp_a1;
s32 temp_v1;
temp_a1 = arg1 & 1;
temp_v1 = (arg1 + 1) & 1;
gSPDisplayList(arg0++, D_8438ABE8);
gDPLoadTextureBlock_4b(arg0++, D_8438AA68, G_IM_FMT_I, 12, 48, 0, G_TX_NOMIRROR | G_TX_CLAMP,
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
gDPPipeSync(arg0++);
for (i = temp_a1; i < 5; i += 2) {
left = D_843C4D92 * 2 - 320;
top = i * 48;
gSPScisTextureRectangle(arg0++, left << 2, top << 2, (left + 640) << 2, (top + 24) << 2, 0, 0, 0, 1 << 6,
1 << 10);
gSPScisTextureRectangle(arg0++, left << 2, (top + 24) << 2, (left + 640) << 2, (top + 48) << 2, 0, 0, 0, 1 << 6,
1 << 10);
}
for (i = temp_v1; i < 5; i += 2) {
left = -D_843C4D92 * 2;
top = i * 48;
gSPScisTextureRectangle(arg0++, left << 2, top << 2, (left + 640) << 2, (top + 24) << 2, 0, 0x500, 0, -(1 << 6),
1 << 10);
gSPScisTextureRectangle(arg0++, left << 2, (top + 24) << 2, (left + 640) << 2, (top + 48) << 2, 0, 0x500, 0,
-(1 << 6), 1 << 10);
}
gSPDisplayList(arg0++, D_8438AC30);
return arg0;
}
void func_8436F664(void) {
Gfx* gfx = gDisplayListHead;
if (D_843C4D90 != 0) {
if (D_843C4D90 == 2) {
gfx = func_8436EFE8(gfx, 0);
} else {
gfx = func_8436EFE8(gfx, 1);
}
}
gDisplayListHead = gfx;
}

View File

@ -1,3 +1,4 @@
#include "global.h"
#include "fragment62.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F80/func_8436F6C0.s")
void func_8436F6C0(void) {
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -128,7 +128,7 @@ void func_84800184(void) {
s32 var_s4;
s8 temp_v0;
s8* var_v0;
unk_func_80007444_018* sp58;
unk_D_80068BB0* sp58;
Color_RGB8 sp54;
Color_RGB8 sp50;
@ -161,7 +161,7 @@ void func_84800184(void) {
}
func_8001F444();
gDPSetScissorFrac(gDisplayListHead++, G_SC_NON_INTERLACE, 0, 0, sp58->unk_04 * 4.0f, sp58->unk_06 * 4.0f);
gDPSetScissorFrac(gDisplayListHead++, G_SC_NON_INTERLACE, 0, 0, sp58->width * 4.0f, sp58->height * 4.0f);
D_8480379A += 2;
if (D_8480379A >= ((strlen(var_v0) * 0x18) + 0x18)) {

View File

@ -1,5 +1,5 @@
#include "fragment9.h"
#include "include/libc/math.h"
#include "include/math.h"
#include "src/12D80.h"
#include "src/18140.h"
#include "src/geo_layout.h"

View File

@ -28,8 +28,6 @@ struct RelocTable {
/* 0x04 */ u32 relocations[RELOCATIONS_SIZE]; // variable size
};
typedef s32 (*FragmentEntry)(s32, s32);
typedef struct Fragment {
/* 0x00 */ u32 inst[2]; // MIPS instructions to jump to the main function, typically something like "j 0x8xx00020; nop"
/* 0x08 */ char magic[8]; // "FRAGMENT"
@ -38,7 +36,9 @@ typedef struct Fragment {
/* 0x18 */ u32 sizeInRom;
/* 0x1C */ u32 sizeInRam;
/* 0x20 */ char data[RELOCATIONS_SIZE]; // variable size
} Fragment;
} Fragment; // size = 0x20
typedef s32 (*FragmentEntry)(s32, s32);
void Memmap_SetSegmentMap(u32 id, uintptr_t vaddr, size_t size);
uintptr_t Memmap_GetSegmentBaseVaddr(u32 id);

View File

@ -577,8 +577,8 @@ void func_800079C4(void) {
}
}
unk_func_80007444_018* func_80007A2C(void) {
unk_func_80007444_018* ret = NULL;
unk_D_80068BB0* func_80007A2C(void) {
unk_D_80068BB0* ret = NULL;
if (D_800A7464 != NULL) {
ret = D_800A7464->unk_18[D_800A7464->unk_16];

View File

@ -2,6 +2,7 @@
#define _STAGE_LOADER_H_
#include "global.h"
#include "src/6BC0.h"
typedef struct unk_D_800A7450 {
/* 0x00 */ u8 unk_00;
@ -14,14 +15,6 @@ typedef struct unk_D_800A7450 {
/* 0x10 */ char unk10[0x4];
} unk_D_800A7450; // size >= 0x14
typedef struct unk_func_80007444_018 {
/* 0x00 */ char unk00[0x4];
/* 0x04 */ u16 unk_04;
/* 0x06 */ u16 unk_06;
/* 0x08 */ s32 unk_08;
/* 0x0C */ char unk0C[0x4];
} unk_func_80007444_018; // size = 0x10
typedef struct unk_func_80007444 {
/* 0x00 */ s16 unk_00;
/* 0x02 */ s16 unk_02;
@ -39,7 +32,7 @@ typedef struct unk_func_80007444 {
/* 0x13 */ u8 unk_13;
/* 0x14 */ u16 unk_14;
/* 0x16 */ s8 unk_16;
/* 0x18 */ unk_func_80007444_018* unk_18[3];
/* 0x18 */ unk_D_80068BB0* unk_18[3];
} unk_func_80007444; // size = 0x24
void func_800069F0(void);
@ -69,7 +62,7 @@ s32 func_80007820(u32 arg0, s32 (*arg1)(u8));
s32 func_800078D4(s32 (*arg0)(u8), s32 arg1, s32 arg2);
void func_80007990(u16 arg0);
void func_800079C4(void);
unk_func_80007444_018* func_80007A2C(void);
unk_D_80068BB0* func_80007A2C(void);
s32 func_80007A58(void);
void func_80007A80(void);
void func_80007C3C(void);

View File

@ -223,12 +223,12 @@ class Section:
assert self.sh_type == SHT_STRTAB
to = self.data.find(b'\0', index)
assert to != -1
return self.data[index:to].decode('latin1')
return self.data[index:to].decode('utf8')
def add_str(self, string):
assert self.sh_type == SHT_STRTAB
ret = len(self.data)
self.data += string.encode('latin1') + b'\0'
self.data += string.encode('utf8') + b'\0'
return ret
def is_rel(self):
@ -523,7 +523,7 @@ class GlobalAsmBlock:
raise Failure(message + "\nwithin " + context)
def count_quoted_size(self, line, z, real_line, output_enc):
line = line.encode(output_enc).decode('latin1')
line = line.encode(output_enc).decode('utf8')
in_quote = False
has_comma = True
num_parts = 0
@ -1309,7 +1309,7 @@ def fixup_objfile(objfile_name, functions, asm_prelude, assembler, output_enc, d
st_other=STV_DEFAULT,
st_shndx=section.index,
strtab=objfile.symtab.strtab,
name=symbol_name[:-1].decode('latin1'))
name=symbol_name[:-1].decode('utf8'))
strtab_index += len(emitted_symbol_name)
new_strtab_data.append(emitted_symbol_name)
new_syms.append(sym)
@ -1420,8 +1420,8 @@ def run_wrapped(argv, outfile, functions):
parser.add_argument('--post-process', dest='objfile', help="path to .o file to post-process")
parser.add_argument('--assembler', dest='assembler', help="assembler command (e.g. \"mips-linux-gnu-as -march=vr4300 -mabi=32\")")
parser.add_argument('--asm-prelude', dest='asm_prelude', help="path to a file containing a prelude to the assembly file (with .set and .macro directives, e.g.)")
parser.add_argument('--input-enc', default='latin1', help="input encoding (default: %(default)s)")
parser.add_argument('--output-enc', default='latin1', help="output encoding (default: %(default)s)")
parser.add_argument('--input-enc', default='utf8', help="input encoding (default: %(default)s)")
parser.add_argument('--output-enc', default='utf8', help="output encoding (default: %(default)s)")
parser.add_argument('--drop-mdebug-gptab', dest='drop_mdebug_gptab', action='store_true', help="drop mdebug and gptab sections")
parser.add_argument('--convert-statics', dest='convert_statics', choices=["no", "local", "global", "global-with-filename"], default="local", help="change static symbol visibility (default: %(default)s)")
parser.add_argument('--force', dest='force', action='store_true', help="force processing of files without GLOBAL_ASM blocks")

View File

@ -52,7 +52,7 @@ asmproc_flags += opt_flags + [str(in_file)]
# asmproc_flags += ["--drop-mdebug-gptab"]
# Convert encoding before compiling.
# asmproc_flags += ["--input-enc", "utf-8", "--output-enc", "euc-jp"]
asmproc_flags += ["--input-enc", "euc-jp", "--output-enc", "euc-jp"]
with tempfile.TemporaryDirectory(prefix="asm_processor") as tmpdirname:
tmpdir_path = Path(tmpdirname)

@ -1 +1 @@
Subproject commit 4aa96babe54fa17bb75f674a9e6be6f8e8e4f0e5
Subproject commit 433edd205953812ebd29f96602daa1a729947514

View File

@ -31,3 +31,4 @@ SINS = "float"
"tools/ido/linux/5.3/cc" = "ido5.3"
"tools/ido/macos/5.3/cc" = "ido5.3"
"tools/ido/windows/5.3/cc" = "ido5.3"
"./tools/preprocess.sh" = "ido7.1"

78
tools/preprocess.sh Executable file
View File

@ -0,0 +1,78 @@
#!/usr/bin/env bash
# SPDX-FileCopyrightText: © 2024 ZeldaRET
# SPDX-License-Identifier: CC0-1.0
# Usage: preprocess [flags] -- [compile command minus input file...] [single input file]
# Flags:
# -v OOT_VERSION (required)
# -i ICONV_PATH (optional, default: iconv)
# Preprocess a C file to:
# * Re-encode from UTF-8 to EUC-JP
# (the repo uses UTF-8 for text encoding, but the strings in the ROM are encoded in EUC-JP)
# * Replace `#pragma increment_block_number` (see preprocess_pragma)
set -e
set -o pipefail
if [ "${VERBOSE-}" ]
then
set -x
fi
for i in `seq ${#@}`
do
if [[ "${!i}" = '--' ]]
then
# flags before --
flags=("${@:1:$(($i - 1))}")
# compile command, between -- and the input source file
compilecmd="${@:$(($i + 1)):$((${#@} - $i - 1))}"
# The last argument, the input source file to be compiled
srcfile="${@: -1}"
break
fi
done
if [ "${VERBOSE-}" ]
then
echo flags="${flags[@]}"
echo compilecmd="$compilecmd"
echo srcfile="$srcfile"
fi
ICONV=iconv
while getopts "i:" opt "${flags[@]}"
do
case $opt in
i)
ICONV=$OPTARG
;;
?)
echo "Error: Bad flags"
exit 1
;;
esac
done
if [[ "${!OPTIND}" != '--' ]]
then
echo "Error: Positional arguments in flags not allowed"
exit 1
fi
# Create a temporary directory, and remove it on script exit
# We use a temp dir instead of a temp file because ido_block_numbers.py and fix_bss.py
# need the symbol table .T file from IDO, which is always named like the input file.
# So we use a file named like the original input file, inside a temp dir.
tempdir=`mktemp -d`
tempfile=$tempdir/`basename $srcfile`
trap "rm -rf $tempdir" EXIT
# Preprocess pragmas and re-encode from UTF-8 to EUC-JP
"${ICONV}" -f UTF-8 -t EUC-JP "$srcfile" > "$tempfile"
# Also include the source file's directory to have the include path as if we compiled the original source.
# Pass the processed temporary file for compilation.
$compilecmd -I `dirname $srcfile` $tempfile

View File

@ -5,7 +5,29 @@ import re
with open(sys.argv[1], "r") as f:
fd = f.read()
funcs = re.findall("(^[a-zA-Z0-9*_]+ .*\(.*\)) {$", fd, re.MULTILINE)
"""
funcs = re.findall("(^[a-zA-Z0-9*_]+ .*\(.*?\)) {", fd, re.MULTILINE | re.DOTALL)
for func in funcs:
print(func + ";")
"""
func_re = re.compile(
r'''
^\s* # line start
(?!if\b|for\b|while\b|switch\b|case\b|return\b) # skip control statements
(?:(?:static|inline|extern|const|volatile)\s+)* # qualifiers (optional)
[A-Za-z_][\w\s\*\d]*? # return type (rough)
\s+ # space
(?P<name>[A-Za-z_]\w*) # function name
\s* # optional space
\( # '('
(?:[^(){}]|\([^()]*\))*? # arguments (allows nested ())
\) # ')'
\s* # optional space/newlines
(?=\{) # next non-space char is '{'
''',
re.MULTILINE | re.DOTALL | re.VERBOSE)
for m in func_re.finditer(fd):
print(" ".join(m.group(0).split()) + ";") # collapse whitespace, add semicolon

View File

@ -2148,23 +2148,29 @@
- [0x2F6930, c, fragments/62/fragment62_2F6930]
- [0x2F74E0, c, fragments/62/fragment62_2F74E0]
- [0x2FA4D0, c, fragments/62/fragment62_2FA4D0]
- [0x3020D0, c, fragments/62/fragment62_3020D0]
- [0x304060, c, fragments/62/fragment62_304060]
- [0x3055E0, c, fragments/62/fragment62_3055E0]
- [0x309ED0, c, fragments/62/fragment62_309ED0]
- [0x313250, c, fragments/62/fragment62_313250]
- [0x313D60, c, fragments/62/fragment62_313D60]
- [0x315830, c, fragments/62/fragment62_315830]
- [0x315D50, c, fragments/62/fragment62_315D50]
- [0x317E70, c, fragments/62/fragment62_317E70]
- [0x31A7E0, c, fragments/62/fragment62_31A7E0]
- [0x31AA30, c, fragments/62/fragment62_31AA30]
- [0x31C660, c, fragments/62/fragment62_31C660]
- [0x31D9F0, c, fragments/62/fragment62_31D9F0]
- [0x3223B0, c, fragments/62/fragment62_3223B0]
- [0x3274D0, c, fragments/62/fragment62_3274D0]
- [0x328F10, c, fragments/62/fragment62_328F10]
- [0x32A640, c, fragments/62/fragment62_32A640]
- [0x32B680, c, fragments/62/fragment62_32B680]
- [0x339CA0, c, fragments/62/fragment62_339CA0]
- [0x3438B0, c, fragments/62/fragment62_3438B0]
- [0x343BA0, c, fragments/62/fragment62_343BA0]
- [0x347330, c, fragments/62/fragment62_347330]
- [0x34A420, c, fragments/62/fragment62_34A420]
- [0x34E1A0, c, fragments/62/fragment62_34E1A0]
- [0x34F1A0, c, fragments/62/fragment62_34F1A0]
- [0x3502D0, c, fragments/62/fragment62_3502D0]
@ -2173,49 +2179,120 @@
- [0x352570, c, fragments/62/fragment62_352570]
- [0x353370, c, fragments/62/fragment62_353370]
- [0x3540B0, c, fragments/62/fragment62_3540B0]
- [0x354CD0, c, fragments/62/fragment62_354CD0]
- [0x355A00, c, fragments/62/fragment62_355A00]
- [0x356730, c, fragments/62/fragment62_356730]
- [0x357C30, c, fragments/62/fragment62_357C30]
- [0x3591E0, c, fragments/62/fragment62_3591E0]
- [0x3597B0, c, fragments/62/fragment62_3597B0]
- [0x359F80, c, fragments/62/fragment62_359F80]
- [0x359F90, c, fragments/62/fragment62_359F90]
- [0x35DF70, c, fragments/62/fragment62_35DF70]
- [0x361050, c, fragments/62/fragment62_361050]
- [0x36EC10, data, fragments/62/fragment62_data]
- [0x3759C0, rodata, fragments/62/fragment62_rodata_3759C0]
- [0x375A60, rodata, fragments/62/fragment62_rodata_375A60]
- [0x375BA0, rodata, fragments/62/fragment62_rodata_375BA0]
- [0x375BB0, rodata, fragments/62/fragment62_rodata_375BB0]
- [0x375C50, rodata, fragments/62/fragment62_rodata_375C50]
- [0x375D50, rodata, fragments/62/fragment62_rodata_375D50]
- [0x375EA0, rodata, fragments/62/fragment62_rodata_375EA0]
- [0x3764E0, rodata, fragments/62/fragment62_rodata_3764E0]
- [0x376650, rodata, fragments/62/fragment62_rodata_376650]
- [0x3768B0, rodata, fragments/62/fragment62_rodata_3768B0]
- [0x3768E0, rodata, fragments/62/fragment62_rodata_3768E0]
- [0x3769B0, rodata, fragments/62/fragment62_rodata_3769B0]
- [0x376A10, rodata, fragments/62/fragment62_rodata_376A10]
- [0x376A40, rodata, fragments/62/fragment62_rodata_376A40]
- [0x376AE0, rodata, fragments/62/fragment62_rodata_376AE0]
- [0x376B40, rodata, fragments/62/fragment62_rodata_376B40]
- [0x3778A0, rodata, fragments/62/fragment62_rodata_3778A0]
- [0x377C90, rodata, fragments/62/fragment62_rodata_377C90]
- [0x377DA0, rodata, fragments/62/fragment62_rodata_377DA0]
- [0x377E40, rodata, fragments/62/fragment62_rodata_377E40]
- [0x377FA0, rodata, fragments/62/fragment62_rodata_377FA0]
- [0x378000, rodata, fragments/62/fragment62_rodata_378000]
- [0x378040, rodata, fragments/62/fragment62_rodata_378040]
- [0x3780B0, rodata, fragments/62/fragment62_rodata_3780B0]
- [0x378140, rodata, fragments/62/fragment62_rodata_378140]
- [0x378170, rodata, fragments/62/fragment62_rodata_378170]
- [0x3781A0, rodata, fragments/62/fragment62_rodata_3781A0]
- [0x3781B0, rodata, fragments/62/fragment62_rodata_3781B0]
- [0x3781D0, rodata, fragments/62/fragment62_rodata_3781D0]
- [0x3784C0, rodata, fragments/62/fragment62_rodata_3784C0]
- [0x378540, rodata, fragments/62/fragment62_rodata_378540]
- [0x3786B0, rodata, fragments/62/fragment62_rodata_3786B0]
- {vram: 0x8438E440, type: bss, name: fragments/62/fragment62_bss}
- [0x36EC10, .data, fragments/62/fragment62_2EA8E0]
- [0x36EE30, .data, fragments/62/fragment62_2EC3C0]
- [0x36EEC0, .data, fragments/62/fragment62_2F3CB0]
- [0x370010, .data, fragments/62/fragment62_2F74E0]
- [0x370050, .data, fragments/62/fragment62_2FA4D0]
- [0x370250, .data, fragments/62/fragment62_3020D0]
- [0x3702A0, .data, fragments/62/fragment62_304060]
- [0x370410, .data, fragments/62/fragment62_3055E0]
- [0x370430, .data, fragments/62/fragment62_309ED0]
- [0x370470, .data, fragments/62/fragment62_315D50]
- [0x3723C0, .data, fragments/62/fragment62_32B680]
- [0x372880, .data, fragments/62/fragment62_343BA0]
- [0x372B40, .data, fragments/62/fragment62_347330]
- [0x373920, .data, fragments/62/fragment62_34A420]
- [0x373BC0, .data, fragments/62/fragment62_34E1A0]
- [0x373CF0, .data, fragments/62/fragment62_34F1A0]
- [0x373E20, .data, fragments/62/fragment62_3502D0]
- [0x373F50, .data, fragments/62/fragment62_3512D0]
- [0x374040, .data, fragments/62/fragment62_351F20]
- [0x374170, .data, fragments/62/fragment62_352570]
- [0x374270, .data, fragments/62/fragment62_353370]
- [0x3742C0, .data, fragments/62/fragment62_3540B0]
- [0x374310, .data, fragments/62/fragment62_354CD0]
- [0x374420, .data, fragments/62/fragment62_355A00]
- [0x374530, .data, fragments/62/fragment62_356730]
- [0x3745A0, .data, fragments/62/fragment62_357C30]
- [0x374620, .data, fragments/62/fragment62_3591E0]
- [0x375110, .data, fragments/62/fragment62_3597B0]
- [0x375520, .data, fragments/62/fragment62_359F90]
- [0x375710, .data, fragments/62/fragment62_35DF70]
- [0x375870, .data, fragments/62/fragment62_361050]
- [0x3759C0, .rodata, fragments/62/fragment62_2EC3C0]
- [0x375A60, .rodata, fragments/62/fragment62_2F3CB0]
- [0x375B60, .rodata, fragments/62/fragment62_2F6930]
- [0x375BA0, .rodata, fragments/62/fragment62_2F74E0]
- [0x375BB0, .rodata, fragments/62/fragment62_2FA4D0]
- [0x375C50, .rodata, fragments/62/fragment62_3020D0]
- [0x375D50, .rodata, fragments/62/fragment62_304060]
- [0x375EA0, .rodata, fragments/62/fragment62_3055E0]
- [0x376100, .rodata, fragments/62/fragment62_309ED0]
- [0x3764B0, .rodata, fragments/62/fragment62_313250]
- [0x3764E0, .rodata, fragments/62/fragment62_313D60]
- [0x376650, .rodata, fragments/62/fragment62_315D50]
- [0x376790, .rodata, fragments/62/fragment62_317E70]
- [0x3768B0, .rodata, fragments/62/fragment62_31C660]
- [0x3768E0, .rodata, fragments/62/fragment62_31D9F0]
- [0x3769B0, .rodata, fragments/62/fragment62_3223B0]
- [0x376A10, .rodata, fragments/62/fragment62_3274D0]
- [0x376A40, .rodata, fragments/62/fragment62_328F10]
- [0x376AE0, .rodata, fragments/62/fragment62_32A640]
- [0x376B40, .rodata, fragments/62/fragment62_32B680]
- [0x3778A0, .rodata, fragments/62/fragment62_339CA0]
- [0x377C90, .rodata, fragments/62/fragment62_343BA0]
- [0x377DA0, .rodata, fragments/62/fragment62_347330]
- [0x377E40, .rodata, fragments/62/fragment62_34A420]
- [0x377FA0, .rodata, fragments/62/fragment62_34E1A0]
- [0x377FC0, .rodata, fragments/62/fragment62_34F1A0]
- [0x377FE0, .rodata, fragments/62/fragment62_3502D0]
- [0x378000, .rodata, fragments/62/fragment62_3512D0]
- [0x378040, .rodata, fragments/62/fragment62_351F20]
- [0x378070, .rodata, fragments/62/fragment62_352570]
- [0x3780B0, .rodata, fragments/62/fragment62_353370]
- [0x378100, .rodata, fragments/62/fragment62_3540B0]
- [0x378140, .rodata, fragments/62/fragment62_354CD0]
- [0x378170, .rodata, fragments/62/fragment62_355A00]
- [0x3781A0, .rodata, fragments/62/fragment62_356730]
- [0x3781B0, .rodata, fragments/62/fragment62_357C30]
- [0x3781D0, .rodata, fragments/62/fragment62_3591E0]
- [0x3781E0, rodata, fragments/62/fragment62_rodata_3781E0]
- [0x3784C0, .rodata, fragments/62/fragment62_359F90]
- [0x378540, .rodata, fragments/62/fragment62_35DF70]
- [0x3786B0, .rodata, fragments/62/fragment62_361050]
- {vram: 0x8438E440, type: .bss, name: fragments/62/fragment62_2EA8E0}
- {vram: 0x8438E7B0, type: .bss, name: fragments/62/fragment62_2EC3C0}
- {vram: 0x843900B0, type: bss, name: fragments/62/fragment62_bss1}
- {vram: 0x843900D0, type: .bss, name: fragments/62/fragment62_2F6930}
- {vram: 0x84390120, type: .bss, name: fragments/62/fragment62_2F74E0}
- {vram: 0x84390190, type: .bss, name: fragments/62/fragment62_2FA4D0}
- {vram: 0x843901A0, type: .bss, name: fragments/62/fragment62_3020D0}
- {vram: 0x843901B0, type: .bss, name: fragments/62/fragment62_3055E0}
- {vram: 0x84390200, type: .bss, name: fragments/62/fragment62_309ED0}
- {vram: 0x84390240, type: .bss, name: fragments/62/fragment62_313D60}
- {vram: 0x843902A0, type: .bss, name: fragments/62/fragment62_315D50}
- {vram: 0x843920C0, type: .bss, name: fragments/62/fragment62_343BA0}
- {vram: 0x843925E0, type: .bss, name: fragments/62/fragment62_347330}
- {vram: 0x84397610, type: .bss, name: fragments/62/fragment62_34A420}
- {vram: 0x8439CA60, type: .bss, name: fragments/62/fragment62_34E1A0}
- {vram: 0x8439E680, type: .bss, name: fragments/62/fragment62_34F1A0}
- {vram: 0x843A06A0, type: .bss, name: fragments/62/fragment62_3502D0}
- {vram: 0x843A22C0, type: .bss, name: fragments/62/fragment62_3512D0}
- {vram: 0x843AA880, type: .bss, name: fragments/62/fragment62_352570}
- {vram: 0x843AB940, type: .bss, name: fragments/62/fragment62_353370}
- {vram: 0x843ACA10, type: .bss, name: fragments/62/fragment62_3540B0}
- {vram: 0x843ADA80, type: .bss, name: fragments/62/fragment62_354CD0}
- {vram: 0x843B8340, type: .bss, name: fragments/62/fragment62_355A00}
- {vram: 0x843C2C00, type: .bss, name: fragments/62/fragment62_356730}
- {vram: 0x843C3500, type: .bss, name: fragments/62/fragment62_357C30}
- {vram: 0x843C49C0, type: .bss, name: fragments/62/fragment62_3591E0}
- {vram: 0x843C4D90, type: .bss, name: fragments/62/fragment62_3597B0}
- {vram: 0x843C4DA0, type: .bss, name: fragments/62/fragment62_359F90}
- {vram: 0x843C5310, type: .bss, name: fragments/62/fragment62_361050}
- name: fragment62_relocs
type: code