Merge branch banjo-kazooie:master into documentation
This commit is contained in:
24
Makefile
24
Makefile
@@ -44,7 +44,7 @@ PRINT := printf
|
||||
ASM_PROCESSOR_DIR := tools/asm-processor
|
||||
BK_ROM_COMPRESS := tools/bk_rom_compressor/target/release/bk_rom_compress
|
||||
BK_ROM_DECOMPRESS := tools/bk_rom_compressor/target/release/bk_rom_decompress
|
||||
BK_ASSET_TOOL := tools/bk_asset_tool/bk_asset_tool
|
||||
BK_ASSET_TOOL := tools/bk_asset_tool/target/release/bk_asset_tool
|
||||
ASM_PROCESSOR := $(PYTHON) $(ASM_PROCESSOR_DIR)/asm_processor.py
|
||||
SPLAT_INPUTS := $(PYTHON) tools/splat_inputs.py
|
||||
PROGRESS := $(PYTHON) tools/progress.py
|
||||
@@ -166,7 +166,7 @@ OPT_FLAGS := -O2
|
||||
MIPSBIT := -mips2
|
||||
ASFLAGS := -EB -mtune=vr4300 -march=vr4300 -mabi=32 -I include
|
||||
GCC_ASFLAGS := -c -x assembler-with-cpp -mabi=32 -ffreestanding -mtune=vr4300 -march=vr4300 -mfix4300 -G 0 -O -mno-shared -fno-PIC -mno-abicalls
|
||||
LDFLAGS := -T $(LD_SCRIPT) -Map $(ELF:.elf=.map) --no-check-sections --accept-unknown-input-arch -T undefined_syms.libultra.txt
|
||||
LDFLAGS := -T $(LD_SCRIPT) -Map $(ELF:.elf=.map) --no-check-sections --accept-unknown-input-arch -T manual_syms.txt
|
||||
BINOFLAGS := -I binary -O elf32-tradbigmips
|
||||
|
||||
### Rules ###
|
||||
@@ -316,7 +316,7 @@ $(DECOMPRESSED_BASEROM): $(BASEROM) $(BK_ROM_DECOMPRESS)
|
||||
# .o -> .elf (dummy symbols)
|
||||
$(PRELIM_ELF): $(ALL_OBJS) $(LD_SCRIPT) $(ASSET_OBJS)
|
||||
$(call print1,Linking elf:,$@)
|
||||
@$(LD) $(LDFLAGS) -T undefined_syms_auto.$(VERSION).txt -T undefined_syms.$(VERSION).txt -T rzip_dummy_addrs.txt -o $@
|
||||
@$(LD) $(LDFLAGS) -T rzip_dummy_addrs.txt -o $@
|
||||
|
||||
# .elf -> .z64 (dummy symbols)
|
||||
$(PRELIM_Z64) : $(PRELIM_ELF)
|
||||
@@ -330,7 +330,7 @@ $(COMPRESSED_SYMBOLS): $(PRELIM_ELF) $(PRELIM_Z64) $(BK_ROM_COMPRESS)
|
||||
# .o -> .elf (game)
|
||||
$(ELF): $(ALL_OBJS) $(LD_SCRIPT) $(ASSET_OBJS) $(COMPRESSED_SYMBOLS)
|
||||
$(call print1,Linking elf:,$@)
|
||||
@$(LD) $(LDFLAGS) -T undefined_syms_auto.$(VERSION).txt -T undefined_syms.$(VERSION).txt -T $(COMPRESSED_SYMBOLS) -o $@
|
||||
@$(LD) $(LDFLAGS) -T $(COMPRESSED_SYMBOLS) -o $@
|
||||
|
||||
# .elf -> .z64 (uncompressed)
|
||||
$(UNCOMPRESSED_Z64) : $(ELF)
|
||||
@@ -341,15 +341,18 @@ $(UNCOMPRESSED_Z64) : $(ELF)
|
||||
$(FINAL_Z64) : $(UNCOMPRESSED_Z64) $(ELF) $(BK_ROM_COMPRESS)
|
||||
@$(BK_ROM_COMPRESS) $(ELF) $(UNCOMPRESSED_Z64) $@
|
||||
|
||||
# TOOLS
|
||||
# Tool for spliting BK asset sections into and from ROM Bin and transforming certain file types
|
||||
$(BK_ASSET_TOOL):
|
||||
@$(CD) tools/bk_asset_tool && cargo build --release
|
||||
@$(CP) tools/bk_asset_tool/target/release/bk_asset_tool $@
|
||||
@$(CD) tools/bk_asset_tool && cargo build --release 2> /dev/null
|
||||
|
||||
# Tool to compress BK and correct checksums from elf and uncompressed rom
|
||||
$(BK_ROM_COMPRESS):
|
||||
@$(CD) tools/bk_rom_compressor && cargo build --release --bin bk_rom_compress
|
||||
@$(CD) tools/bk_rom_compressor && cargo build --release --bin bk_rom_compress 2> /dev/null
|
||||
|
||||
# Tool to turn compressed BK into uncompressed ROM
|
||||
$(BK_ROM_DECOMPRESS):
|
||||
@$(CD) tools/bk_rom_compressor && cargo build --release --bin bk_rom_decompress
|
||||
@$(CD) tools/bk_rom_compressor && cargo build --release --bin bk_rom_decompress 2> /dev/null
|
||||
|
||||
clean:
|
||||
$(call print0,Cleaning build artifacts)
|
||||
@@ -361,7 +364,6 @@ clean:
|
||||
@$(RM) -rf $(addprefix $(ASM_ROOT)/,$(filter-out core1,$(OVERLAYS)))
|
||||
@$(RM) -rf $(ASM_ROOT)/core1/*.s
|
||||
@$(RM) -rf $(ASM_ROOT)/core1/os
|
||||
@$(RM) -f undefined_syms_auto* undefined_funcs_auto*
|
||||
@$(RM) -f *.ld
|
||||
|
||||
# Per-file flag definitions
|
||||
@@ -415,7 +417,9 @@ MAKEFLAGS += -r
|
||||
.SUFFIXES:
|
||||
|
||||
# Phony targets
|
||||
.PHONY: all clean verify $(OVERLAYS) progress $(addprefix progress-,$(OVERLAYS))
|
||||
.PHONY: all clean verify $(OVERLAYS) progress $(addprefix progress-,$(OVERLAYS)) \
|
||||
$(BK_ASSET_TOOL) $(BK_ROM_COMPRESS) $(BK_ROM_DECOMPRESS)
|
||||
|
||||
|
||||
# Set up pipefail
|
||||
SHELL = /bin/bash -e -o pipefail
|
||||
|
12
README.md
12
README.md
@@ -1,4 +1,4 @@
|
||||
# banjo (99.6748%)
|
||||
# banjo (100.0000%)
|
||||
|
||||
<img src="./progress/progress_total.svg">
|
||||
|
||||
@@ -19,16 +19,6 @@
|
||||
- <img src="./progress/progress_fight.svg">
|
||||
- <img src="./progress/progress_cutscenes.svg">
|
||||
|
||||
## Remaining Functions
|
||||
These all are the remaining NTSC-USA V1.0 function left to be matched.
|
||||
Be sure to check scratch "family" for any progress that may not be reflected here
|
||||
|
||||
| File | Function | Scratch Link | % | Notes |
|
||||
| ------------------ | --------------- | ---------------------------------------- | ------ | ----- |
|
||||
| core2/code_12F30.c | func_80299EC0 | [Ar62G](https://decomp.me/scratch/Ar62G) | 77.65% |
|
||||
| core2/code_B9770.c | func_80340BE4 | [FXyYS](https://decomp.me/scratch/FXyYS) | 65.91% | spline function
|
||||
| core2/code_B9770.c | func_803411B0 | [rHkDu](https://decomp.me/scratch/rHkDu) | 87.70% | spline function
|
||||
|
||||
## Building
|
||||
|
||||
Grab tools
|
||||
|
@@ -1,4 +1,5 @@
|
||||
#include <sys/asm.h>
|
||||
#include <PR/rcp.h>
|
||||
.include "macro.inc"
|
||||
|
||||
/* assembler directives */
|
||||
@@ -59,6 +60,8 @@ __osIntTable:
|
||||
|
||||
.section .text, "ax"
|
||||
|
||||
/* Generated by spimdisasm 1.24.3 */
|
||||
|
||||
# Handwritten function
|
||||
glabel func_8026A2E0
|
||||
/* F45B10 8026A2E0 3C1A8027 */ lui $k0, %hi(D_8026A300)
|
||||
@@ -141,8 +144,8 @@ D_8026A300:
|
||||
/* F45C40 8026A410 0369D825 */ or $k1, $k1, $t1
|
||||
/* F45C44 8026A414 AF5B0118 */ sw $k1, 0x118($k0)
|
||||
.L8026A418:
|
||||
/* F45C48 8026A418 3C09A430 */ lui $t1, %hi(D_A430000C)
|
||||
/* F45C4C 8026A41C 8D29000C */ lw $t1, %lo(D_A430000C)($t1)
|
||||
/* F45C48 8026A418 3C09A430 */ lui $t1, %hi(PHYS_TO_K1(MI_INTR_MASK_REG))
|
||||
/* F45C4C 8026A41C 8D29000C */ lw $t1, %lo(PHYS_TO_K1(MI_INTR_MASK_REG))($t1)
|
||||
/* F45C50 8026A420 5120000C */ beql $t1, $zero, .L8026A454
|
||||
/* F45C54 8026A424 AF490128 */ sw $t1, 0x128($k0)
|
||||
/* F45C58 8026A428 3C088027 */ lui $t0, %hi(__OSGlobalIntMask)
|
||||
@@ -258,21 +261,21 @@ rcp:
|
||||
/* F45DE4 8026A5B4 3C088027 */ lui $t0, %hi(__OSGlobalIntMask)
|
||||
/* F45DE8 8026A5B8 25087130 */ addiu $t0, $t0, %lo(__OSGlobalIntMask)
|
||||
/* F45DEC 8026A5BC 8D080000 */ lw $t0, 0x0($t0)
|
||||
/* F45DF0 8026A5C0 3C11A430 */ lui $s1, %hi(D_A4300008)
|
||||
/* F45DF4 8026A5C4 8E310008 */ lw $s1, %lo(D_A4300008)($s1)
|
||||
/* F45DF0 8026A5C0 3C11A430 */ lui $s1, %hi(PHYS_TO_K1(MI_INTR_REG))
|
||||
/* F45DF4 8026A5C4 8E310008 */ lw $s1, %lo(PHYS_TO_K1(MI_INTR_REG))($s1)
|
||||
/* F45DF8 8026A5C8 00084402 */ srl $t0, $t0, 16
|
||||
/* F45DFC 8026A5CC 02288824 */ and $s1, $s1, $t0
|
||||
/* F45E00 8026A5D0 32290001 */ andi $t1, $s1, 0x1
|
||||
/* F45E04 8026A5D4 51200014 */ beql $t1, $zero, .L8026A628
|
||||
/* F45E08 8026A5D8 32290008 */ andi $t1, $s1, 0x8
|
||||
/* F45E0C 8026A5DC 3C0CA404 */ lui $t4, %hi(D_A4040010)
|
||||
/* F45E10 8026A5E0 8D8C0010 */ lw $t4, %lo(D_A4040010)($t4)
|
||||
/* F45E0C 8026A5DC 3C0CA404 */ lui $t4, %hi(PHYS_TO_K1(SP_STATUS_REG))
|
||||
/* F45E10 8026A5E0 8D8C0010 */ lw $t4, %lo(PHYS_TO_K1(SP_STATUS_REG))($t4)
|
||||
/* F45E14 8026A5E4 24090008 */ addiu $t1, $zero, 0x8
|
||||
/* F45E18 8026A5E8 3C01A404 */ lui $at, %hi(D_A4040010)
|
||||
/* F45E18 8026A5E8 3C01A404 */ lui $at, %hi(PHYS_TO_K1(SP_STATUS_REG))
|
||||
/* F45E1C 8026A5EC 318C0300 */ andi $t4, $t4, 0x300
|
||||
/* F45E20 8026A5F0 3231003E */ andi $s1, $s1, 0x3E
|
||||
/* F45E24 8026A5F4 11800007 */ beqz $t4, .L8026A614
|
||||
/* F45E28 8026A5F8 AC290010 */ sw $t1, %lo(D_A4040010)($at)
|
||||
/* F45E28 8026A5F8 AC290010 */ sw $t1, %lo(PHYS_TO_K1(SP_STATUS_REG))($at)
|
||||
/* F45E2C 8026A5FC 0C09AA09 */ jal func_8026A824
|
||||
/* F45E30 8026A600 24040020 */ addiu $a0, $zero, 0x20
|
||||
/* F45E34 8026A604 52200039 */ beql $s1, $zero, .L8026A6EC
|
||||
@@ -287,9 +290,9 @@ rcp:
|
||||
/* F45E54 8026A624 32290008 */ andi $t1, $s1, 0x8
|
||||
.L8026A628:
|
||||
/* F45E58 8026A628 11200007 */ beqz $t1, .L8026A648
|
||||
/* F45E5C 8026A62C 3C01A440 */ lui $at, %hi(D_A4400010)
|
||||
/* F45E5C 8026A62C 3C01A440 */ lui $at, %hi(PHYS_TO_K1(VI_CURRENT_REG))
|
||||
/* F45E60 8026A630 32310037 */ andi $s1, $s1, 0x37
|
||||
/* F45E64 8026A634 AC200010 */ sw $zero, %lo(D_A4400010)($at)
|
||||
/* F45E64 8026A634 AC200010 */ sw $zero, %lo(PHYS_TO_K1(VI_CURRENT_REG))($at)
|
||||
/* F45E68 8026A638 0C09AA09 */ jal func_8026A824
|
||||
/* F45E6C 8026A63C 24040038 */ addiu $a0, $zero, 0x38
|
||||
/* F45E70 8026A640 5220002A */ beql $s1, $zero, .L8026A6EC
|
||||
@@ -299,9 +302,9 @@ rcp:
|
||||
/* F45E7C 8026A64C 5120000A */ beql $t1, $zero, .L8026A678
|
||||
/* F45E80 8026A650 32290002 */ andi $t1, $s1, 0x2
|
||||
/* F45E84 8026A654 24090001 */ addiu $t1, $zero, 0x1
|
||||
/* F45E88 8026A658 3C01A450 */ lui $at, %hi(D_A450000C)
|
||||
/* F45E88 8026A658 3C01A450 */ lui $at, %hi(PHYS_TO_K1(AI_STATUS_REG))
|
||||
/* F45E8C 8026A65C 3231003B */ andi $s1, $s1, 0x3B
|
||||
/* F45E90 8026A660 AC29000C */ sw $t1, %lo(D_A450000C)($at)
|
||||
/* F45E90 8026A660 AC29000C */ sw $t1, %lo(PHYS_TO_K1(AI_STATUS_REG))($at)
|
||||
/* F45E94 8026A664 0C09AA09 */ jal func_8026A824
|
||||
/* F45E98 8026A668 24040030 */ addiu $a0, $zero, 0x30
|
||||
/* F45E9C 8026A66C 5220001F */ beql $s1, $zero, .L8026A6EC
|
||||
@@ -309,9 +312,9 @@ rcp:
|
||||
/* F45EA4 8026A674 32290002 */ andi $t1, $s1, 0x2
|
||||
.L8026A678:
|
||||
/* F45EA8 8026A678 11200007 */ beqz $t1, .L8026A698
|
||||
/* F45EAC 8026A67C 3C01A480 */ lui $at, %hi(D_A4800018)
|
||||
/* F45EAC 8026A67C 3C01A480 */ lui $at, %hi(PHYS_TO_K1(SI_STATUS_REG))
|
||||
/* F45EB0 8026A680 3231003D */ andi $s1, $s1, 0x3D
|
||||
/* F45EB4 8026A684 AC200018 */ sw $zero, %lo(D_A4800018)($at)
|
||||
/* F45EB4 8026A684 AC200018 */ sw $zero, %lo(PHYS_TO_K1(SI_STATUS_REG))($at)
|
||||
/* F45EB8 8026A688 0C09AA09 */ jal func_8026A824
|
||||
/* F45EBC 8026A68C 24040028 */ addiu $a0, $zero, 0x28
|
||||
/* F45EC0 8026A690 52200016 */ beql $s1, $zero, .L8026A6EC
|
||||
@@ -321,9 +324,9 @@ rcp:
|
||||
/* F45ECC 8026A69C 5120000A */ beql $t1, $zero, .L8026A6C8
|
||||
/* F45ED0 8026A6A0 32290020 */ andi $t1, $s1, 0x20
|
||||
/* F45ED4 8026A6A4 24090002 */ addiu $t1, $zero, 0x2
|
||||
/* F45ED8 8026A6A8 3C01A460 */ lui $at, %hi(D_A4600010)
|
||||
/* F45ED8 8026A6A8 3C01A460 */ lui $at, %hi(PHYS_TO_K1(PI_STATUS_REG))
|
||||
/* F45EDC 8026A6AC 3231002F */ andi $s1, $s1, 0x2F
|
||||
/* F45EE0 8026A6B0 AC290010 */ sw $t1, %lo(D_A4600010)($at)
|
||||
/* F45EE0 8026A6B0 AC290010 */ sw $t1, %lo(PHYS_TO_K1(PI_STATUS_REG))($at)
|
||||
/* F45EE4 8026A6B4 0C09AA09 */ jal func_8026A824
|
||||
/* F45EE8 8026A6B8 24040040 */ addiu $a0, $zero, 0x40
|
||||
/* F45EEC 8026A6BC 5220000B */ beql $s1, $zero, .L8026A6EC
|
||||
@@ -333,9 +336,9 @@ rcp:
|
||||
/* F45EF8 8026A6C8 51200008 */ beql $t1, $zero, .L8026A6EC
|
||||
/* F45EFC 8026A6CC 2401FBFF */ addiu $at, $zero, -0x401
|
||||
/* F45F00 8026A6D0 24090800 */ addiu $t1, $zero, 0x800
|
||||
/* F45F04 8026A6D4 3C01A430 */ lui $at, %hi(D_A4300000)
|
||||
/* F45F04 8026A6D4 3C01A430 */ lui $at, %hi(PHYS_TO_K1(MI_MODE_REG))
|
||||
/* F45F08 8026A6D8 3231001F */ andi $s1, $s1, 0x1F
|
||||
/* F45F0C 8026A6DC AC290000 */ sw $t1, %lo(D_A4300000)($at)
|
||||
/* F45F0C 8026A6DC AC290000 */ sw $t1, %lo(PHYS_TO_K1(MI_MODE_REG))($at)
|
||||
/* F45F10 8026A6E0 0C09AA09 */ jal func_8026A824
|
||||
/* F45F14 8026A6E4 24040048 */ addiu $a0, $zero, 0x48
|
||||
/* F45F18 8026A6E8 2401FBFF */ addiu $at, $zero, -0x401
|
||||
@@ -427,6 +430,7 @@ enqueueRunning:
|
||||
/* F4604C 8026A81C 0809AA99 */ j __osDispatchThread
|
||||
/* F46050 8026A820 00000000 */ nop
|
||||
endlabel func_8026A2E0
|
||||
.size func_8026A2E0, . - func_8026A2E0
|
||||
|
||||
# Handwritten function
|
||||
glabel func_8026A824
|
||||
@@ -493,6 +497,7 @@ glabel func_8026A824
|
||||
/* F46134 8026A904 1000FFB5 */ b enqueueRunning
|
||||
/* F46138 8026A908 AF5B0118 */ sw $k1, 0x118($k0)
|
||||
endlabel func_8026A824
|
||||
.size func_8026A824, . - func_8026A824
|
||||
|
||||
# Handwritten function
|
||||
glabel __osEnqueueAndYield
|
||||
@@ -528,7 +533,7 @@ glabel __osEnqueueAndYield
|
||||
/* F461AC 8026A97C 8CBB0118 */ lw $k1, 0x118($a1)
|
||||
/* F461B0 8026A980 3369FF00 */ andi $t1, $k1, 0xFF00
|
||||
/* F461B4 8026A984 5120000E */ beql $t1, $zero, .L8026A9C0
|
||||
/* F461B8 8026A988 3C1BA430 */ lui $k1, %hi(D_A430000C)
|
||||
/* F461B8 8026A988 3C1BA430 */ lui $k1, %hi(PHYS_TO_K1(MI_INTR_MASK_REG))
|
||||
/* F461BC 8026A98C 3C088027 */ lui $t0, %hi(__OSGlobalIntMask)
|
||||
/* F461C0 8026A990 25087130 */ addiu $t0, $t0, %lo(__OSGlobalIntMask)
|
||||
/* F461C4 8026A994 8D080000 */ lw $t0, 0x0($t0)
|
||||
@@ -541,9 +546,9 @@ glabel __osEnqueueAndYield
|
||||
/* F461E0 8026A9B0 0361D824 */ and $k1, $k1, $at
|
||||
/* F461E4 8026A9B4 0369D825 */ or $k1, $k1, $t1
|
||||
/* F461E8 8026A9B8 ACBB0118 */ sw $k1, 0x118($a1)
|
||||
/* F461EC 8026A9BC 3C1BA430 */ lui $k1, %hi(D_A430000C)
|
||||
/* F461EC 8026A9BC 3C1BA430 */ lui $k1, %hi(PHYS_TO_K1(MI_INTR_MASK_REG))
|
||||
.L8026A9C0:
|
||||
/* F461F0 8026A9C0 8F7B000C */ lw $k1, %lo(D_A430000C)($k1)
|
||||
/* F461F0 8026A9C0 8F7B000C */ lw $k1, %lo(PHYS_TO_K1(MI_INTR_MASK_REG))($k1)
|
||||
/* F461F4 8026A9C4 1360000B */ beqz $k1, .L8026A9F4
|
||||
/* F461F8 8026A9C8 00000000 */ nop
|
||||
/* F461FC 8026A9CC 3C1A8027 */ lui $k0, %hi(__OSGlobalIntMask)
|
||||
@@ -565,6 +570,7 @@ glabel __osEnqueueAndYield
|
||||
/* F46234 8026AA04 0809AA99 */ j __osDispatchThread
|
||||
/* F46238 8026AA08 00000000 */ nop
|
||||
endlabel __osEnqueueAndYield
|
||||
.size __osEnqueueAndYield, . - __osEnqueueAndYield
|
||||
|
||||
glabel __osEnqueueThread
|
||||
/* F4623C 8026AA0C 8C980000 */ lw $t8, 0x0($a0)
|
||||
@@ -588,6 +594,7 @@ glabel __osEnqueueThread
|
||||
/* F4627C 8026AA4C 03E00008 */ jr $ra
|
||||
/* F46280 8026AA50 ACA40008 */ sw $a0, 0x8($a1)
|
||||
endlabel __osEnqueueThread
|
||||
.size __osEnqueueThread, . - __osEnqueueThread
|
||||
|
||||
glabel __osPopThread
|
||||
/* F46284 8026AA54 8C820000 */ lw $v0, 0x0($a0)
|
||||
@@ -595,6 +602,7 @@ glabel __osPopThread
|
||||
/* F4628C 8026AA5C 03E00008 */ jr $ra
|
||||
/* F46290 8026AA60 AC990000 */ sw $t9, 0x0($a0)
|
||||
endlabel __osPopThread
|
||||
.size __osPopThread, . - __osPopThread
|
||||
|
||||
# Handwritten function
|
||||
glabel __osDispatchThread
|
||||
@@ -686,8 +694,8 @@ glabel __osDispatchThread
|
||||
/* F463E4 8026ABB4 275A8C60 */ addiu $k0, $k0, %lo(__osRcpImTable)
|
||||
/* F463E8 8026ABB8 037AD821 */ addu $k1, $k1, $k0
|
||||
/* F463EC 8026ABBC 977B0000 */ lhu $k1, 0x0($k1)
|
||||
/* F463F0 8026ABC0 3C1AA430 */ lui $k0, %hi(D_A430000C)
|
||||
/* F463F4 8026ABC4 275A000C */ addiu $k0, $k0, %lo(D_A430000C)
|
||||
/* F463F0 8026ABC0 3C1AA430 */ lui $k0, %hi(PHYS_TO_K1(MI_INTR_MASK_REG))
|
||||
/* F463F4 8026ABC4 275A000C */ addiu $k0, $k0, %lo(PHYS_TO_K1(MI_INTR_MASK_REG))
|
||||
/* F463F8 8026ABC8 AF5B0000 */ sw $k1, 0x0($k0)
|
||||
/* F463FC 8026ABCC 00000000 */ nop
|
||||
/* F46400 8026ABD0 00000000 */ nop
|
||||
@@ -695,6 +703,7 @@ glabel __osDispatchThread
|
||||
/* F46408 8026ABD8 00000000 */ nop
|
||||
/* F4640C 8026ABDC 42000018 */ eret
|
||||
endlabel __osDispatchThread
|
||||
.size __osDispatchThread, . - __osDispatchThread
|
||||
|
||||
glabel __osCleanupThread
|
||||
/* F46410 8026ABE0 0C09936C */ jal osDestroyThread
|
||||
@@ -702,6 +711,7 @@ glabel __osCleanupThread
|
||||
/* F46418 8026ABE8 00000000 */ nop
|
||||
/* F4641C 8026ABEC 00000000 */ nop
|
||||
endlabel __osCleanupThread
|
||||
.size __osCleanupThread, . - __osCleanupThread
|
||||
|
||||
# Handwritten function
|
||||
glabel osMapTLBRdb
|
||||
@@ -730,3 +740,4 @@ glabel osMapTLBRdb
|
||||
/* F46478 8026AC48 00000000 */ nop
|
||||
/* F4647C 8026AC4C 00000000 */ nop
|
||||
endlabel osMapTLBRdb
|
||||
.size osMapTLBRdb, . - osMapTLBRdb
|
||||
|
17
asm/core1/ultra/parameters.s
Normal file
17
asm/core1/ultra/parameters.s
Normal file
@@ -0,0 +1,17 @@
|
||||
#include "PR/R4300.h"
|
||||
#include "sys/asm.h"
|
||||
#include "sys/regdef.h"
|
||||
|
||||
.text
|
||||
ABS(leoBootID, 0x800001a0)
|
||||
ABS(osTvType, 0x80000300)
|
||||
ABS(osRomType, 0x80000304)
|
||||
ABS(osRomBase, 0x80000308)
|
||||
ABS(osResetType, 0x8000030c)
|
||||
ABS(osCicId, 0x80000310)
|
||||
ABS(osVersion, 0x80000314)
|
||||
ABS(osMemSize, 0x80000318)
|
||||
ABS(osAppNMIBuffer, 0x8000031c)
|
||||
|
||||
.space 0x60
|
||||
/* padded to 0x60 in the object file */
|
@@ -1,4 +1,5 @@
|
||||
#include <sys/asm.h>
|
||||
#include <PR/rcp.h>
|
||||
.include "macro.inc"
|
||||
# assembler directives
|
||||
.set noat # allow manual use of $at
|
||||
@@ -100,8 +101,8 @@ glabel osSetIntMask
|
||||
xor $t0, $t3, $at
|
||||
andi $t0, $t0, 0xff00
|
||||
or $v0, $v0, $t0
|
||||
lui $t2, %hi(D_A430000C)
|
||||
lw $t2, %lo(D_A430000C)($t2)
|
||||
lui $t2, %hi(PHYS_TO_K1(MI_INTR_MASK_REG))
|
||||
lw $t2, %lo(PHYS_TO_K1(MI_INTR_MASK_REG))($t2)
|
||||
beqz $t2, setintmask_1
|
||||
srl $t1, $t3, 0x10
|
||||
addiu $at, $zero, -1
|
||||
@@ -118,8 +119,8 @@ setintmask_1:
|
||||
lui $t2, %hi(__osRcpImTable)
|
||||
addu $t2, $t2, $t0
|
||||
lhu $t2, %lo(__osRcpImTable)($t2)
|
||||
lui $at, %hi(D_A430000C)
|
||||
sw $t2, %lo(D_A430000C)($at)
|
||||
lui $at, %hi(PHYS_TO_K1(MI_INTR_MASK_REG))
|
||||
sw $t2, %lo(PHYS_TO_K1(MI_INTR_MASK_REG))($at)
|
||||
andi $t0, $a0, 0xff01
|
||||
andi $t1, $t3, 0xff00
|
||||
and $t0, $t0, $t1
|
||||
|
@@ -1,429 +0,0 @@
|
||||
.include "macro.inc"
|
||||
|
||||
.section .data
|
||||
|
||||
dlabel D_80392100
|
||||
.double -500.0
|
||||
|
||||
dlabel jtbl_80392108
|
||||
.word L80387794_13A4, L803877F8_1408, L803878FC_150C, L803879A0_15B0, L80387A20_1630, L80387A98_16A8
|
||||
|
||||
dlabel D_80392120
|
||||
.float 0.95
|
||||
|
||||
dlabel D_80392124
|
||||
.float 1.05
|
||||
|
||||
dlabel D_80392128
|
||||
.float 5000.0
|
||||
|
||||
dlabel D_8039212C
|
||||
.float 12000.0
|
||||
|
||||
dlabel D_80392130
|
||||
.float 1e8
|
||||
|
||||
dlabel jtbl_80392134
|
||||
.word L80388254_1E64, L80388558_2168, L80388558_2168, L80388268_1E78, L80388314_1F24, L8038837C_1F8C, L80388420_2030, L80388468_2078, L80388484_2094, L80388558_2168, L803884CC_20DC, L803884E0_20F0
|
||||
|
||||
dlabel D_80392164
|
||||
.float 0.95
|
||||
|
||||
dlabel D_80392168
|
||||
.float 1.05
|
||||
|
||||
dlabel D_8039216C
|
||||
.float 5000.0
|
||||
|
||||
dlabel D_80392170
|
||||
.float 12000.0, 0.95
|
||||
|
||||
dlabel D_80392178
|
||||
.float 1.05
|
||||
|
||||
dlabel D_8039217C
|
||||
.float 5000.0
|
||||
|
||||
dlabel D_80392180
|
||||
.float 12000.0
|
||||
|
||||
dlabel D_80392184
|
||||
.float 0.4
|
||||
|
||||
dlabel D_80392188
|
||||
.float 5000.0
|
||||
|
||||
dlabel D_8039218C
|
||||
.float 12000.0, 2700.0
|
||||
|
||||
dlabel D_80392194
|
||||
.float 1150.0
|
||||
|
||||
dlabel D_80392198
|
||||
.float 0.95
|
||||
|
||||
dlabel D_8039219C
|
||||
.float 1.05
|
||||
|
||||
dlabel D_803921A0
|
||||
.float 5000.0
|
||||
|
||||
dlabel D_803921A4
|
||||
.float 12000.0
|
||||
|
||||
dlabel D_803921A8
|
||||
.float 0.95
|
||||
|
||||
dlabel D_803921AC
|
||||
.float 1.05
|
||||
|
||||
dlabel D_803921B0
|
||||
.float 5000.0
|
||||
|
||||
dlabel D_803921B4
|
||||
.float 12000.0
|
||||
|
||||
dlabel jtbl_803921B8
|
||||
.word L803887AC_23BC, L803888A8_24B8, L80388964_2574, L803889EC_25FC, L80388B24_2734, L80388DC4_29D4, L80388E84_2A94, L80388F5C_2B6C, L80388FC4_2BD4, L80389054_2C64, L803890C0_2CD0, L80389158_2D68
|
||||
|
||||
dlabel D_803921E8
|
||||
.double 0.3333333333333333
|
||||
|
||||
dlabel D_803921F0
|
||||
.double 3300.0, 0.7333333333333334
|
||||
|
||||
dlabel D_80392200
|
||||
.double 3300.0
|
||||
|
||||
dlabel D_80392208
|
||||
.double 0.66
|
||||
|
||||
dlabel D_80392210
|
||||
.double 0.65
|
||||
|
||||
dlabel jtbl_80392218
|
||||
.word L803893E8_2FF8, L803894CC_30DC, L803894F0_3100, L80389594_31A4, L803895D8_31E8, L80389638_3248, L80389660_3270
|
||||
|
||||
dlabel jtbl_80392234
|
||||
.word L8038975C_336C, L80389788_3398, L803897B4_33C4, L803897E0_33F0, L8038980C_341C
|
||||
|
||||
dlabel D_80392248
|
||||
.float 1.54
|
||||
|
||||
dlabel jtbl_8039224C
|
||||
.word L80389BD8_37E8, L80389CFC_390C, L80389D48_3958, L80389D80_3990, L80389E14_3A24, L80389E3C_3A4C, L80389F40_3B50
|
||||
|
||||
dlabel D_80392268
|
||||
.word 0x3F99999A, 0x00000000
|
||||
|
||||
dlabel D_80392270
|
||||
.double 0.1
|
||||
|
||||
dlabel D_80392278
|
||||
.double 0.8
|
||||
|
||||
dlabel jtbl_80392280
|
||||
.word L80389FEC_3BFC, L8038A4D4_40E4, L8038A01C_3C2C, L8038A4D4_40E4, L8038A1B4_3DC4, L8038A208_3E18, L8038A3D4_3FE4
|
||||
|
||||
dlabel D_8039229C
|
||||
.float 2.2
|
||||
|
||||
dlabel D_803922A0
|
||||
.float 2.2
|
||||
|
||||
dlabel D_803922A4
|
||||
.float 2.2
|
||||
|
||||
dlabel D_803922A8
|
||||
.float 4.4
|
||||
|
||||
dlabel D_803922AC
|
||||
.float 4.4
|
||||
|
||||
dlabel D_803922B0
|
||||
.float 4.4
|
||||
|
||||
dlabel D_803922B4
|
||||
.float 6.6
|
||||
|
||||
dlabel D_803922B8
|
||||
.float 6.6
|
||||
|
||||
dlabel D_803922BC
|
||||
.float 6.6
|
||||
|
||||
dlabel D_803922C0
|
||||
.float 8.8
|
||||
|
||||
dlabel D_803922C4
|
||||
.float 8.8
|
||||
|
||||
dlabel D_803922C8
|
||||
.float 8.8
|
||||
|
||||
dlabel D_803922CC
|
||||
.float 0.95
|
||||
|
||||
dlabel D_803922D0
|
||||
.float 1.05
|
||||
|
||||
dlabel D_803922D4
|
||||
.float 5000.0
|
||||
|
||||
dlabel D_803922D8
|
||||
.float 12000.0
|
||||
|
||||
dlabel D_803922DC
|
||||
.float 0.6
|
||||
|
||||
dlabel D_803922E0
|
||||
.double 1.7, -1190.0
|
||||
|
||||
dlabel D_803922F0
|
||||
.float 1.7
|
||||
|
||||
dlabel D_803922F4
|
||||
.float 1.7
|
||||
|
||||
dlabel D_803922F8
|
||||
.float 1.7
|
||||
|
||||
dlabel D_803922FC
|
||||
.float 1.7
|
||||
|
||||
dlabel D_80392300
|
||||
.float 0.95
|
||||
|
||||
dlabel D_80392304
|
||||
.float 1.05
|
||||
|
||||
dlabel D_80392308
|
||||
.float 0.95
|
||||
|
||||
dlabel D_8039230C
|
||||
.float 1.05
|
||||
|
||||
dlabel jtbl_80392310
|
||||
.word L8038A778_4388, L8038A7D0_43E0, L8038A818_4428, L8038A8A0_44B0, L8038A8FC_450C, L8038A924_4534, L8038AA3C_464C
|
||||
|
||||
dlabel D_8039232C
|
||||
.float 0.95
|
||||
|
||||
dlabel D_80392330
|
||||
.float 1.05
|
||||
|
||||
dlabel D_80392334
|
||||
.float 0.95
|
||||
|
||||
dlabel D_80392338
|
||||
.float 1.05
|
||||
|
||||
dlabel D_8039233C
|
||||
.float 0.95
|
||||
|
||||
dlabel D_80392340
|
||||
.float 1.05
|
||||
|
||||
dlabel D_80392344
|
||||
.float 0.95
|
||||
|
||||
dlabel D_80392348
|
||||
.float 1.05
|
||||
|
||||
dlabel D_8039234C
|
||||
.float 0.95
|
||||
|
||||
dlabel D_80392350
|
||||
.float 1.05
|
||||
|
||||
dlabel D_80392354
|
||||
.float 0.95
|
||||
|
||||
dlabel D_80392358
|
||||
.float 1.05, 0.0
|
||||
|
||||
dlabel D_80392360
|
||||
.double 0.4
|
||||
|
||||
dlabel D_80392368
|
||||
.double 0.65
|
||||
|
||||
dlabel D_80392370
|
||||
.double 0.005
|
||||
|
||||
dlabel D_80392378
|
||||
.double 1.99
|
||||
|
||||
dlabel D_80392380
|
||||
.float 0.95
|
||||
|
||||
dlabel D_80392384
|
||||
.float 1.05
|
||||
|
||||
dlabel jtbl_80392388
|
||||
.word L8038ACE8_48F8, L8038AD90_49A0, L8038ADA0_49B0, L8038AF14_4B24, L8038AF70_4B80, L8038ADA8_49B8, L8038AE00_4A10, L8038AE5C_4A6C, L8038AF28_4B38
|
||||
|
||||
dlabel D_803923AC
|
||||
.float 0.95
|
||||
|
||||
dlabel D_803923B0
|
||||
.float 1.05
|
||||
|
||||
dlabel D_803923B4
|
||||
.float 5000.0
|
||||
|
||||
dlabel D_803923B8
|
||||
.float 12000.0, 0.95
|
||||
|
||||
dlabel D_803923C0
|
||||
.float 1.05
|
||||
|
||||
dlabel D_803923C4
|
||||
.float 5000.0
|
||||
|
||||
dlabel D_803923C8
|
||||
.float 12000.0
|
||||
|
||||
dlabel D_803923CC
|
||||
.float 0.95
|
||||
|
||||
dlabel D_803923D0
|
||||
.float 1.05
|
||||
|
||||
dlabel D_803923D4
|
||||
.float 5000.0
|
||||
|
||||
dlabel D_803923D8
|
||||
.float 12000.0
|
||||
|
||||
dlabel D_803923DC
|
||||
.float 0.6
|
||||
|
||||
dlabel D_803923E0
|
||||
.float 0.6, 2.4
|
||||
|
||||
dlabel D_803923E8
|
||||
.float 2.4
|
||||
|
||||
dlabel D_803923EC
|
||||
.float 4.4
|
||||
|
||||
dlabel D_803923F0
|
||||
.float 4.4
|
||||
|
||||
dlabel jtbl_803923F4
|
||||
.word L8038B290_4EA0, L8038B2A4_4EB4, L8038B2DC_4EEC, L8038B368_4F78, L8038B3B4_4FC4, L8038B460_5070, L8038B4FC_510C, L8038B564_5174, L8038B58C_519C
|
||||
|
||||
dlabel D_80392418
|
||||
.double 0.56
|
||||
|
||||
dlabel D_80392420
|
||||
.double 0.99
|
||||
|
||||
dlabel D_80392428
|
||||
.float 4.8
|
||||
|
||||
dlabel jtbl_8039242C
|
||||
.word L8038B874_5484, L8038B8D0_54E0, L8038B91C_552C, L8038B93C_554C, L8038B95C_556C
|
||||
|
||||
dlabel D_80392440
|
||||
.float 0.95
|
||||
|
||||
dlabel D_80392444
|
||||
.float 1.05
|
||||
|
||||
dlabel D_80392448
|
||||
.float 5000.0
|
||||
|
||||
dlabel D_8039244C
|
||||
.float 12000.0
|
||||
|
||||
dlabel D_80392450
|
||||
.float 0.6
|
||||
|
||||
dlabel jtbl_80392454
|
||||
.word L8038BF30_5B40, L8038BF40_5B50, L8038BF50_5B60, L8038BF60_5B70, L8038BF70_5B80, L8038BF80_5B90, 0
|
||||
|
||||
dlabel D_80392470
|
||||
.double 0.08
|
||||
|
||||
dlabel D_80392478
|
||||
.float 2.88, 0.0
|
||||
|
||||
dlabel D_80392480
|
||||
.double 0.35
|
||||
|
||||
dlabel D_80392488
|
||||
.double 0.65
|
||||
|
||||
dlabel D_80392490
|
||||
.float 0.3, 0.0
|
||||
|
||||
dlabel D_80392498
|
||||
.double 45.0
|
||||
|
||||
dlabel D_803924A0
|
||||
.double 0.3
|
||||
|
||||
dlabel D_803924A8
|
||||
.double 2.26
|
||||
|
||||
dlabel D_803924B0
|
||||
.double 182.04444
|
||||
|
||||
dlabel jtbl_803924B8
|
||||
.word L8038C92C_653C, L8038C980_6590, L8038CA48_6658, L8038CA48_6658, L8038CE68_6A78
|
||||
|
||||
dlabel D_803924CC
|
||||
.float 0.95
|
||||
|
||||
dlabel D_803924D0
|
||||
.float 1.05
|
||||
|
||||
dlabel D_803924D4
|
||||
.float 5000.0
|
||||
|
||||
dlabel D_803924D8
|
||||
.float 0.95
|
||||
|
||||
dlabel D_803924DC
|
||||
.float 1.05
|
||||
|
||||
dlabel D_803924E0
|
||||
.float 5000.0
|
||||
|
||||
dlabel D_803924E4
|
||||
.float 12000.0
|
||||
|
||||
dlabel D_803924E8
|
||||
.double 0.1
|
||||
|
||||
dlabel D_803924F0
|
||||
.double 0.8
|
||||
|
||||
dlabel D_803924F8
|
||||
.double 0.2
|
||||
|
||||
dlabel D_80392500
|
||||
.float 0.1
|
||||
|
||||
dlabel D_80392504
|
||||
.float 5000.0
|
||||
|
||||
dlabel D_80392508
|
||||
.float 12000.0
|
||||
|
||||
dlabel D_8039250C
|
||||
.float 2500.0
|
||||
|
||||
dlabel D_80392510
|
||||
.double 0.98
|
||||
|
||||
dlabel D_80392518
|
||||
.float 1.15
|
||||
|
||||
dlabel D_8039251C
|
||||
.float 0.1
|
||||
|
||||
dlabel D_80392520
|
||||
.float 2.26, 0.0, 0.0, 0.0
|
@@ -1,4 +1,5 @@
|
||||
#include <sys/asm.h>
|
||||
#include <PR/rcp.h>
|
||||
.include "macro.inc"
|
||||
|
||||
# assembler directives
|
||||
@@ -146,8 +147,8 @@ glabel __osException
|
||||
/* 2F90 80002390 0369D825 */ or $k1, $k1, $t1
|
||||
/* 2F94 80002394 AF5B0118 */ sw $k1, 0x118($k0)
|
||||
.L80002398:
|
||||
/* 2F98 80002398 3C09A430 */ lui $t1, %hi(D_A430000C)
|
||||
/* 2F9C 8000239C 8D29000C */ lw $t1, %lo(D_A430000C)($t1)
|
||||
/* 2F98 80002398 3C09A430 */ lui $t1, %hi(PHYS_TO_K1(MI_INTR_MASK_REG))
|
||||
/* 2F9C 8000239C 8D29000C */ lw $t1, %lo(PHYS_TO_K1(MI_INTR_MASK_REG))($t1)
|
||||
/* 2FA0 800023A0 5120000C */ beql $t1, $zero, .L800023D4
|
||||
/* 2FA4 800023A4 AF490128 */ sw $t1, 0x128($k0)
|
||||
/* 2FA8 800023A8 3C088000 */ lui $t0, %hi(__OSGlobalIntMask)
|
||||
@@ -262,21 +263,21 @@ rcp:
|
||||
/* 3134 80002534 3C088000 */ lui $t0, %hi(__OSGlobalIntMask)
|
||||
/* 3138 80002538 250850F0 */ addiu $t0, $t0, %lo(__OSGlobalIntMask)
|
||||
/* 313C 8000253C 8D080000 */ lw $t0, ($t0)
|
||||
/* 3140 80002540 3C11A430 */ lui $s1, %hi(D_A4300008)
|
||||
/* 3144 80002544 8E310008 */ lw $s1, %lo(D_A4300008)($s1)
|
||||
/* 3140 80002540 3C11A430 */ lui $s1, %hi(PHYS_TO_K1(MI_INTR_REG))
|
||||
/* 3144 80002544 8E310008 */ lw $s1, %lo(PHYS_TO_K1(MI_INTR_REG))($s1)
|
||||
/* 3148 80002548 00084402 */ srl $t0, $t0, 0x10
|
||||
/* 314C 8000254C 02288824 */ and $s1, $s1, $t0
|
||||
/* 3150 80002550 32290001 */ andi $t1, $s1, 1
|
||||
/* 3154 80002554 51200014 */ beql $t1, $zero, .L800025A8
|
||||
/* 3158 80002558 32290008 */ andi $t1, $s1, 8
|
||||
/* 315C 8000255C 3C0CA404 */ lui $t4, %hi(D_A4040010)
|
||||
/* 3160 80002560 8D8C0010 */ lw $t4, %lo(D_A4040010)($t4)
|
||||
/* 315C 8000255C 3C0CA404 */ lui $t4, %hi(PHYS_TO_K1(SP_STATUS_REG))
|
||||
/* 3160 80002560 8D8C0010 */ lw $t4, %lo(PHYS_TO_K1(SP_STATUS_REG))($t4)
|
||||
/* 3164 80002564 24090008 */ addiu $t1, $zero, 8
|
||||
/* 3168 80002568 3C01A404 */ lui $at, %hi(D_A4040010)
|
||||
/* 3168 80002568 3C01A404 */ lui $at, %hi(PHYS_TO_K1(SP_STATUS_REG))
|
||||
/* 316C 8000256C 318C0300 */ andi $t4, $t4, 0x300
|
||||
/* 3170 80002570 3231003E */ andi $s1, $s1, 0x3e
|
||||
/* 3174 80002574 11800007 */ beqz $t4, .L80002594
|
||||
/* 3178 80002578 AC290010 */ sw $t1, %lo(D_A4040010)($at)
|
||||
/* 3178 80002578 AC290010 */ sw $t1, %lo(PHYS_TO_K1(SP_STATUS_REG))($at)
|
||||
/* 317C 8000257C 0C0009E9 */ jal send_mesg
|
||||
/* 3180 80002580 24040020 */ addiu $a0, $zero, 0x20
|
||||
/* 3184 80002584 52200039 */ beql $s1, $zero, .L8000266C
|
||||
@@ -291,9 +292,9 @@ rcp:
|
||||
/* 31A4 800025A4 32290008 */ andi $t1, $s1, 8
|
||||
.L800025A8:
|
||||
/* 31A8 800025A8 11200007 */ beqz $t1, .L800025C8
|
||||
/* 31AC 800025AC 3C01A440 */ lui $at, %hi(D_A4400010)
|
||||
/* 31AC 800025AC 3C01A440 */ lui $at, %hi(PHYS_TO_K1(VI_CURRENT_REG))
|
||||
/* 31B0 800025B0 32310037 */ andi $s1, $s1, 0x37
|
||||
/* 31B4 800025B4 AC200010 */ sw $zero, %lo(D_A4400010)($at)
|
||||
/* 31B4 800025B4 AC200010 */ sw $zero, %lo(PHYS_TO_K1(VI_CURRENT_REG))($at)
|
||||
/* 31B8 800025B8 0C0009E9 */ jal send_mesg
|
||||
/* 31BC 800025BC 24040038 */ addiu $a0, $zero, 0x38
|
||||
/* 31C0 800025C0 5220002A */ beql $s1, $zero, .L8000266C
|
||||
@@ -303,9 +304,9 @@ rcp:
|
||||
/* 31CC 800025CC 5120000A */ beql $t1, $zero, .L800025F8
|
||||
/* 31D0 800025D0 32290002 */ andi $t1, $s1, 2
|
||||
/* 31D4 800025D4 24090001 */ addiu $t1, $zero, 1
|
||||
/* 31D8 800025D8 3C01A450 */ lui $at, %hi(D_A450000C)
|
||||
/* 31D8 800025D8 3C01A450 */ lui $at, %hi(PHYS_TO_K1(AI_STATUS_REG))
|
||||
/* 31DC 800025DC 3231003B */ andi $s1, $s1, 0x3b
|
||||
/* 31E0 800025E0 AC29000C */ sw $t1, %lo(D_A450000C)($at)
|
||||
/* 31E0 800025E0 AC29000C */ sw $t1, %lo(PHYS_TO_K1(AI_STATUS_REG))($at)
|
||||
/* 31E4 800025E4 0C0009E9 */ jal send_mesg
|
||||
/* 31E8 800025E8 24040030 */ addiu $a0, $zero, 0x30
|
||||
/* 31EC 800025EC 5220001F */ beql $s1, $zero, .L8000266C
|
||||
@@ -313,9 +314,9 @@ rcp:
|
||||
/* 31F4 800025F4 32290002 */ andi $t1, $s1, 2
|
||||
.L800025F8:
|
||||
/* 31F8 800025F8 11200007 */ beqz $t1, .L80002618
|
||||
/* 31FC 800025FC 3C01A480 */ lui $at, %hi(D_A4800018)
|
||||
/* 31FC 800025FC 3C01A480 */ lui $at, %hi(PHYS_TO_K1(SI_STATUS_REG))
|
||||
/* 3200 80002600 3231003D */ andi $s1, $s1, 0x3d
|
||||
/* 3204 80002604 AC200018 */ sw $zero, %lo(D_A4800018)($at)
|
||||
/* 3204 80002604 AC200018 */ sw $zero, %lo(PHYS_TO_K1(SI_STATUS_REG))($at)
|
||||
/* 3208 80002608 0C0009E9 */ jal send_mesg
|
||||
/* 320C 8000260C 24040028 */ addiu $a0, $zero, 0x28
|
||||
/* 3210 80002610 52200016 */ beql $s1, $zero, .L8000266C
|
||||
@@ -325,9 +326,9 @@ rcp:
|
||||
/* 321C 8000261C 5120000A */ beql $t1, $zero, .L80002648
|
||||
/* 3220 80002620 32290020 */ andi $t1, $s1, 0x20
|
||||
/* 3224 80002624 24090002 */ addiu $t1, $zero, 2
|
||||
/* 3228 80002628 3C01A460 */ lui $at, %hi(D_A4600010)
|
||||
/* 3228 80002628 3C01A460 */ lui $at, %hi(PHYS_TO_K1(PI_STATUS_REG))
|
||||
/* 322C 8000262C 3231002F */ andi $s1, $s1, 0x2f
|
||||
/* 3230 80002630 AC290010 */ sw $t1, %lo(D_A4600010)($at)
|
||||
/* 3230 80002630 AC290010 */ sw $t1, %lo(PHYS_TO_K1(PI_STATUS_REG))($at)
|
||||
/* 3234 80002634 0C0009E9 */ jal send_mesg
|
||||
/* 3238 80002638 24040040 */ addiu $a0, $zero, 0x40
|
||||
/* 323C 8000263C 5220000B */ beql $s1, $zero, .L8000266C
|
||||
@@ -545,9 +546,9 @@ glabel __osEnqueueAndYield
|
||||
/* 3530 80002930 0361D824 */ and $k1, $k1, $at
|
||||
/* 3534 80002934 0369D825 */ or $k1, $k1, $t1
|
||||
/* 3538 80002938 ACBB0118 */ sw $k1, 0x118($a1)
|
||||
/* 353C 8000293C 3C1BA430 */ lui $k1, %hi(D_A430000C)
|
||||
/* 353C 8000293C 3C1BA430 */ lui $k1, %hi(PHYS_TO_K1(MI_INTR_MASK_REG))
|
||||
.L80002940:
|
||||
/* 3540 80002940 8F7B000C */ lw $k1, %lo(D_A430000C)($k1)
|
||||
/* 3540 80002940 8F7B000C */ lw $k1, %lo(PHYS_TO_K1(MI_INTR_MASK_REG))($k1)
|
||||
/* 3544 80002944 1360000B */ beqz $k1, .L80002974
|
||||
/* 3548 80002948 00000000 */ nop
|
||||
/* 354C 8000294C 3C1A8000 */ lui $k0, %hi(__OSGlobalIntMask)
|
||||
@@ -689,8 +690,8 @@ glabel __osDispatchThread
|
||||
/* 3734 80002B34 275A51D0 */ addiu $k0, $k0, %lo(__osRcpImTable)
|
||||
/* 3738 80002B38 037AD821 */ addu $k1, $k1, $k0
|
||||
/* 373C 80002B3C 977B0000 */ lhu $k1, ($k1)
|
||||
/* 3740 80002B40 3C1AA430 */ lui $k0, %hi(D_A430000C)
|
||||
/* 3744 80002B44 275A000C */ addiu $k0, $k0, %lo(D_A430000C)
|
||||
/* 3740 80002B40 3C1AA430 */ lui $k0, %hi(PHYS_TO_K1(MI_INTR_MASK_REG))
|
||||
/* 3744 80002B44 275A000C */ addiu $k0, $k0, %lo(PHYS_TO_K1(MI_INTR_MASK_REG))
|
||||
/* 3748 80002B48 AF5B0000 */ sw $k1, ($k0)
|
||||
/* 374C 80002B4C 00000000 */ nop
|
||||
/* 3750 80002B50 00000000 */ nop
|
||||
|
17
asm/ultra/parameters.s
Normal file
17
asm/ultra/parameters.s
Normal file
@@ -0,0 +1,17 @@
|
||||
#include "PR/R4300.h"
|
||||
#include "sys/asm.h"
|
||||
#include "sys/regdef.h"
|
||||
|
||||
.text
|
||||
ABS(leoBootID, 0x800001a0)
|
||||
ABS(osTvType, 0x80000300)
|
||||
ABS(osRomType, 0x80000304)
|
||||
ABS(osRomBase, 0x80000308)
|
||||
ABS(osResetType, 0x8000030c)
|
||||
ABS(osCicId, 0x80000310)
|
||||
ABS(osVersion, 0x80000314)
|
||||
ABS(osMemSize, 0x80000318)
|
||||
ABS(osAppNMIBuffer, 0x8000031c)
|
||||
|
||||
.space 0x60
|
||||
/* padded to 0x60 in the object file */
|
@@ -1,4 +1,5 @@
|
||||
#include <sys/asm.h>
|
||||
#include <PR/rcp.h>
|
||||
.include "macro.inc"
|
||||
# assembler directives
|
||||
.set noat # allow manual use of $at
|
||||
@@ -100,8 +101,8 @@ glabel func_80003A30
|
||||
/* 4648 80003A48 01614026 */ xor $t0, $t3, $at
|
||||
/* 464C 80003A4C 3108FF00 */ andi $t0, $t0, 0xff00
|
||||
/* 4650 80003A50 00481025 */ or $v0, $v0, $t0
|
||||
/* 4654 80003A54 3C0AA430 */ lui $t2, %hi(D_A430000C)
|
||||
/* 4658 80003A58 8D4A000C */ lw $t2, %lo(D_A430000C)($t2)
|
||||
/* 4654 80003A54 3C0AA430 */ lui $t2, %hi(PHYS_TO_K1(MI_INTR_MASK_REG))
|
||||
/* 4658 80003A58 8D4A000C */ lw $t2, %lo(PHYS_TO_K1(MI_INTR_MASK_REG))($t2)
|
||||
/* 465C 80003A5C 11400005 */ beqz $t2, .L80003A74
|
||||
/* 4660 80003A60 000B4C02 */ srl $t1, $t3, 0x10
|
||||
/* 4664 80003A64 2401FFFF */ addiu $at, $zero, -1
|
||||
@@ -118,8 +119,8 @@ glabel func_80003A30
|
||||
/* 468C 80003A8C 3C0A8000 */ lui $t2, %hi(__osRcpImTable)
|
||||
/* 4690 80003A90 01485021 */ addu $t2, $t2, $t0
|
||||
/* 4694 80003A94 954A51D0 */ lhu $t2, %lo(__osRcpImTable)($t2)
|
||||
/* 4698 80003A98 3C01A430 */ lui $at, %hi(D_A430000C)
|
||||
/* 469C 80003A9C AC2A000C */ sw $t2, %lo(D_A430000C)($at)
|
||||
/* 4698 80003A98 3C01A430 */ lui $at, %hi(PHYS_TO_K1(MI_INTR_MASK_REG))
|
||||
/* 469C 80003A9C AC2A000C */ sw $t2, %lo(PHYS_TO_K1(MI_INTR_MASK_REG))($at)
|
||||
/* 46A0 80003AA0 3088FF01 */ andi $t0, $a0, 0xff01
|
||||
/* 46A4 80003AA4 3169FF00 */ andi $t1, $t3, 0xff00
|
||||
/* 46A8 80003AA8 01094024 */ and $t0, $t0, $t1
|
||||
|
@@ -15,12 +15,14 @@ options:
|
||||
#include "variables.h"
|
||||
undefined_syms_path: undefined_syms.us.v10.txt
|
||||
symbol_addrs_path: symbol_addrs.us.v10.txt
|
||||
undefined_funcs_auto_path: undefined_funcs_auto.us.v10.txt
|
||||
undefined_syms_auto_path: undefined_syms_auto.us.v10.txt
|
||||
create_undefined_funcs_auto: no
|
||||
create_undefined_syms_auto: no
|
||||
base_path: .
|
||||
target_path: decompressed.us.v10.z64
|
||||
asset_path: bin
|
||||
build_path: build/us.v10
|
||||
libultra_symbols: True
|
||||
hardware_regs: True
|
||||
segments:
|
||||
- name: header
|
||||
type: header
|
||||
@@ -63,7 +65,7 @@ segments:
|
||||
- [0x3870, hasm, maptlbrdb]
|
||||
- [0x38D0, c, done/pirawread]
|
||||
- [0x3930, c, done/ll]
|
||||
- [0x3BF0, bin, padding3BF0] # Empty space
|
||||
- [0x3BF0, hasm, ultra/parameters]
|
||||
- [0x3C50, c, done/virtualtophysical]
|
||||
- [0x3CD0, c, done/si]
|
||||
- [0x3D00, c, done/thread]
|
||||
@@ -123,18 +125,20 @@ segments:
|
||||
start: 0x5E90
|
||||
subsegments:
|
||||
- [0x5E90, bin, assets]
|
||||
- name: soundfont1
|
||||
- name: soundfont1ctl
|
||||
type: bin
|
||||
start: 0xD846C0
|
||||
subsegments:
|
||||
- [0xD846C0, bin, soundfont1.ctl]
|
||||
- [0xD954B0, bin, soundfont1.tbl]
|
||||
- name: soundfont2
|
||||
- name: soundfont1tbl
|
||||
type: bin
|
||||
start: 0xD954B0
|
||||
|
||||
- name: soundfont2ctl
|
||||
type: bin
|
||||
start: 0xEA3EB0
|
||||
subsegments:
|
||||
- [0xEA3EB0, bin, soundfont2.ctl]
|
||||
- [0xEADE60, bin, soundfont2.tbl]
|
||||
- name: soundfont2tbl
|
||||
type: bin
|
||||
start: 0xEADE60
|
||||
|
||||
- name: core1
|
||||
dir: core1
|
||||
type: code
|
||||
@@ -233,7 +237,7 @@ segments:
|
||||
- [0xF3F820, c, gu/sinf] #DONE
|
||||
- [0xF3F9E0, c, audio/cents2ratio] #DONE
|
||||
- [0xF3FA30, c, audio/heapinit] #DONE
|
||||
- [0xF3FA70, asm, padding] # 0x60 bytes of zeroes?
|
||||
- [0xF3FA70, hasm, ultra/parameters] #DONE
|
||||
- [0xF3FAD0, c, os/createmesgqueue] #DONE
|
||||
- [0xF3FB00, c, io/aisetfreq] #DONE
|
||||
- [0xF3FC60, c, audio/sl] #DONE
|
||||
@@ -1496,6 +1500,7 @@ segments:
|
||||
- [0x1048560, .bss, code_41FB0]
|
||||
- [0x1048560, .bss, code_42CB0]
|
||||
- [0x1048560, .bss, mapspecificflags]
|
||||
- [0x1048560, .bss, code_47BD0]
|
||||
- [0x1048560, .bss, code_4A6F0]
|
||||
- [0x1048560, .bss, code_4C020]
|
||||
- [0x1048560, .bss, ch/badShad]
|
||||
@@ -1614,6 +1619,7 @@ segments:
|
||||
- [0x1048560, .bss, code_C5440]
|
||||
- [0x1048560, .bss, code_C89C0]
|
||||
- [0x1048560, .bss, code_C97F0]
|
||||
- [0x1048560, .bss, code_C9E70]
|
||||
- [0x1048560, .bss, code_C9F00]
|
||||
- [0x1048560, .bss, code_CB8A0]
|
||||
- [0x1048560, .bss, code_CBBF0]
|
||||
@@ -1882,7 +1888,7 @@ segments:
|
||||
- [0x1068340, .rodata, ch/grublin]
|
||||
- [0x1068350, .rodata, ch/jujuhitbox]
|
||||
- [0x1068360, .rodata, ch/juju]
|
||||
- [0x1068370, .bss, bss_pad]
|
||||
- [0x1068370, .bss, ch/hut]
|
||||
- [0x1068370, .bss, ch/juju]
|
||||
- name: BGS
|
||||
dir: BGS
|
||||
@@ -2112,7 +2118,8 @@ segments:
|
||||
- [0x108AB50, .bss, sirslushgame]
|
||||
- [0x108AB50, .bss, snowmanbuttongame]
|
||||
- [0x108AB50, .bss, racectrl]
|
||||
- [0x108AB50, .bss, bss_end_pad]
|
||||
- [0x108AB50, .bss, ch/xmastreestar]
|
||||
- [0x108AB50, .bss, code_B4D0]
|
||||
- name: SM
|
||||
dir: SM
|
||||
type: code
|
||||
|
@@ -184,7 +184,7 @@ def hexbytes(bs):
|
||||
found_instr_diff = []
|
||||
map_search_diff = []
|
||||
diffs = 0
|
||||
shift_cap = 1000
|
||||
shift_cap = 100000
|
||||
for i in range(24, len(mybin), 4):
|
||||
# (mybin[i:i+4] != basebin[i:i+4], but that's slightly slower in CPython...)
|
||||
if diffs <= shift_cap and (
|
||||
|
@@ -16,6 +16,6 @@ typedef struct asset_file_meta_s{
|
||||
} AssetFileMeta;
|
||||
|
||||
|
||||
extern u8 D_5E90; //rom file asset bin;
|
||||
extern u8 assets_ROM_START[]; //rom file asset bin;
|
||||
|
||||
#endif
|
||||
|
@@ -42,8 +42,6 @@ struct FF_StorageStruct_48 {
|
||||
struct FF_StorageStruct_48_sub data[4];
|
||||
}; // 0x90
|
||||
|
||||
|
||||
|
||||
// FF: generic storage struct
|
||||
struct FF_StorageStruct {
|
||||
/* 00 */ BKModel *unk0;
|
||||
|
@@ -1,25 +1,4 @@
|
||||
/* lair */
|
||||
FF_QuestionTypeInfoArr = 0x80394340;
|
||||
D_80392EB0 = 0x80392EB0;
|
||||
D_80392E20 = 0x80392E20;
|
||||
lair_D_80392D90 = 0x80392D90;
|
||||
MMM_D_8038C510 = 0x8038C510;
|
||||
func_803863F0 = 0x803863F0;
|
||||
D_8038D6A0 = 0x8038D6A0;
|
||||
D_8038D378 = 0x8038D378;
|
||||
D_8038D4DC = 0x8038D4DC;
|
||||
D_8038D534 = 0x8038D534;
|
||||
D_8038D590 = 0x8038D590;
|
||||
D_8038D6DC = 0x8038D6DC;
|
||||
D_8038D844 = 0x8038D844;
|
||||
fight_D_80391A10 = 0x80391A10;
|
||||
FP_D_80392840 = 0x80392840;
|
||||
core1_D_803727F4 = 0x803727F4;
|
||||
__osBaseTimer = 0x80285D00;
|
||||
FP_D_80392864 = 0x80392864;
|
||||
D_803687F0 = 0x803687F0;
|
||||
D_80276E70 = 0x80276E70;
|
||||
|
||||
/* Microcode renames to match ucode.h names */
|
||||
n_aspMainTextStart = _binary_bin_core1_n_aspMain_text_bin_start;
|
||||
n_aspMainTextEnd = _binary_bin_core1_n_aspMain_text_bin_end;
|
||||
gSPF3DEX_fifoTextStart = _binary_bin_core1_gSPF3DEX_fifo_text_bin_start;
|
||||
@@ -32,3 +11,21 @@ gSPF3DEX_fifoDataStart = _binary_bin_core1_gSPF3DEX_fifo_data_bin_start;
|
||||
gSPF3DEX_fifoDataEnd = _binary_bin_core1_gSPF3DEX_fifo_data_bin_end;
|
||||
gSPL3DEX_fifoDataStart = _binary_bin_core1_gSPL3DEX_fifo_data_bin_start;
|
||||
gSPL3DEX_fifoDataEnd = _binary_bin_core1_gSPL3DEX_fifo_data_bin_end;
|
||||
|
||||
/* Fixed-address buffers */
|
||||
D_8000E800 = 0x8000E800;
|
||||
D_8002D500 = 0x8002D500;
|
||||
D_8023DA00 = 0x8023DA00; /* confirm */
|
||||
D_803FBE00 = 0x803FBE00;
|
||||
D_803FFE00 = 0x803FFE00;
|
||||
D_803FFE10 = 0x803FFE10;
|
||||
gOverlayTable = 0x803FFE10;
|
||||
D_803A5D00 = 0x803A5D00; /* framebuffers */
|
||||
|
||||
/* Renames for the boot segment */
|
||||
boot_D_8002D500 = D_8002D500;
|
||||
boot_core1_VRAM = core1_VRAM;
|
||||
boot_D_803FBE00 = D_803FBE00;
|
||||
boot_D_803FFE00 = D_803FFE00;
|
||||
boot_gOverlayTable = gOverlayTable;
|
||||
boot_func_8023DA20 = func_8023DA20;
|
@@ -1,23 +1,23 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="111" height="20">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="118" height="20">
|
||||
<linearGradient id="b" x2="0" y2="100%">
|
||||
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
||||
<stop offset="1" stop-opacity=".1"/>
|
||||
</linearGradient>
|
||||
<mask id="anybadge_1">
|
||||
<rect width="111" height="20" rx="3" fill="#fff"/>
|
||||
<rect width="118" height="20" rx="3" fill="#fff"/>
|
||||
</mask>
|
||||
<g mask="url(#anybadge_1)">
|
||||
<path fill="#555" d="M0 0h44v20H0z"/>
|
||||
<path fill="#03e000" d="M44 0h67v20H44z"/>
|
||||
<path fill="url(#b)" d="M0 0h111v20H0z"/>
|
||||
<path fill="#00e000" d="M44 0h74v20H44z"/>
|
||||
<path fill="url(#b)" d="M0 0h118v20H0z"/>
|
||||
</g>
|
||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||
<text x="23.0" y="15" fill="#010101" fill-opacity=".3">core2</text>
|
||||
<text x="22.0" y="14">core2</text>
|
||||
</g>
|
||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||
<text x="78.5" y="15" fill="#010101" fill-opacity=".3">99.4332%</text>
|
||||
<text x="77.5" y="14">99.4332%</text>
|
||||
<text x="82.0" y="15" fill="#010101" fill-opacity=".3">100.0000%</text>
|
||||
<text x="81.0" y="14">100.0000%</text>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
@@ -1,23 +1,23 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="217" height="20">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="224" height="20">
|
||||
<linearGradient id="b" x2="0" y2="100%">
|
||||
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
||||
<stop offset="1" stop-opacity=".1"/>
|
||||
</linearGradient>
|
||||
<mask id="anybadge_1">
|
||||
<rect width="217" height="20" rx="3" fill="#fff"/>
|
||||
<rect width="224" height="20" rx="3" fill="#fff"/>
|
||||
</mask>
|
||||
<g mask="url(#anybadge_1)">
|
||||
<path fill="#555" d="M0 0h150v20H0z"/>
|
||||
<path fill="#01e000" d="M150 0h67v20H150z"/>
|
||||
<path fill="url(#b)" d="M0 0h217v20H0z"/>
|
||||
<path fill="#00e000" d="M150 0h74v20H150z"/>
|
||||
<path fill="url(#b)" d="M0 0h224v20H0z"/>
|
||||
</g>
|
||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||
<text x="76.0" y="15" fill="#010101" fill-opacity=".3">Banjo-Kazooie (us.v10)</text>
|
||||
<text x="75.0" y="14">Banjo-Kazooie (us.v10)</text>
|
||||
</g>
|
||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||
<text x="184.5" y="15" fill="#010101" fill-opacity=".3">99.6748%</text>
|
||||
<text x="183.5" y="14">99.6748%</text>
|
||||
<text x="188.0" y="15" fill="#010101" fill-opacity=".3">100.0000%</text>
|
||||
<text x="187.0" y="14">100.0000%</text>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
@@ -1 +0,0 @@
|
||||
char pad_FP_803935A8[0x20];
|
@@ -29,8 +29,8 @@ ActorInfo D_80391318 = { MARKER_AA_HISTUP, ACTOR_11C_HISTUP, ASSET_3DE_MODEL_HIS
|
||||
extern struct {
|
||||
s32 unk0;
|
||||
s32 unk4;
|
||||
s32 unk8;
|
||||
}GV_D_80391AB0;
|
||||
extern s32 D_80391AB8;
|
||||
|
||||
/* .code */
|
||||
int func_8038D920(Actor *this, f32 arg1){
|
||||
@@ -114,7 +114,7 @@ void func_8038DBDC(Actor *this){
|
||||
actor_collisionOff(this);
|
||||
subaddie_set_state_with_direction(this, 1, 0.99f, 0);
|
||||
animctrl_setPlaybackType(this->animctrl, ANIMCTRL_STOPPED);
|
||||
D_80391AB8 = 0;
|
||||
GV_D_80391AB0.unk8 = 0;
|
||||
func_8038DB4C(0);
|
||||
this->unk1C[0] = 0.0f;
|
||||
}//L8038DC90
|
||||
@@ -134,7 +134,7 @@ void func_8038DBDC(Actor *this){
|
||||
case 2: //8038DD3C
|
||||
if(!(func_8038E178() < 5)){
|
||||
func_8038DB88(this);
|
||||
if(D_80391AB8){
|
||||
if(GV_D_80391AB0.unk8){
|
||||
subaddie_set_state_with_direction(this, 3, 0.99f, 0);
|
||||
animctrl_setPlaybackType(this->animctrl, ANIMCTRL_STOPPED);
|
||||
this->unk1C[0] = 0.0f;
|
||||
@@ -196,7 +196,7 @@ void func_8038DBDC(Actor *this){
|
||||
animctrl_setDuration(this->animctrl, 1.6f);
|
||||
func_80386608();
|
||||
func_8038DB4C(0);
|
||||
D_80391AB8 = FALSE;
|
||||
GV_D_80391AB0.unk8 = FALSE;
|
||||
func_8025A58C(-1, 0x190);
|
||||
func_8025A7DC(COMUSIC_27_GV_RUBEES_SONG);
|
||||
if(!this->unk44_31){
|
||||
|
@@ -4,7 +4,7 @@
|
||||
|
||||
struct {
|
||||
s32 unk0;
|
||||
u8 pad4[4];
|
||||
s32 unk4;
|
||||
s32 unk8;
|
||||
}GV_D_80391AB0;
|
||||
|
||||
|
@@ -1 +0,0 @@
|
||||
char pad_MM_D_80389C80[0x10];
|
@@ -19,6 +19,7 @@ void func_80389598(Actor *this);
|
||||
Actor* func_80389014(ActorMarker *, Gfx **, Mtx**, Vtx** );
|
||||
|
||||
/* .bss */
|
||||
u8 MM_pad_80389C80[0x10];
|
||||
s32 MM_D_80389C90;
|
||||
|
||||
/* .data */
|
||||
|
@@ -2,16 +2,18 @@
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
|
||||
s32 pad_803912C0[2];
|
||||
u8 __propellorCtrlState;
|
||||
f32 __propellorTimer;
|
||||
|
||||
void __propellorCtrl_setState(s32 arg0){
|
||||
static f32 __propellorTimer;
|
||||
f32* timerPtr = &__propellorTimer;
|
||||
|
||||
__propellorTimer = 0.0f;
|
||||
if(arg0 == 1)
|
||||
__propellorTimer = 6.5f;
|
||||
*timerPtr = 0.0f;
|
||||
|
||||
if(arg0 == 1) {
|
||||
*timerPtr = 6.5f;
|
||||
}
|
||||
|
||||
if(arg0 == 2){
|
||||
item_set(ITEM_3_PROPELLOR_TIMER, 3900 - 1);
|
||||
@@ -49,8 +51,6 @@ void rbb_propellorCtrl_start(void){
|
||||
}
|
||||
|
||||
void rbb_propellorCtrl_update(void){
|
||||
extern f32 __propellorTimer;
|
||||
|
||||
if( __propellorCtrlState == 0)
|
||||
if(levelSpecificFlags_get(0x27) && levelSpecificFlags_get(0x28))
|
||||
__propellorCtrl_setState(1);
|
||||
|
@@ -2,12 +2,7 @@
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
|
||||
#ifndef CORE2_DATA_CRC2
|
||||
#define CORE2_DATA_CRC2 0
|
||||
#endif
|
||||
|
||||
extern s32 core2_D_803727F4;
|
||||
extern s32 D_803727F4;
|
||||
|
||||
extern struct {
|
||||
u8 pad0[4];
|
||||
@@ -32,7 +27,7 @@ typedef struct {
|
||||
f32 joystick[2];
|
||||
}Struct_core1_10A00_1;
|
||||
|
||||
extern s32 D_80276574; // = CORE2_DATA_CRC2
|
||||
extern s32 D_80276574;
|
||||
|
||||
/* .data */
|
||||
s32 D_80275D30 = 0xC3A68832; //WHAT IS THIS?
|
||||
@@ -73,7 +68,7 @@ f32 func_8024E420(s32 arg0, s32 arg1, s32 arg2) {
|
||||
f32 phi_f2;
|
||||
|
||||
phi_f2 = 0.0125f;
|
||||
if ((D_80379B90.unk4 != core2_D_803727F4) || (D_80379B90.unkC != D_80276574)) {
|
||||
if ((D_80379B90.unk4 != D_803727F4) || (D_80379B90.unkC != D_80276574)) {
|
||||
phi_f2 = 0.00625f;
|
||||
}
|
||||
if (arg0 > 0) {
|
||||
@@ -341,6 +336,10 @@ void func_8024F1F0(void){
|
||||
void func_8024F224(void){
|
||||
s32 iCont, j;
|
||||
|
||||
// for(iCont = 0; iCont < 4; iCont++){
|
||||
// D_80281250[iCont].unk0 = 0;
|
||||
// }
|
||||
|
||||
for(iCont = 0; iCont < 4; iCont++){
|
||||
D_80281250[iCont].unk0 = 0;
|
||||
D_80281250[iCont].unk2 = 0;
|
||||
|
@@ -9,8 +9,9 @@ extern void func_8025F570(ALCSPlayer *, u8);
|
||||
extern void func_8025F510(ALCSPlayer *, u8, u8);
|
||||
extern void func_8025F5C0(ALCSPlayer *, u8);
|
||||
|
||||
extern ALBankFile D_EA3EB0;
|
||||
extern ALWaveTable D_EADE60;
|
||||
extern u8 soundfont2ctl_ROM_START[];
|
||||
extern u8 soundfont2ctl_ROM_END[];
|
||||
extern u8 soundfont2tbl_ROM_START[];
|
||||
|
||||
/* dependent functions */
|
||||
void func_8024FA98(u8, enum comusic_e);
|
||||
@@ -220,10 +221,10 @@ void musicInstruments_init(void){
|
||||
s32 i;
|
||||
f32 tmpf1;
|
||||
|
||||
size = (u8*)&D_EADE60 - (u8*)&D_EA3EB0;
|
||||
size = soundfont2ctl_ROM_END - soundfont2ctl_ROM_START;
|
||||
bnk_f = malloc(size);
|
||||
osWriteBackDCacheAll();
|
||||
osPiStartDma(func_802405D0(), 0, 0, &D_EA3EB0, bnk_f, size, func_802405C4());
|
||||
osPiStartDma(func_802405D0(), 0, 0, (u32)soundfont2ctl_ROM_START, bnk_f, size, func_802405C4());
|
||||
osRecvMesg(func_802405C4(), 0, 1); //osRecvMesg
|
||||
D_80282104 = 0xAD;
|
||||
D_802820E0 = (MusicTrack **) malloc(D_80282104 * sizeof(MusicTrack *));
|
||||
@@ -242,7 +243,7 @@ void musicInstruments_init(void){
|
||||
n_alCSPNew(&D_80281720[i].cseqp, &D_802820E8);
|
||||
}
|
||||
|
||||
alBnkfNew(bnk_f, (u8 *)&D_EADE60);
|
||||
alBnkfNew(bnk_f, soundfont2tbl_ROM_START);
|
||||
D_80282108 = bnk_f->bankArray[0];
|
||||
for(i = 0; i < 6; i++){
|
||||
alCSPSetBank(&D_80281720[i].cseqp, D_80282108);
|
||||
|
@@ -9,7 +9,7 @@ f32 func_80263FF0(f32);
|
||||
f32 cosf(f32);
|
||||
|
||||
#ifndef CORE2_DATA_CRC2
|
||||
#define CORE2_DATA_CRC2 0
|
||||
#define CORE2_DATA_CRC2 0x84D7B4F8
|
||||
#endif
|
||||
|
||||
s32 D_80276570 = 0xFF62C2B8; //WHAT IS THIS?
|
||||
|
@@ -147,9 +147,9 @@ ALHeap D_8027CFF0;
|
||||
u8 * D_8027D000;
|
||||
s32 D_8027D004;
|
||||
OSMesgQueue D_8027D008;
|
||||
OSMesg D_8027D020;
|
||||
OSMesg D_8027D020[50];
|
||||
OSIoMesg D_8027D0E8;
|
||||
Struct_core1_1D00_4 D_8027D100[58];
|
||||
Struct_core1_1D00_4 D_8027D100[50];
|
||||
struct {
|
||||
u8 unk0;
|
||||
Struct_1D00_3 *unk4;
|
||||
@@ -297,7 +297,7 @@ void audioManager_create(void) {
|
||||
int i;
|
||||
f32 var_f0;
|
||||
|
||||
osCreateMesgQueue(&D_8027D008, &D_8027D020, 0x32);
|
||||
osCreateMesgQueue(&D_8027D008, D_8027D020, 50);
|
||||
osCreateMesgQueue(&audioManager.audioReplyMsgQ, audioManager.audioReplyMsgBuf, 8); //audioReplyMesgQueue
|
||||
osCreateMesgQueue(&audioManager.audioFrameMsgQ, audioManager.audioFrameMsgBuf, 8);
|
||||
var_f0 = 733.333313f;
|
||||
|
@@ -3,8 +3,10 @@
|
||||
#include "variables.h"
|
||||
|
||||
OSIoMesg D_8027E090;
|
||||
OSMesg D_8027E0A8;
|
||||
OSMesgQueue D_8027E0AC;
|
||||
struct {
|
||||
OSMesg mesg;
|
||||
OSMesgQueue queue;
|
||||
} D_8027E0A8;
|
||||
OSMesg D_8027E0C8[16]; //g_PimgrMesgBuffer
|
||||
OSMesgQueue D_8027E108; //g_PimgrMesgQueue
|
||||
|
||||
@@ -19,20 +21,20 @@ void func_802405F0(u32 * arg0, s32 arg1, s32 size){
|
||||
block_remainder = size % block_size;
|
||||
|
||||
for(i = 0; i < block_cnt; i++){
|
||||
osPiStartDma(&D_8027E090, OS_MESG_PRI_NORMAL, OS_READ, arg1, arg0, 0x20000, &D_8027E0AC);
|
||||
osRecvMesg(&D_8027E0AC, NULL, 1);
|
||||
osPiStartDma(&D_8027E090, OS_MESG_PRI_NORMAL, OS_READ, arg1, arg0, 0x20000, &D_8027E0A8.queue);
|
||||
osRecvMesg(&D_8027E0A8.queue, NULL, 1);
|
||||
arg1 += 0x20000;
|
||||
arg0 += 0x8000;
|
||||
}
|
||||
|
||||
osPiStartDma(&D_8027E090, OS_MESG_PRI_NORMAL, OS_READ, arg1, arg0, block_remainder, &D_8027E0AC);
|
||||
osRecvMesg(&D_8027E0AC, NULL, 1);
|
||||
osPiStartDma(&D_8027E090, OS_MESG_PRI_NORMAL, OS_READ, arg1, arg0, block_remainder, &D_8027E0A8.queue);
|
||||
osRecvMesg(&D_8027E0A8.queue, NULL, 1);
|
||||
osInvalDCache(arg0, size);
|
||||
|
||||
}
|
||||
|
||||
void piMgr_create(void){
|
||||
osCreateMesgQueue(&D_8027E0AC, &D_8027E0A8, 1);
|
||||
osCreateMesgQueue(&D_8027E0A8.queue, &D_8027E0A8.mesg, 1);
|
||||
osCreateMesgQueue(&D_8027E108, &D_8027E0C8[0], 16);
|
||||
osCreatePiManager(OS_PRIORITY_PIMGR, &D_8027E108, &D_8027E0C8[0], 16);
|
||||
}
|
||||
|
@@ -21,7 +21,7 @@ void func_80244978(s32 arg0, s16 type, s32 arg2);
|
||||
|
||||
N_ALSndPlayer D_8027EEC0;
|
||||
s16 *D_8027EF14;
|
||||
extern struct {
|
||||
struct {
|
||||
s32 volume[4];
|
||||
}D_8027EF18;
|
||||
|
||||
|
@@ -53,7 +53,7 @@ s32 D_80275768 = 6; //dbits
|
||||
/* .data */
|
||||
extern struct huft D_803FBE00;
|
||||
struct huft *D_8027BF00;
|
||||
u8 pad_8027BF00[0xC];
|
||||
u8 pad_8027BF08[0x8];
|
||||
u8 *D_8027BF10; //inbuf
|
||||
u8 *D_8027BF14; //slide
|
||||
u32 D_8027BF18; //inptr
|
||||
|
@@ -12,7 +12,6 @@ extern f32 func_8031C5D4(struct0*);
|
||||
extern void func_8031C5AC(struct0 *, f32 *);
|
||||
|
||||
/* .bss */
|
||||
u8 pad_D_8027EF20[0x10];
|
||||
f32 D_8027EF30;
|
||||
|
||||
/* .code */
|
||||
|
@@ -61,7 +61,7 @@ s32 D_8027599C = 0;
|
||||
|
||||
/* .bss */
|
||||
u64 D_8027EF40[OS_YIELD_DATA_SIZE / sizeof(u64)];
|
||||
static u8 pad[0x28]; // 8027FB40
|
||||
static u8 pad[0x20]; // 8027FB40
|
||||
OSMesgQueue D_8027FB60;
|
||||
OSMesg D_8027FB78[20];
|
||||
OSMesgQueue D_8027FBC8;
|
||||
@@ -74,7 +74,7 @@ s32 D_8027FC18;
|
||||
s32 D_8027FC1C;
|
||||
s32 D_8027FC20;
|
||||
s32 D_8027FC24;
|
||||
u8 D_8027FC28[2040]; //stack for thread D_80280428;
|
||||
u8 D_8027FC28[2048]; //stack for thread D_80280428;
|
||||
OSThread D_80280428;
|
||||
Struct_Core1_8C50_s * D_802805D8[20];
|
||||
volatile s32 D_80280628;
|
||||
@@ -458,7 +458,7 @@ void func_80247560(void){
|
||||
tmp_v0 = D_8027EF40;
|
||||
while((u32)tmp_v0 % 0x10){((u32)tmp_v0)++;}
|
||||
D_80275950.t.yield_data_ptr = tmp_v0;
|
||||
osCreateThread(&D_80280428, 5, func_802473B4, NULL, &D_8027FC28[2040], 60);
|
||||
osCreateThread(&D_80280428, 5, func_802473B4, NULL, &D_8027FC28[2048], 60);
|
||||
osStartThread(&D_80280428);
|
||||
}
|
||||
|
||||
|
@@ -61,12 +61,16 @@ u32 D_80280724;
|
||||
u32 D_80280728;
|
||||
struct1 D_80280730[8];
|
||||
OSMesgQueue D_80280770;
|
||||
OSMesg D_80280788[10];
|
||||
OSMesgQueue D_802807B0;
|
||||
OSMesg D_802807C8[1];
|
||||
OSMesgQueue D_802807D0;
|
||||
OSMesg D_802807E8[60];
|
||||
volatile s32 D_802808D8;
|
||||
s32 D_802808DC;
|
||||
OSThread D_802808E0;
|
||||
u8 pad_80280970[0x520];
|
||||
#define THREAD0_STACK_SIZE 0x400
|
||||
u8 thread0_stack[THREAD0_STACK_SIZE];
|
||||
|
||||
|
||||
extern u8 D_803A5D00[2][0x1ECC0]; //framebuffer
|
||||
@@ -100,7 +104,6 @@ void func_8024BDAC(OSMesgQueue *mq, OSMesg msg){
|
||||
}
|
||||
|
||||
void func_8024BE30(void){
|
||||
extern s32 D_80280E90;
|
||||
s32 i;
|
||||
|
||||
func_8024C428();
|
||||
@@ -113,9 +116,9 @@ void func_8024BE30(void){
|
||||
osViSetSpecialFeatures(OS_VI_DITHER_FILTER_ON);
|
||||
osViSetSpecialFeatures(OS_VI_GAMMA_OFF);
|
||||
osViSwapBuffer(&D_803A5D00);
|
||||
osCreateMesgQueue(&D_80280770, (&D_80280770 + 1), 10);
|
||||
osCreateMesgQueue(&D_802807B0, (&D_802807B0 + 1), 1);
|
||||
osCreateMesgQueue(&D_802807D0, (&D_802807D0 + 1), 0x3C);
|
||||
osCreateMesgQueue(&D_80280770, D_80280788, 10);
|
||||
osCreateMesgQueue(&D_802807B0, D_802807C8, 1);
|
||||
osCreateMesgQueue(&D_802807D0, D_802807E8, 60);
|
||||
osViSetEvent(&D_80280770,NULL,1);
|
||||
D_80280720 = 0;
|
||||
D_80280724 = 1;
|
||||
@@ -125,7 +128,7 @@ void func_8024BE30(void){
|
||||
}
|
||||
D_802808D8 = 0;
|
||||
func_8024BF94(2);
|
||||
osCreateThread(&D_802808E0,0,func_8024C2F8,NULL,&D_80280E90,0x50);
|
||||
osCreateThread(&D_802808E0,0,func_8024C2F8,NULL,&thread0_stack[THREAD0_STACK_SIZE],80);
|
||||
osStartThread(&D_802808E0);
|
||||
}
|
||||
|
||||
|
@@ -12,6 +12,7 @@ struct {
|
||||
f32 unkC;
|
||||
f32 unk10;
|
||||
}D_8037D450;
|
||||
u32 pad_8037D464;
|
||||
u8 D_8037D468;
|
||||
|
||||
/* .code */
|
||||
|
@@ -7,7 +7,7 @@
|
||||
#endif
|
||||
|
||||
extern s16 D_803A5D00[2][0xF660]; //framebuffer
|
||||
extern u8 D_8037DCC8[]; //bottels bonus flags???
|
||||
extern u8 D_8037DCC8; //bottles bonus flags???
|
||||
|
||||
|
||||
extern void ml_vec3f_assign(f32[3], f32, f32, f32);
|
||||
@@ -61,9 +61,8 @@ ActorInfo D_80368418 = {
|
||||
|
||||
/* .bss */
|
||||
ActorMarker *chBottlesBonusCursorMarker;
|
||||
f32 D_8037E068[20][2];
|
||||
f32 D_8037E068[60][2];
|
||||
Struct_core2_584D0_0 D_8037E248[20]; //puzzle pieces
|
||||
u8 pad_8037E478[0x140];
|
||||
s32 D_8037E5B8;
|
||||
struct {
|
||||
s32 unk0;
|
||||
|
@@ -2,6 +2,7 @@
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
#include "core2/code_C9E70.h"
|
||||
#include "core2/modelRender.h"
|
||||
|
||||
#ifndef ABS
|
||||
@@ -77,10 +78,21 @@ ActorInfo D_80365F00 = { 0xE6, 0x197, 0x532, 0x1, D_80365ED0, func_802C4C14, fun
|
||||
|
||||
|
||||
/* .bss */
|
||||
// Remove this when this memory region is properly symbolized
|
||||
u8 unk_8037DCB0[0x8037DCE0 - 0x8037DCB0];
|
||||
|
||||
extern u8 D_8037DCCE[0x12];
|
||||
s32 D_8037DCB0;
|
||||
u32 D_8037DCB4;
|
||||
struct FF_StorageStruct* D_8037DCB8;
|
||||
s32 D_8037DCBC;
|
||||
u8 D_8037DCC0[7];
|
||||
u8 D_8037DCC7;
|
||||
u8 D_8037DCC8;
|
||||
u8 D_8037DCC9;
|
||||
u8 D_8037DCCA;
|
||||
u8 D_8037DCCB;
|
||||
u8 D_8037DCCC;
|
||||
u8 D_8037DCCD;
|
||||
u8 D_8037DCCE[3];
|
||||
s32 pad_8037DCD4;
|
||||
s32 pad_8037DCD8;
|
||||
|
||||
struct {
|
||||
u8 *unk0;
|
||||
|
@@ -93,14 +93,14 @@ struct {
|
||||
D_8037C6F0;
|
||||
|
||||
/*.code */
|
||||
#ifndef NONMATCHING
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_12F30/func_80299EC0.s")
|
||||
#else
|
||||
void func_80299EC0(f32 arg0[3]) {
|
||||
f32 spEC[3]; //player_pos
|
||||
f32 spE0[3];
|
||||
f32 spD4[3];
|
||||
f32 a;
|
||||
f32 f0;
|
||||
BKModelBin *spC8;
|
||||
f32 f2;
|
||||
f32 spB8[3];
|
||||
f32 spAC[3];
|
||||
f32 spA0[3];
|
||||
@@ -110,17 +110,14 @@ void func_80299EC0(f32 arg0[3]) {
|
||||
f32 sp70;
|
||||
BKCollisionTri *sp6C; //floor_vtx_list
|
||||
f32 sp48[3][3]; //tri_vtx_coord
|
||||
f32 temp_f0_2;
|
||||
f32 temp_f2_2;
|
||||
f32 temp_f2_4;
|
||||
Vtx *vtx_buffer;
|
||||
Vtx *temp_v1;
|
||||
f32 phi_f18;
|
||||
f32 f18;
|
||||
|
||||
arg0[2] =
|
||||
arg0[1] =
|
||||
arg0[0] = 255;
|
||||
|
||||
arg0[0] = 255.0f;\
|
||||
arg0[1] = 255.0f;\
|
||||
arg0[2] = 255.0f;
|
||||
if (D_8037C6F0.unk0 == 1) {
|
||||
sp78 = 50;
|
||||
} else if (func_8028EE84() == BSWATERGROUP_0_NONE) {
|
||||
@@ -134,77 +131,89 @@ void func_80299EC0(f32 arg0[3]) {
|
||||
if (spC8 == NULL) {
|
||||
sp6C = NULL;
|
||||
}
|
||||
if ((spEC[1] - func_80294438()) > 100.0f) {
|
||||
if ((spEC[1] - func_80294438()) > 100) {
|
||||
sp6C = NULL;
|
||||
}
|
||||
if (sp6C == NULL) return;
|
||||
if (sp6C->unk6 &2) return;
|
||||
|
||||
vtx_buffer = vtxList_getVertices(model_getVtxList(spC8));
|
||||
|
||||
for(i = 0; i<3; i++){
|
||||
temp_v1 = vtx_buffer + sp6C->unk0[i];
|
||||
sp48[i][0] = (f32) temp_v1->v.ob[0];
|
||||
sp48[i][1] = (f32) temp_v1->v.ob[1];
|
||||
sp48[i][2] = (f32) temp_v1->v.ob[2];
|
||||
sp48[i][1] = 0.0f;
|
||||
sp48[i][1] = 0;
|
||||
|
||||
sp7C[i][0] = (f32) temp_v1->v.cn[0];
|
||||
sp7C[i][1] = (f32) temp_v1->v.cn[1];
|
||||
sp7C[i][2] = (f32) temp_v1->v.cn[2];
|
||||
}
|
||||
// spEC[1] = 0.0f;
|
||||
|
||||
spEC[1] = 0;
|
||||
|
||||
spE0[0] = spEC[0] - sp48[0][0];
|
||||
spE0[1] = 0;
|
||||
spE0[2] = spEC[2] - sp48[0][2];
|
||||
spE0[1] = 0.0f;
|
||||
|
||||
spAC[0] = sp48[0][0] - sp48[1][0];
|
||||
spAC[1] = 0;
|
||||
spAC[2] = sp48[0][2] - sp48[1][2];
|
||||
spAC[1] = 0.0f;
|
||||
|
||||
spB8[0] = -(sp48[2][2] - sp48[1][2]);
|
||||
spB8[2] = sp48[2][0] - sp48[1][0];
|
||||
spB8[1] = 0.0f;
|
||||
spB8[0] = sp48[2][0] - sp48[1][0];
|
||||
spB8[1] = 0;
|
||||
spB8[2] = sp48[2][2] - sp48[1][2];
|
||||
|
||||
phi_f18 = (spE0[0] * spB8[0]) + (spE0[1] * spB8[1]) + (spB8[2] * spE0[2]);
|
||||
phi_f18 = (phi_f18 == 0.0f)? 0.1f : phi_f18;
|
||||
//swap
|
||||
sp70 = spB8[0];
|
||||
spB8[0] = -spB8[2];
|
||||
spB8[2] = sp70;
|
||||
|
||||
temp_f0_2 = -((spB8[2] * spAC[2]) + ((spAC[0] * spB8[0]) + 0.0f)) / phi_f18;
|
||||
spA0[0] = (spE0[0] * temp_f0_2) + sp48[0][0];
|
||||
spA0[1] = 0.0f;
|
||||
spA0[2] = (spE0[2] * temp_f0_2) + sp48[0][2];
|
||||
f18 = spE0[0]*spB8[0] + spE0[1]*spB8[1] + spE0[2]*spB8[2];
|
||||
if (f18 == 0) {
|
||||
f18 = 0.1;
|
||||
}
|
||||
|
||||
f0 = -(spAC[0]*spB8[0] + spAC[1]*spB8[1] + spAC[2]*spB8[2]) / f18;
|
||||
spA0[0] = sp48[0][0] + (spE0[0] * f0);
|
||||
spA0[1] = 0;
|
||||
spA0[2] = sp48[0][2] + (spE0[2] * f0);
|
||||
|
||||
spD4[0] = spA0[0] - sp48[1][0];
|
||||
spD4[1] = spA0[1] - sp48[1][1];
|
||||
spD4[2] = spA0[2] - sp48[1][2];
|
||||
|
||||
temp_f2_2 = gu_sqrtf(spD4[0]*spD4[0] + spD4[1]*spD4[1] + spD4[2]*spD4[2]) / (gu_sqrtf(spB8[0] * spB8[0] + spB8[1] * spB8[1] + spB8[2] * spB8[2]) + 0.01);
|
||||
f2 = gu_sqrtf(spD4[0]*spD4[0] + spD4[1]*spD4[1] + spD4[2]*spD4[2])
|
||||
/ (gu_sqrtf(spB8[0]*spB8[0] + spB8[1]*spB8[1] + spB8[2]*spB8[2]) + 0.01);
|
||||
for(i = 0; i < 3; i++){
|
||||
arg0[i] = sp7C[1][i] + (sp7C[2][i] - sp7C[1][i])*temp_f2_2;
|
||||
arg0[i] = sp7C[1][i] + (sp7C[2][i] - sp7C[1][i]) * f2;
|
||||
}
|
||||
|
||||
spD4[0] = spA0[0] - sp48[0][0];
|
||||
spD4[1] = spA0[1] - sp48[0][1];
|
||||
spD4[2] = spA0[2] - sp48[0][2];
|
||||
temp_f2_4 = (1.0 - (gu_sqrtf(spE0[0]*spE0[0] + spE0[1]*spE0[1] + spE0[2]*spE0[2]) / (gu_sqrtf(spD4[0]*spD4[0] + spD4[1]*spD4[1] + spD4[2]*spD4[2]) + 0.01)));
|
||||
|
||||
f2 = 1 - (gu_sqrtf(spE0[0]*spE0[0] + spE0[1]*spE0[1] + spE0[2]*spE0[2])
|
||||
/ (gu_sqrtf(spD4[0]*spD4[0] + spD4[1]*spD4[1] + spD4[2]*spD4[2]) + 0.01));
|
||||
for(i = 0; i < 3; i++){
|
||||
arg0[i] += (sp7C[0][i] - arg0[i])*temp_f2_4;
|
||||
arg0[i] = arg0[i] + (sp7C[0][i] - arg0[i]) * f2;
|
||||
}
|
||||
|
||||
f2 = func_80294404() / 100;
|
||||
for(i = 0; i < 3; i++){
|
||||
arg0[i] = arg0[i] + (255 - arg0[i]) * f2;
|
||||
}
|
||||
|
||||
for(i = 0; i < 3; i++){
|
||||
arg0[i] += (255.0f - arg0[i]) * (func_80294404() / 100.0f);
|
||||
if(arg0[i] > 255){ arg0[i] = 255; }
|
||||
if(arg0[i] < 0) { arg0[i] = 0; }
|
||||
}
|
||||
|
||||
for(i = 0; i < 3; i++){
|
||||
if(arg0[i] > 255.0f){ arg0[i] = 255.0f; }
|
||||
if(arg0[i] < 0.0f) { arg0[i] = 0.0f; }
|
||||
}
|
||||
arg0[0] = ((arg0[0] + arg0[1] + arg0[2]) * (f32) (0xFF - sp78)) / 765.0f + sp78;
|
||||
arg0[0] = ((arg0[0] + arg0[1] + arg0[2]) * (255 - sp78)) / 765 + sp78;
|
||||
arg0[1] = arg0[0];
|
||||
arg0[2] = arg0[0];
|
||||
}
|
||||
#endif
|
||||
|
||||
void func_8029A47C(s32 arg0[3]){
|
||||
arg0[0] = (s32)(D_8037C6F0.unk4[0] + 0.5);
|
||||
|
@@ -2,6 +2,7 @@
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
#include "core2/code_C9E70.h"
|
||||
|
||||
extern void func_8030DBFC(u32, f32, f32, f32);
|
||||
extern bool func_80309DBC(f32[3], f32[3], f32, f32 sp54[3], s32, s32);
|
||||
@@ -45,8 +46,6 @@ ActorInfo D_80367310 = {MARKER_217_BEE_SWARM, ACTOR_34D_BEE_SWARM, ASSET_49E_SPR
|
||||
0, 0, 1.0f, 0
|
||||
};
|
||||
|
||||
|
||||
/* .bss */
|
||||
extern s32 D_8037DCBC;
|
||||
|
||||
/* .code */
|
||||
|
@@ -39,6 +39,7 @@ ActorInfo D_80368620 = {
|
||||
|
||||
/* .bss */
|
||||
ActorMarker *D_8037E620;
|
||||
f32 D_8037E624;
|
||||
f32 D_8037E628;
|
||||
s32 D_8037E62C;
|
||||
s32 D_8037E630;
|
||||
@@ -292,7 +293,6 @@ void chsnacker_update(Actor *this) {
|
||||
this->depth_mode = (255.0 == local->unk4) ? MODEL_RENDER_DEPTH_FULL : MODEL_RENDER_DEPTH_COMPARE;
|
||||
}
|
||||
|
||||
extern f32 D_8037E624;
|
||||
void func_802E1790(void){
|
||||
D_8037E624 = 0.0f;
|
||||
D_8037E628 = 1.0f;
|
||||
|
@@ -9,7 +9,6 @@ typedef struct map_savestate_s{
|
||||
|
||||
/* .bss */
|
||||
s32 D_8037E650[0x9A];
|
||||
u8 pad_8037E8A8[0x18];
|
||||
|
||||
/* public functions */
|
||||
void func_802E3BD0(s32 frame_buffer_indx);
|
||||
|
@@ -117,9 +117,6 @@ struct {
|
||||
s32 unk44;
|
||||
} D_80381FA0;
|
||||
|
||||
|
||||
u8 D_80381FE8[0x50];
|
||||
|
||||
/* .code */
|
||||
void func_80301F10(Cube *cube, Gfx **gfx, Mtx **mtx, Vtx **vtx){
|
||||
func_80308F0C(cube);
|
||||
@@ -252,6 +249,7 @@ void func_80301F50(Gfx **gfx, Mtx **mtx, Vtx **vtx, s32 arg3[3], s32 arg4[3], s3
|
||||
sp44 -= D_80381FA0.stride[0];
|
||||
}
|
||||
}
|
||||
u8 D_80381FE8[0x50];
|
||||
|
||||
void func_80302634(Gfx **gfx, Mtx **mtx, Vtx **vtx, s32 arg3[3], s32 arg4[3], s32 arg5[3]) {
|
||||
s32 sp54;
|
||||
@@ -541,6 +539,7 @@ Cube *func_8030364C(void){
|
||||
return D_80381FA0.unk40;
|
||||
}
|
||||
|
||||
s32 D_803820A8[3];
|
||||
Cube *func_80303658(void){
|
||||
return D_80381FA0.unk3C;
|
||||
}
|
||||
@@ -637,6 +636,11 @@ BKCollisionTri * func_80303960(f32 volume_p1[3], f32 volume_p2[3], f32 radius, f
|
||||
return var_s5;
|
||||
}
|
||||
|
||||
s32 D_803820B8[0x20]; //ActorProp *, (maybe Prop *)
|
||||
u8 pad_80382138[4];
|
||||
s32 D_8038213C;
|
||||
|
||||
extern Cube *D_80382144;
|
||||
//BKCollisionTri *
|
||||
BKCollisionTri * func_80303AF0(f32 position[3], f32 radius, f32 arg2[3], u32 arg3) {
|
||||
s32 cube_indx[3];
|
||||
@@ -664,7 +668,6 @@ BKCollisionTri * func_80303AF0(f32 position[3], f32 radius, f32 arg2[3], u32 arg
|
||||
return var_s5;
|
||||
}
|
||||
|
||||
s32 D_803820B8[0x20]; //ActorProp *, (maybe Prop *)
|
||||
void func_80303C54(Cube *cube, ActorMarker *marker, f32 arg2, s32 arg3, s32 *arg4, s32 *arg5) {
|
||||
ActorProp *phi_s0;
|
||||
|
||||
@@ -676,7 +679,7 @@ void func_80303C54(Cube *cube, ActorMarker *marker, f32 arg2, s32 arg3, s32 *arg
|
||||
phi_s0 = func_803322F0(cube, marker, arg2, arg3, arg4);
|
||||
if (phi_s0 != NULL) {
|
||||
if (phi_s0->unk8_0 && phi_s0->marker->unk58 != NULL) {
|
||||
if (phi_s0->marker->unk58(phi_s0->marker, marker) == 0) {
|
||||
if (phi_s0->marker->unk58(phi_s0->marker, marker) == 0) {
|
||||
phi_s0 = NULL;
|
||||
}
|
||||
}
|
||||
@@ -688,7 +691,10 @@ void func_80303C54(Cube *cube, ActorMarker *marker, f32 arg2, s32 arg3, s32 *arg
|
||||
};
|
||||
}
|
||||
|
||||
s32 D_8038213C;
|
||||
Cube *D_80382144;
|
||||
s32 D_80382148;
|
||||
s16 D_80382150[0x48];
|
||||
u32 D_803821E0[0x5B];
|
||||
void func_80303D78(ActorMarker *arg0, f32 arg1, UNK_TYPE(s32) arg2) {
|
||||
s32 sp6C[3];
|
||||
s32 sp60[3];
|
||||
@@ -727,17 +733,19 @@ void func_80303F6C(s32 indx, s32 arg1){
|
||||
ActorProp *func_80303F7C(ActorMarker *arg0, f32 arg1, s32 arg2, s32 arg3) {
|
||||
s32 temp_v1;
|
||||
s32 phi_a0;
|
||||
static s32 D_80382148;
|
||||
// This matches without a pointer by using a function static, but
|
||||
// triggers tricky bss reordering.
|
||||
s32* D_80382148_ptr = &D_80382148;
|
||||
|
||||
if (arg3 == 0) {
|
||||
func_80303D78(arg0, arg1, arg2);
|
||||
D_80382148 = 0;
|
||||
*D_80382148_ptr = 0;
|
||||
return 0;
|
||||
}
|
||||
else{
|
||||
temp_v1 = D_803820B8[D_80382148];
|
||||
temp_v1 = D_803820B8[*D_80382148_ptr];
|
||||
if (temp_v1 != 0) {
|
||||
D_80382148++;
|
||||
(*D_80382148_ptr)++;
|
||||
}
|
||||
return temp_v1;
|
||||
}
|
||||
@@ -2042,10 +2050,8 @@ u32 func_80307EA8(s32 arg0, s32 arg1[3], s32 *arg2, s32 *arg3) {
|
||||
u32 var_s4;
|
||||
NodeProp *temp_a0;
|
||||
Cube *temp_v0;
|
||||
static s32 D_803820A8[3];
|
||||
static s32 D_803820B4;
|
||||
|
||||
|
||||
var_s4 = 0;
|
||||
if (arg0 == 0) {
|
||||
D_803820A8[0] = (s32) D_80381FA0.min[0];
|
||||
@@ -2154,11 +2160,9 @@ bool func_803082D8(Cube *arg0, s32 *arg1, bool arg2, bool arg3) {
|
||||
return var_a0;
|
||||
}
|
||||
|
||||
Cube *D_80382144;
|
||||
s32 func_803083B0(s32 arg0) {
|
||||
s32 var_v0;
|
||||
Cube *var_s0;
|
||||
static u8 a;
|
||||
static s32 D_80382140;
|
||||
|
||||
if (arg0 == -1) {
|
||||
@@ -2323,9 +2327,6 @@ bool func_803088C8(s32 arg0) {
|
||||
return (D_8036ABAC[i] == -1) ? FALSE : TRUE;
|
||||
}
|
||||
|
||||
/* .bss */ //must be defined AFTER func_80303F7C for local static alignment
|
||||
s16 D_80382150[0x48];
|
||||
|
||||
/* .code */
|
||||
void func_8030895C(s32 arg0){
|
||||
D_80382150[D_8036ABD4] = arg0;
|
||||
@@ -2416,9 +2417,6 @@ void func_80308D2C(Gfx **gfx, Mtx **mtx, Vtx **vtx) {
|
||||
func_8032F464(0);
|
||||
}
|
||||
|
||||
/* .bss */
|
||||
u32 D_803821E0[0x5B];
|
||||
|
||||
/* .code */
|
||||
void func_80308EC8(void){
|
||||
s32 i;
|
||||
|
@@ -5,8 +5,9 @@
|
||||
|
||||
extern ALBank *music_get_sound_bank(void);
|
||||
|
||||
extern u8 D_D846C0;
|
||||
extern u8 D_D954B0;
|
||||
extern u8 soundfont1ctl_ROM_START[];
|
||||
extern u8 soundfont1ctl_ROM_END[];
|
||||
extern u8 soundfont1tbl_ROM_START[];
|
||||
|
||||
struct {
|
||||
s32 unk0; //sound state cnt
|
||||
@@ -25,12 +26,12 @@ void sfxInstruments_init(void){
|
||||
ALBankFile * bnkf;
|
||||
|
||||
|
||||
size = &D_D954B0 - &D_D846C0;
|
||||
size = soundfont1ctl_ROM_END - soundfont1ctl_ROM_START;
|
||||
bnkf = (ALBankFile *)malloc(size);
|
||||
osWritebackDCache(bnkf, size);
|
||||
osPiStartDma(func_802405D0(), 0, 0, &D_D846C0, bnkf, size, func_802405C4());
|
||||
osPiStartDma(func_802405D0(), 0, 0, (u32)soundfont1ctl_ROM_START, bnkf, size, func_802405C4());
|
||||
osRecvMesg(func_802405C4(), NULL, 1);
|
||||
alBnkfNew(bnkf, &D_D954B0);
|
||||
alBnkfNew(bnkf, soundfont1tbl_ROM_START);
|
||||
bnk = bnkf->bankArray[0];
|
||||
inst = bnk->instArray[0];
|
||||
D_803835F0.unk0 = inst->soundCount;
|
||||
|
@@ -437,7 +437,7 @@ void assetCache_init(void){
|
||||
assetCacheAssetIdList = (s16 *)malloc(150*sizeof(s16));
|
||||
assetCacheLength = 0;
|
||||
assetSectionRomHeader = (AssetROMHead *)malloc(sizeof(AssetROMHead));
|
||||
D_80383CC8 = (u32) &D_5E90;
|
||||
D_80383CC8 = (u32)assets_ROM_START;
|
||||
func_802405F0(assetSectionRomHeader, D_80383CC8, sizeof(AssetROMHead));
|
||||
assetSectionRomMetaList = (AssetFileMeta *)malloc(assetSectionRomHeader->count*sizeof(AssetFileMeta));
|
||||
func_802405F0(assetSectionRomMetaList, D_80383CC8 + sizeof(AssetROMHead),assetSectionRomHeader->count*sizeof(AssetFileMeta));
|
||||
|
@@ -14,9 +14,7 @@ extern f32 func_80323FDC(struct56s *, f32, f32, s32 *);
|
||||
extern f32 func_803240E0(struct56s *, f32, f32, s32 *);
|
||||
extern void func_8032417C(struct56s *, f32, f32[3], f32[3]);
|
||||
extern void func_80328FF0(Actor *, f32);
|
||||
|
||||
|
||||
|
||||
extern void func_8032DC70(s32);
|
||||
|
||||
typedef struct {
|
||||
f32 unk0;
|
||||
@@ -153,6 +151,7 @@ typedef struct {
|
||||
u16 pad8_12:13;
|
||||
}Struct_glspline_803411B0;
|
||||
|
||||
|
||||
s32 func_80341BC8(struct56s *arg0, SplineList * arg1);
|
||||
|
||||
/* .data */
|
||||
@@ -260,239 +259,268 @@ f32 glspline_catmull_rom_interpolate(f32 x, s32 knotCount, f32 *knotList) {
|
||||
return (((((sp24[2] * x) + sp24[1]) * x) + sp24[0]) * x) + (1.0*knotList[1]);
|
||||
}
|
||||
|
||||
#ifndef NONMATCHING
|
||||
void func_80340BE4(f32 arg0, s32 arg1, s32 arg2, s32 arg3, f32 * arg4, f32 arg5[3]);
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_B9770/func_80340BE4.s")
|
||||
#else
|
||||
void func_80340BE4(f32 x, s32 length, s32 stride, s32 width, f32 *arg4, f32 *dst){
|
||||
s32 spD0;
|
||||
void func_80340BE4(f32 x, s32 length, s32 stride, s32 width, f32 *arg4, f32 dst[3]){
|
||||
s32 padding;
|
||||
s32 max_interval;
|
||||
s32 i;
|
||||
s32 var_a3;
|
||||
s32 a3;
|
||||
f32 temp_f2;
|
||||
f32 f3;
|
||||
f32 f1;
|
||||
f32 f2;
|
||||
f32 *t0;
|
||||
f32 sp94[3][3];
|
||||
|
||||
max_interval = length - 1;
|
||||
|
||||
if (length < 4) {
|
||||
/* not enough points in spline to perform catmull-rom interpolation*/
|
||||
ml_vec3f_copy(sp94[0], arg4);
|
||||
ml_vec3f_copy(sp94[1], arg4);
|
||||
ml_vec3f_copy(sp94[2], arg4 + stride);
|
||||
ml_vec3f_copy(sp94[2], &arg4[stride]);
|
||||
if (length - 1 == 1) {
|
||||
ml_vec3f_copy(sp94[3], arg4 + stride);
|
||||
ml_vec3f_copy(sp94[3], &arg4[stride]);
|
||||
} else {
|
||||
ml_vec3f_copy(sp94[3], arg4 + 2*stride);
|
||||
ml_vec3f_copy(sp94[3], &arg4[stride*2]);
|
||||
}
|
||||
func_80340BE4(x, 4, 3, 3, sp94, dst);
|
||||
func_80340BE4(x, 4, 3, 3, (f32 *) sp94, dst);
|
||||
return;
|
||||
}
|
||||
|
||||
temp_f2 = func_80340700(x, 0.0f, 1.0f) * max_interval;
|
||||
var_a3 = (s32)temp_f2;
|
||||
var_a3 = ((length - 1) < var_a3) ? (length - 1) : var_a3;
|
||||
x = temp_f2 - (f32) var_a3;
|
||||
if (0 == var_a3) {
|
||||
/* desired point in interval[0,1], duplicate P0 to left */
|
||||
arg4 = arg4 + 0;
|
||||
for(var_a3 = var_a3; var_a3 < width; var_a3++){
|
||||
f3 = -0.5*arg4[var_a3] + 1.5*arg4[var_a3] + -1.5*arg4[stride + var_a3] + 0.5*arg4[2*stride + var_a3];
|
||||
f1 = 1.0*arg4[var_a3] + -2.5*arg4[var_a3] + 2.0*arg4[stride + var_a3] + -0.5*arg4[2*stride + var_a3];
|
||||
f2 = -0.5*arg4[var_a3] + 0.0*arg4[var_a3] + 0.5*arg4[stride + var_a3] + 0.0*arg4[2*stride + var_a3];
|
||||
dst[var_a3] = ((((f3 * x) + f1)* x + f2) * x) + (1.0*arg4[var_a3]);
|
||||
}
|
||||
return;
|
||||
}
|
||||
spD0 = var_a3 - 1;
|
||||
if (length == (var_a3 + 1)) {
|
||||
arg4 = arg4 + spD0*stride;
|
||||
for(var_a3 = 0; var_a3 < width; var_a3++){
|
||||
/* desired point in interval[n, inf], linearly interpret */
|
||||
dst[var_a3] = arg4[var_a3];
|
||||
}
|
||||
} else if (length == (spD0 + 2)) {
|
||||
/* desired point in interval[n-1, n], duplicate Pn to right */
|
||||
for(var_a3 = 0; var_a3 < width; var_a3++){
|
||||
f3 = -0.5*arg4[spD0*stride + var_a3] + 1.5*arg4[(spD0 + 1)* stride + var_a3] + -1.5*arg4[(spD0 + 2)* stride + var_a3] + 0.5*arg4[(spD0 + 2)* stride + var_a3];
|
||||
f1 = 1.0*arg4[spD0*stride + var_a3] + -2.5*arg4[(spD0 + 1)* stride + var_a3] + 2.0*arg4[(spD0 + 2)* stride + var_a3] + -0.5*arg4[(spD0 + 2)* stride + var_a3];
|
||||
f2 = -0.5*arg4[spD0*stride + var_a3] + 0.0*arg4[(spD0 + 1)* stride + var_a3] + 0.5*arg4[(spD0 + 2)* stride + var_a3] + 0.0*arg4[(spD0 + 2)* stride + var_a3];
|
||||
dst[var_a3] = ((((f3 * x) + f1)* x + f2) * x) + (1.0*arg4[((spD0 + 1) * stride) + var_a3]);
|
||||
}
|
||||
} else {
|
||||
/* normal conditions */
|
||||
for(var_a3 = 0; var_a3 < width; var_a3++){
|
||||
f3 = -0.5*arg4[spD0*stride + var_a3] + 1.5*arg4[(spD0 + 1)*stride + var_a3] + -1.5*arg4[(spD0 + 2)* stride + var_a3] + 0.5*arg4[(spD0 + 3)* stride + var_a3];
|
||||
f1 = 1.0*arg4[spD0*stride + var_a3] + -2.5*arg4[(spD0 + 1)*stride + var_a3] + 2.0*arg4[(spD0 + 2)* stride + var_a3] + -0.5*arg4[(spD0 + 3)* stride + var_a3];
|
||||
f2 = -0.5*arg4[spD0*stride + var_a3] + 0.0*arg4[(spD0 + 1)*stride + var_a3] + 0.5*arg4[(spD0 + 2)* stride + var_a3] + 0.0*arg4[(spD0 + 3)* stride + var_a3];
|
||||
// var_f8 =
|
||||
dst[var_a3] = ((((f3 * x) + f1)* x + f2) * x) + (1.0*arg4[(spD0 + 1)*stride + var_a3]);
|
||||
}
|
||||
a3 = temp_f2;
|
||||
|
||||
if (a3 > (length - 1)) {
|
||||
a3 = (length - 1);
|
||||
}
|
||||
|
||||
x = temp_f2 - a3;
|
||||
|
||||
if (a3 == 0) {
|
||||
/* desired point in interval[0,1], duplicate P0 to left */
|
||||
t0 = arg4;
|
||||
t0 += (stride * 2);
|
||||
|
||||
for (; a3 < width; a3++) {
|
||||
f3 = -0.5*arg4[a3] + 1.5*arg4[a3] + -1.5*arg4[stride + a3] + 0.5*t0[a3];
|
||||
f1 = 1.0*arg4[a3] + -2.5*arg4[a3] + 2.0*arg4[stride + a3] + -0.5*t0[a3];
|
||||
if (1);
|
||||
f2 = -0.5*arg4[a3] + 0.0*arg4[a3] + 0.5*arg4[stride + a3] + 0.0*t0[a3];
|
||||
|
||||
dst[a3] = (1.0*arg4[a3]) + (((f3 * x + f1) * x + f2) * x);
|
||||
}
|
||||
} else {
|
||||
a3--;
|
||||
|
||||
if (a3 == length - 2) {
|
||||
arg4 += stride * (length - 1);
|
||||
|
||||
for (a3 = 0; a3 < width; a3++) {
|
||||
/* desired point in interval[n, inf], linearly interpret */
|
||||
dst[a3] = arg4[a3];
|
||||
}
|
||||
} else if (a3 == length - 3) {
|
||||
/* desired point in interval[n-1, n], duplicate Pn to right */
|
||||
arg4 += a3 * stride;
|
||||
|
||||
t0 = arg4;
|
||||
t0 += (stride * 2);
|
||||
|
||||
for (a3 = 0; a3 < width; a3++) {
|
||||
f3 = -0.5*arg4[a3] + 1.5*arg4[stride + a3] + -1.5*t0[a3] + 0.5*t0[a3];
|
||||
f1 = 1.0*arg4[a3] + -2.5*arg4[stride + a3] + 2.0*t0[a3] + -0.5*t0[a3];
|
||||
f2 = -0.5*arg4[a3] + 0.0*arg4[stride + a3] + 0.5*t0[a3] + 0.0*t0[a3];
|
||||
|
||||
dst[a3] = (1.0*arg4[stride + a3]) + (((f3 * x + f1) * x + f2) * x);
|
||||
}
|
||||
} else {
|
||||
/* normal conditions */
|
||||
arg4 += a3 * stride;
|
||||
|
||||
t0 = arg4;
|
||||
t0 += (stride * 2);
|
||||
|
||||
for (a3 = 0; a3 < width; a3++) {
|
||||
f3 = -0.5*arg4[a3] + 1.5*arg4[stride + a3] + -1.5*t0[a3] + 0.5*arg4[stride*3 + a3];
|
||||
f1 = 1.0*arg4[a3] + -2.5*arg4[stride + a3] + 2.0*t0[a3] + -0.5*arg4[stride*3 + a3];
|
||||
f2 = -0.5*arg4[a3] + 0.0*arg4[stride + a3] + 0.5*t0[a3] + 0.0*arg4[stride*3 + a3];
|
||||
|
||||
dst[a3] = (1.0*arg4[stride + a3]) + (((f3 * x + f1) * x + f2) * x);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void func_80341180(f32 arg0, s32 arg1, s32 arg2, f32 arg3[3], f32 arg4[3]){
|
||||
func_80340BE4(arg0, arg1, arg2, arg2, arg3, arg4);
|
||||
}
|
||||
|
||||
#ifndef NONMATCHING
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_B9770/func_803411B0.s")
|
||||
#else
|
||||
void func_803411B0(void) {
|
||||
void func_803411B0(void){
|
||||
s32 spE4;
|
||||
s32 spE0;
|
||||
s32 a0;
|
||||
Struct_glspline_803411B0 *spD8;
|
||||
s32 spCC[3];
|
||||
s32 spC8;
|
||||
s32 spC4;
|
||||
s32 padding[3];
|
||||
struct56s *spB4;
|
||||
SplineList *spA8;
|
||||
struct56s *spA4;
|
||||
Union_glspline *sp80;
|
||||
Struct_glspline_803411B0 *sp50;
|
||||
Union_glspline *temp_s6;
|
||||
Struct_glspline_803411B0 *spline;
|
||||
Union_glspline *var_s0_2;
|
||||
SplineList *spA8;
|
||||
f32 *spA4;
|
||||
Union_glspline *var_s1_2;
|
||||
s32 temp_v0_2;
|
||||
s32 var_a0;
|
||||
s32 var_a0_3;
|
||||
s32 var_a0_4;
|
||||
s32 var_a0_5;
|
||||
s32 var_fp;
|
||||
s32 var_s0;
|
||||
s32 var_s2;
|
||||
s32 var_s2_2;
|
||||
Union_glspline sp80;
|
||||
s32 var_s5;
|
||||
s32 var_s7;
|
||||
s32 var_v1;
|
||||
u32 var_s7;
|
||||
Union_glspline *temp_s3_2;
|
||||
Union_glspline *temp_v0_16;
|
||||
Struct_glspline_803411B0 *temp_v0_17;
|
||||
Struct_glspline_803411B0 *var_v0_4;
|
||||
s16 *i_ptr;
|
||||
s32 tmp;
|
||||
|
||||
D_80371E80 = 0;
|
||||
D_80371E70 = malloc(0);
|
||||
D_80371E74 = malloc(0);
|
||||
D_80371E78 = 0;
|
||||
D_803858A0 = (s16 *) malloc(0x80*sizeof(s16));
|
||||
for(var_v1 = 0; var_v1 < 0x80; var_v1++){
|
||||
D_803858A0[var_v1] = 0;
|
||||
D_803858A0 = malloc(128 * sizeof(s16));
|
||||
|
||||
for (spE0 = 0; spE0 < 128; spE0++) {
|
||||
D_803858A0[spE0] = 0;
|
||||
}
|
||||
spE4 = func_80307E1C(D_803858A0) + 1;
|
||||
if (spE4 > 1) {
|
||||
spD8 = (Struct_glspline_803411B0 *)malloc(spE4 * sizeof(Struct_glspline_803411B0));
|
||||
for(var_a0 = 0; var_a0 < spE4; var_a0++){
|
||||
spD8[var_a0].unk0 = -1;
|
||||
|
||||
spE4 = func_80307E1C() + 1;
|
||||
|
||||
if (spE4 <= 1) {
|
||||
return;
|
||||
}
|
||||
|
||||
spD8 = (Struct_glspline_803411B0 *) malloc(spE4 * sizeof(Struct_glspline_803411B0));
|
||||
|
||||
for (spE0 = 0; spE0 < spE4; spE0++) {
|
||||
(spD8 + spE0)->unk0 = -1;
|
||||
}
|
||||
|
||||
func_80307EA8(0, spCC, &spC8, &spC4);
|
||||
|
||||
do {
|
||||
spE0 = func_80307EA8(1, spCC, &spC8, &spC4);
|
||||
|
||||
if (spE0 >= 0) {
|
||||
(spD8+spE0)->unk0 = spC8;
|
||||
(spD8+spE0)->unk8_13 = spC4;
|
||||
(spD8+spE0)->unk2[0] = spCC[0];
|
||||
(spD8+spE0)->unk2[1] = spCC[1];
|
||||
(spD8+spE0)->unk2[2] = spCC[2];
|
||||
}
|
||||
} while (spE0 >= 0);
|
||||
|
||||
for (spE0 = 1; spE0 < spE4; spE0++) {
|
||||
(spD8+spE0)->unk8_15 = 0;
|
||||
|
||||
func_80307EA8(0, spCC, &spC8, &spC4);
|
||||
do {
|
||||
temp_v0_2 = func_80307EA8(1, spCC, &spC8, &spC4);
|
||||
if (temp_v0_2 >= 0) {
|
||||
spD8[temp_v0_2].unk0 = (s16) spC8;
|
||||
spD8[temp_v0_2].unk2[0] = (s16) spCC[0];
|
||||
spD8[temp_v0_2].unk2[1] = (s16) spCC[1];
|
||||
spD8[temp_v0_2].unk2[2] = (s16) spCC[2];
|
||||
spD8[temp_v0_2].unk8_13 = spC4;
|
||||
}
|
||||
} while (temp_v0_2 >= 0);
|
||||
|
||||
for(spE0 = 1; spE0 < spE4; spE0++) {
|
||||
spD8[spE0].unk8_15 = 0;
|
||||
if ((spD8[spE0].unk0 >= spE4) || (spD8[spE0].unk0 == -1)) {
|
||||
spD8[spE0].unk0 = 0;
|
||||
}
|
||||
if ((spD8+spE0)->unk0 >= spE4 || (spD8+spE0)->unk0 == -1) {
|
||||
(spD8+spE0)->unk0 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
for(spE0 = 1; spE0 < spE4; spE0++) {
|
||||
if (spD8[spE0].unk0 > 0) {
|
||||
spD8[spD8[spE0].unk0].unk8_15 = 1;
|
||||
}
|
||||
for (spE0 = 1; spE0 < spE4; spE0++) {
|
||||
if ((spD8+spE0)->unk0 > 0) {
|
||||
(spD8+(spD8+spE0)->unk0)->unk8_15 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
for(spE0 = 1; spE0 < spE4; spE0++) {
|
||||
if( (spD8[spE0].unk8_13 == 1)
|
||||
&& ((spD8[spE0].unk8_15 != 0) || (spD8[spE0].unk0 <= 0))
|
||||
&& ((spD8[spE0].unk8_15 != 1) || (spD8[spE0].unk0 <= 0))
|
||||
&& ((spD8[spE0].unk8_15 != 1) || (spD8[spE0].unk0 != 0))
|
||||
) {
|
||||
func_8032DC70();
|
||||
spD8[spE0].unk0 = -1;
|
||||
spD8[spE0].unk8_13 = 0;
|
||||
for (spE0 = 1; spE0 < spE4; spE0++) {
|
||||
if ((spD8+spE0)->unk8_13 == 1
|
||||
&& ((spD8+spE0)->unk8_15 != 0 || (spD8+spE0)->unk0 <= 0)
|
||||
&& ((spD8+spE0)->unk8_15 != 1 || (spD8+spE0)->unk0 <= 0)
|
||||
&& ((spD8+spE0)->unk8_15 != 1 || (spD8+spE0)->unk0 != 0)) {
|
||||
func_8032DC70(spE0);
|
||||
|
||||
(spD8+spE0)->unk0 = -1;
|
||||
(spD8+spE0)->unk8_13 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
for (spE0 = 1; spE0 < spE4; spE0++) {
|
||||
if ((spD8+spE0)->unk0 > 0 && (spD8+spE0)->unk8_15 == 0 && (spD8+spE0)->unk8_13 == 0) {
|
||||
var_s5 = 1;
|
||||
var_s7 = 1;
|
||||
var_s0 = 0;
|
||||
var_fp = 0;
|
||||
|
||||
for (; var_s5 < spE4; var_s5++) {
|
||||
(spD8+var_s5)->unk8_14 = 0;
|
||||
}
|
||||
|
||||
for (var_s5 = spE0; (spD8+var_s5)->unk0 != 0 && !(spD8+var_s5)->unk8_14; var_s5 = (spD8+var_s5)->unk0) {
|
||||
(spD8+var_s5)->unk8_14 = 1;
|
||||
tmp = (spD8+var_s5)->unk8_13 == 0 ? 1 : 0;
|
||||
var_s7 += tmp;
|
||||
var_s0 += ((spD8+var_s5)->unk8_13 == 0) ? 0 : 1;
|
||||
}
|
||||
|
||||
tmp = var_s7 * 3;
|
||||
spB4 = (struct56s *) malloc(8 + tmp * sizeof(f32));
|
||||
spA4 = (f32 *) spB4;
|
||||
spB4->unk0 = var_s7;
|
||||
spB4->unk4 = 0;
|
||||
|
||||
spA8 = (SplineList *) malloc(4 + var_s0 * sizeof(Union_glspline));
|
||||
spA8->unk0 = var_s0;
|
||||
|
||||
var_s1_2 = &spA8->spline[0];
|
||||
a0 = spE0;
|
||||
var_s2 = spA8->unk0;
|
||||
|
||||
for (; var_s2 != 0; a0 = (spD8+a0)->unk0) {
|
||||
if (0);
|
||||
if ((spD8+a0)->unk8_13 == 1) {
|
||||
temp_v0_16 = func_803080C8(a0);
|
||||
temp_v0_16->t1.unk8.pad_bit7 = D_80371E78;
|
||||
|
||||
memcpy(var_s1_2, temp_v0_16, sizeof(Union_glspline));
|
||||
|
||||
var_s1_2++;
|
||||
var_s2--;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for(spE0 = 1; spE0 < spE4; spE0++) {
|
||||
if (spD8[spE0].unk0 > 0) {
|
||||
if (spD8[spE0].unk8_15 == 0) {
|
||||
if (!spD8[spE0].unk8_13) {
|
||||
var_s7 = 1;
|
||||
var_s0 = 0;
|
||||
var_fp = 0;
|
||||
for(var_s5 = 1; var_s5 < spE4; var_s5++){
|
||||
spD8[var_s5].unk8_14 = 0;
|
||||
}
|
||||
temp_s3_2 = spA8->unk0 - 1 + spA8->spline;
|
||||
|
||||
var_v0_4 = &spD8[spE0];
|
||||
while ((var_v0_4->unk0 != 0) && !(var_v0_4->unk8_14)) {
|
||||
var_v0_4->unk8_14 = 1;
|
||||
var_s7 += (var_v0_4->unk8_13 == 0) ? 1 : 0;
|
||||
var_s0 += (var_v0_4->unk8_13 == 0) ? 0 : 1;
|
||||
var_v0_4 = &spD8[var_v0_4->unk0];
|
||||
}
|
||||
do {
|
||||
var_s2 = 0;
|
||||
|
||||
spB4 = (struct56s *) malloc(sizeof(struct56s) + (var_s7 * 3* sizeof(f32)));
|
||||
spB4->unk0 = var_s7;
|
||||
spB4->unk4 = 0;
|
||||
spA8 = (SplineList *)malloc(sizeof(SplineList) + var_s0*sizeof(Union_glspline));
|
||||
spA8->unk0 = var_s0;
|
||||
var_s1_2 = &spA8->spline[0];
|
||||
var_s2 = var_s0;
|
||||
for(var_a0_4 = spE0; (var_s2 != 0); var_a0_4 = spD8[var_a0_4].unk0){
|
||||
if (spD8[var_a0_4].unk8_13 == 1) {
|
||||
temp_v0_16 = func_803080C8();
|
||||
temp_v0_16->t1.unk8.pad_bit7 = (s8) D_80371E78;
|
||||
memcpy(var_s1_2, temp_v0_16, 0x14);
|
||||
var_s1_2++;
|
||||
var_s2--;
|
||||
}
|
||||
}
|
||||
temp_s6 = &spA8->spline[0];
|
||||
temp_s3_2 = &spA8->spline[spA8->unk0];
|
||||
var_s2_2 = 0;
|
||||
do {
|
||||
for(var_s0_2 = temp_s6; var_s0_2 < temp_s3_2; var_s0_2++){
|
||||
if ((var_s0_2 + 1)->common.unk0 < var_s0_2->common.unk0) {
|
||||
memcpy(sp80, var_s0_2, sizeof(Union_glspline));
|
||||
memcpy(var_s0_2, var_s0_2 + 1, sizeof(Union_glspline));
|
||||
memcpy(var_s0_2 + 1, sp80, sizeof(Union_glspline));
|
||||
var_s2_2++;
|
||||
}
|
||||
}
|
||||
} while (var_s2_2 != 0);
|
||||
while(var_s7 != 0){
|
||||
temp_v0_17 = &spD8[spE0];
|
||||
if (!(temp_v0_17->unk8_13)) {
|
||||
spB4->unk8[var_fp][0] = (f32) temp_v0_17->unk2[0];
|
||||
spB4->unk8[var_fp][1] = (f32) temp_v0_17->unk2[1];
|
||||
spB4->unk8[var_fp][2] = (f32) temp_v0_17->unk2[2];
|
||||
var_s7--;
|
||||
}
|
||||
}
|
||||
func_80341BC8(spB4, spA8);
|
||||
for (var_s0_2 = &spA8->spline[0]; var_s0_2 < temp_s3_2; var_s0_2++) {
|
||||
var_s1_2 = var_s0_2 + 1;
|
||||
|
||||
if (var_s0_2->common.unk0 > var_s1_2->common.unk0) {
|
||||
memcpy(&sp80, var_s0_2, sizeof(Union_glspline));
|
||||
memcpy(var_s0_2, var_s1_2, sizeof(Union_glspline));
|
||||
memcpy(var_s1_2, &sp80, sizeof(Union_glspline));
|
||||
var_s2++;
|
||||
}
|
||||
}
|
||||
} while (var_s2);
|
||||
|
||||
a0 = var_s7;
|
||||
|
||||
for (var_s5 = spE0; a0 != 0; var_s5 = (spD8 + var_s5)->unk0) {
|
||||
if (!(spD8 + var_s5)->unk8_13) {
|
||||
spA4[var_fp + 2] = (spD8 + var_s5)->unk2[0];
|
||||
spA4[var_fp + 3] = (spD8 + var_s5)->unk2[1];
|
||||
spA4[var_fp + 4] = (spD8 + var_s5)->unk2[2];
|
||||
|
||||
var_fp += 3;
|
||||
a0--;
|
||||
}
|
||||
}
|
||||
|
||||
func_80341BC8(spB4, spA8);
|
||||
}
|
||||
free(spD8);
|
||||
}
|
||||
|
||||
free(spD8);
|
||||
}
|
||||
#endif
|
||||
|
||||
//glspline_free
|
||||
void func_80341A54(void) {
|
||||
|
@@ -4,7 +4,7 @@
|
||||
|
||||
#include "core2/code_C9E70.h"
|
||||
|
||||
struct FF_StorageStruct *D_8037DCB8;
|
||||
extern struct FF_StorageStruct *D_8037DCB8;
|
||||
|
||||
void func_80350E00(void){
|
||||
quizQuestionAskedBitfield_defrag();
|
||||
|
@@ -15,7 +15,7 @@ extern u8 crc_ROM_START[];
|
||||
|
||||
// bk_boot segment crc next word
|
||||
s32 D_803727F0 = 0;
|
||||
s32 core2_D_803727F4 = CORE2_CODE_CRC2;
|
||||
s32 D_803727F4 = CORE2_CODE_CRC2;
|
||||
s32 D_803727F8 = 0;
|
||||
s32 D_803727FC = 0;
|
||||
|
||||
|
@@ -14,8 +14,8 @@ enum transformation_e D_8037C2D0;
|
||||
f32 D_8037C2D8[3];
|
||||
f32 D_8037C2E4;
|
||||
enum asset_e D_8037C2E8;
|
||||
u8 D_8037C2ED;
|
||||
u8 D_8037C2EC;
|
||||
u8 D_8037C2ED;
|
||||
|
||||
struct{
|
||||
f32 unk0;
|
||||
|
@@ -41,7 +41,6 @@ s32 D_8037D940;
|
||||
f32 D_8037D948[3];
|
||||
f32 cameraPosition[3];
|
||||
f32 cameraRotation[3];
|
||||
f32 D_8037D96C;
|
||||
f32 D_8037D974;
|
||||
f32 D_8037D978;
|
||||
f32 D_8037D97C;
|
||||
@@ -188,7 +187,7 @@ void func_802BCA58(void) {
|
||||
player_getPosition(player_position);
|
||||
ml_vec3f_diff_copy(sp34, player_position, cameraPosition);
|
||||
sp4C = player_getYaw();
|
||||
sp48 = ml_map_f(mlAbsF((f32) (mlNormalizeAngle(D_8037D96C - sp4C) - 180.0)), 0.0f, 180.0f, D_8037D97C, D_8037D980);
|
||||
sp48 = ml_map_f(mlAbsF((f32) (mlNormalizeAngle(cameraRotation[1] - sp4C) - 180.0)), 0.0f, 180.0f, D_8037D97C, D_8037D980);
|
||||
func_80256E24(D_8037D9A8, 0.0f, sp4C, 0.0f, 0.0f, ml_map_f(gu_sqrtf(sp34[0]*sp34[0] + sp34[2]*sp34[2]), 300.0f, 450.0f, 0.0f, sp48));
|
||||
ml_vec3f_diff_copy(sp34, D_8037D9A8, D_8037D9B8);
|
||||
if (func_802BC428()) {
|
||||
|
@@ -12,7 +12,7 @@ u64 gEntryStack[ENTRY_STACK_LEN_U64];
|
||||
extern u8 core1_us_v10_rzip_ROM_START[];
|
||||
extern u8 core1_us_v10_rzip_ROM_END[];
|
||||
extern u8 D_8002D500;
|
||||
extern u8 D_8023DA20;
|
||||
extern u8 core1_VRAM;
|
||||
extern u32 D_803FFE00[4];
|
||||
|
||||
void func_80000594(u8 **, u8 **);
|
||||
@@ -23,7 +23,7 @@ void func_80000450(s32 arg0){
|
||||
u8 *dst;
|
||||
|
||||
tmp = &D_8002D500;
|
||||
dst = &D_8023DA20;
|
||||
dst = &core1_VRAM;
|
||||
osInitialize();
|
||||
osPiRawStartDma(OS_READ, core1_us_v10_rzip_ROM_START, tmp, core1_us_v10_rzip_ROM_END - core1_us_v10_rzip_ROM_START);
|
||||
while(osPiGetStatus() & PI_STATUS_DMA_BUSY);
|
||||
|
@@ -189,9 +189,18 @@ f32 D_80391774[3] = {-1290.0f, 0.0f, -1290.0f};
|
||||
f32 D_80391780[3] = {1290.0f, 0.0f, -1290.0f};
|
||||
f32 D_8039178C[3] = {1290.0f, 0.0f, 1290.0f};
|
||||
f32 D_80391798[3] = {0.0f, 0.0f, 0.0f};
|
||||
f32 D_803917A4[4] = {500.0f, 650.0f, 800.0f, 950.0f};
|
||||
f32 D_803917B4[4] = {3.75f, 3.0f, 2.25f, 1.5f};
|
||||
s32 D_803917C4[3] = {230, 230, 230};
|
||||
f32 D_803917D0[4] = {2.4f, 2.1f, 1.8f, 1.5f};
|
||||
f32 D_803917E0[3] = {0.0f, 186.0f, 0.0f};
|
||||
f32 D_803917EC[3] = {-827.0f, 793.0f, 1700.0f};
|
||||
f32 D_803917F8[3] = {827.0f, 793.0f, -1700.0f};
|
||||
f32 D_80391804[3] = {0.0f, 0.0f, 1350.0f};
|
||||
|
||||
|
||||
/* .bss */
|
||||
f32 D_80392750;
|
||||
f32 D_80392758[3];
|
||||
f32 D_80392768[3];
|
||||
f32 D_80392778[3];
|
||||
@@ -207,70 +216,10 @@ u8 __chFinalBossJinjonatorHits;
|
||||
u8 D_803927C7;
|
||||
u8 D_803927C8;
|
||||
u8 D_803927C9;
|
||||
f32 D_803927D0[4][3]; //actually f32 [0x13][3], but exploded to match .bss wrapping
|
||||
//Exploded for .bss matching
|
||||
u8 D_80392800;
|
||||
u8 D_80392801;
|
||||
u8 D_80392802;
|
||||
u8 D_80392803;
|
||||
u8 D_80392804;
|
||||
u8 D_80392805;
|
||||
u8 D_80392806;
|
||||
u8 D_80392807;
|
||||
u8 D_80392808;
|
||||
u8 D_80392809;
|
||||
u8 D_8039280A;
|
||||
u8 D_8039280B;
|
||||
u8 D_8039280C;
|
||||
u8 D_8039280D;
|
||||
u8 D_8039280E;
|
||||
u8 D_8039280F;
|
||||
u8 D_80392810;
|
||||
u8 D_80392811;
|
||||
u8 D_80392812;
|
||||
u8 D_80392813;
|
||||
u8 D_80392814;
|
||||
u8 D_80392815;
|
||||
u8 D_80392816;
|
||||
u8 D_80392817;
|
||||
u8 D_80392818;
|
||||
u8 D_80392819;
|
||||
u8 D_8039281A;
|
||||
u8 D_8039281B;
|
||||
u8 D_8039281C;
|
||||
u8 D_8039281D;
|
||||
u8 D_8039281E;
|
||||
u8 D_8039281F;
|
||||
u8 D_80392820;
|
||||
u8 D_80392821;
|
||||
u8 D_80392822;
|
||||
u8 D_80392823;
|
||||
u8 D_80392824;
|
||||
u8 D_80392825;
|
||||
u8 D_80392826;
|
||||
u8 D_80392827;
|
||||
u8 D_80392828;
|
||||
u8 D_80392829;
|
||||
u8 D_8039282A;
|
||||
u8 D_8039282B;
|
||||
u8 D_8039282C;
|
||||
u8 D_8039282D;
|
||||
u8 D_8039282E;
|
||||
u8 D_8039282F;
|
||||
u8 D_80392830;
|
||||
u8 D_80392831;
|
||||
u8 D_80392832;
|
||||
u8 D_80392833;
|
||||
u8 D_80392834;
|
||||
u8 D_80392835;
|
||||
u8 D_80392836;
|
||||
u8 D_80392837;
|
||||
u8 D_80392838;
|
||||
u8 D_80392839;
|
||||
u8 D_8039283A;
|
||||
u8 D_8039283B;
|
||||
|
||||
|
||||
f32 D_803927D0[0x13][3];
|
||||
f32 D_803928B8[3];
|
||||
s32 D_803928C4;
|
||||
f32 D_803928C8[3];
|
||||
|
||||
/* .code */
|
||||
Actor *chfinalboss_draw(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx) {
|
||||
@@ -1312,10 +1261,8 @@ void chfinalboss_phase2_update(ActorMarker *marker) {
|
||||
}
|
||||
|
||||
void __chfinalboss_spawnStatue(enum bossjinjo_e statue_id) {
|
||||
static f32 D_80392750;
|
||||
|
||||
s32 pad24_A;
|
||||
s32 pad20_A;
|
||||
f32* D_80392750_ptr = &D_80392750;
|
||||
Actor *sp1C;
|
||||
ActorLocal_fight_180 *local;
|
||||
|
||||
@@ -1343,8 +1290,8 @@ void __chfinalboss_spawnStatue(enum bossjinjo_e statue_id) {
|
||||
break;
|
||||
|
||||
case BOSSJINJO_JINJONATOR:
|
||||
D_80392750 = ((local->mirror_phase5) ? 0.0f : 180.0f);
|
||||
sp1C = func_8032813C(ACTOR_3A9_JINJONATOR_STATUE_BASE, D_80391798, (s32)D_80392750);
|
||||
*D_80392750_ptr = ((local->mirror_phase5) ? 0.0f : 180.0f);
|
||||
sp1C = func_8032813C(ACTOR_3A9_JINJONATOR_STATUE_BASE, D_80391798, (s32)*D_80392750_ptr);
|
||||
break;
|
||||
}
|
||||
sp1C->unk60 = (statue_id == BOSSJINJO_JINJONATOR) ? 5.25f : 1.54f;
|
||||
@@ -1415,63 +1362,7 @@ void chfinalboss_dropHealth(ActorMarker *marker) {
|
||||
SPAWNQUEUE_ADD_1(__chfinalboss_dropHealth, marker);
|
||||
}
|
||||
|
||||
//exploded for .bss matching
|
||||
u8 D_8039283C;
|
||||
u8 D_8039283D;
|
||||
u8 D_8039283E;
|
||||
u8 D_8039283F;
|
||||
u8 fight_D_80392840;
|
||||
u8 D_80392841;
|
||||
u8 D_80392842;
|
||||
u8 D_80392843;
|
||||
u8 D_80392844;
|
||||
u8 D_80392845;
|
||||
u8 D_80392846;
|
||||
u8 D_80392847;
|
||||
u8 D_80392848;
|
||||
u8 D_80392849;
|
||||
u8 D_8039284A;
|
||||
u8 D_8039284B;
|
||||
u8 D_8039284C;
|
||||
u8 D_8039284D;
|
||||
u8 D_8039284E;
|
||||
u8 D_8039284F;
|
||||
u8 D_80392850;
|
||||
u8 D_80392851;
|
||||
u8 D_80392852;
|
||||
u8 D_80392853;
|
||||
u8 D_80392854;
|
||||
u8 D_80392855;
|
||||
u8 D_80392856;
|
||||
u8 D_80392857;
|
||||
u8 D_80392858;
|
||||
u8 D_80392859;
|
||||
u8 D_8039285A;
|
||||
u8 D_8039285B;
|
||||
u8 D_8039285C;
|
||||
u8 D_8039285D;
|
||||
u8 D_8039285E;
|
||||
u8 D_8039285F;
|
||||
u8 D_80392860;
|
||||
u8 D_80392861;
|
||||
u8 D_80392862;
|
||||
u8 D_80392863;
|
||||
u8 fight_D_80392864;
|
||||
u8 D_80392865;
|
||||
u8 D_80392866;
|
||||
u8 D_80392867;
|
||||
u8 D_80392868;
|
||||
u8 D_80392869;
|
||||
u8 D_8039286A;
|
||||
u8 D_8039286B;
|
||||
u8 D_8039286C[0x4C];
|
||||
|
||||
f32 D_803928B8[2];
|
||||
|
||||
void chfinalboss_phase3_update(ActorMarker *marker) {
|
||||
static f32 D_803917A4[4] = {500.0f, 650.0f, 800.0f, 950.0f};
|
||||
static f32 D_803917B4[4] = {3.75f, 3.0f, 2.25f, 1.5f};
|
||||
static s32 D_803917C4[3] = {230, 230, 230};
|
||||
Actor *this;
|
||||
ActorLocal_fight_180 *local;
|
||||
f32 sp3C;
|
||||
@@ -1578,8 +1469,14 @@ void chfinalboss_phase4_setState(Actor *this, s32 arg1) {
|
||||
ActorLocal_fight_180 *local;
|
||||
f32 sp48;
|
||||
f32 sp3C[3];
|
||||
s32 i;
|
||||
static s32 D_803928C4;
|
||||
// TODO this union is only needed to avoid making D_803928C4 a function static.
|
||||
// It uses a trick to generate the same codegen as if it were a function static by taking the address to it
|
||||
// and using that pointer in its place. This avoids needing to deal with bss reordering issues in this file,
|
||||
// but if bss can be solved without it then this union can be removed and just replaced with `i`.
|
||||
union {
|
||||
s32 i;
|
||||
s32 *D_803928C4_ptr;
|
||||
} iter;
|
||||
|
||||
local = (ActorLocal_fight_180 *)&this->local;
|
||||
sp48 = animctrl_getAnimTimer(this->animctrl);
|
||||
@@ -1595,6 +1492,7 @@ void chfinalboss_phase4_setState(Actor *this, s32 arg1) {
|
||||
|
||||
case 30:
|
||||
if ((local->unk3 == 2) && (local->unkA == 0)) {
|
||||
iter.D_803928C4_ptr = &D_803928C4;
|
||||
D_803927C8 = 1;
|
||||
func_80311480(randi2(0, 5) + 0x1136, 4, NULL, NULL, NULL, NULL);
|
||||
if ( !fileProgressFlag_get(FILEPROG_D2_HAS_SPAWNED_A_JINJO_STATUE_IN_FINAL_FIGHT) ) {
|
||||
@@ -1617,8 +1515,9 @@ void chfinalboss_phase4_setState(Actor *this, s32 arg1) {
|
||||
func_80324E38(8.8f, 0);
|
||||
break;
|
||||
}
|
||||
for(D_803928C4 = 1; D_803928C4 < 5; D_803928C4++){
|
||||
chfinalboss_spawnStatue(D_803928C4);
|
||||
|
||||
for(*iter.D_803928C4_ptr = 1; *iter.D_803928C4_ptr < 5; (*iter.D_803928C4_ptr)++){
|
||||
chfinalboss_spawnStatue(*iter.D_803928C4_ptr);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -1666,17 +1565,16 @@ void chfinalboss_phase4_setState(Actor *this, s32 arg1) {
|
||||
func_8030DD14(this->unk44_31, 2);
|
||||
func_8030DBB4(this->unk44_31, D_803927C0);
|
||||
sfxsource_setSampleRate(this->unk44_31, 26000);
|
||||
for(i = 0; i < 4; i++){
|
||||
if(__chFinalBossJinjoStatueMarker[i] != NULL){
|
||||
marker_despawn(__chFinalBossJinjoStatueMarker[i]);
|
||||
__chFinalBossJinjoStatueMarker[i] = NULL;
|
||||
for(iter.i = 0; iter.i < 4; iter.i+=1){
|
||||
if(__chFinalBossJinjoStatueMarker[iter.i] != NULL){
|
||||
marker_despawn(__chFinalBossJinjoStatueMarker[iter.i]);
|
||||
__chFinalBossJinjoStatueMarker[iter.i] = NULL;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
f32 D_803928C8[3];
|
||||
|
||||
ActorMarker *chfinalboss_findCollidingJinjo(Actor *this, f32 arg1) {
|
||||
Actor *jinjo;
|
||||
@@ -1768,8 +1666,6 @@ void chfinalboss_phase4_update(ActorMarker *marker) {
|
||||
if (D_803927C4 == 0) {
|
||||
fight_func_80387340(this, 1.0f);
|
||||
if (actor_animationIsAt(this, 0.9999f)) {
|
||||
static f32 D_803917D0[4] = {2.4f, 2.1f, 1.8f, 1.5f};
|
||||
|
||||
local->unk3++;
|
||||
chfinalboss_phase4_setState(this, 0x1F);
|
||||
this->unk60 = D_803917D0[sp70];
|
||||
@@ -1976,8 +1872,6 @@ void chfinalboss_phase5_update(ActorMarker *marker) {
|
||||
timed_setStaticCameraToNode(4.4f, sp38 + 3 + __chFinalBossJinjonatorHits);
|
||||
}
|
||||
} else {
|
||||
static f32 D_803917E0[3] = {0.0f, 186.0f, 0.0f};
|
||||
|
||||
func_802BB3DC(0, 63.0f, 0.9f);
|
||||
chjinjonator_finalAttack(jinjonator_marker);
|
||||
func_8030E6D4(SFX_HEAVY_THUNDERSTORM_01);
|
||||
@@ -2112,10 +2006,8 @@ void chfinalboss_phase5_update(ActorMarker *marker) {
|
||||
if (actor_animationIsAt(this, 0.9f)) {
|
||||
ncStaticCamera_exit();
|
||||
if (local->mirror_phase5 == 0) {
|
||||
static f32 D_803917EC[3] = {-827.0f, 793.0f, 1700.0f};
|
||||
ncStaticCamera_setPositionAndTarget(D_803917EC, this->position);
|
||||
} else {
|
||||
static f32 D_803917F8[3] = {827.0f, 793.0f, -1700.0f};
|
||||
ncStaticCamera_setPositionAndTarget(D_803917F8, this->position);
|
||||
}
|
||||
func_8038FC2C(1);
|
||||
@@ -2272,9 +2164,6 @@ void chfinalboss_spawnShadow(ActorMarker *marker) {
|
||||
}
|
||||
|
||||
void chfinalboss_update(Actor *this){
|
||||
static f32 D_80391804[3] = {0.0f, 0.0f, 1350.0f};
|
||||
|
||||
|
||||
ActorLocal_fight_180 *local = (ActorLocal_fight_180 *) &this->local;
|
||||
s32 i;
|
||||
s32 tmp_s0;
|
||||
|
@@ -16,7 +16,7 @@ ActorAnimationInfo fight_D_803919F0[] ={
|
||||
{0x265, 1e+8f},
|
||||
{0x265, 1e+8f},
|
||||
};
|
||||
ActorInfo D_80391A10 = {
|
||||
ActorInfo fight_D_80391A10 = {
|
||||
MARKER_276_STONE_JINJO, ACTOR_3A1_STONE_JINJO, ASSET_545_MODEL_STONE_JINJO,
|
||||
0x1, fight_D_803919F0,
|
||||
chstonejinjo_update, func_80326224, actor_draw,
|
||||
|
@@ -186,7 +186,7 @@ extern Struct_lair_5ED0_0 D_80393760[FF_QNF_CNT - 1] = {
|
||||
};
|
||||
|
||||
|
||||
extern struct FF_QuestionTypeInfo FF_QuestionTypeInfoArr[5] = {
|
||||
struct FF_QuestionTypeInfo FF_QuestionTypeInfoArr[5] = {
|
||||
{ 0x0, 100},
|
||||
{ 0x64, 118},
|
||||
{ 0xDA, 51},
|
||||
@@ -194,7 +194,7 @@ extern struct FF_QuestionTypeInfo FF_QuestionTypeInfoArr[5] = {
|
||||
{0x12B, 6}
|
||||
};
|
||||
|
||||
extern struct {
|
||||
struct {
|
||||
u8 unk0;
|
||||
s16 unk2;
|
||||
s16 unk4;
|
||||
|
@@ -1,35 +0,0 @@
|
||||
osTvType = 0x80000300;
|
||||
osRomBase = 0x80000308;
|
||||
osResetType = 0x8000030C;
|
||||
osCicId = 0x80000310;
|
||||
osAppNMIBuffer = 0x8000031C;
|
||||
D_8023DA20 = 0x8023DA20;
|
||||
gOverlayTable = 0x803FFE10;
|
||||
func_8023DA20 = 0x8023DA20;
|
||||
|
||||
boot_osTvType = 0x80000300;
|
||||
boot_osRomBase = 0x80000308;
|
||||
boot_osResetType = 0x8000030C;
|
||||
boot_osAppNMIBuffer = 0x8000031C;
|
||||
boot_D_8002D500 = D_8002D500;
|
||||
boot_func_8023DA20 = func_8023DA20;
|
||||
boot_D_8023DA20 = core1_VRAM;
|
||||
boot_gOverlayTable = gOverlayTable;
|
||||
boot_D_803FBE00 = D_803FBE00;
|
||||
boot_D_803FFE00 = 0x803FFE00;
|
||||
|
||||
boot_D_A430000C = 0xA430000C;
|
||||
boot_D_A4300008 = 0xA4300008;
|
||||
boot_D_A4300008 = 0xA4300008;
|
||||
boot_D_A4040010 = 0xA4040010;
|
||||
boot_D_A4040010 = 0xA4040010;
|
||||
boot_D_A4040010 = 0xA4040010;
|
||||
boot_D_A4040010 = 0xA4040010;
|
||||
boot_D_A4400010 = 0xA4400010;
|
||||
boot_D_A4400010 = 0xA4400010;
|
||||
boot_D_A450000C = 0xA450000C;
|
||||
boot_D_A450000C = 0xA450000C;
|
||||
boot_D_A4800018 = 0xA4800018;
|
||||
boot_D_A4800018 = 0xA4800018;
|
||||
boot_D_A4600010 = 0xA4600010;
|
||||
boot_D_A4600010 = 0xA4600010;
|
Reference in New Issue
Block a user