mirror of
https://github.com/izzy2lost/Diddy-Kong-Racing.git
synced 2026-06-19 01:16:26 -07:00
Merge pull request #75 from DavidSM64/davids-branch
(8.08%) Improved asset extraction & decompiled 5 functions in unknown_0777A0
This commit is contained in:
@@ -7,6 +7,7 @@ __pycache__
|
||||
# Automatically generated folders should be ignored
|
||||
build/
|
||||
assets/
|
||||
ucode/
|
||||
!asm/assets/
|
||||
|
||||
# Linker file is automatically generated, so it should be ignored
|
||||
|
||||
@@ -56,9 +56,18 @@ ifeq ($(DUMMY),FAIL)
|
||||
$(error Failed to build tools)
|
||||
endif
|
||||
|
||||
######## Extract Assets ########
|
||||
######## Extract Assets & Microcode ########
|
||||
|
||||
NEED_TO_EXTRACT = no
|
||||
|
||||
ifeq ($(wildcard ./assets/.*),)
|
||||
NEED_TO_EXTRACT = yes
|
||||
endif
|
||||
ifeq ($(wildcard ./ucode/.*),)
|
||||
NEED_TO_EXTRACT = yes
|
||||
endif
|
||||
|
||||
ifeq ($(NEED_TO_EXTRACT),yes)
|
||||
DUMMY != ./extract.sh >&2 || echo FAIL
|
||||
ifeq ($(DUMMY),FAIL)
|
||||
$(error Failed to extract assets)
|
||||
@@ -131,7 +140,7 @@ CHEAT_ENCRYPTOR = $(TOOLS_DIR)/dkr_cheats_encryptor
|
||||
LIB_DIRS := lib
|
||||
ASM_DIRS := asm asm/boot asm/assets data lib/asm
|
||||
SRC_DIRS := src src/mips1 lib/src
|
||||
ASSETS_DIRS := animations audio billboards bin cheats fonts levels objects particles text textures textures/2d textures/3d tt_ghosts ucode
|
||||
ASSETS_DIRS := animations audio billboards bin cheats fonts levels lut objects particles text textures textures/2d textures/3d tt_ghosts ucode
|
||||
|
||||
GLOBAL_ASM_C_FILES != grep -rl 'GLOBAL_ASM(' $(wildcard src/*.c lib/src/*.c)
|
||||
GLOBAL_ASM_O_FILES = $(foreach file,$(GLOBAL_ASM_C_FILES),$(BUILD_DIR)/$(file:.c=.o))
|
||||
@@ -149,6 +158,7 @@ O_FILES := $(foreach file,$(S_FILES),$(BUILD_DIR)/$(file:.s=.o)) \
|
||||
# TODO: Clean this up if possible
|
||||
|
||||
ASSETS_DIR = assets/us_1.0
|
||||
UCODE_DIR = ucode/us_1.0
|
||||
|
||||
ASSETS_OBJCOPY = $(CROSS)objcopy --input-target=binary --output-target=binary
|
||||
|
||||
@@ -189,6 +199,11 @@ LEVELS = $(wildcard $(LEVELS_IN_DIR)/*.bin $(LEVELS_IN_DIR)/*.cbin)
|
||||
LEVELS_BUILT = $(patsubst $(LEVELS_IN_DIR)/%.bin,$(LEVELS_OUT_DIR)/%.bin,$(LEVELS))
|
||||
LEVELS_BUILT += $(patsubst $(LEVELS_IN_DIR)/%.cbin,$(LEVELS_OUT_DIR)/%.cbin,$(LEVELS))
|
||||
|
||||
LUT_IN_DIR = $(ASSETS_DIR)/lut
|
||||
LUT_OUT_DIR = $(BUILD_DIR)/lut
|
||||
LUT = $(wildcard $(LUT_IN_DIR)/*.bin)
|
||||
LUT_BUILT := $(patsubst $(LUT_IN_DIR)/%.bin,$(LUT_OUT_DIR)/%.bin,$(LUT))
|
||||
|
||||
OBJECTS_IN_DIR = $(ASSETS_DIR)/objects
|
||||
OBJECTS_OUT_DIR = $(BUILD_DIR)/objects
|
||||
OBJECTS = $(wildcard $(OBJECTS_IN_DIR)/*.bin $(OBJECTS_IN_DIR)/*.cbin)
|
||||
@@ -223,12 +238,12 @@ TT_GHOSTS_OUT_DIR = $(BUILD_DIR)/tt_ghosts
|
||||
TT_GHOSTS = $(wildcard $(TT_GHOSTS_IN_DIR)/*.bin)
|
||||
TT_GHOSTS_BUILT := $(patsubst $(TT_GHOSTS_IN_DIR)/%.bin,$(TT_GHOSTS_OUT_DIR)/%.bin,$(TT_GHOSTS))
|
||||
|
||||
UCODE_IN_DIR = $(ASSETS_DIR)/ucode
|
||||
UCODE_IN_DIR = $(UCODE_DIR)
|
||||
UCODE_OUT_DIR = $(BUILD_DIR)/ucode
|
||||
UCODE = $(wildcard $(UCODE_IN_DIR)/*.bin)
|
||||
UCODE_BUILT := $(patsubst $(UCODE_IN_DIR)/%.bin,$(UCODE_OUT_DIR)/%.bin,$(UCODE))
|
||||
|
||||
ALL_ASSETS_BUILT := $(ANIMATIONS_BUILT) $(AUDIO_BUILT) $(BILLBOARDS_BUILT) $(BINS_BUILT) $(CHEATS_BUILT) $(FONTS_BUILT) $(LEVELS_BUILT) $(OBJECTS_BUILT) $(TEXTURES_BUILT) $(PARTICLES_BUILT) $(TEXT_BUILT) $(TT_GHOSTS_BUILT) $(UCODE_BUILT)
|
||||
ALL_ASSETS_BUILT := $(ANIMATIONS_BUILT) $(AUDIO_BUILT) $(BILLBOARDS_BUILT) $(BINS_BUILT) $(CHEATS_BUILT) $(FONTS_BUILT) $(LEVELS_BUILT) $(OBJECTS_BUILT) $(TEXTURES_BUILT) $(PARTICLES_BUILT) $(TEXT_BUILT) $(TT_GHOSTS_BUILT) $(UCODE_BUILT) $(LUT_BUILT)
|
||||
|
||||
####################### LIBULTRA #########################
|
||||
|
||||
@@ -326,6 +341,9 @@ $(LEVELS_OUT_DIR)/%.bin: $(LEVELS_IN_DIR)/%.bin
|
||||
|
||||
$(LEVELS_OUT_DIR)/%.cbin: $(LEVELS_IN_DIR)/%.cbin
|
||||
$(COMPRESS) $^ $@
|
||||
|
||||
$(LUT_OUT_DIR)/%.bin: $(LUT_IN_DIR)/%.bin
|
||||
$(ASSETS_OBJCOPY) $^ $@
|
||||
|
||||
$(OBJECTS_OUT_DIR)/%.bin: $(OBJECTS_IN_DIR)/%.bin
|
||||
$(ASSETS_OBJCOPY) $^ $@
|
||||
@@ -333,10 +351,10 @@ $(OBJECTS_OUT_DIR)/%.bin: $(OBJECTS_IN_DIR)/%.bin
|
||||
$(OBJECTS_OUT_DIR)/%.cbin: $(OBJECTS_IN_DIR)/%.cbin
|
||||
$(COMPRESS) $^ $@
|
||||
|
||||
$(TEXTURES_2D_OUT_DIR)/%.bin: $(TEXTURES_2D_IN_DIR)/%.png
|
||||
$(TEXTURES_2D_OUT_DIR)/%.bin: $(TEXTURES_2D_IN_DIR)/%.png $(TEXTURES_2D_IN_DIR)/%.header
|
||||
$(TEXBUILDER) $^ $@
|
||||
|
||||
$(TEXTURES_3D_OUT_DIR)/%.bin: $(TEXTURES_3D_IN_DIR)/%.png
|
||||
$(TEXTURES_3D_OUT_DIR)/%.bin: $(TEXTURES_3D_IN_DIR)/%.png $(TEXTURES_3D_IN_DIR)/%.header
|
||||
$(TEXBUILDER) $^ $@
|
||||
|
||||
$(TEXTURES_OUT_DIR)/%.bin: $(TEXTURES_IN_DIR)/%.bin
|
||||
|
||||
+3897
-3900
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,3 @@
|
||||
# This file was generated by generate_ld.py
|
||||
|
||||
.incbin "./build/us_1.0/lut/assets_lut.0ECB60.bin"
|
||||
@@ -1,8 +0,0 @@
|
||||
# This file was generated by generate_ld.py
|
||||
|
||||
.incbin "./build/us_1.0/ucode/ucode_unknown.0d8200.bin"
|
||||
.incbin "./build/us_1.0/ucode/ucode_boot.0d90c0.bin"
|
||||
.incbin "./build/us_1.0/ucode/ucode_f3ddkr_dram.0d9190.bin"
|
||||
.incbin "./build/us_1.0/ucode/ucode_f3ddkr_fifo.0da390.bin"
|
||||
.incbin "./build/us_1.0/ucode/ucode_f3ddkr_xbus.0db570.bin"
|
||||
.incbin "./build/us_1.0/ucode/ucode_unknown.0dc770.bin"
|
||||
@@ -0,0 +1,6 @@
|
||||
# This file was generated by generate_ld.py
|
||||
|
||||
.incbin "./build/us_1.0/ucode/data_f3ddkr_dram.0EA7A0.bin"
|
||||
.incbin "./build/us_1.0/ucode/data_f3ddkr_fifo.0EAFA0.bin"
|
||||
.incbin "./build/us_1.0/ucode/data_f3ddkr_xbus.0EB7A0.bin"
|
||||
.incbin "./build/us_1.0/ucode/data_unknown.0EBFA0.bin"
|
||||
@@ -0,0 +1,8 @@
|
||||
# This file was generated by generate_ld.py
|
||||
|
||||
.incbin "./build/us_1.0/ucode/ucode_unknown.0D8200.bin"
|
||||
.incbin "./build/us_1.0/ucode/ucode_boot.0D90C0.bin"
|
||||
.incbin "./build/us_1.0/ucode/ucode_f3ddkr_dram.0D9190.bin"
|
||||
.incbin "./build/us_1.0/ucode/ucode_f3ddkr_fifo.0DA390.bin"
|
||||
.incbin "./build/us_1.0/ucode/ucode_f3ddkr_xbus.0DB570.bin"
|
||||
.incbin "./build/us_1.0/ucode/ucode_unknown.0DC770.bin"
|
||||
@@ -1,49 +0,0 @@
|
||||
glabel func_80076AF4
|
||||
/* 0776F4 80076AF4 27BDFFD8 */ addiu $sp, $sp, -0x28
|
||||
/* 0776F8 80076AF8 AFBF0014 */ sw $ra, 0x14($sp)
|
||||
/* 0776FC 80076AFC AFA40028 */ sw $a0, 0x28($sp)
|
||||
/* 077700 80076B00 AFA5002C */ sw $a1, 0x2c($sp)
|
||||
/* 077704 80076B04 24030006 */ li $v1, 6
|
||||
/* 077708 80076B08 AFA3001C */ sw $v1, 0x1c($sp)
|
||||
/* 07770C 80076B0C 240500FF */ li $a1, 255
|
||||
/* 077710 80076B10 0C01C327 */ jal func_80070C9C
|
||||
/* 077714 80076B14 24040100 */ li $a0, 256
|
||||
/* 077718 80076B18 8FA40028 */ lw $a0, 0x28($sp)
|
||||
/* 07771C 80076B1C 8FA5002C */ lw $a1, 0x2c($sp)
|
||||
/* 077720 80076B20 AFA20024 */ sw $v0, 0x24($sp)
|
||||
/* 077724 80076B24 00403025 */ move $a2, $v0
|
||||
/* 077728 80076B28 0C01D984 */ jal func_80076610
|
||||
/* 07772C 80076B2C 24070100 */ li $a3, 256
|
||||
/* 077730 80076B30 8FA3001C */ lw $v1, 0x1c($sp)
|
||||
/* 077734 80076B34 8FA40024 */ lw $a0, 0x24($sp)
|
||||
/* 077738 80076B38 14400012 */ bnez $v0, .L80076B84
|
||||
/* 07773C 80076B3C 3C014741 */ lui $at, (0x47414D44 >> 16) # lui $at, 0x4741
|
||||
/* 077740 80076B40 8C820000 */ lw $v0, ($a0)
|
||||
/* 077744 80076B44 34214D44 */ ori $at, (0x47414D44 & 0xFFFF) # ori $at, $at, 0x4d44
|
||||
/* 077748 80076B48 10410009 */ beq $v0, $at, .L80076B70
|
||||
/* 07774C 80076B4C 3C014748 */ lui $at, (0x47485353 >> 16) # lui $at, 0x4748
|
||||
/* 077750 80076B50 34215353 */ ori $at, (0x47485353 & 0xFFFF) # ori $at, $at, 0x5353
|
||||
/* 077754 80076B54 1041000A */ beq $v0, $at, .L80076B80
|
||||
/* 077758 80076B58 3C015449 */ lui $at, (0x54494D44 >> 16) # lui $at, 0x5449
|
||||
/* 07775C 80076B5C 34214D44 */ ori $at, (0x54494D44 & 0xFFFF) # ori $at, $at, 0x4d44
|
||||
/* 077760 80076B60 10410005 */ beq $v0, $at, .L80076B78
|
||||
/* 077764 80076B64 00000000 */ nop
|
||||
/* 077768 80076B68 10000006 */ b .L80076B84
|
||||
/* 07776C 80076B6C 00000000 */ nop
|
||||
.L80076B70:
|
||||
/* 077770 80076B70 10000004 */ b .L80076B84
|
||||
/* 077774 80076B74 24030003 */ li $v1, 3
|
||||
.L80076B78:
|
||||
/* 077778 80076B78 10000002 */ b .L80076B84
|
||||
/* 07777C 80076B7C 24030004 */ li $v1, 4
|
||||
.L80076B80:
|
||||
/* 077780 80076B80 24030005 */ li $v1, 5
|
||||
.L80076B84:
|
||||
/* 077784 80076B84 0C01C450 */ jal func_80071140
|
||||
/* 077788 80076B88 AFA3001C */ sw $v1, 0x1c($sp)
|
||||
/* 07778C 80076B8C 8FBF0014 */ lw $ra, 0x14($sp)
|
||||
/* 077790 80076B90 8FA2001C */ lw $v0, 0x1c($sp)
|
||||
/* 077794 80076B94 03E00008 */ jr $ra
|
||||
/* 077798 80076B98 27BD0028 */ addiu $sp, $sp, 0x28
|
||||
|
||||
/* 07779C 80076B9C 00000000 */ nop
|
||||
@@ -1,48 +0,0 @@
|
||||
glabel func_80076BA0
|
||||
/* 0777A0 80076BA0 27BDFFE0 */ addiu $sp, $sp, -0x20
|
||||
/* 0777A4 80076BA4 AFBF0014 */ sw $ra, 0x14($sp)
|
||||
/* 0777A8 80076BA8 3C048012 */ lui $a0, %hi(D_80124278) # $a0, 0x8012
|
||||
/* 0777AC 80076BAC 3C058012 */ lui $a1, %hi(D_80124238) # $a1, 0x8012
|
||||
/* 0777B0 80076BB0 24A54238 */ addiu $a1, %lo(D_80124238) # addiu $a1, $a1, 0x4238
|
||||
/* 0777B4 80076BB4 24844278 */ addiu $a0, %lo(D_80124278) # addiu $a0, $a0, 0x4278
|
||||
/* 0777B8 80076BB8 0C032208 */ jal osCreateMesgQueue
|
||||
/* 0777BC 80076BBC 24060010 */ li $a2, 16
|
||||
/* 0777C0 80076BC0 3C048012 */ lui $a0, %hi(D_80124220) # $a0, 0x8012
|
||||
/* 0777C4 80076BC4 3C058012 */ lui $a1, %hi(D_80124218) # $a1, 0x8012
|
||||
/* 0777C8 80076BC8 24A54218 */ addiu $a1, %lo(D_80124218) # addiu $a1, $a1, 0x4218
|
||||
/* 0777CC 80076BCC 24844220 */ addiu $a0, %lo(D_80124220) # addiu $a0, $a0, 0x4220
|
||||
/* 0777D0 80076BD0 0C032208 */ jal osCreateMesgQueue
|
||||
/* 0777D4 80076BD4 24060001 */ li $a2, 1
|
||||
/* 0777D8 80076BD8 3C058012 */ lui $a1, %hi(D_80124278) # $a1, 0x8012
|
||||
/* 0777DC 80076BDC 3C068012 */ lui $a2, %hi(D_80124238) # $a2, 0x8012
|
||||
/* 0777E0 80076BE0 24C64238 */ addiu $a2, %lo(D_80124238) # addiu $a2, $a2, 0x4238
|
||||
/* 0777E4 80076BE4 24A54278 */ addiu $a1, %lo(D_80124278) # addiu $a1, $a1, 0x4278
|
||||
/* 0777E8 80076BE8 24040096 */ li $a0, 150
|
||||
/* 0777EC 80076BEC 0C031800 */ jal osCreatePiManager
|
||||
/* 0777F0 80076BF0 24070010 */ li $a3, 16
|
||||
/* 0777F4 80076BF4 3C0E000F */ lui $t6, %hi(D_000ECC30) # $t6, 0xf
|
||||
/* 0777F8 80076BF8 3C0F000F */ lui $t7, %hi(D_000ECB60) # $t7, 0xf
|
||||
/* 0777FC 80076BFC 25EFCB60 */ addiu $t7, %lo(D_000ECB60) # addiu $t7, $t7, -0x34a0
|
||||
/* 077800 80076C00 25CECC30 */ addiu $t6, %lo(D_000ECC30) # addiu $t6, $t6, -0x33d0
|
||||
/* 077804 80076C04 01CF1023 */ subu $v0, $t6, $t7
|
||||
/* 077808 80076C08 3C057F7F */ lui $a1, (0x7F7F7FFF >> 16) # lui $a1, 0x7f7f
|
||||
/* 07780C 80076C0C 34A57FFF */ ori $a1, (0x7F7F7FFF & 0xFFFF) # ori $a1, $a1, 0x7fff
|
||||
/* 077810 80076C10 00402025 */ move $a0, $v0
|
||||
/* 077814 80076C14 0C01C327 */ jal func_80070C9C
|
||||
/* 077818 80076C18 AFA20018 */ sw $v0, 0x18($sp)
|
||||
/* 07781C 80076C1C 3C038012 */ lui $v1, %hi(D_80124290) # $v1, 0x8012
|
||||
/* 077820 80076C20 24634290 */ addiu $v1, %lo(D_80124290) # addiu $v1, $v1, 0x4290
|
||||
/* 077824 80076C24 AC620000 */ sw $v0, ($v1)
|
||||
/* 077828 80076C28 0C01C51E */ jal func_80071478
|
||||
/* 07782C 80076C2C 00402025 */ move $a0, $v0
|
||||
/* 077830 80076C30 3C058012 */ lui $a1, %hi(D_80124290) # $a1, 0x8012
|
||||
/* 077834 80076C34 8CA54290 */ lw $a1, %lo(D_80124290)($a1)
|
||||
/* 077838 80076C38 3C04000F */ lui $a0, %hi(D_000ECB60) # $a0, 0xf
|
||||
/* 07783C 80076C3C 8FA60018 */ lw $a2, 0x18($sp)
|
||||
/* 077840 80076C40 0C01DBDE */ jal func_80076F78
|
||||
/* 077844 80076C44 2484CB60 */ addiu $a0, %lo(D_000ECB60) # addiu $a0, $a0, -0x34a0
|
||||
/* 077848 80076C48 8FBF0014 */ lw $ra, 0x14($sp)
|
||||
/* 07784C 80076C4C 27BD0020 */ addiu $sp, $sp, 0x20
|
||||
/* 077850 80076C50 03E00008 */ jr $ra
|
||||
/* 077854 80076C54 00000000 */ nop
|
||||
|
||||
@@ -31,7 +31,7 @@ glabel func_80076C58
|
||||
/* 0778C4 80076CC4 2739CC30 */ addiu $t9, %lo(D_000ECC30) # addiu $t9, $t9, -0x33d0
|
||||
/* 0778C8 80076CC8 8FA6001C */ lw $a2, 0x1c($sp)
|
||||
/* 0778CC 80076CCC 00F92021 */ addu $a0, $a3, $t9
|
||||
/* 0778D0 80076CD0 0C01DBDE */ jal func_80076F78
|
||||
/* 0778D0 80076CD0 0C01DBDE */ jal dmacopy
|
||||
/* 0778D4 80076CD4 AFA50020 */ sw $a1, 0x20($sp)
|
||||
/* 0778D8 80076CD8 8FA20020 */ lw $v0, 0x20($sp)
|
||||
/* 0778DC 80076CDC 00000000 */ nop
|
||||
@@ -71,7 +71,7 @@ glabel func_80076C58
|
||||
/* 077958 80076D58 AFA20028 */ sw $v0, 0x28($sp)
|
||||
/* 07795C 80076D5C AFA40020 */ sw $a0, 0x20($sp)
|
||||
/* 077960 80076D60 00402825 */ move $a1, $v0
|
||||
/* 077964 80076D64 0C01DBDE */ jal func_80076F78
|
||||
/* 077964 80076D64 0C01DBDE */ jal dmacopy
|
||||
/* 077968 80076D68 24060008 */ li $a2, 8
|
||||
/* 07796C 80076D6C 8FA40028 */ lw $a0, 0x28($sp)
|
||||
/* 077970 80076D70 0C03186B */ jal byteswap32
|
||||
@@ -98,7 +98,7 @@ glabel func_80076C58
|
||||
/* 0779C0 80076DC0 8FA40020 */ lw $a0, 0x20($sp)
|
||||
/* 0779C4 80076DC4 01C62823 */ subu $a1, $t6, $a2
|
||||
/* 0779C8 80076DC8 AFA5001C */ sw $a1, 0x1c($sp)
|
||||
/* 0779CC 80076DCC 0C01DBDE */ jal func_80076F78
|
||||
/* 0779CC 80076DCC 0C01DBDE */ jal dmacopy
|
||||
/* 0779D0 80076DD0 AFA70024 */ sw $a3, 0x24($sp)
|
||||
/* 0779D4 80076DD4 8FA50024 */ lw $a1, 0x24($sp)
|
||||
/* 0779D8 80076DD8 8FA4001C */ lw $a0, 0x1c($sp)
|
||||
@@ -132,7 +132,7 @@ glabel func_80076C58
|
||||
/* 077A3C 80076E3C 2739CC30 */ addiu $t9, %lo(D_000ECC30) # addiu $t9, $t9, -0x33d0
|
||||
/* 077A40 80076E40 03033023 */ subu $a2, $t8, $v1
|
||||
/* 077A44 80076E44 AFA60018 */ sw $a2, 0x18($sp)
|
||||
/* 077A48 80076E48 0C01DBDE */ jal func_80076F78
|
||||
/* 077A48 80076E48 0C01DBDE */ jal dmacopy
|
||||
/* 077A4C 80076E4C 00792021 */ addu $a0, $v1, $t9
|
||||
/* 077A50 80076E50 8FA20018 */ lw $v0, 0x18($sp)
|
||||
/* 077A54 80076E54 00000000 */ nop
|
||||
|
||||
@@ -1,37 +0,0 @@
|
||||
glabel func_80076E68
|
||||
/* 077A68 80076E68 27BDFFE8 */ addiu $sp, $sp, -0x18
|
||||
/* 077A6C 80076E6C AFBF0014 */ sw $ra, 0x14($sp)
|
||||
/* 077A70 80076E70 AFA40018 */ sw $a0, 0x18($sp)
|
||||
/* 077A74 80076E74 10E00009 */ beqz $a3, .L80076E9C
|
||||
/* 077A78 80076E78 AFA60020 */ sw $a2, 0x20($sp)
|
||||
/* 077A7C 80076E7C 3C088012 */ lui $t0, %hi(D_80124290) # $t0, 0x8012
|
||||
/* 077A80 80076E80 8D084290 */ lw $t0, %lo(D_80124290)($t0)
|
||||
/* 077A84 80076E84 8FB80018 */ lw $t8, 0x18($sp)
|
||||
/* 077A88 80076E88 8D0E0000 */ lw $t6, ($t0)
|
||||
/* 077A8C 80076E8C 27190001 */ addiu $t9, $t8, 1
|
||||
/* 077A90 80076E90 01C4082B */ sltu $at, $t6, $a0
|
||||
/* 077A94 80076E94 10200003 */ beqz $at, .L80076EA4
|
||||
/* 077A98 80076E98 00194880 */ sll $t1, $t9, 2
|
||||
.L80076E9C:
|
||||
/* 077A9C 80076E9C 1000000E */ b .L80076ED8
|
||||
/* 077AA0 80076EA0 00001025 */ move $v0, $zero
|
||||
.L80076EA4:
|
||||
/* 077AA4 80076EA4 AFB90018 */ sw $t9, 0x18($sp)
|
||||
/* 077AA8 80076EA8 01281021 */ addu $v0, $t1, $t0
|
||||
/* 077AAC 80076EAC 8C4A0000 */ lw $t2, ($v0)
|
||||
/* 077AB0 80076EB0 8FAB0020 */ lw $t3, 0x20($sp)
|
||||
/* 077AB4 80076EB4 3C0C000F */ lui $t4, %hi(D_000ECC30) # $t4, 0xf
|
||||
/* 077AB8 80076EB8 258CCC30 */ addiu $t4, %lo(D_000ECC30) # addiu $t4, $t4, -0x33d0
|
||||
/* 077ABC 80076EBC 014B1821 */ addu $v1, $t2, $t3
|
||||
/* 077AC0 80076EC0 006C2021 */ addu $a0, $v1, $t4
|
||||
/* 077AC4 80076EC4 AFA70024 */ sw $a3, 0x24($sp)
|
||||
/* 077AC8 80076EC8 0C01DBDE */ jal func_80076F78
|
||||
/* 077ACC 80076ECC 00E03025 */ move $a2, $a3
|
||||
/* 077AD0 80076ED0 8FA20024 */ lw $v0, 0x24($sp)
|
||||
/* 077AD4 80076ED4 00000000 */ nop
|
||||
.L80076ED8:
|
||||
/* 077AD8 80076ED8 8FBF0014 */ lw $ra, 0x14($sp)
|
||||
/* 077ADC 80076EDC 27BD0018 */ addiu $sp, $sp, 0x18
|
||||
/* 077AE0 80076EE0 03E00008 */ jr $ra
|
||||
/* 077AE4 80076EE4 00000000 */ nop
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
glabel func_80076EE8
|
||||
/* 077AE8 80076EE8 3C038012 */ lui $v1, %hi(D_80124290) # $v1, 0x8012
|
||||
/* 077AEC 80076EEC 8C634290 */ lw $v1, %lo(D_80124290)($v1)
|
||||
/* 077AF0 80076EF0 00A03825 */ move $a3, $a1
|
||||
/* 077AF4 80076EF4 8C6E0000 */ lw $t6, ($v1)
|
||||
/* 077AF8 80076EF8 3C19000F */ lui $t9, 0xf
|
||||
/* 077AFC 80076EFC 01C4082B */ sltu $at, $t6, $a0
|
||||
/* 077B00 80076F00 10200003 */ beqz $at, .L80076F10
|
||||
/* 077B04 80076F04 24840001 */ addiu $a0, $a0, 1
|
||||
/* 077B08 80076F08 03E00008 */ jr $ra
|
||||
/* 077B0C 80076F0C 00001025 */ move $v0, $zero
|
||||
|
||||
.L80076F10:
|
||||
/* 077B10 80076F10 00047880 */ sll $t7, $a0, 2
|
||||
/* 077B14 80076F14 01E32821 */ addu $a1, $t7, $v1
|
||||
/* 077B18 80076F18 8CB80000 */ lw $t8, ($a1)
|
||||
/* 077B1C 80076F1C 2739CC30 */ addiu $t9, $t9, -0x33d0
|
||||
/* 077B20 80076F20 03073021 */ addu $a2, $t8, $a3
|
||||
/* 077B24 80076F24 00D91021 */ addu $v0, $a2, $t9
|
||||
/* 077B28 80076F28 03E00008 */ jr $ra
|
||||
/* 077B2C 80076F2C 00000000 */ nop
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
glabel func_80076F30
|
||||
/* 077B30 80076F30 3C038012 */ lui $v1, %hi(D_80124290) # $v1, 0x8012
|
||||
/* 077B34 80076F34 8C634290 */ lw $v1, %lo(D_80124290)($v1)
|
||||
/* 077B38 80076F38 00000000 */ nop
|
||||
/* 077B3C 80076F3C 8C6E0000 */ lw $t6, ($v1)
|
||||
/* 077B40 80076F40 00000000 */ nop
|
||||
/* 077B44 80076F44 01C4082B */ sltu $at, $t6, $a0
|
||||
/* 077B48 80076F48 10200003 */ beqz $at, .L80076F58
|
||||
/* 077B4C 80076F4C 24840001 */ addiu $a0, $a0, 1
|
||||
/* 077B50 80076F50 03E00008 */ jr $ra
|
||||
/* 077B54 80076F54 00001025 */ move $v0, $zero
|
||||
|
||||
.L80076F58:
|
||||
/* 077B58 80076F58 00047880 */ sll $t7, $a0, 2
|
||||
/* 077B5C 80076F5C 01E32821 */ addu $a1, $t7, $v1
|
||||
/* 077B60 80076F60 8CB80004 */ lw $t8, 4($a1)
|
||||
/* 077B64 80076F64 8CB90000 */ lw $t9, ($a1)
|
||||
/* 077B68 80076F68 00000000 */ nop
|
||||
/* 077B6C 80076F6C 03191023 */ subu $v0, $t8, $t9
|
||||
/* 077B70 80076F70 03E00008 */ jr $ra
|
||||
/* 077B74 80076F74 00000000 */ nop
|
||||
|
||||
@@ -1,60 +0,0 @@
|
||||
glabel func_80076F78
|
||||
/* 077B78 80076F78 27BDFFB0 */ addiu $sp, $sp, -0x50
|
||||
/* 077B7C 80076F7C AFB30034 */ sw $s3, 0x34($sp)
|
||||
/* 077B80 80076F80 00809825 */ move $s3, $a0
|
||||
/* 077B84 80076F84 AFB20030 */ sw $s2, 0x30($sp)
|
||||
/* 077B88 80076F88 00A09025 */ move $s2, $a1
|
||||
/* 077B8C 80076F8C AFBF0044 */ sw $ra, 0x44($sp)
|
||||
/* 077B90 80076F90 AFB1002C */ sw $s1, 0x2c($sp)
|
||||
/* 077B94 80076F94 00A02025 */ move $a0, $a1
|
||||
/* 077B98 80076F98 00C08825 */ move $s1, $a2
|
||||
/* 077B9C 80076F9C AFB60040 */ sw $s6, 0x40($sp)
|
||||
/* 077BA0 80076FA0 AFB5003C */ sw $s5, 0x3c($sp)
|
||||
/* 077BA4 80076FA4 AFB40038 */ sw $s4, 0x38($sp)
|
||||
/* 077BA8 80076FA8 AFB00028 */ sw $s0, 0x28($sp)
|
||||
/* 077BAC 80076FAC 0C0345FC */ jal osInvalDCache
|
||||
/* 077BB0 80076FB0 00C02825 */ move $a1, $a2
|
||||
/* 077BB4 80076FB4 1A200019 */ blez $s1, .L8007701C
|
||||
/* 077BB8 80076FB8 24105000 */ li $s0, 20480
|
||||
/* 077BBC 80076FBC 3C158012 */ lui $s5, %hi(D_80124200) # $s5, 0x8012
|
||||
/* 077BC0 80076FC0 3C148012 */ lui $s4, %hi(D_80124220) # $s4, 0x8012
|
||||
/* 077BC4 80076FC4 26944220 */ addiu $s4, %lo(D_80124220) # addiu $s4, $s4, 0x4220
|
||||
/* 077BC8 80076FC8 26B54200 */ addiu $s5, %lo(D_80124200) # addiu $s5, $s5, 0x4200
|
||||
/* 077BCC 80076FCC 27B6004C */ addiu $s6, $sp, 0x4c
|
||||
.L80076FD0:
|
||||
/* 077BD0 80076FD0 0230082A */ slt $at, $s1, $s0
|
||||
/* 077BD4 80076FD4 10200002 */ beqz $at, .L80076FE0
|
||||
/* 077BD8 80076FD8 02A02025 */ move $a0, $s5
|
||||
/* 077BDC 80076FDC 02208025 */ move $s0, $s1
|
||||
.L80076FE0:
|
||||
/* 077BE0 80076FE0 00002825 */ move $a1, $zero
|
||||
/* 077BE4 80076FE4 00003025 */ move $a2, $zero
|
||||
/* 077BE8 80076FE8 02603825 */ move $a3, $s3
|
||||
/* 077BEC 80076FEC AFB20010 */ sw $s2, 0x10($sp)
|
||||
/* 077BF0 80076FF0 AFB00014 */ sw $s0, 0x14($sp)
|
||||
/* 077BF4 80076FF4 0C0323E0 */ jal osPiStartDma
|
||||
/* 077BF8 80076FF8 AFB40018 */ sw $s4, 0x18($sp)
|
||||
/* 077BFC 80076FFC 02802025 */ move $a0, $s4
|
||||
/* 077C00 80077000 02C02825 */ move $a1, $s6
|
||||
/* 077C04 80077004 0C0322EC */ jal osRecvMesg
|
||||
/* 077C08 80077008 24060001 */ li $a2, 1
|
||||
/* 077C0C 8007700C 02308823 */ subu $s1, $s1, $s0
|
||||
/* 077C10 80077010 02709821 */ addu $s3, $s3, $s0
|
||||
/* 077C14 80077014 1E20FFEE */ bgtz $s1, .L80076FD0
|
||||
/* 077C18 80077018 02509021 */ addu $s2, $s2, $s0
|
||||
.L8007701C:
|
||||
/* 077C1C 8007701C 8FBF0044 */ lw $ra, 0x44($sp)
|
||||
/* 077C20 80077020 8FB00028 */ lw $s0, 0x28($sp)
|
||||
/* 077C24 80077024 8FB1002C */ lw $s1, 0x2c($sp)
|
||||
/* 077C28 80077028 8FB20030 */ lw $s2, 0x30($sp)
|
||||
/* 077C2C 8007702C 8FB30034 */ lw $s3, 0x34($sp)
|
||||
/* 077C30 80077030 8FB40038 */ lw $s4, 0x38($sp)
|
||||
/* 077C34 80077034 8FB5003C */ lw $s5, 0x3c($sp)
|
||||
/* 077C38 80077038 8FB60040 */ lw $s6, 0x40($sp)
|
||||
/* 077C3C 8007703C 03E00008 */ jr $ra
|
||||
/* 077C40 80077040 27BD0050 */ addiu $sp, $sp, 0x50
|
||||
|
||||
/* 077C44 80077044 00000000 */ nop
|
||||
/* 077C48 80077048 00000000 */ nop
|
||||
/* 077C4C 8007704C 00000000 */ nop
|
||||
|
||||
@@ -28,7 +28,7 @@ glabel func_8008AD44
|
||||
.L8008ADA8:
|
||||
/* 08B9A8 8008ADA8 02602025 */ move $a0, $s3
|
||||
/* 08B9AC 8008ADAC 02802825 */ move $a1, $s4
|
||||
/* 08B9B0 8008ADB0 0C01DBDE */ jal func_80076F78
|
||||
/* 08B9B0 8008ADB0 0C01DBDE */ jal dmacopy
|
||||
/* 08B9B4 8008ADB4 02203025 */ move $a2, $s1
|
||||
/* 08B9B8 8008ADB8 1A20001F */ blez $s1, .L8008AE38
|
||||
/* 08B9BC 8008ADBC 02519023 */ subu $s2, $s2, $s1
|
||||
|
||||
@@ -19,6 +19,10 @@ subfolder: "us_1.0"
|
||||
|
||||
# All of the sizes must add up to the total ROM size!
|
||||
|
||||
# -------------------------------------------------------------------------- #
|
||||
|
||||
asset-category: "none"
|
||||
|
||||
# [0x000000, 0x000040] = ROM Header, not extracted
|
||||
[0x40]: "NoExtract"
|
||||
|
||||
@@ -29,49 +33,75 @@ subfolder: "us_1.0"
|
||||
[0xD7200]: "NoExtract"
|
||||
|
||||
# [0x0D8200, 0x0D90C0] = Unknown microcode
|
||||
[0xEC0]: "Binary", "ucode_unknown", "ucode"
|
||||
[0xEC0]: "Binary", "ucode_unknown", "../../ucode/us_1.0"
|
||||
|
||||
# [0x0D90C0, 0x0D9190] = Microcode boot code
|
||||
[0xD0]: "Binary", "ucode_boot", "ucode"
|
||||
[0xD0]: "Binary", "ucode_boot", "../../ucode/us_1.0"
|
||||
|
||||
# [0x0D9190, 0x0DA390] = DRAM Dump version of F3DDKR
|
||||
[0x1200]: "Binary", "ucode_f3ddkr_dram", "ucode"
|
||||
[0x1200]: "Binary", "ucode_f3ddkr_dram", "../../ucode/us_1.0"
|
||||
|
||||
# [0x0DA390, 0x0DB570] = FIFO version of F3DDKR
|
||||
[0x11E0]: "Binary", "ucode_f3ddkr_fifo", "ucode"
|
||||
[0x11E0]: "Binary", "ucode_f3ddkr_fifo", "../../ucode/us_1.0"
|
||||
|
||||
# [0x0DB570, 0x0DC770] = XBUS version of F3DDKR
|
||||
[0x1200]: "Binary", "ucode_f3ddkr_xbus", "ucode"
|
||||
[0x1200]: "Binary", "ucode_f3ddkr_xbus", "../../ucode/us_1.0"
|
||||
|
||||
# [0x0DC770, 0x0DD230] = Unknown microcode
|
||||
[0xAC0]: "Binary", "ucode_unknown", "ucode"
|
||||
[0xAC0]: "Binary", "ucode_unknown", "../../ucode/us_1.0"
|
||||
|
||||
# [0x0DD230, 0x0EA7A0] = .data section of the game code
|
||||
[0xD570]: "NoExtract"
|
||||
|
||||
# [0x0EA7A0, 0x0EAFA0] = Data section of F3DDKR-DRAM
|
||||
[0x800]: "Binary", "data_f3ddkr_dram", "ucode"
|
||||
[0x800]: "Binary", "data_f3ddkr_dram", "../../ucode/us_1.0"
|
||||
|
||||
# [0x0EAFA0, 0x0EB7A0] = Data section of F3DDKR-FIFO
|
||||
[0x800]: "Binary", "data_f3ddkr_fifo", "ucode"
|
||||
[0x800]: "Binary", "data_f3ddkr_fifo", "../../ucode/us_1.0"
|
||||
|
||||
# [0x0EB7A0, 0x0EBFA0] = Data section of F3DDKR-XBUS
|
||||
[0x800]: "Binary", "data_f3ddkr_xbus", "ucode"
|
||||
[0x800]: "Binary", "data_f3ddkr_xbus", "../../ucode/us_1.0"
|
||||
|
||||
# [0x0EBFA0, 0x0ECD50] = Unknown
|
||||
[0xDB0]: "Binary", "unknown", "bin"
|
||||
# [0x0EBFA0, 0x0ECB60] = Unknown
|
||||
[0xBC0]: "Binary", "data_unknown", "../../ucode/us_1.0"
|
||||
|
||||
# -------------------------------------------------------------------------- #
|
||||
|
||||
asset-category: "main"
|
||||
|
||||
# [0x0ECB60, 0x0ECC30] = Assets lookup table.
|
||||
[0xD0]: "Binary", "assets_lut", "lut"
|
||||
|
||||
# -------------------------------------------------------------------------- #
|
||||
|
||||
asset-category: "other"
|
||||
|
||||
# [0x0ECC30, 0x0ECD50] = Unknown
|
||||
[0x120]: "Binary", "unknown", "bin"
|
||||
|
||||
# -------------------------------------------------------------------------- #
|
||||
|
||||
asset-category: "textures_3d"
|
||||
|
||||
# [0x0ECD50, 0x296CA0] = Textures for 3D models
|
||||
include: "extract-textures/textures_3d-us-1.0.extract-config"
|
||||
|
||||
# [0x296CA0, 0x298290] = 3D Textures lookup table
|
||||
[0x15F0]: "Binary", "textures_3d_lut", "textures"
|
||||
[0x15F0]: "Binary", "textures_3d_lut", "lut"
|
||||
|
||||
# -------------------------------------------------------------------------- #
|
||||
|
||||
asset-category: "textures_2d"
|
||||
|
||||
# [0x298290, 0x375D70] = Textures for HUD & billboards
|
||||
include: "extract-textures/textures_2d-us-1.0.extract-config"
|
||||
|
||||
# [0x375D70, 0x376BA0] = 2D Textures lookup table
|
||||
[0xE30]: "Binary", "textures_2d_lut", "textures"
|
||||
[0xE30]: "Binary", "textures_2d_lut", "lut"
|
||||
|
||||
# -------------------------------------------------------------------------- #
|
||||
|
||||
asset-category: "text"
|
||||
|
||||
# [0x376BA0, 0x37E030] = Game Text (English, French, German)
|
||||
[0x7490]: "Binary", "game_text", "text"
|
||||
@@ -86,106 +116,194 @@ include: "extract-textures/textures_2d-us-1.0.extract-config"
|
||||
# [0x3808C8, 0x380BB0] is 0xFF Padding
|
||||
[0x1080]: "Binary", "menu_text_german", "text"
|
||||
|
||||
# -------------------------------------------------------------------------- #
|
||||
|
||||
asset-category: "other"
|
||||
|
||||
# [0x380BB0, 0x380BE0] = Unknown
|
||||
[0x30]: "Binary", "unknown", "bin"
|
||||
|
||||
# [0x380BE0, 0x381AA0] = Billboards (Probably needs to renamed to "Sprites")
|
||||
# -------------------------------------------------------------------------- #
|
||||
|
||||
asset-category: "sprites"
|
||||
|
||||
# [0x380BE0, 0x381AA0] = Sprites
|
||||
include: "extract-billboards/billboards-us-1.0.extract-config"
|
||||
|
||||
# [0x381AA0, 0x381DB0] = Billboards lookup table
|
||||
[0x310]: "Binary", "billboards_lut", "billboards"
|
||||
[0x310]: "Binary", "billboards_lut", "lut"
|
||||
|
||||
# -------------------------------------------------------------------------- #
|
||||
|
||||
asset-category: "other"
|
||||
|
||||
# [0x381DB0, 0x3833A0] = Unknown
|
||||
[0x15F0]: "Binary", "unknown", "bin"
|
||||
|
||||
# -------------------------------------------------------------------------- #
|
||||
|
||||
asset-category: "cheats"
|
||||
|
||||
# [0x3833A0, 0x383760] = Magic Codes
|
||||
[0x3C0]: "Cheats", "magic_codes", "cheats"
|
||||
|
||||
# -------------------------------------------------------------------------- #
|
||||
|
||||
asset-category: "other"
|
||||
|
||||
# [0x383760, 0x383AA0] = Unknown
|
||||
[0x340]: "Binary", "unknown", "bin"
|
||||
|
||||
# -------------------------------------------------------------------------- #
|
||||
|
||||
asset-category: "level_object_maps"
|
||||
|
||||
# [0x383AA0, 0x383CD0] = Object placements map lookup table
|
||||
[0x230]: "Binary", "level_object_maps_lut", "levels"
|
||||
[0x230]: "Binary", "level_object_maps_lut", "lut"
|
||||
|
||||
# [0x383CD0, 0x3A1440] = Object placements map
|
||||
include: "extract-levels/object-maps-us-1.0.extract-config"
|
||||
|
||||
# -------------------------------------------------------------------------- #
|
||||
|
||||
asset-category: "level_headers"
|
||||
|
||||
# [0x3A1440, 0x3A1550] = Level headers lookup table
|
||||
[0x110]: "Binary", "level_headers_lut", "levels"
|
||||
[0x110]: "Binary", "level_headers_lut", "lut"
|
||||
|
||||
# [0x3A1550, 0x3A4820] = Level headers
|
||||
include: "extract-levels/level_headers-us-1.0.extract-config"
|
||||
|
||||
# -------------------------------------------------------------------------- #
|
||||
|
||||
asset-category: "level_names"
|
||||
|
||||
# [0x3A4820, 0x3A4930] = Level names lookup
|
||||
[0x110]: "Binary", "level_names_lut", "levels"
|
||||
[0x110]: "Binary", "level_names_lut", "lut"
|
||||
|
||||
# [0x3A4930, 0x3A5670] = Level names in each language
|
||||
include: "extract-levels/level_names-us-1.0.extract-config"
|
||||
|
||||
# [0x3A5670, 0x3A5760] = Levels lookup table
|
||||
[0xF0]: "Binary", "levels_lut", "levels"
|
||||
# -------------------------------------------------------------------------- #
|
||||
|
||||
# [0x3A5760, 0x54F4B0] = Levels
|
||||
asset-category: "level_models"
|
||||
|
||||
# [0x3A5670, 0x3A5760] = Level models lookup table
|
||||
[0xF0]: "Binary", "level_models_lut", "lut"
|
||||
|
||||
# [0x3A5760, 0x54F4B0] = Level models
|
||||
include: "extract-levels/levels-us-1.0.extract-config"
|
||||
|
||||
# -------------------------------------------------------------------------- #
|
||||
|
||||
asset-category: "object_models"
|
||||
|
||||
# [0x54F4B0, 0x54FAD0] = Objects lookup table
|
||||
[0x620]: "Binary", "object_models_lut", "objects"
|
||||
[0x620]: "Binary", "object_models_lut", "lut"
|
||||
|
||||
# [0x54FAD0, 0x61FA70] = Objects data
|
||||
include: "extract-objects/objects-us-1.0.extract-config"
|
||||
|
||||
# -------------------------------------------------------------------------- #
|
||||
|
||||
asset-category: "other"
|
||||
|
||||
# [0x61FA70, 0x61FD80] = Unknown
|
||||
[0x310]: "Binary", "unknown", "bin"
|
||||
|
||||
# -------------------------------------------------------------------------- #
|
||||
|
||||
asset-category: "object_animations"
|
||||
|
||||
# [0x61FD80, 0x6204E0] = Animations lookup table
|
||||
[0x760]: "Binary", "animations_lut", "animations"
|
||||
[0x760]: "Binary", "animations_lut", "lut"
|
||||
|
||||
# [0x6204E0, 0x6C0050] = Animations
|
||||
include: "extract-animations/animations-us-1.0.extract-config"
|
||||
|
||||
# -------------------------------------------------------------------------- #
|
||||
|
||||
asset-category: "object_headers"
|
||||
|
||||
# [0x6C0050, 0x6C0520] = Object headers lookup table
|
||||
[0x4D0]: "Binary", "object_headers_lut", "objects"
|
||||
[0x4D0]: "Binary", "object_headers_lut", "lut"
|
||||
|
||||
# [0x6C0520, 0x6CBDE0] = Object headers
|
||||
include: "extract-objects/object_headers-us-1.0.extract-config"
|
||||
|
||||
# -------------------------------------------------------------------------- #
|
||||
|
||||
asset-category: "object_other"
|
||||
|
||||
# [0x6CBDE0, 0x6CC1E0] = Level Object Map Id to Object Header Id translatation table.
|
||||
[0x400]: "Binary", "level_object_translate_table", "levels"
|
||||
|
||||
# -------------------------------------------------------------------------- #
|
||||
|
||||
asset-category: "other"
|
||||
|
||||
# [0x6CC1E0, 0x6CC1F0] = Unknown.
|
||||
[0x10]: "Binary", "unknown", "bin"
|
||||
|
||||
# -------------------------------------------------------------------------- #
|
||||
|
||||
asset-category: "audio"
|
||||
|
||||
# [0x6CC1F0, 0x6CC1F0] = Header/Lookup table for the huge audio file.
|
||||
[0x40]: "Binary", "audio_header", "audio"
|
||||
|
||||
# [0x6CC1E0, 0xAA6330] = Audio (Instruments, Sound effects, Music)
|
||||
[0x3DA100]: "Binary", "audio", "audio"
|
||||
|
||||
# -------------------------------------------------------------------------- #
|
||||
|
||||
asset-category: "particles"
|
||||
|
||||
# [0xAA6330, 0xAA6450] = Particles lookup table
|
||||
[0x120]: "Binary", "particles_lut", "particles"
|
||||
[0x120]: "Binary", "particles_lut", "lut"
|
||||
|
||||
# [0xAA6450, 0xAA6AE0] = Particles
|
||||
# [0x690]: "Binary", "particles", "particles"
|
||||
include: "extract-particles/particles-us-1.0.extract-config"
|
||||
|
||||
# -------------------------------------------------------------------------- #
|
||||
|
||||
asset-category: "particle_behaviors"
|
||||
|
||||
# [0xAA6AE0, 0xAA6C20] = Particle Behaviors lookup table
|
||||
[0x140]: "Binary", "particle_behaviors_lut", "particles"
|
||||
[0x140]: "Binary", "particle_behaviors_lut", "lut"
|
||||
|
||||
# [0xAA6C20, 0xAA9B00] = Particle Behaviors
|
||||
include: "extract-particles/particle_behaviors-us-1.0.extract-config"
|
||||
|
||||
# -------------------------------------------------------------------------- #
|
||||
|
||||
asset-category: "fonts"
|
||||
|
||||
# [0xAA9B00, 0xAAAB00] = Fonts
|
||||
include: "extract-fonts/fonts-us-1.0.extract-config"
|
||||
|
||||
# [0xAAAB00, 0xABBDA0] = Unused fontsheet?
|
||||
[0x112A0]: "Binary", "unknown_4bpp_fontsheet_192x732", "fonts"
|
||||
|
||||
# -------------------------------------------------------------------------- #
|
||||
|
||||
asset-category: "other"
|
||||
|
||||
# [0xABBDA0, 0xABBDC0] = Unknown.
|
||||
[0x20]: "Binary", "unknown", "bin"
|
||||
|
||||
# -------------------------------------------------------------------------- #
|
||||
|
||||
asset-category: "tt_ghosts"
|
||||
|
||||
# [0xABBDC0, 0xAC9630] = T.T. Ghosts
|
||||
include: "extract-tt_ghosts/tt_ghosts-us-1.0.extract-config"
|
||||
|
||||
# -------------------------------------------------------------------------- #
|
||||
|
||||
asset-category: "none"
|
||||
|
||||
# [0xAC9630, 0xC00000] = 0xFF padding
|
||||
[0x1369D0]: "NoExtract"
|
||||
|
||||
|
||||
@@ -6,6 +6,12 @@ if [ -d "$ASSETS_DIR" ]; then
|
||||
rm -r $ASSETS_DIR
|
||||
fi
|
||||
|
||||
# Remove ucode directory if it exists.
|
||||
UCODE_DIR="./ucode/"
|
||||
if [ -d "$UCODE_DIR" ]; then
|
||||
rm -r $UCODE_DIR
|
||||
fi
|
||||
|
||||
if ! ./tools/dkr_extractor ./extract-ver ./baseroms .; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
+2
-11
@@ -83,9 +83,8 @@ GLOBAL_ASM("asm/non_matchings/unknown_072E50/func_800766D4.s")
|
||||
GLOBAL_ASM("asm/non_matchings/unknown_072E50/func_80076924.s")
|
||||
GLOBAL_ASM("asm/non_matchings/unknown_072E50/func_8007698C.s")
|
||||
GLOBAL_ASM("asm/non_matchings/unknown_072E50/func_80076A38.s")
|
||||
GLOBAL_ASM("asm/non_matchings/unknown_072E50/func_80076AF4.s")
|
||||
/*
|
||||
// Last function of file
|
||||
//GLOBAL_ASM("asm/non_matchings/unknown_072E50/func_80076AF4.s")
|
||||
|
||||
s32 func_80076AF4(s32 arg0, s32 arg1) {
|
||||
s32* temp;
|
||||
s32 pad;
|
||||
@@ -112,11 +111,3 @@ s32 func_80076AF4(s32 arg0, s32 arg1) {
|
||||
func_80071140(temp);
|
||||
return ret;
|
||||
}
|
||||
*/
|
||||
|
||||
GLOBAL_ASM("asm/non_matchings/unknown_072E50/func_80076BA0.s")
|
||||
GLOBAL_ASM("asm/non_matchings/unknown_072E50/func_80076C58.s")
|
||||
GLOBAL_ASM("asm/non_matchings/unknown_072E50/func_80076E68.s")
|
||||
GLOBAL_ASM("asm/non_matchings/unknown_072E50/func_80076EE8.s")
|
||||
GLOBAL_ASM("asm/non_matchings/unknown_072E50/func_80076F30.s")
|
||||
GLOBAL_ASM("asm/non_matchings/unknown_072E50/func_80076F78.s")
|
||||
|
||||
@@ -0,0 +1,172 @@
|
||||
/* The comment below is needed for this file to be picked up by generate_ld */
|
||||
/* RAM_POS: 0x80072250 */
|
||||
|
||||
#include "types.h"
|
||||
#include "macros.h"
|
||||
|
||||
extern s32 *D_80124200;
|
||||
extern s32 D_80124218;
|
||||
extern s32 D_80124220;
|
||||
extern s32 D_80124238;
|
||||
extern s32 D_80124278;
|
||||
extern s32 *D_80124290;
|
||||
|
||||
// These are both defined in the generated dkr.ld file.
|
||||
extern u8 __ASSETS_LUT_START, __ASSETS_LUT_END; // __ASSETS_LUT_START = 0xECB60, _END = 0xECC30
|
||||
|
||||
void osCreateMesgQueue(s32*, s32*, s32);
|
||||
void osCreatePiManager(s32, s32*, s32*, s32);
|
||||
void *func_80070C9C(s32, s32);
|
||||
s32 func_80071478(s32*);
|
||||
void dmacopy(u32 romOffset, u8 *ramAddress, s32 numBytes);
|
||||
|
||||
void func_80076BA0(void) {
|
||||
u32 size;
|
||||
osCreateMesgQueue(&D_80124278, &D_80124238, 0x10);
|
||||
osCreateMesgQueue(&D_80124220, &D_80124218, 1);
|
||||
osCreatePiManager(0x96, &D_80124278, &D_80124238, 0x10);
|
||||
size = &__ASSETS_LUT_END - &__ASSETS_LUT_START;
|
||||
D_80124290 = (s32*)func_80070C9C(size, 0x7F7F7FFF);
|
||||
func_80071478(D_80124290);
|
||||
dmacopy(&__ASSETS_LUT_START, D_80124290, size);
|
||||
}
|
||||
|
||||
#if 1
|
||||
GLOBAL_ASM("asm/non_matchings/unknown_072E50/func_80076C58.s")
|
||||
#else
|
||||
|
||||
// This function is OK
|
||||
s32 *func_80076C58(u32 arg0) {
|
||||
s32 *temp;
|
||||
s32 *temp2;
|
||||
s32 size;
|
||||
s32 start;
|
||||
if (D_80124290[0] < arg0) {
|
||||
return NULL;
|
||||
}
|
||||
arg0++;
|
||||
temp = arg0 + D_80124290;
|
||||
start = *temp;
|
||||
size = *(temp + 1) - start;
|
||||
temp2 = (s32*)func_80070C9C(size, 0x7F7F7FFF);
|
||||
if (temp2 == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
dmacopy(start + &__ASSETS_LUT_END, temp2, size);
|
||||
return temp2;
|
||||
}
|
||||
|
||||
// Unused?
|
||||
// This has regalloc & stack issues.
|
||||
u8 *func_80076CF0(u32 arg0, s32 arg1) {
|
||||
s32 size;
|
||||
s32 sp2C;
|
||||
s32 start;
|
||||
s32 *temp;
|
||||
u8 *temp_a1;
|
||||
u8 *temp_v0_2;
|
||||
u8 *temp_v0_3;
|
||||
u8 *temp_a0;
|
||||
|
||||
if (D_80124290[0] < arg0) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
arg0++;
|
||||
temp = arg0 + D_80124290;
|
||||
start = *temp;
|
||||
size = *(temp + 1) - start;
|
||||
|
||||
temp_v0_2 = (u8*)func_80070C9C(8, 0xFFFFFFFF);
|
||||
temp_a0 = start + &__ASSETS_LUT_END;
|
||||
|
||||
dmacopy(temp_a0, temp_v0_2, 8);
|
||||
sp2C = byteswap32(temp_v0_2) + arg1;
|
||||
func_80071140(temp_v0_2);
|
||||
temp_v0_3 = (u8*)func_80070C9C(sp2C + arg1, 0x7F7F7FFF);
|
||||
|
||||
if (temp_v0_3 == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
temp_a1 = (temp_v0_3 + sp2C) - size;
|
||||
dmacopy(temp_a0, temp_a1, size);
|
||||
func_800C6218(temp_a1, temp_v0_3);
|
||||
return temp_v0_3;
|
||||
}
|
||||
|
||||
// Unused?
|
||||
// This function is OK
|
||||
s32 func_80076DFC(u32 arg0, s32 *arg1) {
|
||||
s32 start;
|
||||
s32 size;
|
||||
u8 *temp;
|
||||
if (D_80124290[0] < arg0) {
|
||||
return 0;
|
||||
}
|
||||
arg0++;
|
||||
temp = arg0 + D_80124290;
|
||||
start = *temp;
|
||||
size = *(temp + 1) - start;
|
||||
dmacopy(start + &__ASSETS_LUT_END, arg1, size);
|
||||
return size;
|
||||
}
|
||||
#endif
|
||||
|
||||
s32 func_80076E68(u32 arg0, s32 *arg1, s32 arg2, s32 arg3) {
|
||||
s32 *temp;
|
||||
s32 temp2;
|
||||
|
||||
if (arg3 == 0 || D_80124290[0] < arg0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
arg0++;
|
||||
temp = arg0 + D_80124290;
|
||||
temp2 = *temp + arg2;
|
||||
dmacopy(temp2 + &__ASSETS_LUT_END, arg1, arg3);
|
||||
return arg3;
|
||||
}
|
||||
|
||||
u8 *func_80076EE8(u32 arg0, s32 arg1) {
|
||||
s32 *temp;
|
||||
s32 temp2;
|
||||
s32 temp3;
|
||||
if (D_80124290[0] < arg0) {
|
||||
return NULL;
|
||||
}
|
||||
arg0++;
|
||||
temp = arg0 + D_80124290;
|
||||
temp3 = *temp + arg1;
|
||||
return temp3 + &__ASSETS_LUT_END;
|
||||
}
|
||||
|
||||
s32 func_80076F30(u32 arg0) {
|
||||
s32 *temp;
|
||||
|
||||
if (D_80124290[0] < arg0) {
|
||||
return 0;
|
||||
}
|
||||
arg0++;
|
||||
temp = arg0 + D_80124290;
|
||||
return *(temp + 1) - *temp;
|
||||
}
|
||||
|
||||
#define MAX_TRANSFER_SIZE 0x5000 // Why did they pick 20 KB as the transfer limit?
|
||||
|
||||
void dmacopy(u32 romOffset, u8 *ramAddress, s32 numBytes) {
|
||||
s32 sp4C;
|
||||
s32 numBytesToDMA;
|
||||
|
||||
osInvalDCache(ramAddress, numBytes);
|
||||
numBytesToDMA = MAX_TRANSFER_SIZE;
|
||||
while(numBytes > 0) {
|
||||
if (numBytes < numBytesToDMA) {
|
||||
numBytesToDMA = numBytes;
|
||||
}
|
||||
osPiStartDma(&D_80124200, 0, 0, romOffset, ramAddress, numBytesToDMA, &D_80124220);
|
||||
osRecvMesg(&D_80124220, &sp4C, 1);
|
||||
numBytes -= numBytesToDMA;
|
||||
romOffset += numBytesToDMA;
|
||||
ramAddress += numBytesToDMA;
|
||||
}
|
||||
}
|
||||
+36
-439
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user