From 01aaf3d51990ada9f49d288c10b2b206571d17fe Mon Sep 17 00:00:00 2001 From: David Benepe Date: Mon, 19 Jul 2021 16:36:12 -0500 Subject: [PATCH] Decompiled functions in textures_sprites --- asm/non_matchings/font/func_800C4170.s | 2 +- asm/non_matchings/font/func_800C422C.s | 2 +- .../{func_80071850.s => func_800718A4.s} | 33 +- asm/non_matchings/menu/func_8009C6D4.s | 2 +- asm/non_matchings/particles/func_800B0698.s | 2 +- asm/non_matchings/particles/func_800B0BAC.s | 2 +- asm/non_matchings/particles/func_800B1130.s | 2 +- asm/non_matchings/particles/func_800B2040.s | 10 +- .../build_tex_display_list.s} | 2 +- .../free_sprite.s} | 12 +- .../free_texture.s} | 14 +- .../func_8007AC70.s | 32 +- .../func_8007B380.s} | 17 +- .../func_8007B46C.s | 0 .../func_8007B4E8.s | 0 .../func_8007BA5C.s | 0 .../func_8007BF34.s | 0 .../func_8007C12C.s | 40 +- .../func_8007C660.s} | 104 +--- .../textures_sprites/func_8007C860.s | 20 + .../func_8007CA68.s | 20 +- .../func_8007CDC0.s | 0 .../func_8007EF80.s | 0 .../func_8007F24C.s | 0 .../func_8007F460.s | 0 .../func_8007F594.s | 0 .../get_texture_size_from_id.s | 66 +++ .../load_sprite_info.s} | 16 +- .../load_texture.s} | 90 ++-- .../unknown_00BC20/func_8000B020.s | 2 +- .../unknown_00BC20/func_8000B290.s | 4 +- .../unknown_00BC20/func_8000EA54.s | 12 +- .../unknown_00BC20/func_8000F648.s | 4 +- .../unknown_00BC20/func_8000FBCC.s | 2 +- .../unknown_00BC20/func_8000FC6C.s | 2 +- .../unknown_00BC20/func_800101AC.s | 10 +- .../unknown_0255E0/func_8002C0C4.s | 6 +- .../unknown_0255E0/func_8002C7D4.s | 4 +- .../unknown_05F690/free_object_model.s | 2 +- .../unknown_05F690/func_8005F99C.s | 2 +- asm/non_matchings/unknown_06B2B0/load_level.s | 2 +- .../unknown_07B870/func_8007B3D0.s | 29 -- .../unknown_07B870/func_8007B4C8.s | 10 - .../unknown_07B870/func_8007F1E8.s | 29 -- .../unknown_07B870/func_8007F414.s | 23 - .../unknown_09F8F0/func_800A003C.s | 4 +- .../unknown_09F8F0/func_800A1428.s | 56 --- .../unknown_09F8F0/func_800A8474.s | 16 +- .../unknown_09F8F0/func_800AA600.s | 2 +- .../unknown_09F8F0/func_800AB35C.s | 2 +- .../unknown_09F8F0/func_800ABB34.s | 2 +- .../unknown_09F8F0/func_800AD144.s | 4 +- asm/non_matchings/waves/func_800B7EB4.s | 2 +- include/f3ddkr.h | 14 + include/structs.h | 26 +- src/font.c | 4 +- src/memory.c | 41 +- src/menu.c | 8 +- src/particles.c | 2 +- src/printf.c | 6 +- src/{unknown_07B870.c => textures_sprites.c} | 475 ++++++++++++++++-- src/{unknown_07B870.h => textures_sprites.h} | 6 +- src/unknown_00BC20.c | 4 +- src/unknown_060450.c | 2 +- src/unknown_06B2B0.c | 4 +- src/unknown_09F8F0.c | 61 ++- src/unknown_0ABDF0.c | 8 +- src/waves.c | 4 +- 68 files changed, 841 insertions(+), 543 deletions(-) rename asm/non_matchings/memory/{func_80071850.s => func_800718A4.s} (81%) rename asm/non_matchings/{unknown_07B870/func_8007D0F4.s => textures_sprites/build_tex_display_list.s} (99%) rename asm/non_matchings/{unknown_07B870/func_8007CCB0.s => textures_sprites/free_sprite.s} (89%) rename asm/non_matchings/{unknown_07B870/func_8007B2BC.s => textures_sprites/free_texture.s} (80%) rename asm/non_matchings/{unknown_07B870 => textures_sprites}/func_8007AC70.s (81%) rename asm/non_matchings/{unknown_07B870/func_8007B374.s => textures_sprites/func_8007B380.s} (62%) rename asm/non_matchings/{unknown_07B870 => textures_sprites}/func_8007B46C.s (100%) rename asm/non_matchings/{unknown_07B870 => textures_sprites}/func_8007B4E8.s (100%) rename asm/non_matchings/{unknown_07B870 => textures_sprites}/func_8007BA5C.s (100%) rename asm/non_matchings/{unknown_07B870 => textures_sprites}/func_8007BF34.s (100%) rename asm/non_matchings/{unknown_07B870 => textures_sprites}/func_8007C12C.s (91%) rename asm/non_matchings/{unknown_07B870/func_8007C57C.s => textures_sprites/func_8007C660.s} (60%) create mode 100644 asm/non_matchings/textures_sprites/func_8007C860.s rename asm/non_matchings/{unknown_07B870 => textures_sprites}/func_8007CA68.s (91%) rename asm/non_matchings/{unknown_07B870 => textures_sprites}/func_8007CDC0.s (100%) rename asm/non_matchings/{unknown_07B870 => textures_sprites}/func_8007EF80.s (100%) rename asm/non_matchings/{unknown_07B870 => textures_sprites}/func_8007F24C.s (100%) rename asm/non_matchings/{unknown_07B870 => textures_sprites}/func_8007F460.s (100%) rename asm/non_matchings/{unknown_07B870 => textures_sprites}/func_8007F594.s (100%) create mode 100644 asm/non_matchings/textures_sprites/get_texture_size_from_id.s rename asm/non_matchings/{unknown_07B870/func_8007C8E0.s => textures_sprites/load_sprite_info.s} (90%) rename asm/non_matchings/{unknown_07B870/func_8007AE74.s => textures_sprites/load_texture.s} (78%) delete mode 100644 asm/non_matchings/unknown_07B870/func_8007B3D0.s delete mode 100644 asm/non_matchings/unknown_07B870/func_8007B4C8.s delete mode 100644 asm/non_matchings/unknown_07B870/func_8007F1E8.s delete mode 100644 asm/non_matchings/unknown_07B870/func_8007F414.s delete mode 100644 asm/non_matchings/unknown_09F8F0/func_800A1428.s rename src/{unknown_07B870.c => textures_sprites.c} (74%) rename src/{unknown_07B870.h => textures_sprites.h} (52%) diff --git a/asm/non_matchings/font/func_800C4170.s b/asm/non_matchings/font/func_800C4170.s index 6220e2eb..45969de3 100644 --- a/asm/non_matchings/font/func_800C4170.s +++ b/asm/non_matchings/font/func_800C4170.s @@ -28,7 +28,7 @@ glabel func_800C4170 /* 0C4DD8 800C41D8 86240040 */ lh $a0, 0x40($s1) /* 0C4DDC 800C41DC 004B9021 */ addu $s2, $v0, $t3 .L800C41E0: -/* 0C4DE0 800C41E0 0C01EB9D */ jal func_8007AE74 +/* 0C4DE0 800C41E0 0C01EB9D */ jal load_texture /* 0C4DE4 800C41E4 00000000 */ nop /* 0C4DE8 800C41E8 26100002 */ addiu $s0, $s0, 2 /* 0C4DEC 800C41EC 2A010040 */ slti $at, $s0, 0x40 diff --git a/asm/non_matchings/font/func_800C422C.s b/asm/non_matchings/font/func_800C422C.s index 20e2149f..2d1af972 100644 --- a/asm/non_matchings/font/func_800C422C.s +++ b/asm/non_matchings/font/func_800C422C.s @@ -28,7 +28,7 @@ glabel func_800C422C /* 0C4E94 800C4294 024A8021 */ addu $s0, $s2, $t2 .L800C4298: /* 0C4E98 800C4298 8E040080 */ lw $a0, 0x80($s0) -/* 0C4E9C 800C429C 0C01ECAF */ jal func_8007B2BC +/* 0C4E9C 800C429C 0C01ECAF */ jal free_texture /* 0C4EA0 800C42A0 00000000 */ nop /* 0C4EA4 800C42A4 26310001 */ addiu $s1, $s1, 1 /* 0C4EA8 800C42A8 2A210020 */ slti $at, $s1, 0x20 diff --git a/asm/non_matchings/memory/func_80071850.s b/asm/non_matchings/memory/func_800718A4.s similarity index 81% rename from asm/non_matchings/memory/func_80071850.s rename to asm/non_matchings/memory/func_800718A4.s index 5d27da02..57c30ffb 100644 --- a/asm/non_matchings/memory/func_80071850.s +++ b/asm/non_matchings/memory/func_800718A4.s @@ -1,31 +1,5 @@ -glabel func_80071850 -/* 072450 80071850 3083000F */ andi $v1, $a0, 0xf -/* 072454 80071854 18600003 */ blez $v1, .L80071864 -/* 072458 80071858 00000000 */ nop -/* 07245C 8007185C 00832023 */ subu $a0, $a0, $v1 -/* 072460 80071860 24840010 */ addiu $a0, $a0, 0x10 -.L80071864: -/* 072464 80071864 03E00008 */ jr $ra -/* 072468 80071868 00801025 */ move $v0, $a0 - -/* 07246C 8007186C 30830007 */ andi $v1, $a0, 7 -/* 072470 80071870 18600003 */ blez $v1, .L80071880 -/* 072474 80071874 00000000 */ nop -/* 072478 80071878 00832023 */ subu $a0, $a0, $v1 -/* 07247C 8007187C 24840008 */ addiu $a0, $a0, 8 -.L80071880: -/* 072480 80071880 03E00008 */ jr $ra -/* 072484 80071884 00801025 */ move $v0, $a0 - -/* 072488 80071888 30830003 */ andi $v1, $a0, 3 -/* 07248C 8007188C 18600003 */ blez $v1, .L8007189C -/* 072490 80071890 00000000 */ nop -/* 072494 80071894 00832023 */ subu $a0, $a0, $v1 -/* 072498 80071898 24840004 */ addiu $a0, $a0, 4 -.L8007189C: -/* 07249C 8007189C 03E00008 */ jr $ra -/* 0724A0 800718A0 00801025 */ move $v0, $a0 - +# Unused +glabel func_800718A4 /* 0724A4 800718A4 27BDFDC8 */ addiu $sp, $sp, -0x238 /* 0724A8 800718A8 AFB00004 */ sw $s0, 4($sp) /* 0724AC 800718AC 00001025 */ move $v0, $zero @@ -133,5 +107,4 @@ glabel func_80071850 /* 072618 80071A18 00000000 */ nop .L80071A1C: /* 07261C 80071A1C 03E00008 */ jr $ra -/* 072620 80071A20 27BD0238 */ addiu $sp, $sp, 0x238 - +/* 072620 80071A20 27BD0238 */ addiu $sp, $sp, 0x238 \ No newline at end of file diff --git a/asm/non_matchings/menu/func_8009C6D4.s b/asm/non_matchings/menu/func_8009C6D4.s index 84c6f7ec..29c8047f 100644 --- a/asm/non_matchings/menu/func_8009C6D4.s +++ b/asm/non_matchings/menu/func_8009C6D4.s @@ -61,7 +61,7 @@ glabel func_8009C6D4 /* 09D3B0 8009C7B0 1541000A */ bne $t2, $at, .L8009C7DC /* 09D3B4 8009C7B4 304C8000 */ andi $t4, $v0, 0x8000 /* 09D3B8 8009C7B8 30443FFF */ andi $a0, $v0, 0x3fff -/* 09D3BC 8009C7BC 0C01EB9D */ jal func_8007AE74 +/* 09D3BC 8009C7BC 0C01EB9D */ jal load_texture /* 09D3C0 8009C7C0 AFA70038 */ sw $a3, 0x38($sp) /* 09D3C4 8009C7C4 8FA70038 */ lw $a3, 0x38($sp) /* 09D3C8 8009C7C8 3C018012 */ lui $at, %hi(D_80126550) # $at, 0x8012 diff --git a/asm/non_matchings/particles/func_800B0698.s b/asm/non_matchings/particles/func_800B0698.s index 209bcdc0..e1ac4947 100644 --- a/asm/non_matchings/particles/func_800B0698.s +++ b/asm/non_matchings/particles/func_800B0698.s @@ -289,7 +289,7 @@ glabel func_800B0698 /* 0B16D0 800B0AD0 ACA00000 */ sw $zero, ($a1) .L800B0AD4: /* 0B16D4 800B0AD4 AFA3002C */ sw $v1, 0x2c($sp) -/* 0B16D8 800B0AD8 0C01EB9D */ jal func_8007AE74 +/* 0B16D8 800B0AD8 0C01EB9D */ jal load_texture /* 0B16DC 800B0ADC AFA50024 */ sw $a1, 0x24($sp) /* 0B16E0 800B0AE0 8FA50024 */ lw $a1, 0x24($sp) /* 0B16E4 800B0AE4 8FA3002C */ lw $v1, 0x2c($sp) diff --git a/asm/non_matchings/particles/func_800B0BAC.s b/asm/non_matchings/particles/func_800B0BAC.s index a7a38706..e50ac921 100644 --- a/asm/non_matchings/particles/func_800B0BAC.s +++ b/asm/non_matchings/particles/func_800B0BAC.s @@ -216,7 +216,7 @@ glabel func_800B0BAC /* 0B1AD0 800B0ED0 AFA6003C */ sw $a2, 0x3c($sp) /* 0B1AD4 800B0ED4 AFA70030 */ sw $a3, 0x30($sp) /* 0B1AD8 800B0ED8 AFA80034 */ sw $t0, 0x34($sp) -/* 0B1ADC 800B0EDC 0C01EB9D */ jal func_8007AE74 +/* 0B1ADC 800B0EDC 0C01EB9D */ jal load_texture /* 0B1AE0 800B0EE0 AFA90024 */ sw $t1, 0x24($sp) /* 0B1AE4 800B0EE4 8FA3002C */ lw $v1, 0x2c($sp) /* 0B1AE8 800B0EE8 8FA6003C */ lw $a2, 0x3c($sp) diff --git a/asm/non_matchings/particles/func_800B1130.s b/asm/non_matchings/particles/func_800B1130.s index 52bf916d..eab8171f 100644 --- a/asm/non_matchings/particles/func_800B1130.s +++ b/asm/non_matchings/particles/func_800B1130.s @@ -465,7 +465,7 @@ glabel func_800B1130 /* 0B23D0 800B17D0 10600044 */ beqz $v1, .L800B18E4 /* 0B23D4 800B17D4 83AB0023 */ lb $t3, 0x23($sp) /* 0B23D8 800B17D8 84E40004 */ lh $a0, 4($a3) -/* 0B23DC 800B17DC 0C01EB9D */ jal func_8007AE74 +/* 0B23DC 800B17DC 0C01EB9D */ jal load_texture /* 0B23E0 800B17E0 AFA30030 */ sw $v1, 0x30($sp) /* 0B23E4 800B17E4 8FA30030 */ lw $v1, 0x30($sp) /* 0B23E8 800B17E8 8FA60044 */ lw $a2, 0x44($sp) diff --git a/asm/non_matchings/particles/func_800B2040.s b/asm/non_matchings/particles/func_800B2040.s index 2a641f99..0b8a8226 100644 --- a/asm/non_matchings/particles/func_800B2040.s +++ b/asm/non_matchings/particles/func_800B2040.s @@ -35,7 +35,7 @@ glabel func_800B2040 /* 0B2CA8 800B20A8 00000000 */ nop /* 0B2CAC 800B20AC 10800008 */ beqz $a0, .L800B20D0 /* 0B2CB0 800B20B0 244FFFFF */ addiu $t7, $v0, -1 -/* 0B2CB4 800B20B4 0C01F32C */ jal func_8007CCB0 +/* 0B2CB4 800B20B4 0C01F32C */ jal free_sprite /* 0B2CB8 800B20B8 AFA50018 */ sw $a1, 0x18($sp) /* 0B2CBC 800B20BC 3C02800E */ lui $v0, %hi(D_800E2CB8) # $v0, 0x800e /* 0B2CC0 800B20C0 8C422CB8 */ lw $v0, %lo(D_800E2CB8)($v0) @@ -59,7 +59,7 @@ glabel L800B20E0 /* 0B2D00 800B2100 00000000 */ nop /* 0B2D04 800B2104 10800008 */ beqz $a0, .L800B2128 /* 0B2D08 800B2108 2459FFFF */ addiu $t9, $v0, -1 -/* 0B2D0C 800B210C 0C01ECAF */ jal func_8007B2BC +/* 0B2D0C 800B210C 0C01ECAF */ jal free_texture /* 0B2D10 800B2110 AFA50018 */ sw $a1, 0x18($sp) /* 0B2D14 800B2114 3C02800E */ lui $v0, %hi(D_800E2CA0) # $v0, 0x800e /* 0B2D18 800B2118 8C422CA0 */ lw $v0, %lo(D_800E2CA0)($v0) @@ -83,7 +83,7 @@ glabel L800B2138 /* 0B2D58 800B2158 00000000 */ nop /* 0B2D5C 800B215C 10800008 */ beqz $a0, .L800B2180 /* 0B2D60 800B2160 2449FFFF */ addiu $t1, $v0, -1 -/* 0B2D64 800B2164 0C01ECAF */ jal func_8007B2BC +/* 0B2D64 800B2164 0C01ECAF */ jal free_texture /* 0B2D68 800B2168 AFA50018 */ sw $a1, 0x18($sp) /* 0B2D6C 800B216C 3C02800E */ lui $v0, %hi(D_800E2CAC) # $v0, 0x800e /* 0B2D70 800B2170 8C422CAC */ lw $v0, %lo(D_800E2CAC)($v0) @@ -107,7 +107,7 @@ glabel L800B2190 /* 0B2DB0 800B21B0 00000000 */ nop /* 0B2DB4 800B21B4 10800008 */ beqz $a0, .L800B21D8 /* 0B2DB8 800B21B8 244BFFFF */ addiu $t3, $v0, -1 -/* 0B2DBC 800B21BC 0C01ECAF */ jal func_8007B2BC +/* 0B2DBC 800B21BC 0C01ECAF */ jal free_texture /* 0B2DC0 800B21C0 AFA50018 */ sw $a1, 0x18($sp) /* 0B2DC4 800B21C4 3C02800E */ lui $v0, %hi(D_800E2CC4) # $v0, 0x800e /* 0B2DC8 800B21C8 8C422CC4 */ lw $v0, %lo(D_800E2CC4)($v0) @@ -135,7 +135,7 @@ glabel L800B21E8 /* 0B2E18 800B2218 00000000 */ nop /* 0B2E1C 800B221C 10800005 */ beqz $a0, .L800B2234 /* 0B2E20 800B2220 00000000 */ nop -/* 0B2E24 800B2224 0C01ECAF */ jal func_8007B2BC +/* 0B2E24 800B2224 0C01ECAF */ jal free_texture /* 0B2E28 800B2228 AFA50018 */ sw $a1, 0x18($sp) /* 0B2E2C 800B222C 8FA50018 */ lw $a1, 0x18($sp) /* 0B2E30 800B2230 00000000 */ nop diff --git a/asm/non_matchings/unknown_07B870/func_8007D0F4.s b/asm/non_matchings/textures_sprites/build_tex_display_list.s similarity index 99% rename from asm/non_matchings/unknown_07B870/func_8007D0F4.s rename to asm/non_matchings/textures_sprites/build_tex_display_list.s index 82fd4f67..3e233e02 100644 --- a/asm/non_matchings/unknown_07B870/func_8007D0F4.s +++ b/asm/non_matchings/textures_sprites/build_tex_display_list.s @@ -1,4 +1,4 @@ -glabel func_8007D0F4 +glabel build_tex_display_list /* 07DCF4 8007D0F4 27BDFD80 */ addiu $sp, $sp, -0x280 /* 07DCF8 8007D0F8 AFBF001C */ sw $ra, 0x1c($sp) /* 07DCFC 8007D0FC AFB10018 */ sw $s1, 0x18($sp) diff --git a/asm/non_matchings/unknown_07B870/func_8007CCB0.s b/asm/non_matchings/textures_sprites/free_sprite.s similarity index 89% rename from asm/non_matchings/unknown_07B870/func_8007CCB0.s rename to asm/non_matchings/textures_sprites/free_sprite.s index 8410712e..854ee9f2 100644 --- a/asm/non_matchings/unknown_07B870/func_8007CCB0.s +++ b/asm/non_matchings/textures_sprites/free_sprite.s @@ -1,4 +1,4 @@ -glabel func_8007CCB0 +glabel free_sprite /* 07D8B0 8007CCB0 27BDFFD8 */ addiu $sp, $sp, -0x28 /* 07D8B4 8007CCB4 AFB2001C */ sw $s2, 0x1c($sp) /* 07D8B8 8007CCB8 00809025 */ move $s2, $a0 @@ -18,8 +18,8 @@ glabel func_8007CCB0 /* 07D8F0 8007CCF0 8C636358 */ lw $v1, %lo(D_80126358)($v1) /* 07D8F4 8007CCF4 00001025 */ move $v0, $zero /* 07D8F8 8007CCF8 1860002A */ blez $v1, .L8007CDA4 -/* 07D8FC 8007CCFC 3C048012 */ lui $a0, %hi(D_8012634C) # $a0, 0x8012 -/* 07D900 8007CD00 8C84634C */ lw $a0, %lo(D_8012634C)($a0) +/* 07D8FC 8007CCFC 3C048012 */ lui $a0, %hi(gSpriteCache) # $a0, 0x8012 +/* 07D900 8007CD00 8C84634C */ lw $a0, %lo(gSpriteCache)($a0) /* 07D904 8007CD04 00000000 */ nop /* 07D908 8007CD08 00409825 */ move $s3, $v0 .L8007CD0C: @@ -38,7 +38,7 @@ glabel func_8007CCB0 /* 07D938 8007CD38 00000000 */ nop /* 07D93C 8007CD3C 01716021 */ addu $t4, $t3, $s1 /* 07D940 8007CD40 8D840000 */ lw $a0, ($t4) -/* 07D944 8007CD44 0C01ECAF */ jal func_8007B2BC +/* 07D944 8007CD44 0C01ECAF */ jal free_texture /* 07D948 8007CD48 00000000 */ nop /* 07D94C 8007CD4C 864D0002 */ lh $t5, 2($s2) /* 07D950 8007CD50 26100001 */ addiu $s0, $s0, 1 @@ -48,8 +48,8 @@ glabel func_8007CCB0 .L8007CD60: /* 07D960 8007CD60 0C01C450 */ jal free_from_memory_pool /* 07D964 8007CD64 02402025 */ move $a0, $s2 -/* 07D968 8007CD68 3C028012 */ lui $v0, %hi(D_8012634C) # $v0, 0x8012 -/* 07D96C 8007CD6C 2442634C */ addiu $v0, %lo(D_8012634C) # addiu $v0, $v0, 0x634c +/* 07D968 8007CD68 3C028012 */ lui $v0, %hi(gSpriteCache) # $v0, 0x8012 +/* 07D96C 8007CD6C 2442634C */ addiu $v0, %lo(gSpriteCache) # addiu $v0, $v0, 0x634c /* 07D970 8007CD70 8C4E0000 */ lw $t6, ($v0) /* 07D974 8007CD74 2403FFFF */ li $v1, -1 /* 07D978 8007CD78 01D37821 */ addu $t7, $t6, $s3 diff --git a/asm/non_matchings/unknown_07B870/func_8007B2BC.s b/asm/non_matchings/textures_sprites/free_texture.s similarity index 80% rename from asm/non_matchings/unknown_07B870/func_8007B2BC.s rename to asm/non_matchings/textures_sprites/free_texture.s index 90388c10..4e52e991 100644 --- a/asm/non_matchings/unknown_07B870/func_8007B2BC.s +++ b/asm/non_matchings/textures_sprites/free_texture.s @@ -1,4 +1,4 @@ -glabel func_8007B2BC +glabel free_texture /* 07BEBC 8007B2BC 27BDFFD8 */ addiu $sp, $sp, -0x28 /* 07BEC0 8007B2C0 AFBF0014 */ sw $ra, 0x14($sp) /* 07BEC4 8007B2C4 10800027 */ beqz $a0, .L8007B364 @@ -9,12 +9,12 @@ glabel func_8007B2BC /* 07BED8 8007B2D8 31F800FF */ andi $t8, $t7, 0xff /* 07BEDC 8007B2DC 1F000021 */ bgtz $t8, .L8007B364 /* 07BEE0 8007B2E0 A08F0005 */ sb $t7, 5($a0) -/* 07BEE4 8007B2E4 3C048012 */ lui $a0, %hi(D_80126330) # $a0, 0x8012 -/* 07BEE8 8007B2E8 8C846330 */ lw $a0, %lo(D_80126330)($a0) +/* 07BEE4 8007B2E4 3C048012 */ lui $a0, %hi(gNumberOfLoadedTextures) # $a0, 0x8012 +/* 07BEE8 8007B2E8 8C846330 */ lw $a0, %lo(gNumberOfLoadedTextures)($a0) /* 07BEEC 8007B2EC 00001025 */ move $v0, $zero /* 07BEF0 8007B2F0 1880001C */ blez $a0, .L8007B364 -/* 07BEF4 8007B2F4 3C058012 */ lui $a1, %hi(D_80126328) # $a1, 0x8012 -/* 07BEF8 8007B2F8 8CA56328 */ lw $a1, %lo(D_80126328)($a1) +/* 07BEF4 8007B2F4 3C058012 */ lui $a1, %hi(gTextureCache) # $a1, 0x8012 +/* 07BEF8 8007B2F8 8CA56328 */ lw $a1, %lo(gTextureCache)($a1) /* 07BEFC 8007B2FC 00000000 */ nop /* 07BF00 8007B300 0002C8C0 */ sll $t9, $v0, 3 .L8007B304: @@ -26,8 +26,8 @@ glabel func_8007B2BC /* 07BF18 8007B318 00C02025 */ move $a0, $a2 /* 07BF1C 8007B31C 0C01C450 */ jal free_from_memory_pool /* 07BF20 8007B320 AFB90018 */ sw $t9, 0x18($sp) -/* 07BF24 8007B324 3C028012 */ lui $v0, %hi(D_80126328) # $v0, 0x8012 -/* 07BF28 8007B328 24426328 */ addiu $v0, %lo(D_80126328) # addiu $v0, $v0, 0x6328 +/* 07BF24 8007B324 3C028012 */ lui $v0, %hi(gTextureCache) # $v0, 0x8012 +/* 07BF28 8007B328 24426328 */ addiu $v0, %lo(gTextureCache) # addiu $v0, $v0, 0x6328 /* 07BF2C 8007B32C 8FA30018 */ lw $v1, 0x18($sp) /* 07BF30 8007B330 8C4A0000 */ lw $t2, ($v0) /* 07BF34 8007B334 2404FFFF */ li $a0, -1 diff --git a/asm/non_matchings/unknown_07B870/func_8007AC70.s b/asm/non_matchings/textures_sprites/func_8007AC70.s similarity index 81% rename from asm/non_matchings/unknown_07B870/func_8007AC70.s rename to asm/non_matchings/textures_sprites/func_8007AC70.s index 74ab26ce..ee41aa14 100644 --- a/asm/non_matchings/unknown_07B870/func_8007AC70.s +++ b/asm/non_matchings/textures_sprites/func_8007AC70.s @@ -5,18 +5,18 @@ glabel func_8007AC70 /* 07B87C 8007AC7C 34A5FFFF */ ori $a1, (0xFF00FFFF & 0xFFFF) # ori $a1, $a1, 0xffff /* 07B880 8007AC80 0C01C327 */ jal allocate_from_main_pool_safe /* 07B884 8007AC84 240415E0 */ li $a0, 5600 -/* 07B888 8007AC88 3C018012 */ lui $at, %hi(D_80126328) # $at, 0x8012 +/* 07B888 8007AC88 3C018012 */ lui $at, %hi(gTextureCache) # $at, 0x8012 /* 07B88C 8007AC8C 3C05FF00 */ lui $a1, (0xFF00FFFF >> 16) # lui $a1, 0xff00 -/* 07B890 8007AC90 AC226328 */ sw $v0, %lo(D_80126328)($at) +/* 07B890 8007AC90 AC226328 */ sw $v0, %lo(gTextureCache)($at) /* 07B894 8007AC94 34A5FFFF */ ori $a1, (0xFF00FFFF & 0xFFFF) # ori $a1, $a1, 0xffff /* 07B898 8007AC98 0C01C327 */ jal allocate_from_main_pool_safe /* 07B89C 8007AC9C 24040280 */ li $a0, 640 -/* 07B8A0 8007ACA0 3C018012 */ lui $at, %hi(D_8012632C) # $at, 0x8012 -/* 07B8A4 8007ACA4 AC22632C */ sw $v0, %lo(D_8012632C)($at) -/* 07B8A8 8007ACA8 3C018012 */ lui $at, %hi(D_80126330) # $at, 0x8012 -/* 07B8AC 8007ACAC AC206330 */ sw $zero, %lo(D_80126330)($at) -/* 07B8B0 8007ACB0 3C018012 */ lui $at, %hi(D_80126340) # $at, 0x8012 -/* 07B8B4 8007ACB4 AC206340 */ sw $zero, %lo(D_80126340)($at) +/* 07B8A0 8007ACA0 3C018012 */ lui $at, %hi(gCiPalettes) # $at, 0x8012 +/* 07B8A4 8007ACA4 AC22632C */ sw $v0, %lo(gCiPalettes)($at) +/* 07B8A8 8007ACA8 3C018012 */ lui $at, %hi(gNumberOfLoadedTextures) # $at, 0x8012 +/* 07B8AC 8007ACAC AC206330 */ sw $zero, %lo(gNumberOfLoadedTextures)($at) +/* 07B8B0 8007ACB0 3C018012 */ lui $at, %hi(gCiPalettesSize) # $at, 0x8012 +/* 07B8B4 8007ACB4 AC206340 */ sw $zero, %lo(gCiPalettesSize)($at) /* 07B8B8 8007ACB8 0C01DB16 */ jal load_asset_section_from_rom /* 07B8BC 8007ACBC 24040005 */ li $a0, 5 /* 07B8C0 8007ACC0 3C058012 */ lui $a1, %hi(D_80126320) # $a1, 0x8012 @@ -60,22 +60,22 @@ glabel func_8007AC70 /* 07B948 8007AD48 24040320 */ li $a0, 800 /* 07B94C 8007AD4C 0C01C327 */ jal allocate_from_main_pool_safe /* 07B950 8007AD50 34A5FFFF */ ori $a1, (0xFF00FFFF & 0xFFFF) # ori $a1, $a1, 0xffff -/* 07B954 8007AD54 3C018012 */ lui $at, %hi(D_8012634C) # $at, 0x8012 +/* 07B954 8007AD54 3C018012 */ lui $at, %hi(gSpriteCache) # $at, 0x8012 /* 07B958 8007AD58 3C05FF00 */ lui $a1, (0xFF00FFFF >> 16) # lui $a1, 0xff00 -/* 07B95C 8007AD5C AC22634C */ sw $v0, %lo(D_8012634C)($at) +/* 07B95C 8007AD5C AC22634C */ sw $v0, %lo(gSpriteCache)($at) /* 07B960 8007AD60 34A5FFFF */ ori $a1, (0xFF00FFFF & 0xFFFF) # ori $a1, $a1, 0xffff /* 07B964 8007AD64 0C01C327 */ jal allocate_from_main_pool_safe /* 07B968 8007AD68 24040200 */ li $a0, 512 -/* 07B96C 8007AD6C 3C018012 */ lui $at, %hi(D_80126350) # $at, 0x8012 -/* 07B970 8007AD70 AC226350 */ sw $v0, %lo(D_80126350)($at) +/* 07B96C 8007AD6C 3C018012 */ lui $at, %hi(gCurrentSprite) # $at, 0x8012 +/* 07B970 8007AD70 AC226350 */ sw $v0, %lo(gCurrentSprite)($at) /* 07B974 8007AD74 3C018012 */ lui $at, %hi(D_80126358) # $at, 0x8012 /* 07B978 8007AD78 AC206358 */ sw $zero, %lo(D_80126358)($at) /* 07B97C 8007AD7C 0C01DB16 */ jal load_asset_section_from_rom /* 07B980 8007AD80 2404000D */ li $a0, 13 -/* 07B984 8007AD84 3C058012 */ lui $a1, %hi(D_80126348) # $a1, 0x8012 +/* 07B984 8007AD84 3C058012 */ lui $a1, %hi(gSpriteOffsetTable) # $a1, 0x8012 /* 07B988 8007AD88 3C068012 */ lui $a2, %hi(D_80126354) # $a2, 0x8012 /* 07B98C 8007AD8C 24C66354 */ addiu $a2, %lo(D_80126354) # addiu $a2, $a2, 0x6354 -/* 07B990 8007AD90 24A56348 */ addiu $a1, %lo(D_80126348) # addiu $a1, $a1, 0x6348 +/* 07B990 8007AD90 24A56348 */ addiu $a1, %lo(gSpriteOffsetTable) # addiu $a1, $a1, 0x6348 /* 07B994 8007AD94 00004080 */ sll $t0, $zero, 2 /* 07B998 8007AD98 ACA20000 */ sw $v0, ($a1) /* 07B99C 8007AD9C ACC00000 */ sw $zero, ($a2) @@ -101,9 +101,9 @@ glabel func_8007AC70 /* 07B9E4 8007ADE4 34A5FFFF */ ori $a1, (0xFF00FFFF & 0xFFFF) # ori $a1, $a1, 0xffff /* 07B9E8 8007ADE8 0C01C327 */ jal allocate_from_main_pool_safe /* 07B9EC 8007ADEC 24040028 */ li $a0, 40 -/* 07B9F0 8007ADF0 3C018012 */ lui $at, %hi(D_8012636C) # $at, 0x8012 +/* 07B9F0 8007ADF0 3C018012 */ lui $at, %hi(gTempTextureHeader) # $at, 0x8012 /* 07B9F4 8007ADF4 8FBF0014 */ lw $ra, 0x14($sp) -/* 07B9F8 8007ADF8 AC22636C */ sw $v0, %lo(D_8012636C)($at) +/* 07B9F8 8007ADF8 AC22636C */ sw $v0, %lo(gTempTextureHeader)($at) /* 07B9FC 8007ADFC 3C018012 */ lui $at, %hi(D_80126344) # $at, 0x8012 /* 07BA00 8007AE00 AC206344 */ sw $zero, %lo(D_80126344)($at) /* 07BA04 8007AE04 03E00008 */ jr $ra diff --git a/asm/non_matchings/unknown_07B870/func_8007B374.s b/asm/non_matchings/textures_sprites/func_8007B380.s similarity index 62% rename from asm/non_matchings/unknown_07B870/func_8007B374.s rename to asm/non_matchings/textures_sprites/func_8007B380.s index f05aff98..afee6cdb 100644 --- a/asm/non_matchings/unknown_07B870/func_8007B374.s +++ b/asm/non_matchings/textures_sprites/func_8007B380.s @@ -1,21 +1,16 @@ -glabel func_8007B374 -/* 07BF74 8007B374 3C01800E */ lui $at, %hi(D_800DE7C0) # $at, 0x800e -/* 07BF78 8007B378 03E00008 */ jr $ra -/* 07BF7C 8007B37C AC24E7C0 */ sw $a0, %lo(D_800DE7C0)($at) - +glabel func_8007B380 /* 07BF80 8007B380 04800006 */ bltz $a0, .L8007B39C -/* 07BF84 8007B384 3C0E8012 */ lui $t6, %hi(D_80126330) # $t6, 0x8012 -/* 07BF88 8007B388 8DCE6330 */ lw $t6, %lo(D_80126330)($t6) -/* 07BF8C 8007B38C 3C0F8012 */ lui $t7, %hi(D_80126328) # $t7, 0x8012 +/* 07BF84 8007B384 3C0E8012 */ lui $t6, %hi(gNumberOfLoadedTextures) # $t6, 0x8012 +/* 07BF88 8007B388 8DCE6330 */ lw $t6, %lo(gNumberOfLoadedTextures)($t6) +/* 07BF8C 8007B38C 3C0F8012 */ lui $t7, %hi(gTextureCache) # $t7, 0x8012 /* 07BF90 8007B390 008E082A */ slt $at, $a0, $t6 /* 07BF94 8007B394 14200003 */ bnez $at, .L8007B3A4 /* 07BF98 8007B398 00000000 */ nop .L8007B39C: /* 07BF9C 8007B39C 03E00008 */ jr $ra /* 07BFA0 8007B3A0 00001025 */ move $v0, $zero - .L8007B3A4: -/* 07BFA4 8007B3A4 8DEF6328 */ lw $t7, %lo(D_80126328)($t7) +/* 07BFA4 8007B3A4 8DEF6328 */ lw $t7, %lo(gTextureCache)($t7) /* 07BFA8 8007B3A8 0004C8C0 */ sll $t9, $a0, 3 /* 07BFAC 8007B3AC 01F94021 */ addu $t0, $t7, $t9 /* 07BFB0 8007B3B0 8D030004 */ lw $v1, 4($t0) @@ -24,8 +19,6 @@ glabel func_8007B374 /* 07BFBC 8007B3BC 00601025 */ move $v0, $v1 /* 07BFC0 8007B3C0 03E00008 */ jr $ra /* 07BFC4 8007B3C4 00001025 */ move $v0, $zero - .L8007B3C8: /* 07BFC8 8007B3C8 03E00008 */ jr $ra /* 07BFCC 8007B3CC 00000000 */ nop - diff --git a/asm/non_matchings/unknown_07B870/func_8007B46C.s b/asm/non_matchings/textures_sprites/func_8007B46C.s similarity index 100% rename from asm/non_matchings/unknown_07B870/func_8007B46C.s rename to asm/non_matchings/textures_sprites/func_8007B46C.s diff --git a/asm/non_matchings/unknown_07B870/func_8007B4E8.s b/asm/non_matchings/textures_sprites/func_8007B4E8.s similarity index 100% rename from asm/non_matchings/unknown_07B870/func_8007B4E8.s rename to asm/non_matchings/textures_sprites/func_8007B4E8.s diff --git a/asm/non_matchings/unknown_07B870/func_8007BA5C.s b/asm/non_matchings/textures_sprites/func_8007BA5C.s similarity index 100% rename from asm/non_matchings/unknown_07B870/func_8007BA5C.s rename to asm/non_matchings/textures_sprites/func_8007BA5C.s diff --git a/asm/non_matchings/unknown_07B870/func_8007BF34.s b/asm/non_matchings/textures_sprites/func_8007BF34.s similarity index 100% rename from asm/non_matchings/unknown_07B870/func_8007BF34.s rename to asm/non_matchings/textures_sprites/func_8007BF34.s diff --git a/asm/non_matchings/unknown_07B870/func_8007C12C.s b/asm/non_matchings/textures_sprites/func_8007C12C.s similarity index 91% rename from asm/non_matchings/unknown_07B870/func_8007C12C.s rename to asm/non_matchings/textures_sprites/func_8007C12C.s index f7ce60f8..9a83a4d6 100644 --- a/asm/non_matchings/unknown_07B870/func_8007C12C.s +++ b/asm/non_matchings/textures_sprites/func_8007C12C.s @@ -25,8 +25,8 @@ glabel func_8007C12C /* 07CD80 8007C180 00008025 */ move $s0, $zero /* 07CD84 8007C184 18800014 */ blez $a0, .L8007C1D8 /* 07CD88 8007C188 00004825 */ move $t1, $zero -/* 07CD8C 8007C18C 3C028012 */ lui $v0, %hi(D_8012634C) # $v0, 0x8012 -/* 07CD90 8007C190 8C42634C */ lw $v0, %lo(D_8012634C)($v0) +/* 07CD8C 8007C18C 3C028012 */ lui $v0, %hi(gSpriteCache) # $v0, 0x8012 +/* 07CD90 8007C190 8C42634C */ lw $v0, %lo(gSpriteCache)($v0) /* 07CD94 8007C194 00000000 */ nop /* 07CD98 8007C198 0010C0C0 */ sll $t8, $s0, 3 .L8007C19C: @@ -49,8 +49,8 @@ glabel func_8007C12C .L8007C1D8: /* 07CDD8 8007C1D8 1880000F */ blez $a0, .L8007C218 /* 07CDDC 8007C1DC 2408FFFF */ li $t0, -1 -/* 07CDE0 8007C1E0 3C028012 */ lui $v0, %hi(D_8012634C) # $v0, 0x8012 -/* 07CDE4 8007C1E4 8C42634C */ lw $v0, %lo(D_8012634C)($v0) +/* 07CDE0 8007C1E0 3C028012 */ lui $v0, %hi(gSpriteCache) # $v0, 0x8012 +/* 07CDE4 8007C1E4 8C42634C */ lw $v0, %lo(gSpriteCache)($v0) /* 07CDE8 8007C1E8 2403FFFF */ li $v1, -1 /* 07CDEC 8007C1EC 001070C0 */ sll $t6, $s0, 3 .L8007C1F0: @@ -68,19 +68,19 @@ glabel func_8007C12C .L8007C218: /* 07CE18 8007C218 2403FFFF */ li $v1, -1 /* 07CE1C 8007C21C 15030005 */ bne $t0, $v1, .L8007C234 -/* 07CE20 8007C220 3C0B8012 */ lui $t3, %hi(D_80126348) # $t3, 0x8012 +/* 07CE20 8007C220 3C0B8012 */ lui $t3, %hi(gSpriteOffsetTable) # $t3, 0x8012 /* 07CE24 8007C224 24990001 */ addiu $t9, $a0, 1 /* 07CE28 8007C228 24090001 */ li $t1, 1 /* 07CE2C 8007C22C 00804025 */ move $t0, $a0 /* 07CE30 8007C230 AD590000 */ sw $t9, ($t2) .L8007C234: -/* 07CE34 8007C234 8D6B6348 */ lw $t3, %lo(D_80126348)($t3) +/* 07CE34 8007C234 8D6B6348 */ lw $t3, %lo(gSpriteOffsetTable)($t3) /* 07CE38 8007C238 00116080 */ sll $t4, $s1, 2 /* 07CE3C 8007C23C 016C1021 */ addu $v0, $t3, $t4 /* 07CE40 8007C240 8C460000 */ lw $a2, ($v0) /* 07CE44 8007C244 8C4D0004 */ lw $t5, 4($v0) -/* 07CE48 8007C248 3C148012 */ lui $s4, %hi(D_80126350) # $s4, 0x8012 -/* 07CE4C 8007C24C 8E946350 */ lw $s4, %lo(D_80126350)($s4) +/* 07CE48 8007C248 3C148012 */ lui $s4, %hi(gCurrentSprite) # $s4, 0x8012 +/* 07CE4C 8007C24C 8E946350 */ lw $s4, %lo(gCurrentSprite)($s4) /* 07CE50 8007C250 AFB10050 */ sw $s1, 0x50($sp) /* 07CE54 8007C254 A3A90032 */ sb $t1, 0x32($sp) /* 07CE58 8007C258 AFA80044 */ sw $t0, 0x44($sp) @@ -102,12 +102,12 @@ glabel func_8007C12C /* 07CE98 8007C298 032B8021 */ addu $s0, $t9, $t3 /* 07CE9C 8007C29C 00156940 */ sll $t5, $s5, 5 /* 07CEA0 8007C2A0 020D8021 */ addu $s0, $s0, $t5 -/* 07CEA4 8007C2A4 0C01C614 */ jal func_80071850 +/* 07CEA4 8007C2A4 0C01C614 */ jal align16 /* 07CEA8 8007C2A8 02038021 */ addu $s0, $s0, $v1 /* 07CEAC 8007C2AC 86840002 */ lh $a0, 2($s4) /* 07CEB0 8007C2B0 02028021 */ addu $s0, $s0, $v0 /* 07CEB4 8007C2B4 00047080 */ sll $t6, $a0, 2 -/* 07CEB8 8007C2B8 0C01C614 */ jal func_80071850 +/* 07CEB8 8007C2B8 0C01C614 */ jal align16 /* 07CEBC 8007C2BC 01C02025 */ move $a0, $t6 /* 07CEC0 8007C2C0 3C05FF00 */ lui $a1, (0xFF00FFFF >> 16) # lui $a1, 0xff00 /* 07CEC4 8007C2C4 02022021 */ addu $a0, $s0, $v0 @@ -128,12 +128,12 @@ glabel func_8007C12C /* 07CEFC 8007C2FC 00001025 */ move $v0, $zero .L8007C300: /* 07CF00 8007C300 24040010 */ li $a0, 16 -/* 07CF04 8007C304 0C01C614 */ jal func_80071850 +/* 07CF04 8007C304 0C01C614 */ jal align16 /* 07CF08 8007C308 00008025 */ move $s0, $zero /* 07CF0C 8007C30C 86840002 */ lh $a0, 2($s4) /* 07CF10 8007C310 00408825 */ move $s1, $v0 /* 07CF14 8007C314 00045880 */ sll $t3, $a0, 2 -/* 07CF18 8007C318 0C01C614 */ jal func_80071850 +/* 07CF18 8007C318 0C01C614 */ jal align16 /* 07CF1C 8007C31C 01602025 */ move $a0, $t3 /* 07CF20 8007C320 00536021 */ addu $t4, $v0, $s3 /* 07CF24 8007C324 01916821 */ addu $t5, $t4, $s1 @@ -159,8 +159,8 @@ glabel func_8007C12C /* 07CF74 8007C374 AE780008 */ sw $t8, 8($s3) /* 07CF78 8007C378 1AA0001E */ blez $s5, .L8007C3F4 /* 07CF7C 8007C37C 00001825 */ move $v1, $zero -/* 07CF80 8007C380 3C12800E */ lui $s2, %hi(D_800DE7C0) # $s2, 0x800e -/* 07CF84 8007C384 2652E7C0 */ addiu $s2, %lo(D_800DE7C0) # addiu $s2, $s2, -0x1840 +/* 07CF80 8007C380 3C12800E */ lui $s2, %hi(gTexColorTag) # $s2, 0x800e +/* 07CF84 8007C384 2652E7C0 */ addiu $s2, %lo(gTexColorTag) # addiu $s2, $s2, -0x1840 /* 07CF88 8007C388 00008825 */ move $s1, $zero .L8007C38C: /* 07CF8C 8007C38C 3C0B00FF */ lui $t3, (0x00FF0163 >> 16) # lui $t3, 0xff @@ -168,7 +168,7 @@ glabel func_8007C12C /* 07CF94 8007C394 AE4B0000 */ sw $t3, ($s2) /* 07CF98 8007C398 86990000 */ lh $t9, ($s4) /* 07CF9C 8007C39C A3A30033 */ sb $v1, 0x33($sp) -/* 07CFA0 8007C3A0 0C01EB9D */ jal func_8007AE74 +/* 07CFA0 8007C3A0 0C01EB9D */ jal load_texture /* 07CFA4 8007C3A4 03302021 */ addu $a0, $t9, $s0 /* 07CFA8 8007C3A8 8E6C0008 */ lw $t4, 8($s3) /* 07CFAC 8007C3AC 83A30033 */ lb $v1, 0x33($sp) @@ -204,7 +204,7 @@ glabel func_8007C12C /* 07D018 8007C418 00000000 */ nop /* 07D01C 8007C41C 10800003 */ beqz $a0, .L8007C42C /* 07D020 8007C420 00000000 */ nop -/* 07D024 8007C424 0C01ECAF */ jal func_8007B2BC +/* 07D024 8007C424 0C01ECAF */ jal free_texture /* 07D028 8007C428 00000000 */ nop .L8007C42C: /* 07D02C 8007C42C 26100001 */ addiu $s0, $s0, 1 @@ -249,10 +249,10 @@ glabel func_8007C12C .L8007C4B8: /* 07D0B8 8007C4B8 3C0E8012 */ lui $t6, %hi(D_80126358) # $t6, 0x8012 /* 07D0BC 8007C4BC 8DCE6358 */ lw $t6, %lo(D_80126358)($t6) -/* 07D0C0 8007C4C0 3C048012 */ lui $a0, %hi(D_8012634C) # $a0, 0x8012 +/* 07D0C0 8007C4C0 3C048012 */ lui $a0, %hi(gSpriteCache) # $a0, 0x8012 /* 07D0C4 8007C4C4 29C10064 */ slti $at, $t6, 0x64 /* 07D0C8 8007C4C8 14200003 */ bnez $at, .L8007C4D8 -/* 07D0CC 8007C4CC 2484634C */ addiu $a0, %lo(D_8012634C) # addiu $a0, $a0, 0x634c +/* 07D0CC 8007C4CC 2484634C */ addiu $a0, %lo(gSpriteCache) # addiu $a0, $a0, 0x634c /* 07D0D0 8007C4D0 1000000D */ b .L8007C508 /* 07D0D4 8007C4D4 00001025 */ move $v0, $zero .L8007C4D8: @@ -282,7 +282,7 @@ glabel func_8007C12C /* 07D12C 8007C52C 04800006 */ bltz $a0, .L8007C548 /* 07D130 8007C530 3C0E8012 */ lui $t6, %hi(D_80126358) # $t6, 0x8012 /* 07D134 8007C534 8DCE6358 */ lw $t6, %lo(D_80126358)($t6) -/* 07D138 8007C538 3C0F8012 */ lui $t7, %hi(D_8012634C) # $t7, 0x8012 +/* 07D138 8007C538 3C0F8012 */ lui $t7, %hi(gSpriteCache) # $t7, 0x8012 /* 07D13C 8007C53C 008E082A */ slt $at, $a0, $t6 /* 07D140 8007C540 14200003 */ bnez $at, .L8007C550 /* 07D144 8007C544 00000000 */ nop @@ -291,7 +291,7 @@ glabel func_8007C12C /* 07D14C 8007C54C 00001025 */ move $v0, $zero .L8007C550: -/* 07D150 8007C550 8DEF634C */ lw $t7, %lo(D_8012634C)($t7) +/* 07D150 8007C550 8DEF634C */ lw $t7, %lo(gSpriteCache)($t7) /* 07D154 8007C554 0004C8C0 */ sll $t9, $a0, 3 /* 07D158 8007C558 01F94021 */ addu $t0, $t7, $t9 /* 07D15C 8007C55C 8D030004 */ lw $v1, 4($t0) diff --git a/asm/non_matchings/unknown_07B870/func_8007C57C.s b/asm/non_matchings/textures_sprites/func_8007C660.s similarity index 60% rename from asm/non_matchings/unknown_07B870/func_8007C57C.s rename to asm/non_matchings/textures_sprites/func_8007C660.s index 13f84ccd..b005b6ab 100644 --- a/asm/non_matchings/unknown_07B870/func_8007C57C.s +++ b/asm/non_matchings/textures_sprites/func_8007C660.s @@ -1,67 +1,5 @@ -glabel func_8007C57C -/* 07D17C 8007C57C 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 07D180 8007C580 240E0004 */ li $t6, 4 -/* 07D184 8007C584 308F8000 */ andi $t7, $a0, 0x8000 -/* 07D188 8007C588 AFBF0014 */ sw $ra, 0x14($sp) -/* 07D18C 8007C58C AFAE0018 */ sw $t6, 0x18($sp) -/* 07D190 8007C590 11E00006 */ beqz $t7, .L8007C5AC -/* 07D194 8007C594 00001025 */ move $v0, $zero -/* 07D198 8007C598 24180002 */ li $t8, 2 -/* 07D19C 8007C59C 30997FFF */ andi $t9, $a0, 0x7fff -/* 07D1A0 8007C5A0 AFB80018 */ sw $t8, 0x18($sp) -/* 07D1A4 8007C5A4 24020001 */ li $v0, 1 -/* 07D1A8 8007C5A8 03202025 */ move $a0, $t9 -.L8007C5AC: -/* 07D1AC 8007C5AC 00021880 */ sll $v1, $v0, 2 -/* 07D1B0 8007C5B0 3C088012 */ lui $t0, %hi(D_80126338) # $t0, 0x8012 -/* 07D1B4 8007C5B4 01034021 */ addu $t0, $t0, $v1 -/* 07D1B8 8007C5B8 8D086338 */ lw $t0, %lo(D_80126338)($t0) -/* 07D1BC 8007C5BC 00000000 */ nop -/* 07D1C0 8007C5C0 0088082A */ slt $at, $a0, $t0 -/* 07D1C4 8007C5C4 10200003 */ beqz $at, .L8007C5D4 -/* 07D1C8 8007C5C8 00000000 */ nop -/* 07D1CC 8007C5CC 04810003 */ bgez $a0, .L8007C5DC -/* 07D1D0 8007C5D0 3C098012 */ lui $t1, %hi(D_80126320) # $t1, 0x8012 -.L8007C5D4: -/* 07D1D4 8007C5D4 1000001E */ b .L8007C650 -/* 07D1D8 8007C5D8 00001025 */ move $v0, $zero -.L8007C5DC: -/* 07D1DC 8007C5DC 01234821 */ addu $t1, $t1, $v1 -/* 07D1E0 8007C5E0 8D296320 */ lw $t1, %lo(D_80126320)($t1) -/* 07D1E4 8007C5E4 00045080 */ sll $t2, $a0, 2 -/* 07D1E8 8007C5E8 3C058012 */ lui $a1, %hi(D_8012636C) # $a1, 0x8012 -/* 07D1EC 8007C5EC 8CA5636C */ lw $a1, %lo(D_8012636C)($a1) -/* 07D1F0 8007C5F0 012A1021 */ addu $v0, $t1, $t2 -/* 07D1F4 8007C5F4 8C460000 */ lw $a2, ($v0) -/* 07D1F8 8007C5F8 8C4B0004 */ lw $t3, 4($v0) -/* 07D1FC 8007C5FC 90AC001D */ lbu $t4, 0x1d($a1) -/* 07D200 8007C600 8FA40018 */ lw $a0, 0x18($sp) -/* 07D204 8007C604 1180000A */ beqz $t4, .L8007C630 -/* 07D208 8007C608 01663823 */ subu $a3, $t3, $a2 -/* 07D20C 8007C60C 0C01DB9A */ jal load_asset_to_address -/* 07D210 8007C610 24070028 */ li $a3, 40 -/* 07D214 8007C614 3C038012 */ lui $v1, %hi(D_8012636C) # $v1, 0x8012 -/* 07D218 8007C618 8C63636C */ lw $v1, %lo(D_8012636C)($v1) -/* 07D21C 8007C61C 0C03186B */ jal byteswap32 -/* 07D220 8007C620 24640020 */ addiu $a0, $v1, 0x20 -/* 07D224 8007C624 3C058012 */ lui $a1, %hi(D_8012636C) # $a1, 0x8012 -/* 07D228 8007C628 8CA5636C */ lw $a1, %lo(D_8012636C)($a1) -/* 07D22C 8007C62C 00403825 */ move $a3, $v0 -.L8007C630: -/* 07D230 8007C630 94A30012 */ lhu $v1, 0x12($a1) -/* 07D234 8007C634 00000000 */ nop -/* 07D238 8007C638 00036A03 */ sra $t5, $v1, 8 -/* 07D23C 8007C63C 31AEFFFF */ andi $t6, $t5, 0xffff -/* 07D240 8007C640 000E7880 */ sll $t7, $t6, 2 -/* 07D244 8007C644 01EE7823 */ subu $t7, $t7, $t6 -/* 07D248 8007C648 000F7940 */ sll $t7, $t7, 5 -/* 07D24C 8007C64C 01E71021 */ addu $v0, $t7, $a3 -.L8007C650: -/* 07D250 8007C650 8FBF0014 */ lw $ra, 0x14($sp) -/* 07D254 8007C654 27BD0028 */ addiu $sp, $sp, 0x28 -/* 07D258 8007C658 03E00008 */ jr $ra -/* 07D25C 8007C65C 00000000 */ nop - +# Unused +glabel func_8007C660 /* 07D260 8007C660 27BDFFC0 */ addiu $sp, $sp, -0x40 /* 07D264 8007C664 308F8000 */ andi $t7, $a0, 0x8000 /* 07D268 8007C668 AFBF003C */ sw $ra, 0x3c($sp) @@ -110,10 +48,10 @@ glabel func_8007C57C /* 07D308 8007C708 8FCB0000 */ lw $t3, ($fp) /* 07D30C 8007C70C 0000A825 */ move $s5, $zero /* 07D310 8007C710 19600041 */ blez $t3, .L8007C818 -/* 07D314 8007C714 3C178012 */ lui $s7, %hi(D_80126348) # $s7, 0x8012 -/* 07D318 8007C718 3C168012 */ lui $s6, %hi(D_80126350) # $s6, 0x8012 -/* 07D31C 8007C71C 26D66350 */ addiu $s6, %lo(D_80126350) # addiu $s6, $s6, 0x6350 -/* 07D320 8007C720 26F76348 */ addiu $s7, %lo(D_80126348) # addiu $s7, $s7, 0x6348 +/* 07D314 8007C714 3C178012 */ lui $s7, %hi(gSpriteOffsetTable) # $s7, 0x8012 +/* 07D318 8007C718 3C168012 */ lui $s6, %hi(gCurrentSprite) # $s6, 0x8012 +/* 07D31C 8007C71C 26D66350 */ addiu $s6, %lo(gCurrentSprite) # addiu $s6, $s6, 0x6350 +/* 07D320 8007C720 26F76348 */ addiu $s7, %lo(gSpriteOffsetTable) # addiu $s7, $s7, 0x6348 /* 07D324 8007C724 24120001 */ li $s2, 1 .L8007C728: /* 07D328 8007C728 8EEC0000 */ lw $t4, ($s7) @@ -201,42 +139,20 @@ glabel func_8007C57C /* 07D45C 8007C85C 27BD0040 */ addiu $sp, $sp, 0x40 /* 07D460 8007C860 04800006 */ bltz $a0, .L8007C87C -/* 07D464 8007C864 3C0E8012 */ lui $t6, %hi(D_80126330) # $t6, 0x8012 -/* 07D468 8007C868 8DCE6330 */ lw $t6, %lo(D_80126330)($t6) -/* 07D46C 8007C86C 3C0F8012 */ lui $t7, %hi(D_80126328) # $t7, 0x8012 +/* 07D464 8007C864 3C0E8012 */ lui $t6, %hi(gNumberOfLoadedTextures) # $t6, 0x8012 +/* 07D468 8007C868 8DCE6330 */ lw $t6, %lo(gNumberOfLoadedTextures)($t6) +/* 07D46C 8007C86C 3C0F8012 */ lui $t7, %hi(gTextureCache) # $t7, 0x8012 /* 07D470 8007C870 008E082A */ slt $at, $a0, $t6 /* 07D474 8007C874 14200003 */ bnez $at, .L8007C884 /* 07D478 8007C878 00000000 */ nop .L8007C87C: /* 07D47C 8007C87C 03E00008 */ jr $ra /* 07D480 8007C880 2402FFFF */ li $v0, -1 - .L8007C884: -/* 07D484 8007C884 8DEF6328 */ lw $t7, %lo(D_80126328)($t7) +/* 07D484 8007C884 8DEF6328 */ lw $t7, %lo(gTextureCache)($t7) /* 07D488 8007C888 0004C8C0 */ sll $t9, $a0, 3 /* 07D48C 8007C88C 01F94021 */ addu $t0, $t7, $t9 /* 07D490 8007C890 8D020000 */ lw $v0, ($t0) /* 07D494 8007C894 00000000 */ nop /* 07D498 8007C898 03E00008 */ jr $ra /* 07D49C 8007C89C 00000000 */ nop - -/* 07D4A0 8007C8A0 04800006 */ bltz $a0, .L8007C8BC -/* 07D4A4 8007C8A4 3C0E8012 */ lui $t6, %hi(D_80126358) # $t6, 0x8012 -/* 07D4A8 8007C8A8 8DCE6358 */ lw $t6, %lo(D_80126358)($t6) -/* 07D4AC 8007C8AC 3C0F8012 */ lui $t7, %hi(D_8012634C) # $t7, 0x8012 -/* 07D4B0 8007C8B0 008E082A */ slt $at, $a0, $t6 -/* 07D4B4 8007C8B4 14200003 */ bnez $at, .L8007C8C4 -/* 07D4B8 8007C8B8 00000000 */ nop -.L8007C8BC: -/* 07D4BC 8007C8BC 03E00008 */ jr $ra -/* 07D4C0 8007C8C0 2402FFFF */ li $v0, -1 - -.L8007C8C4: -/* 07D4C4 8007C8C4 8DEF634C */ lw $t7, %lo(D_8012634C)($t7) -/* 07D4C8 8007C8C8 0004C8C0 */ sll $t9, $a0, 3 -/* 07D4CC 8007C8CC 01F94021 */ addu $t0, $t7, $t9 -/* 07D4D0 8007C8D0 8D020000 */ lw $v0, ($t0) -/* 07D4D4 8007C8D4 00000000 */ nop -/* 07D4D8 8007C8D8 03E00008 */ jr $ra -/* 07D4DC 8007C8DC 00000000 */ nop - diff --git a/asm/non_matchings/textures_sprites/func_8007C860.s b/asm/non_matchings/textures_sprites/func_8007C860.s new file mode 100644 index 00000000..3adcf135 --- /dev/null +++ b/asm/non_matchings/textures_sprites/func_8007C860.s @@ -0,0 +1,20 @@ +# Unused +glabel func_8007C860 +/* 07D4A0 8007C8A0 04800006 */ bltz $a0, .L8007C8BC +/* 07D4A4 8007C8A4 3C0E8012 */ lui $t6, %hi(D_80126358) # $t6, 0x8012 +/* 07D4A8 8007C8A8 8DCE6358 */ lw $t6, %lo(D_80126358)($t6) +/* 07D4AC 8007C8AC 3C0F8012 */ lui $t7, %hi(gSpriteCache) # $t7, 0x8012 +/* 07D4B0 8007C8B0 008E082A */ slt $at, $a0, $t6 +/* 07D4B4 8007C8B4 14200003 */ bnez $at, .L8007C8C4 +/* 07D4B8 8007C8B8 00000000 */ nop +.L8007C8BC: +/* 07D4BC 8007C8BC 03E00008 */ jr $ra +/* 07D4C0 8007C8C0 2402FFFF */ li $v0, -1 +.L8007C8C4: +/* 07D4C4 8007C8C4 8DEF634C */ lw $t7, %lo(gSpriteCache)($t7) +/* 07D4C8 8007C8C8 0004C8C0 */ sll $t9, $a0, 3 +/* 07D4CC 8007C8CC 01F94021 */ addu $t0, $t7, $t9 +/* 07D4D0 8007C8D0 8D020000 */ lw $v0, ($t0) +/* 07D4D4 8007C8D4 00000000 */ nop +/* 07D4D8 8007C8D8 03E00008 */ jr $ra +/* 07D4DC 8007C8DC 00000000 */ nop diff --git a/asm/non_matchings/unknown_07B870/func_8007CA68.s b/asm/non_matchings/textures_sprites/func_8007CA68.s similarity index 91% rename from asm/non_matchings/unknown_07B870/func_8007CA68.s rename to asm/non_matchings/textures_sprites/func_8007CA68.s index 15006e53..b217d849 100644 --- a/asm/non_matchings/unknown_07B870/func_8007CA68.s +++ b/asm/non_matchings/textures_sprites/func_8007CA68.s @@ -17,7 +17,7 @@ glabel func_8007CA68 /* 07D6A4 8007CAA4 AFA7004C */ sw $a3, 0x4c($sp) /* 07D6A8 8007CAA8 3C0E8012 */ lui $t6, %hi(D_80126354) # $t6, 0x8012 /* 07D6AC 8007CAAC 8DCE6354 */ lw $t6, %lo(D_80126354)($t6) -/* 07D6B0 8007CAB0 3C198012 */ lui $t9, %hi(D_80126348) # $t9, 0x8012 +/* 07D6B0 8007CAB0 3C198012 */ lui $t9, %hi(gSpriteOffsetTable) # $t9, 0x8012 /* 07D6B4 8007CAB4 008E082A */ slt $at, $a0, $t6 /* 07D6B8 8007CAB8 14200007 */ bnez $at, .L8007CAD8 /* 07D6BC 8007CABC 00104080 */ sll $t0, $s0, 2 @@ -29,12 +29,12 @@ glabel func_8007CA68 /* 07D6D0 8007CAD0 1000006B */ b .L8007CC80 /* 07D6D4 8007CAD4 AF000000 */ sw $zero, ($t8) .L8007CAD8: -/* 07D6D8 8007CAD8 8F396348 */ lw $t9, %lo(D_80126348)($t9) -/* 07D6DC 8007CADC 3C128012 */ lui $s2, %hi(D_80126350) # $s2, 0x8012 +/* 07D6D8 8007CAD8 8F396348 */ lw $t9, %lo(gSpriteOffsetTable)($t9) +/* 07D6DC 8007CADC 3C128012 */ lui $s2, %hi(gCurrentSprite) # $s2, 0x8012 /* 07D6E0 8007CAE0 03281021 */ addu $v0, $t9, $t0 /* 07D6E4 8007CAE4 8C460000 */ lw $a2, ($v0) /* 07D6E8 8007CAE8 8C490004 */ lw $t1, 4($v0) -/* 07D6EC 8007CAEC 8E526350 */ lw $s2, %lo(D_80126350)($s2) +/* 07D6EC 8007CAEC 8E526350 */ lw $s2, %lo(gCurrentSprite)($s2) /* 07D6F0 8007CAF0 2404000C */ li $a0, 12 /* 07D6F4 8007CAF4 01263823 */ subu $a3, $t1, $a2 /* 07D6F8 8007CAF8 0C01DB9A */ jal load_asset_to_address @@ -57,7 +57,7 @@ glabel func_8007CA68 .L8007CB34: /* 07D734 8007CB34 93CD000C */ lbu $t5, 0xc($fp) /* 07D738 8007CB38 864E0000 */ lh $t6, ($s2) -/* 07D73C 8007CB3C 0C01EB9D */ jal func_8007AE74 +/* 07D73C 8007CB3C 0C01EB9D */ jal load_texture /* 07D740 8007CB40 01AE2021 */ addu $a0, $t5, $t6 /* 07D744 8007CB44 14400004 */ bnez $v0, .L8007CB58 /* 07D748 8007CB48 00408025 */ move $s0, $v0 @@ -67,7 +67,7 @@ glabel func_8007CA68 .L8007CB58: /* 07D758 8007CB58 93CF000C */ lbu $t7, 0xc($fp) /* 07D75C 8007CB5C 86580000 */ lh $t8, ($s2) -/* 07D760 8007CB60 0C01F15F */ jal func_8007C57C +/* 07D760 8007CB60 0C01F15F */ jal get_texture_size_from_id /* 07D764 8007CB64 01F82021 */ addu $a0, $t7, $t8 /* 07D768 8007CB68 8FB70050 */ lw $s7, 0x50($sp) /* 07D76C 8007CB6C 02002025 */ move $a0, $s0 @@ -81,7 +81,7 @@ glabel func_8007CA68 /* 07D78C 8007CB8C 03289823 */ subu $s3, $t9, $t0 /* 07D790 8007CB90 012AA023 */ subu $s4, $t1, $t2 /* 07D794 8007CB94 0265A821 */ addu $s5, $s3, $a1 -/* 07D798 8007CB98 0C01ECAF */ jal func_8007B2BC +/* 07D798 8007CB98 0C01ECAF */ jal free_texture /* 07D79C 8007CB9C 0286B023 */ subu $s6, $s4, $a2 /* 07D7A0 8007CBA0 93D1000C */ lbu $s1, 0xc($fp) /* 07D7A4 8007CBA4 93CB000D */ lbu $t3, 0xd($fp) @@ -91,12 +91,12 @@ glabel func_8007CA68 /* 07D7B4 8007CBB4 8FAC0048 */ lw $t4, 0x48($sp) .L8007CBB8: /* 07D7B8 8007CBB8 864C0000 */ lh $t4, ($s2) -/* 07D7BC 8007CBBC 0C01EB9D */ jal func_8007AE74 +/* 07D7BC 8007CBBC 0C01EB9D */ jal load_texture /* 07D7C0 8007CBC0 01912021 */ addu $a0, $t4, $s1 /* 07D7C4 8007CBC4 1040FFD3 */ beqz $v0, .L8007CB14 /* 07D7C8 8007CBC8 00408025 */ move $s0, $v0 /* 07D7CC 8007CBCC 864D0000 */ lh $t5, ($s2) -/* 07D7D0 8007CBD0 0C01F15F */ jal func_8007C57C +/* 07D7D0 8007CBD0 0C01F15F */ jal get_texture_size_from_id /* 07D7D4 8007CBD4 01B12021 */ addu $a0, $t5, $s1 /* 07D7D8 8007CBD8 8EEE0000 */ lw $t6, ($s7) /* 07D7DC 8007CBDC 00000000 */ nop @@ -131,7 +131,7 @@ glabel func_8007CA68 /* 07D844 8007CC44 00000000 */ nop /* 07D848 8007CC48 0080A025 */ move $s4, $a0 .L8007CC4C: -/* 07D84C 8007CC4C 0C01ECAF */ jal func_8007B2BC +/* 07D84C 8007CC4C 0C01ECAF */ jal free_texture /* 07D850 8007CC50 02002025 */ move $a0, $s0 /* 07D854 8007CC54 93CA000D */ lbu $t2, 0xd($fp) /* 07D858 8007CC58 26310001 */ addiu $s1, $s1, 1 diff --git a/asm/non_matchings/unknown_07B870/func_8007CDC0.s b/asm/non_matchings/textures_sprites/func_8007CDC0.s similarity index 100% rename from asm/non_matchings/unknown_07B870/func_8007CDC0.s rename to asm/non_matchings/textures_sprites/func_8007CDC0.s diff --git a/asm/non_matchings/unknown_07B870/func_8007EF80.s b/asm/non_matchings/textures_sprites/func_8007EF80.s similarity index 100% rename from asm/non_matchings/unknown_07B870/func_8007EF80.s rename to asm/non_matchings/textures_sprites/func_8007EF80.s diff --git a/asm/non_matchings/unknown_07B870/func_8007F24C.s b/asm/non_matchings/textures_sprites/func_8007F24C.s similarity index 100% rename from asm/non_matchings/unknown_07B870/func_8007F24C.s rename to asm/non_matchings/textures_sprites/func_8007F24C.s diff --git a/asm/non_matchings/unknown_07B870/func_8007F460.s b/asm/non_matchings/textures_sprites/func_8007F460.s similarity index 100% rename from asm/non_matchings/unknown_07B870/func_8007F460.s rename to asm/non_matchings/textures_sprites/func_8007F460.s diff --git a/asm/non_matchings/unknown_07B870/func_8007F594.s b/asm/non_matchings/textures_sprites/func_8007F594.s similarity index 100% rename from asm/non_matchings/unknown_07B870/func_8007F594.s rename to asm/non_matchings/textures_sprites/func_8007F594.s diff --git a/asm/non_matchings/textures_sprites/get_texture_size_from_id.s b/asm/non_matchings/textures_sprites/get_texture_size_from_id.s new file mode 100644 index 00000000..eb6603ff --- /dev/null +++ b/asm/non_matchings/textures_sprites/get_texture_size_from_id.s @@ -0,0 +1,66 @@ +glabel get_texture_size_from_id +/* 07D17C 8007C57C 27BDFFD8 */ addiu $sp, $sp, -0x28 +/* 07D180 8007C580 240E0004 */ li $t6, 4 +/* 07D184 8007C584 308F8000 */ andi $t7, $a0, 0x8000 +/* 07D188 8007C588 AFBF0014 */ sw $ra, 0x14($sp) +/* 07D18C 8007C58C AFAE0018 */ sw $t6, 0x18($sp) +/* 07D190 8007C590 11E00006 */ beqz $t7, .L8007C5AC +/* 07D194 8007C594 00001025 */ move $v0, $zero +/* 07D198 8007C598 24180002 */ li $t8, 2 +/* 07D19C 8007C59C 30997FFF */ andi $t9, $a0, 0x7fff +/* 07D1A0 8007C5A0 AFB80018 */ sw $t8, 0x18($sp) +/* 07D1A4 8007C5A4 24020001 */ li $v0, 1 +/* 07D1A8 8007C5A8 03202025 */ move $a0, $t9 +.L8007C5AC: +/* 07D1AC 8007C5AC 00021880 */ sll $v1, $v0, 2 +/* 07D1B0 8007C5B0 3C088012 */ lui $t0, %hi(D_80126338) # $t0, 0x8012 +/* 07D1B4 8007C5B4 01034021 */ addu $t0, $t0, $v1 +/* 07D1B8 8007C5B8 8D086338 */ lw $t0, %lo(D_80126338)($t0) +/* 07D1BC 8007C5BC 00000000 */ nop +/* 07D1C0 8007C5C0 0088082A */ slt $at, $a0, $t0 +/* 07D1C4 8007C5C4 10200003 */ beqz $at, .L8007C5D4 +/* 07D1C8 8007C5C8 00000000 */ nop +/* 07D1CC 8007C5CC 04810003 */ bgez $a0, .L8007C5DC +/* 07D1D0 8007C5D0 3C098012 */ lui $t1, %hi(D_80126320) # $t1, 0x8012 +.L8007C5D4: +/* 07D1D4 8007C5D4 1000001E */ b .L8007C650 +/* 07D1D8 8007C5D8 00001025 */ move $v0, $zero +.L8007C5DC: +/* 07D1DC 8007C5DC 01234821 */ addu $t1, $t1, $v1 +/* 07D1E0 8007C5E0 8D296320 */ lw $t1, %lo(D_80126320)($t1) +/* 07D1E4 8007C5E4 00045080 */ sll $t2, $a0, 2 +/* 07D1E8 8007C5E8 3C058012 */ lui $a1, %hi(gTempTextureHeader) # $a1, 0x8012 +/* 07D1EC 8007C5EC 8CA5636C */ lw $a1, %lo(gTempTextureHeader)($a1) +/* 07D1F0 8007C5F0 012A1021 */ addu $v0, $t1, $t2 +/* 07D1F4 8007C5F4 8C460000 */ lw $a2, ($v0) +/* 07D1F8 8007C5F8 8C4B0004 */ lw $t3, 4($v0) +/* 07D1FC 8007C5FC 90AC001D */ lbu $t4, 0x1d($a1) +/* 07D200 8007C600 8FA40018 */ lw $a0, 0x18($sp) +/* 07D204 8007C604 1180000A */ beqz $t4, .L8007C630 +/* 07D208 8007C608 01663823 */ subu $a3, $t3, $a2 +/* 07D20C 8007C60C 0C01DB9A */ jal load_asset_to_address +/* 07D210 8007C610 24070028 */ li $a3, 40 +/* 07D214 8007C614 3C038012 */ lui $v1, %hi(gTempTextureHeader) # $v1, 0x8012 +/* 07D218 8007C618 8C63636C */ lw $v1, %lo(gTempTextureHeader)($v1) +/* 07D21C 8007C61C 0C03186B */ jal byteswap32 +/* 07D220 8007C620 24640020 */ addiu $a0, $v1, 0x20 +/* 07D224 8007C624 3C058012 */ lui $a1, %hi(gTempTextureHeader) # $a1, 0x8012 +/* 07D228 8007C628 8CA5636C */ lw $a1, %lo(gTempTextureHeader)($a1) +/* 07D22C 8007C62C 00403825 */ move $a3, $v0 +.L8007C630: +/* 07D230 8007C630 94A30012 */ lhu $v1, 0x12($a1) +/* 07D234 8007C634 00000000 */ nop +/* 07D238 8007C638 00036A03 */ sra $t5, $v1, 8 +/* 07D23C 8007C63C 31AEFFFF */ andi $t6, $t5, 0xffff +/* 07D240 8007C640 000E7880 */ sll $t7, $t6, 2 +/* 07D244 8007C644 01EE7823 */ subu $t7, $t7, $t6 +/* 07D248 8007C648 000F7940 */ sll $t7, $t7, 5 +/* 07D24C 8007C64C 01E71021 */ addu $v0, $t7, $a3 +.L8007C650: +/* 07D250 8007C650 8FBF0014 */ lw $ra, 0x14($sp) +/* 07D254 8007C654 27BD0028 */ addiu $sp, $sp, 0x28 +/* 07D258 8007C658 03E00008 */ jr $ra +/* 07D25C 8007C65C 00000000 */ nop + + + diff --git a/asm/non_matchings/unknown_07B870/func_8007C8E0.s b/asm/non_matchings/textures_sprites/load_sprite_info.s similarity index 90% rename from asm/non_matchings/unknown_07B870/func_8007C8E0.s rename to asm/non_matchings/textures_sprites/load_sprite_info.s index 201719a3..55771491 100644 --- a/asm/non_matchings/unknown_07B870/func_8007C8E0.s +++ b/asm/non_matchings/textures_sprites/load_sprite_info.s @@ -1,4 +1,4 @@ -glabel func_8007C8E0 +glabel load_sprite_info /* 07D4E0 8007C8E0 27BDFFD0 */ addiu $sp, $sp, -0x30 /* 07D4E4 8007C8E4 AFB00018 */ sw $s0, 0x18($sp) /* 07D4E8 8007C8E8 00808025 */ move $s0, $a0 @@ -13,7 +13,7 @@ glabel func_8007C8E0 /* 07D50C 8007C90C AFA7003C */ sw $a3, 0x3c($sp) /* 07D510 8007C910 3C0E8012 */ lui $t6, %hi(D_80126354) # $t6, 0x8012 /* 07D514 8007C914 8DCE6354 */ lw $t6, %lo(D_80126354)($t6) -/* 07D518 8007C918 3C088012 */ lui $t0, %hi(D_80126348) # $t0, 0x8012 +/* 07D518 8007C918 3C088012 */ lui $t0, %hi(gSpriteOffsetTable) # $t0, 0x8012 /* 07D51C 8007C91C 008E082A */ slt $at, $a0, $t6 /* 07D520 8007C920 1420000A */ bnez $at, .L8007C94C /* 07D524 8007C924 00104880 */ sll $t1, $s0, 2 @@ -28,26 +28,26 @@ glabel func_8007C8E0 /* 07D544 8007C944 10000040 */ b .L8007CA48 /* 07D548 8007C948 AF200000 */ sw $zero, ($t9) .L8007C94C: -/* 07D54C 8007C94C 8D086348 */ lw $t0, %lo(D_80126348)($t0) -/* 07D550 8007C950 3C138012 */ lui $s3, %hi(D_80126350) # $s3, 0x8012 +/* 07D54C 8007C94C 8D086348 */ lw $t0, %lo(gSpriteOffsetTable)($t0) +/* 07D550 8007C950 3C138012 */ lui $s3, %hi(gCurrentSprite) # $s3, 0x8012 /* 07D554 8007C954 01091021 */ addu $v0, $t0, $t1 /* 07D558 8007C958 8C460000 */ lw $a2, ($v0) /* 07D55C 8007C95C 8C4A0004 */ lw $t2, 4($v0) -/* 07D560 8007C960 8E736350 */ lw $s3, %lo(D_80126350)($s3) +/* 07D560 8007C960 8E736350 */ lw $s3, %lo(gCurrentSprite)($s3) /* 07D564 8007C964 2404000C */ li $a0, 12 /* 07D568 8007C968 01463823 */ subu $a3, $t2, $a2 /* 07D56C 8007C96C 0C01DB9A */ jal load_asset_to_address /* 07D570 8007C970 02602825 */ move $a1, $s3 /* 07D574 8007C974 926B000C */ lbu $t3, 0xc($s3) /* 07D578 8007C978 866C0000 */ lh $t4, ($s3) -/* 07D57C 8007C97C 0C01EB9D */ jal func_8007AE74 +/* 07D57C 8007C97C 0C01EB9D */ jal load_texture /* 07D580 8007C980 016C2021 */ addu $a0, $t3, $t4 /* 07D584 8007C984 1040FFE8 */ beqz $v0, .L8007C928 /* 07D588 8007C988 00402025 */ move $a0, $v0 /* 07D58C 8007C98C 904D0002 */ lbu $t5, 2($v0) /* 07D590 8007C990 8FAF0040 */ lw $t7, 0x40($sp) /* 07D594 8007C994 31AE000F */ andi $t6, $t5, 0xf -/* 07D598 8007C998 0C01ECAF */ jal func_8007B2BC +/* 07D598 8007C998 0C01ECAF */ jal free_texture /* 07D59C 8007C99C ADEE0000 */ sw $t6, ($t7) /* 07D5A0 8007C9A0 8FB10044 */ lw $s1, 0x44($sp) /* 07D5A4 8007C9A4 0000A025 */ move $s4, $zero @@ -65,7 +65,7 @@ glabel func_8007C8E0 /* 07D5D0 8007C9D0 00000000 */ nop .L8007C9D4: /* 07D5D4 8007C9D4 86790000 */ lh $t9, ($s3) -/* 07D5D8 8007C9D8 0C01F15F */ jal func_8007C57C +/* 07D5D8 8007C9D8 0C01F15F */ jal get_texture_size_from_id /* 07D5DC 8007C9DC 03302021 */ addu $a0, $t9, $s0 /* 07D5E0 8007C9E0 8E280000 */ lw $t0, ($s1) /* 07D5E4 8007C9E4 26100001 */ addiu $s0, $s0, 1 diff --git a/asm/non_matchings/unknown_07B870/func_8007AE74.s b/asm/non_matchings/textures_sprites/load_texture.s similarity index 78% rename from asm/non_matchings/unknown_07B870/func_8007AE74.s rename to asm/non_matchings/textures_sprites/load_texture.s index d1fded8f..2f256038 100644 --- a/asm/non_matchings/unknown_07B870/func_8007AE74.s +++ b/asm/non_matchings/textures_sprites/load_texture.s @@ -1,4 +1,4 @@ -glabel func_8007AE74 +glabel load_texture /* 07BA74 8007AE74 27BDFF90 */ addiu $sp, $sp, -0x70 /* 07BA78 8007AE78 308EFFFF */ andi $t6, $a0, 0xffff /* 07BA7C 8007AE7C AFB30024 */ sw $s3, 0x24($sp) @@ -21,20 +21,20 @@ glabel func_8007AE74 /* 07BABC 8007AEBC 3C188012 */ lui $t8, %hi(D_80126338) # $t8, 0x8012 /* 07BAC0 8007AEC0 0309C021 */ addu $t8, $t8, $t1 /* 07BAC4 8007AEC4 8F186338 */ lw $t8, %lo(D_80126338)($t8) -/* 07BAC8 8007AEC8 3C028012 */ lui $v0, %hi(D_80126330) # $v0, 0x8012 +/* 07BAC8 8007AEC8 3C028012 */ lui $v0, %hi(gNumberOfLoadedTextures) # $v0, 0x8012 /* 07BACC 8007AECC 0118082A */ slt $at, $t0, $t8 /* 07BAD0 8007AED0 10200003 */ beqz $at, .L8007AEE0 -/* 07BAD4 8007AED4 3C048012 */ lui $a0, %hi(D_80126328) # $a0, 0x8012 +/* 07BAD4 8007AED4 3C048012 */ lui $a0, %hi(gTextureCache) # $a0, 0x8012 /* 07BAD8 8007AED8 05010002 */ bgez $t0, .L8007AEE4 /* 07BADC 8007AEDC 00000000 */ nop .L8007AEE0: /* 07BAE0 8007AEE0 00008025 */ move $s0, $zero .L8007AEE4: -/* 07BAE4 8007AEE4 8C426330 */ lw $v0, %lo(D_80126330)($v0) +/* 07BAE4 8007AEE4 8C426330 */ lw $v0, %lo(gNumberOfLoadedTextures)($v0) /* 07BAE8 8007AEE8 00008825 */ move $s1, $zero /* 07BAEC 8007AEEC 18400012 */ blez $v0, .L8007AF38 -/* 07BAF0 8007AEF0 3C148012 */ lui $s4, %hi(D_8012636C) # $s4, 0x8012 -/* 07BAF4 8007AEF4 8C846328 */ lw $a0, %lo(D_80126328)($a0) +/* 07BAF0 8007AEF0 3C148012 */ lui $s4, %hi(gTempTextureHeader) # $s4, 0x8012 +/* 07BAF4 8007AEF4 8C846328 */ lw $a0, %lo(gTextureCache)($a0) /* 07BAF8 8007AEF8 00000000 */ nop /* 07BAFC 8007AEFC 001150C0 */ sll $t2, $s1, 3 .L8007AF00: @@ -61,7 +61,7 @@ glabel func_8007AE74 /* 07BB48 8007AF48 01CF1021 */ addu $v0, $t6, $t7 /* 07BB4C 8007AF4C 8C520000 */ lw $s2, ($v0) /* 07BB50 8007AF50 8C580004 */ lw $t8, 4($v0) -/* 07BB54 8007AF54 2694636C */ addiu $s4, %lo(D_8012636C) # addiu $s4, $s4, 0x636c +/* 07BB54 8007AF54 2694636C */ addiu $s4, %lo(gTempTextureHeader) # addiu $s4, $s4, 0x636c /* 07BB58 8007AF58 8E850000 */ lw $a1, ($s4) /* 07BB5C 8007AF5C 0312C823 */ subu $t9, $t8, $s2 /* 07BB60 8007AF60 AFB90058 */ sw $t9, 0x58($sp) @@ -80,8 +80,8 @@ glabel func_8007AE74 /* 07BB94 8007AF94 01608825 */ move $s1, $t3 /* 07BB98 8007AF98 000B6880 */ sll $t5, $t3, 2 /* 07BB9C 8007AF9C 01AB6823 */ subu $t5, $t5, $t3 -/* 07BBA0 8007AFA0 3C05800E */ lui $a1, %hi(D_800DE7C0) # $a1, 0x800e -/* 07BBA4 8007AFA4 8CA5E7C0 */ lw $a1, %lo(D_800DE7C0)($a1) +/* 07BBA0 8007AFA0 3C05800E */ lui $a1, %hi(gTexColorTag) # $a1, 0x800e +/* 07BBA4 8007AFA4 8CA5E7C0 */ lw $a1, %lo(gTexColorTag)($a1) /* 07BBA8 8007AFA8 000D6940 */ sll $t5, $t5, 5 /* 07BBAC 8007AFAC 01AE2021 */ addu $a0, $t5, $t6 /* 07BBB0 8007AFB0 0C01C344 */ jal allocate_from_main_pool @@ -105,9 +105,9 @@ glabel func_8007AE74 /* 07BBF0 8007AFF0 0011C080 */ sll $t8, $s1, 2 /* 07BBF4 8007AFF4 0311C023 */ subu $t8, $t8, $s1 /* 07BBF8 8007AFF8 0018C140 */ sll $t8, $t8, 5 -/* 07BBFC 8007AFFC 3C05800E */ lui $a1, %hi(D_800DE7C0) # $a1, 0x800e +/* 07BBFC 8007AFFC 3C05800E */ lui $a1, %hi(gTexColorTag) # $a1, 0x800e /* 07BC00 8007B000 244F0020 */ addiu $t7, $v0, 0x20 -/* 07BC04 8007B004 8CA5E7C0 */ lw $a1, %lo(D_800DE7C0)($a1) +/* 07BC04 8007B004 8CA5E7C0 */ lw $a1, %lo(gTexColorTag)($a1) /* 07BC08 8007B008 03022021 */ addu $a0, $t8, $v0 /* 07BC0C 8007B00C AFAF003C */ sw $t7, 0x3c($sp) /* 07BC10 8007B010 24840020 */ addiu $a0, $a0, 0x20 @@ -144,13 +144,13 @@ glabel func_8007AE74 /* 07BC84 8007B084 25AEFFE0 */ addiu $t6, $t5, -0x20 /* 07BC88 8007B088 AFAE0058 */ sw $t6, 0x58($sp) .L8007B08C: -/* 07BC8C 8007B08C 3C028012 */ lui $v0, %hi(D_80126330) # $v0, 0x8012 -/* 07BC90 8007B090 8C426330 */ lw $v0, %lo(D_80126330)($v0) +/* 07BC8C 8007B08C 3C028012 */ lui $v0, %hi(gNumberOfLoadedTextures) # $v0, 0x8012 +/* 07BC90 8007B090 8C426330 */ lw $v0, %lo(gNumberOfLoadedTextures)($v0) /* 07BC94 8007B094 2405FFFF */ li $a1, -1 /* 07BC98 8007B098 18400010 */ blez $v0, .L8007B0DC -/* 07BC9C 8007B09C 3C0E8012 */ lui $t6, %hi(D_80126328) # $t6, 0x8012 -/* 07BCA0 8007B0A0 3C048012 */ lui $a0, %hi(D_80126328) # $a0, 0x8012 -/* 07BCA4 8007B0A4 8C846328 */ lw $a0, %lo(D_80126328)($a0) +/* 07BC9C 8007B09C 3C0E8012 */ lui $t6, %hi(gTextureCache) # $t6, 0x8012 +/* 07BCA0 8007B0A0 3C048012 */ lui $a0, %hi(gTextureCache) # $a0, 0x8012 +/* 07BCA4 8007B0A4 8C846328 */ lw $a0, %lo(gTextureCache)($a0) /* 07BCA8 8007B0A8 2403FFFF */ li $v1, -1 /* 07BCAC 8007B0AC 0011C0C0 */ sll $t8, $s1, 3 .L8007B0B0: @@ -167,19 +167,19 @@ glabel func_8007AE74 /* 07BCD4 8007B0D4 0011C0C0 */ sll $t8, $s1, 3 /* 07BCD8 8007B0D8 00008825 */ move $s1, $zero .L8007B0DC: -/* 07BCDC 8007B0DC 3C048012 */ lui $a0, %hi(D_80126328) # $a0, 0x8012 +/* 07BCDC 8007B0DC 3C048012 */ lui $a0, %hi(gTextureCache) # $a0, 0x8012 /* 07BCE0 8007B0E0 2403FFFF */ li $v1, -1 -/* 07BCE4 8007B0E4 8C846328 */ lw $a0, %lo(D_80126328)($a0) +/* 07BCE4 8007B0E4 8C846328 */ lw $a0, %lo(gTextureCache)($a0) /* 07BCE8 8007B0E8 14A30004 */ bne $a1, $v1, .L8007B0FC /* 07BCEC 8007B0EC 244C0001 */ addiu $t4, $v0, 1 -/* 07BCF0 8007B0F0 3C018012 */ lui $at, %hi(D_80126330) # $at, 0x8012 +/* 07BCF0 8007B0F0 3C018012 */ lui $at, %hi(gNumberOfLoadedTextures) # $at, 0x8012 /* 07BCF4 8007B0F4 00402825 */ move $a1, $v0 -/* 07BCF8 8007B0F8 AC2C6330 */ sw $t4, %lo(D_80126330)($at) +/* 07BCF8 8007B0F8 AC2C6330 */ sw $t4, %lo(gNumberOfLoadedTextures)($at) .L8007B0FC: /* 07BCFC 8007B0FC 000558C0 */ sll $t3, $a1, 3 /* 07BD00 8007B100 008B6821 */ addu $t5, $a0, $t3 /* 07BD04 8007B104 ADB00000 */ sw $s0, ($t5) -/* 07BD08 8007B108 8DCE6328 */ lw $t6, %lo(D_80126328)($t6) +/* 07BD08 8007B108 8DCE6328 */ lw $t6, %lo(gTextureCache)($t6) /* 07BD0C 8007B10C 24010007 */ li $at, 7 /* 07BD10 8007B110 01CB7821 */ addu $t7, $t6, $t3 /* 07BD14 8007B114 ADF30004 */ sw $s3, 4($t7) @@ -193,29 +193,29 @@ glabel func_8007AE74 /* 07BD34 8007B134 8E590000 */ lw $t9, ($s2) /* 07BD38 8007B138 2404000E */ li $a0, 14 /* 07BD3C 8007B13C 17200014 */ bnez $t9, .L8007B190 -/* 07BD40 8007B140 3C0A8012 */ lui $t2, %hi(D_8012632C) # $t2, 0x8012 -/* 07BD44 8007B144 3C0C8012 */ lui $t4, %hi(D_80126340) # $t4, 0x8012 -/* 07BD48 8007B148 8D8C6340 */ lw $t4, %lo(D_80126340)($t4) -/* 07BD4C 8007B14C 8D4A632C */ lw $t2, %lo(D_8012632C)($t2) +/* 07BD40 8007B140 3C0A8012 */ lui $t2, %hi(gCiPalettes) # $t2, 0x8012 +/* 07BD44 8007B144 3C0C8012 */ lui $t4, %hi(gCiPalettesSize) # $t4, 0x8012 +/* 07BD48 8007B148 8D8C6340 */ lw $t4, %lo(gCiPalettesSize)($t4) +/* 07BD4C 8007B14C 8D4A632C */ lw $t2, %lo(gCiPalettes)($t2) /* 07BD50 8007B150 86660008 */ lh $a2, 8($s3) /* 07BD54 8007B154 24070020 */ li $a3, 32 /* 07BD58 8007B158 0C01DB9A */ jal load_asset_to_address /* 07BD5C 8007B15C 014C2821 */ addu $a1, $t2, $t4 -/* 07BD60 8007B160 3C0B8012 */ lui $t3, %hi(D_80126340) # $t3, 0x8012 -/* 07BD64 8007B164 8D6B6340 */ lw $t3, %lo(D_80126340)($t3) -/* 07BD68 8007B168 3C0D8012 */ lui $t5, %hi(D_80126340) # $t5, 0x8012 +/* 07BD60 8007B160 3C0B8012 */ lui $t3, %hi(gCiPalettesSize) # $t3, 0x8012 +/* 07BD64 8007B164 8D6B6340 */ lw $t3, %lo(gCiPalettesSize)($t3) +/* 07BD68 8007B168 3C0D8012 */ lui $t5, %hi(gCiPalettesSize) # $t5, 0x8012 /* 07BD6C 8007B16C A66B0008 */ sh $t3, 8($s3) -/* 07BD70 8007B170 8DAD6340 */ lw $t5, %lo(D_80126340)($t5) -/* 07BD74 8007B174 3C018012 */ lui $at, %hi(D_80126340) # $at, 0x8012 +/* 07BD70 8007B170 8DAD6340 */ lw $t5, %lo(gCiPalettesSize)($t5) +/* 07BD74 8007B174 3C018012 */ lui $at, %hi(gCiPalettesSize) # $at, 0x8012 /* 07BD78 8007B178 25AE0020 */ addiu $t6, $t5, 0x20 -/* 07BD7C 8007B17C AC2E6340 */ sw $t6, %lo(D_80126340)($at) +/* 07BD7C 8007B17C AC2E6340 */ sw $t6, %lo(gCiPalettesSize)($at) /* 07BD80 8007B180 92660002 */ lbu $a2, 2($s3) /* 07BD84 8007B184 00000000 */ nop /* 07BD88 8007B188 30CF000F */ andi $t7, $a2, 0xf /* 07BD8C 8007B18C 01E03025 */ move $a2, $t7 .L8007B190: -/* 07BD90 8007B190 3C038012 */ lui $v1, %hi(D_80126340) # $v1, 0x8012 -/* 07BD94 8007B194 8C636340 */ lw $v1, %lo(D_80126340)($v1) +/* 07BD90 8007B190 3C038012 */ lui $v1, %hi(gCiPalettesSize) # $v1, 0x8012 +/* 07BD94 8007B194 8C636340 */ lw $v1, %lo(gCiPalettesSize)($v1) /* 07BD98 8007B198 00000000 */ nop /* 07BD9C 8007B19C 2463FFE0 */ addiu $v1, $v1, -0x20 .L8007B1A0: @@ -224,18 +224,18 @@ glabel func_8007AE74 /* 07BDA8 8007B1A8 14C10016 */ bne $a2, $at, .L8007B204 /* 07BDAC 8007B1AC 26526344 */ addiu $s2, %lo(D_80126344) # addiu $s2, $s2, 0x6344 /* 07BDB0 8007B1B0 8E580000 */ lw $t8, ($s2) -/* 07BDB4 8007B1B4 3C108012 */ lui $s0, %hi(D_80126340) # $s0, 0x8012 -/* 07BDB8 8007B1B8 8E106340 */ lw $s0, %lo(D_80126340)($s0) +/* 07BDB4 8007B1B4 3C108012 */ lui $s0, %hi(gCiPalettesSize) # $s0, 0x8012 +/* 07BDB8 8007B1B8 8E106340 */ lw $s0, %lo(gCiPalettesSize)($s0) /* 07BDBC 8007B1BC 17000010 */ bnez $t8, .L8007B200 /* 07BDC0 8007B1C0 2404000E */ li $a0, 14 -/* 07BDC4 8007B1C4 3C198012 */ lui $t9, %hi(D_8012632C) # $t9, 0x8012 -/* 07BDC8 8007B1C8 8F39632C */ lw $t9, %lo(D_8012632C)($t9) +/* 07BDC4 8007B1C4 3C198012 */ lui $t9, %hi(gCiPalettes) # $t9, 0x8012 +/* 07BDC8 8007B1C8 8F39632C */ lw $t9, %lo(gCiPalettes)($t9) /* 07BDCC 8007B1CC 86660008 */ lh $a2, 8($s3) /* 07BDD0 8007B1D0 24070080 */ li $a3, 128 /* 07BDD4 8007B1D4 0C01DB9A */ jal load_asset_to_address /* 07BDD8 8007B1D8 03302821 */ addu $a1, $t9, $s0 -/* 07BDDC 8007B1DC 3C038012 */ lui $v1, %hi(D_80126340) # $v1, 0x8012 -/* 07BDE0 8007B1E0 24636340 */ addiu $v1, %lo(D_80126340) # addiu $v1, $v1, 0x6340 +/* 07BDDC 8007B1DC 3C038012 */ lui $v1, %hi(gCiPalettesSize) # $v1, 0x8012 +/* 07BDE0 8007B1E0 24636340 */ addiu $v1, %lo(gCiPalettesSize) # addiu $v1, $v1, 0x6340 /* 07BDE4 8007B1E4 8C6A0000 */ lw $t2, ($v1) /* 07BDE8 8007B1E8 00000000 */ nop /* 07BDEC 8007B1EC A66A0008 */ sh $t2, 8($s3) @@ -249,7 +249,7 @@ glabel func_8007AE74 /* 07BE04 8007B204 8FAD0058 */ lw $t5, 0x58($sp) /* 07BE08 8007B208 AE400000 */ sw $zero, ($s2) /* 07BE0C 8007B20C AFA30054 */ sw $v1, 0x54($sp) -/* 07BE10 8007B210 0C01C614 */ jal func_80071850 +/* 07BE10 8007B210 0C01C614 */ jal align16 /* 07BE14 8007B214 026D2021 */ addu $a0, $s3, $t5 /* 07BE18 8007B218 8FA30054 */ lw $v1, 0x54($sp) /* 07BE1C 8007B21C 00409025 */ move $s2, $v0 @@ -258,7 +258,7 @@ glabel func_8007AE74 .L8007B228: /* 07BE28 8007B228 02002025 */ move $a0, $s0 /* 07BE2C 8007B22C 02402825 */ move $a1, $s2 -/* 07BE30 8007B230 0C01F43D */ jal func_8007D0F4 +/* 07BE30 8007B230 0C01F43D */ jal build_tex_display_list /* 07BE34 8007B234 AFA30054 */ sw $v1, 0x54($sp) /* 07BE38 8007B238 8FA30054 */ lw $v1, 0x54($sp) /* 07BE3C 8007B23C 26310001 */ addiu $s1, $s1, 1 @@ -272,16 +272,16 @@ glabel func_8007AE74 /* 07BE58 8007B258 1634FFF3 */ bne $s1, $s4, .L8007B228 /* 07BE5C 8007B25C 020E8021 */ addu $s0, $s0, $t6 .L8007B260: -/* 07BE60 8007B260 3C0F8012 */ lui $t7, %hi(D_80126340) # $t7, 0x8012 -/* 07BE64 8007B264 8DEF6340 */ lw $t7, %lo(D_80126340)($t7) -/* 07BE68 8007B268 3C188012 */ lui $t8, %hi(D_80126330) # $t8, 0x8012 +/* 07BE60 8007B260 3C0F8012 */ lui $t7, %hi(gCiPalettesSize) # $t7, 0x8012 +/* 07BE64 8007B264 8DEF6340 */ lw $t7, %lo(gCiPalettesSize)($t7) +/* 07BE68 8007B268 3C188012 */ lui $t8, %hi(gNumberOfLoadedTextures) # $t8, 0x8012 /* 07BE6C 8007B26C 29E10280 */ slti $at, $t7, 0x280 /* 07BE70 8007B270 14200003 */ bnez $at, .L8007B280 /* 07BE74 8007B274 00000000 */ nop /* 07BE78 8007B278 10000008 */ b .L8007B29C /* 07BE7C 8007B27C 00001025 */ move $v0, $zero .L8007B280: -/* 07BE80 8007B280 8F186330 */ lw $t8, %lo(D_80126330)($t8) +/* 07BE80 8007B280 8F186330 */ lw $t8, %lo(gNumberOfLoadedTextures)($t8) /* 07BE84 8007B284 02601025 */ move $v0, $s3 /* 07BE88 8007B288 2B0102BD */ slti $at, $t8, 0x2bd /* 07BE8C 8007B28C 14200003 */ bnez $at, .L8007B29C diff --git a/asm/non_matchings/unknown_00BC20/func_8000B020.s b/asm/non_matchings/unknown_00BC20/func_8000B020.s index 22655639..a94ecd7f 100644 --- a/asm/non_matchings/unknown_00BC20/func_8000B020.s +++ b/asm/non_matchings/unknown_00BC20/func_8000B020.s @@ -82,7 +82,7 @@ glabel func_8000B020 /* 00BD5C 8000B15C 0C01F04B */ jal func_8007C12C /* 00BD60 8000B160 00002825 */ move $a1, $zero /* 00BD64 8000B164 8604006E */ lh $a0, 0x6e($s0) -/* 00BD68 8000B168 0C01EB9D */ jal func_8007AE74 +/* 00BD68 8000B168 0C01EB9D */ jal load_texture /* 00BD6C 8000B16C AE020078 */ sw $v0, 0x78($s0) /* 00BD70 8000B170 AE02007C */ sw $v0, 0x7c($s0) /* 00BD74 8000B174 00002025 */ move $a0, $zero diff --git a/asm/non_matchings/unknown_00BC20/func_8000B290.s b/asm/non_matchings/unknown_00BC20/func_8000B290.s index 6068e9b1..55e0f95b 100644 --- a/asm/non_matchings/unknown_00BC20/func_8000B290.s +++ b/asm/non_matchings/unknown_00BC20/func_8000B290.s @@ -27,7 +27,7 @@ glabel func_8000B290 /* 00BEEC 8000B2EC 00000000 */ nop /* 00BEF0 8000B2F0 10800004 */ beqz $a0, .L8000B304 /* 00BEF4 8000B2F4 00000000 */ nop -/* 00BEF8 8000B2F8 0C01F32C */ jal func_8007CCB0 +/* 00BEF8 8000B2F8 0C01F32C */ jal free_sprite /* 00BEFC 8000B2FC 00000000 */ nop /* 00BF00 8000B300 AE000078 */ sw $zero, 0x78($s0) .L8000B304: @@ -35,7 +35,7 @@ glabel func_8000B290 /* 00BF08 8000B308 00000000 */ nop /* 00BF0C 8000B30C 10800004 */ beqz $a0, .L8000B320 /* 00BF10 8000B310 00000000 */ nop -/* 00BF14 8000B314 0C01ECAF */ jal func_8007B2BC +/* 00BF14 8000B314 0C01ECAF */ jal free_texture /* 00BF18 8000B318 00000000 */ nop /* 00BF1C 8000B31C AE00007C */ sw $zero, 0x7c($s0) .L8000B320: diff --git a/asm/non_matchings/unknown_00BC20/func_8000EA54.s b/asm/non_matchings/unknown_00BC20/func_8000EA54.s index 5d1322ca..834ead32 100644 --- a/asm/non_matchings/unknown_00BC20/func_8000EA54.s +++ b/asm/non_matchings/unknown_00BC20/func_8000EA54.s @@ -405,7 +405,7 @@ glabel L8000EDE0 /* 00FC0C 8000F00C 00000000 */ nop /* 00FC10 8000F010 01306821 */ addu $t5, $t1, $s0 /* 00FC14 8000F014 8DA40000 */ lw $a0, ($t5) -/* 00FC18 8000F018 0C01EB9D */ jal func_8007AE74 +/* 00FC18 8000F018 0C01EB9D */ jal load_texture /* 00FC1C 8000F01C A3A30037 */ sb $v1, 0x37($sp) /* 00FC20 8000F020 8E4F0068 */ lw $t7, 0x68($s2) /* 00FC24 8000F024 83A30037 */ lb $v1, 0x37($sp) @@ -524,7 +524,7 @@ glabel L8000EDE0 /* 00FDC8 8000F1C8 00000000 */ nop /* 00FDCC 8000F1CC 10400004 */ beqz $v0, .L8000F1E0 /* 00FDD0 8000F1D0 8FA60064 */ lw $a2, 0x64($sp) -/* 00FDD4 8000F1D4 0C01ECAF */ jal func_8007B2BC +/* 00FDD4 8000F1D4 0C01ECAF */ jal free_texture /* 00FDD8 8000F1D8 00402025 */ move $a0, $v0 /* 00FDDC 8000F1DC 8FA60064 */ lw $a2, 0x64($sp) .L8000F1E0: @@ -603,7 +603,7 @@ glabel L8000EDE0 /* 00FEE8 8000F2E8 00000000 */ nop /* 00FEEC 8000F2EC 10400003 */ beqz $v0, .L8000F2FC /* 00FEF0 8000F2F0 00000000 */ nop -/* 00FEF4 8000F2F4 0C01ECAF */ jal func_8007B2BC +/* 00FEF4 8000F2F4 0C01ECAF */ jal free_texture /* 00FEF8 8000F2F8 00402025 */ move $a0, $v0 .L8000F2FC: /* 00FEFC 8000F2FC 3C028012 */ lui $v0, %hi(D_8011AE54) # $v0, 0x8012 @@ -611,7 +611,7 @@ glabel L8000EDE0 /* 00FF04 8000F304 00000000 */ nop /* 00FF08 8000F308 10400004 */ beqz $v0, .L8000F31C /* 00FF0C 8000F30C 8FA60064 */ lw $a2, 0x64($sp) -/* 00FF10 8000F310 0C01ECAF */ jal func_8007B2BC +/* 00FF10 8000F310 0C01ECAF */ jal free_texture /* 00FF14 8000F314 00402025 */ move $a0, $v0 /* 00FF18 8000F318 8FA60064 */ lw $a2, 0x64($sp) .L8000F31C: @@ -786,7 +786,7 @@ glabel L8000EDE0 /* 010180 8000F580 00000000 */ nop /* 010184 8000F584 10400003 */ beqz $v0, .L8000F594 /* 010188 8000F588 00000000 */ nop -/* 01018C 8000F58C 0C01ECAF */ jal func_8007B2BC +/* 01018C 8000F58C 0C01ECAF */ jal free_texture /* 010190 8000F590 00402025 */ move $a0, $v0 .L8000F594: /* 010194 8000F594 3C028012 */ lui $v0, %hi(D_8011AE54) # $v0, 0x8012 @@ -794,7 +794,7 @@ glabel L8000EDE0 /* 01019C 8000F59C 00000000 */ nop /* 0101A0 8000F5A0 10400004 */ beqz $v0, .L8000F5B4 /* 0101A4 8000F5A4 8FA60064 */ lw $a2, 0x64($sp) -/* 0101A8 8000F5A8 0C01ECAF */ jal func_8007B2BC +/* 0101A8 8000F5A8 0C01ECAF */ jal free_texture /* 0101AC 8000F5AC 00402025 */ move $a0, $v0 /* 0101B0 8000F5B0 8FA60064 */ lw $a2, 0x64($sp) .L8000F5B4: diff --git a/asm/non_matchings/unknown_00BC20/func_8000F648.s b/asm/non_matchings/unknown_00BC20/func_8000F648.s index fd87d5b0..b9ccefa5 100644 --- a/asm/non_matchings/unknown_00BC20/func_8000F648.s +++ b/asm/non_matchings/unknown_00BC20/func_8000F648.s @@ -42,7 +42,7 @@ glabel func_8000F648 /* 0102D8 8000F6D8 00000000 */ nop /* 0102DC 8000F6DC 10400003 */ beqz $v0, .L8000F6EC /* 0102E0 8000F6E0 00000000 */ nop -/* 0102E4 8000F6E4 0C01ECAF */ jal func_8007B2BC +/* 0102E4 8000F6E4 0C01ECAF */ jal free_texture /* 0102E8 8000F6E8 00402025 */ move $a0, $v0 .L8000F6EC: /* 0102EC 8000F6EC 26310001 */ addiu $s1, $s1, 1 @@ -62,7 +62,7 @@ glabel func_8000F648 /* 01031C 8000F71C 00000000 */ nop /* 010320 8000F720 10400003 */ beqz $v0, .L8000F730 /* 010324 8000F724 00000000 */ nop -/* 010328 8000F728 0C01F32C */ jal func_8007CCB0 +/* 010328 8000F728 0C01F32C */ jal free_sprite /* 01032C 8000F72C 00402025 */ move $a0, $v0 .L8000F730: /* 010330 8000F730 26310001 */ addiu $s1, $s1, 1 diff --git a/asm/non_matchings/unknown_00BC20/func_8000FBCC.s b/asm/non_matchings/unknown_00BC20/func_8000FBCC.s index d461df98..164cdf29 100644 --- a/asm/non_matchings/unknown_00BC20/func_8000FBCC.s +++ b/asm/non_matchings/unknown_00BC20/func_8000FBCC.s @@ -11,7 +11,7 @@ glabel func_8000FBCC /* 0107F0 8000FBF0 00000000 */ nop /* 0107F4 8000FBF4 84640034 */ lh $a0, 0x34($v1) /* 0107F8 8000FBF8 AFA60018 */ sw $a2, 0x18($sp) -/* 0107FC 8000FBFC 0C01EB9D */ jal func_8007AE74 +/* 0107FC 8000FBFC 0C01EB9D */ jal load_texture /* 010800 8000FC00 AFA5001C */ sw $a1, 0x1c($sp) /* 010804 8000FC04 8FA5001C */ lw $a1, 0x1c($sp) /* 010808 8000FC08 8FA60018 */ lw $a2, 0x18($sp) diff --git a/asm/non_matchings/unknown_00BC20/func_8000FC6C.s b/asm/non_matchings/unknown_00BC20/func_8000FC6C.s index 3ca953cb..24335e16 100644 --- a/asm/non_matchings/unknown_00BC20/func_8000FC6C.s +++ b/asm/non_matchings/unknown_00BC20/func_8000FC6C.s @@ -20,7 +20,7 @@ glabel func_8000FC6C /* 0108B4 8000FCB4 00000000 */ nop /* 0108B8 8000FCB8 84440038 */ lh $a0, 0x38($v0) /* 0108BC 8000FCBC AFA60018 */ sw $a2, 0x18($sp) -/* 0108C0 8000FCC0 0C01EB9D */ jal func_8007AE74 +/* 0108C0 8000FCC0 0C01EB9D */ jal load_texture /* 0108C4 8000FCC4 AFA5001C */ sw $a1, 0x1c($sp) /* 0108C8 8000FCC8 8FA5001C */ lw $a1, 0x1c($sp) /* 0108CC 8000FCCC 8FA60018 */ lw $a2, 0x18($sp) diff --git a/asm/non_matchings/unknown_00BC20/func_800101AC.s b/asm/non_matchings/unknown_00BC20/func_800101AC.s index 8fec110e..452c9deb 100644 --- a/asm/non_matchings/unknown_00BC20/func_800101AC.s +++ b/asm/non_matchings/unknown_00BC20/func_800101AC.s @@ -72,7 +72,7 @@ glabel func_800101AC /* 010E94 80010294 00000000 */ nop /* 010E98 80010298 01906821 */ addu $t5, $t4, $s0 /* 010E9C 8001029C 8DA40000 */ lw $a0, ($t5) -/* 010EA0 800102A0 0C01F32C */ jal func_8007CCB0 +/* 010EA0 800102A0 0C01F32C */ jal free_sprite /* 010EA4 800102A4 00000000 */ nop /* 010EA8 800102A8 26730001 */ addiu $s3, $s3, 1 /* 010EAC 800102AC 1672FFF8 */ bne $s3, $s2, .L80010290 @@ -469,7 +469,7 @@ glabel L80010664 /* 011404 80010804 00000000 */ nop /* 011408 80010808 10800003 */ beqz $a0, .L80010818 /* 01140C 8001080C 00000000 */ nop -/* 011410 80010810 0C01ECAF */ jal func_8007B2BC +/* 011410 80010810 0C01ECAF */ jal free_texture /* 011414 80010814 00000000 */ nop .L80010818: /* 011418 80010818 8EC20058 */ lw $v0, 0x58($s6) @@ -480,7 +480,7 @@ glabel L80010664 /* 01142C 8001082C 00000000 */ nop /* 011430 80010830 10800003 */ beqz $a0, .L80010840 /* 011434 80010834 00000000 */ nop -/* 011438 80010838 0C01ECAF */ jal func_8007B2BC +/* 011438 80010838 0C01ECAF */ jal free_texture /* 01143C 8001083C 00000000 */ nop .L80010840: /* 011440 80010840 8EC20040 */ lw $v0, 0x40($s6) @@ -519,7 +519,7 @@ glabel L80010664 /* 0114B4 800108B4 00000000 */ nop /* 0114B8 800108B8 01305021 */ addu $t2, $t1, $s0 /* 0114BC 800108BC 8D440000 */ lw $a0, ($t2) -/* 0114C0 800108C0 0C01ECAF */ jal func_8007B2BC +/* 0114C0 800108C0 0C01ECAF */ jal free_texture /* 0114C4 800108C4 00000000 */ nop /* 0114C8 800108C8 26730001 */ addiu $s3, $s3, 1 /* 0114CC 800108CC 1672FFF8 */ bne $s3, $s2, .L800108B0 @@ -535,7 +535,7 @@ glabel L80010664 /* 0114EC 800108EC 00000000 */ nop /* 0114F0 800108F0 01706021 */ addu $t4, $t3, $s0 /* 0114F4 800108F4 8D840000 */ lw $a0, ($t4) -/* 0114F8 800108F8 0C01F32C */ jal func_8007CCB0 +/* 0114F8 800108F8 0C01F32C */ jal free_sprite /* 0114FC 800108FC 00000000 */ nop /* 011500 80010900 26730001 */ addiu $s3, $s3, 1 /* 011504 80010904 1672FFF8 */ bne $s3, $s2, .L800108E8 diff --git a/asm/non_matchings/unknown_0255E0/func_8002C0C4.s b/asm/non_matchings/unknown_0255E0/func_8002C0C4.s index a173bb6e..c92c8e8c 100644 --- a/asm/non_matchings/unknown_0255E0/func_8002C0C4.s +++ b/asm/non_matchings/unknown_0255E0/func_8002C0C4.s @@ -186,7 +186,7 @@ glabel func_8002C0C4 /* 02CF70 8002C370 8DE40000 */ lw $a0, ($t7) /* 02CF74 8002C374 00000000 */ nop /* 02CF78 8002C378 34988000 */ ori $t8, $a0, 0x8000 -/* 02CF7C 8002C37C 0C01EB9D */ jal func_8007AE74 +/* 02CF7C 8002C37C 0C01EB9D */ jal load_texture /* 02CF80 8002C380 03002025 */ move $a0, $t8 /* 02CF84 8002C384 8E390000 */ lw $t9, ($s1) /* 02CF88 8002C388 26100001 */ addiu $s0, $s0, 1 @@ -223,7 +223,7 @@ glabel func_8002C0C4 /* 02CFFC 8002C3FC 8719001E */ lh $t9, 0x1e($t8) /* 02D000 8002C400 00000000 */ nop /* 02D004 8002C404 00196840 */ sll $t5, $t9, 1 -/* 02D008 8002C408 0C01C614 */ jal func_80071850 +/* 02D008 8002C408 0C01C614 */ jal align16 /* 02D00C 8002C40C 01B42021 */ addu $a0, $t5, $s4 /* 02D010 8002C410 8E2E0000 */ lw $t6, ($s1) /* 02D014 8002C414 0040A025 */ move $s4, $v0 @@ -269,7 +269,7 @@ glabel func_8002C0C4 /* 02D0B4 8002C4B4 87190032 */ lh $t9, 0x32($t8) /* 02D0B8 8002C4B8 00000000 */ nop /* 02D0BC 8002C4BC 00196840 */ sll $t5, $t9, 1 -/* 02D0C0 8002C4C0 0C01C614 */ jal func_80071850 +/* 02D0C0 8002C4C0 0C01C614 */ jal align16 /* 02D0C4 8002C4C4 01B42021 */ addu $a0, $t5, $s4 /* 02D0C8 8002C4C8 8E320000 */ lw $s2, ($s1) /* 02D0CC 8002C4CC 26100001 */ addiu $s0, $s0, 1 diff --git a/asm/non_matchings/unknown_0255E0/func_8002C7D4.s b/asm/non_matchings/unknown_0255E0/func_8002C7D4.s index c40ed4f3..55a7a8bc 100644 --- a/asm/non_matchings/unknown_0255E0/func_8002C7D4.s +++ b/asm/non_matchings/unknown_0255E0/func_8002C7D4.s @@ -28,7 +28,7 @@ glabel func_8002C7D4 /* 02D434 8002C834 00000000 */ nop /* 02D438 8002C838 0312C821 */ addu $t9, $t8, $s2 /* 02D43C 8002C83C 8F240000 */ lw $a0, ($t9) -/* 02D440 8002C840 0C01ECAF */ jal func_8007B2BC +/* 02D440 8002C840 0C01ECAF */ jal free_texture /* 02D444 8002C844 00000000 */ nop /* 02D448 8002C848 8E910000 */ lw $s1, ($s4) /* 02D44C 8002C84C 26100001 */ addiu $s0, $s0, 1 @@ -53,7 +53,7 @@ glabel func_8002C7D4 /* 02D494 8002C894 8E890000 */ lw $t1, ($s4) /* 02D498 8002C898 00000000 */ nop /* 02D49C 8002C89C 8D240020 */ lw $a0, 0x20($t1) -/* 02D4A0 8002C8A0 0C01F32C */ jal func_8007CCB0 +/* 02D4A0 8002C8A0 0C01F32C */ jal free_sprite /* 02D4A4 8002C8A4 00000000 */ nop /* 02D4A8 8002C8A8 3C118012 */ lui $s1, %hi(D_8011D350) # $s1, 0x8012 /* 02D4AC 8002C8AC 3C128012 */ lui $s2, %hi(D_8011D320) # $s2, 0x8012 diff --git a/asm/non_matchings/unknown_05F690/free_object_model.s b/asm/non_matchings/unknown_05F690/free_object_model.s index 119f1644..7fb33f87 100644 --- a/asm/non_matchings/unknown_05F690/free_object_model.s +++ b/asm/non_matchings/unknown_05F690/free_object_model.s @@ -17,7 +17,7 @@ glabel free_object_model /* 060C90 80060090 00000000 */ nop /* 060C94 80060094 10800005 */ beqz $a0, .L800600AC /* 060C98 80060098 00000000 */ nop -/* 060C9C 8006009C 0C01ECAF */ jal func_8007B2BC +/* 060C9C 8006009C 0C01ECAF */ jal free_texture /* 060CA0 800600A0 00000000 */ nop /* 060CA4 800600A4 86420022 */ lh $v0, 0x22($s2) /* 060CA8 800600A8 00000000 */ nop diff --git a/asm/non_matchings/unknown_05F690/func_8005F99C.s b/asm/non_matchings/unknown_05F690/func_8005F99C.s index aea23239..d0677110 100644 --- a/asm/non_matchings/unknown_05F690/func_8005F99C.s +++ b/asm/non_matchings/unknown_05F690/func_8005F99C.s @@ -136,7 +136,7 @@ glabel func_8005F99C /* 060790 8005FB90 A3A5003F */ sb $a1, 0x3f($sp) /* 060794 8005FB94 34888000 */ ori $t0, $a0, 0x8000 /* 060798 8005FB98 01002025 */ move $a0, $t0 -/* 06079C 8005FB9C 0C01EB9D */ jal func_8007AE74 +/* 06079C 8005FB9C 0C01EB9D */ jal load_texture /* 0607A0 8005FBA0 AFA3002C */ sw $v1, 0x2c($sp) /* 0607A4 8005FBA4 8FA3002C */ lw $v1, 0x2c($sp) /* 0607A8 8005FBA8 8E490000 */ lw $t1, ($s2) diff --git a/asm/non_matchings/unknown_06B2B0/load_level.s b/asm/non_matchings/unknown_06B2B0/load_level.s index 205af418..f846ffb0 100644 --- a/asm/non_matchings/unknown_06B2B0/load_level.s +++ b/asm/non_matchings/unknown_06B2B0/load_level.s @@ -685,7 +685,7 @@ glabel load_level /* 06C828 8006BC28 15E1000F */ bne $t7, $at, .L8006BC68 /* 06C82C 8006BC2C 00000000 */ nop /* 06C830 8006BC30 8C6400A4 */ lw $a0, 0xa4($v1) -/* 06C834 8006BC34 0C01EB9D */ jal func_8007AE74 +/* 06C834 8006BC34 0C01EB9D */ jal load_texture /* 06C838 8006BC38 00000000 */ nop /* 06C83C 8006BC3C 8E2D0000 */ lw $t5, ($s1) /* 06C840 8006BC40 00000000 */ nop diff --git a/asm/non_matchings/unknown_07B870/func_8007B3D0.s b/asm/non_matchings/unknown_07B870/func_8007B3D0.s deleted file mode 100644 index 1d0775a3..00000000 --- a/asm/non_matchings/unknown_07B870/func_8007B3D0.s +++ /dev/null @@ -1,29 +0,0 @@ -glabel func_8007B3D0 -/* 07BFD0 8007B3D0 3C018012 */ lui $at, %hi(D_8012637C) # $at, 0x8012 -/* 07BFD4 8007B3D4 AC20637C */ sw $zero, %lo(D_8012637C)($at) -/* 07BFD8 8007B3D8 3C018012 */ lui $at, %hi(D_80126374) # $at, 0x8012 -/* 07BFDC 8007B3DC AC206374 */ sw $zero, %lo(D_80126374)($at) -/* 07BFE0 8007B3E0 3C018012 */ lui $at, %hi(D_80126380) # $at, 0x8012 -/* 07BFE4 8007B3E4 A4206380 */ sh $zero, %lo(D_80126380)($at) -/* 07BFE8 8007B3E8 3C018012 */ lui $at, %hi(D_80126382) # $at, 0x8012 -/* 07BFEC 8007B3EC 240E0001 */ li $t6, 1 -/* 07BFF0 8007B3F0 A42E6382 */ sh $t6, %lo(D_80126382)($at) -/* 07BFF4 8007B3F4 3C018012 */ lui $at, %hi(D_80126378) # $at, 0x8012 -/* 07BFF8 8007B3F8 AC206378 */ sw $zero, %lo(D_80126378)($at) -/* 07BFFC 8007B3FC 3C018012 */ lui $at, %hi(D_80126384) # $at, 0x8012 -/* 07C000 8007B400 A4206384 */ sh $zero, %lo(D_80126384)($at) -/* 07C004 8007B404 8C830000 */ lw $v1, ($a0) -/* 07C008 8007B408 3C18E700 */ lui $t8, 0xe700 -/* 07C00C 8007B40C 246F0008 */ addiu $t7, $v1, 8 -/* 07C010 8007B410 AC8F0000 */ sw $t7, ($a0) -/* 07C014 8007B414 AC600004 */ sw $zero, 4($v1) -/* 07C018 8007B418 AC780000 */ sw $t8, ($v1) -/* 07C01C 8007B41C 8C830000 */ lw $v1, ($a0) -/* 07C020 8007B420 3C08B700 */ lui $t0, 0xb700 -/* 07C024 8007B424 24790008 */ addiu $t9, $v1, 8 -/* 07C028 8007B428 AC990000 */ sw $t9, ($a0) -/* 07C02C 8007B42C 24090205 */ li $t1, 517 -/* 07C030 8007B430 AC690004 */ sw $t1, 4($v1) -/* 07C034 8007B434 03E00008 */ jr $ra -/* 07C038 8007B438 AC680000 */ sw $t0, ($v1) - diff --git a/asm/non_matchings/unknown_07B870/func_8007B4C8.s b/asm/non_matchings/unknown_07B870/func_8007B4C8.s deleted file mode 100644 index 3a8b29a9..00000000 --- a/asm/non_matchings/unknown_07B870/func_8007B4C8.s +++ /dev/null @@ -1,10 +0,0 @@ -glabel func_8007B4C8 -/* 07C0C8 8007B4C8 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 07C0CC 8007B4CC AFBF0014 */ sw $ra, 0x14($sp) -/* 07C0D0 8007B4D0 0C01ED3A */ jal func_8007B4E8 -/* 07C0D4 8007B4D4 00003825 */ move $a3, $zero -/* 07C0D8 8007B4D8 8FBF0014 */ lw $ra, 0x14($sp) -/* 07C0DC 8007B4DC 27BD0018 */ addiu $sp, $sp, 0x18 -/* 07C0E0 8007B4E0 03E00008 */ jr $ra -/* 07C0E4 8007B4E4 00000000 */ nop - diff --git a/asm/non_matchings/unknown_07B870/func_8007F1E8.s b/asm/non_matchings/unknown_07B870/func_8007F1E8.s deleted file mode 100644 index b9d8fe27..00000000 --- a/asm/non_matchings/unknown_07B870/func_8007F1E8.s +++ /dev/null @@ -1,29 +0,0 @@ -glabel func_8007F1E8 -/* 07FDE8 8007F1E8 908E0014 */ lbu $t6, 0x14($a0) -/* 07FDEC 8007F1EC 908F0015 */ lbu $t7, 0x15($a0) -/* 07FDF0 8007F1F0 90980016 */ lbu $t8, 0x16($a0) -/* 07FDF4 8007F1F4 90990017 */ lbu $t9, 0x17($a0) -/* 07FDF8 8007F1F8 8C830000 */ lw $v1, ($a0) -/* 07FDFC 8007F1FC AC800004 */ sw $zero, 4($a0) -/* 07FE00 8007F200 AC800008 */ sw $zero, 8($a0) -/* 07FE04 8007F204 AC80000C */ sw $zero, 0xc($a0) -/* 07FE08 8007F208 A08E0010 */ sb $t6, 0x10($a0) -/* 07FE0C 8007F20C A08F0011 */ sb $t7, 0x11($a0) -/* 07FE10 8007F210 A0980012 */ sb $t8, 0x12($a0) -/* 07FE14 8007F214 1860000B */ blez $v1, .L8007F244 -/* 07FE18 8007F218 A0990013 */ sb $t9, 0x13($a0) -/* 07FE1C 8007F21C 000340C0 */ sll $t0, $v1, 3 -/* 07FE20 8007F220 01042821 */ addu $a1, $t0, $a0 -/* 07FE24 8007F224 00801025 */ move $v0, $a0 -.L8007F228: -/* 07FE28 8007F228 8C89000C */ lw $t1, 0xc($a0) -/* 07FE2C 8007F22C 8C4A0018 */ lw $t2, 0x18($v0) -/* 07FE30 8007F230 24420008 */ addiu $v0, $v0, 8 -/* 07FE34 8007F234 0045082B */ sltu $at, $v0, $a1 -/* 07FE38 8007F238 012A5821 */ addu $t3, $t1, $t2 -/* 07FE3C 8007F23C 1420FFFA */ bnez $at, .L8007F228 -/* 07FE40 8007F240 AC8B000C */ sw $t3, 0xc($a0) -.L8007F244: -/* 07FE44 8007F244 03E00008 */ jr $ra -/* 07FE48 8007F248 00000000 */ nop - diff --git a/asm/non_matchings/unknown_07B870/func_8007F414.s b/asm/non_matchings/unknown_07B870/func_8007F414.s deleted file mode 100644 index 81e58402..00000000 --- a/asm/non_matchings/unknown_07B870/func_8007F414.s +++ /dev/null @@ -1,23 +0,0 @@ -glabel func_8007F414 -/* 080014 8007F414 948E000C */ lhu $t6, 0xc($a0) -/* 080018 8007F418 94830000 */ lhu $v1, ($a0) -/* 08001C 8007F41C A4800002 */ sh $zero, 2($a0) -/* 080020 8007F420 A4800004 */ sh $zero, 4($a0) -/* 080024 8007F424 A4800006 */ sh $zero, 6($a0) -/* 080028 8007F428 1860000B */ blez $v1, .L8007F458 -/* 08002C 8007F42C AC8E0008 */ sw $t6, 8($a0) -/* 080030 8007F430 00037880 */ sll $t7, $v1, 2 -/* 080034 8007F434 01E42821 */ addu $a1, $t7, $a0 -/* 080038 8007F438 00801025 */ move $v0, $a0 -.L8007F43C: -/* 08003C 8007F43C 94980006 */ lhu $t8, 6($a0) -/* 080040 8007F440 9459000E */ lhu $t9, 0xe($v0) -/* 080044 8007F444 24420004 */ addiu $v0, $v0, 4 -/* 080048 8007F448 0045082B */ sltu $at, $v0, $a1 -/* 08004C 8007F44C 03194021 */ addu $t0, $t8, $t9 -/* 080050 8007F450 1420FFFA */ bnez $at, .L8007F43C -/* 080054 8007F454 A4880006 */ sh $t0, 6($a0) -.L8007F458: -/* 080058 8007F458 03E00008 */ jr $ra -/* 08005C 8007F45C 00000000 */ nop - diff --git a/asm/non_matchings/unknown_09F8F0/func_800A003C.s b/asm/non_matchings/unknown_09F8F0/func_800A003C.s index 9e6098c9..0272b727 100644 --- a/asm/non_matchings/unknown_09F8F0/func_800A003C.s +++ b/asm/non_matchings/unknown_09F8F0/func_800A003C.s @@ -32,14 +32,14 @@ glabel func_800A003C /* 0A0CB0 800A00B0 3049C000 */ andi $t1, $v0, 0xc000 /* 0A0CB4 800A00B4 16690005 */ bne $s3, $t1, .L800A00CC /* 0A0CB8 800A00B8 304A8000 */ andi $t2, $v0, 0x8000 -/* 0A0CBC 800A00BC 0C01ECAF */ jal func_8007B2BC +/* 0A0CBC 800A00BC 0C01ECAF */ jal free_texture /* 0A0CC0 800A00C0 00000000 */ nop /* 0A0CC4 800A00C4 10000010 */ b .L800A0108 /* 0A0CC8 800A00C8 8E4C0000 */ lw $t4, ($s2) .L800A00CC: /* 0A0CCC 800A00CC 11400005 */ beqz $t2, .L800A00E4 /* 0A0CD0 800A00D0 304B4000 */ andi $t3, $v0, 0x4000 -/* 0A0CD4 800A00D4 0C01F32C */ jal func_8007CCB0 +/* 0A0CD4 800A00D4 0C01F32C */ jal free_sprite /* 0A0CD8 800A00D8 00000000 */ nop /* 0A0CDC 800A00DC 1000000A */ b .L800A0108 /* 0A0CE0 800A00E0 8E4C0000 */ lw $t4, ($s2) diff --git a/asm/non_matchings/unknown_09F8F0/func_800A1428.s b/asm/non_matchings/unknown_09F8F0/func_800A1428.s deleted file mode 100644 index 7cf55e70..00000000 --- a/asm/non_matchings/unknown_09F8F0/func_800A1428.s +++ /dev/null @@ -1,56 +0,0 @@ -glabel func_800A1428 -/* 0A2028 800A1428 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0A202C 800A142C AFBF0014 */ sw $ra, 0x14($sp) -/* 0A2030 800A1430 AFA40018 */ sw $a0, 0x18($sp) -/* 0A2034 800A1434 AFA5001C */ sw $a1, 0x1c($sp) -/* 0A2038 800A1438 AFA60020 */ sw $a2, 0x20($sp) -/* 0A203C 800A143C 8CA20064 */ lw $v0, 0x64($a1) -/* 0A2040 800A1440 00000000 */ nop -/* 0A2044 800A1444 804F01D8 */ lb $t7, 0x1d8($v0) -/* 0A2048 800A1448 00000000 */ nop -/* 0A204C 800A144C 15E00025 */ bnez $t7, .L800A14E4 -/* 0A2050 800A1450 8FBF0014 */ lw $ra, 0x14($sp) -/* 0A2054 800A1454 0C01A142 */ jal func_80068508 -/* 0A2058 800A1458 24040001 */ li $a0, 1 -/* 0A205C 800A145C 8FA40018 */ lw $a0, 0x18($sp) -/* 0A2060 800A1460 8FA50020 */ lw $a1, 0x20($sp) -/* 0A2064 800A1464 0C028F39 */ jal func_800A3CE4 -/* 0A2068 800A1468 00000000 */ nop -/* 0A206C 800A146C 8FA4001C */ lw $a0, 0x1c($sp) -/* 0A2070 800A1470 8FA50020 */ lw $a1, 0x20($sp) -/* 0A2074 800A1474 0C029D48 */ jal func_800A7520 -/* 0A2078 800A1478 00000000 */ nop -/* 0A207C 800A147C 3C038012 */ lui $v1, %hi(D_80126CDC) # $v1, 0x8012 -/* 0A2080 800A1480 8FA50020 */ lw $a1, 0x20($sp) -/* 0A2084 800A1484 8C636CDC */ lw $v1, %lo(D_80126CDC)($v1) -/* 0A2088 800A1488 2418007F */ li $t8, 127 -/* 0A208C 800A148C 8064067A */ lb $a0, 0x67a($v1) -/* 0A2090 800A1490 00051040 */ sll $v0, $a1, 1 -/* 0A2094 800A1494 0302C823 */ subu $t9, $t8, $v0 -/* 0A2098 800A1498 0324082A */ slt $at, $t9, $a0 -/* 0A209C 800A149C 14200004 */ bnez $at, .L800A14B0 -/* 0A20A0 800A14A0 3C0B8012 */ lui $t3, %hi(D_80126D37) # $t3, 0x8012 -/* 0A20A4 800A14A4 00824021 */ addu $t0, $a0, $v0 -/* 0A20A8 800A14A8 10000004 */ b .L800A14BC -/* 0A20AC 800A14AC A068067A */ sb $t0, 0x67a($v1) -.L800A14B0: -/* 0A20B0 800A14B0 00824821 */ addu $t1, $a0, $v0 -/* 0A20B4 800A14B4 252AFF01 */ addiu $t2, $t1, -0xff -/* 0A20B8 800A14B8 A06A067A */ sb $t2, 0x67a($v1) -.L800A14BC: -/* 0A20BC 800A14BC 916B6D37 */ lbu $t3, %lo(D_80126D37)($t3) -/* 0A20C0 800A14C0 24010002 */ li $at, 2 -/* 0A20C4 800A14C4 11610004 */ beq $t3, $at, .L800A14D8 -/* 0A20C8 800A14C8 00000000 */ nop -/* 0A20CC 800A14CC 8FA4001C */ lw $a0, 0x1c($sp) -/* 0A20D0 800A14D0 0C02853C */ jal func_800A14F0 -/* 0A20D4 800A14D4 00000000 */ nop -.L800A14D8: -/* 0A20D8 800A14D8 0C01A142 */ jal func_80068508 -/* 0A20DC 800A14DC 00002025 */ move $a0, $zero -/* 0A20E0 800A14E0 8FBF0014 */ lw $ra, 0x14($sp) -.L800A14E4: -/* 0A20E4 800A14E4 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0A20E8 800A14E8 03E00008 */ jr $ra -/* 0A20EC 800A14EC 00000000 */ nop - diff --git a/asm/non_matchings/unknown_09F8F0/func_800A8474.s b/asm/non_matchings/unknown_09F8F0/func_800A8474.s index db4eae10..09d10dfa 100644 --- a/asm/non_matchings/unknown_09F8F0/func_800A8474.s +++ b/asm/non_matchings/unknown_09F8F0/func_800A8474.s @@ -129,7 +129,7 @@ glabel func_800A8474 /* 0A9210 800A8610 00000000 */ nop /* 0A9214 800A8614 01F1C021 */ addu $t8, $t7, $s1 /* 0A9218 800A8618 8F040000 */ lw $a0, ($t8) -/* 0A921C 800A861C 0C01ECAF */ jal func_8007B2BC +/* 0A921C 800A861C 0C01ECAF */ jal free_texture /* 0A9220 800A8620 AFA30144 */ sw $v1, 0x144($sp) /* 0A9224 800A8624 8FA30144 */ lw $v1, 0x144($sp) /* 0A9228 800A8628 1000001F */ b .L800A86A8 @@ -141,7 +141,7 @@ glabel func_800A8474 /* 0A923C 800A863C 00000000 */ nop /* 0A9240 800A8640 01515821 */ addu $t3, $t2, $s1 /* 0A9244 800A8644 8D640000 */ lw $a0, ($t3) -/* 0A9248 800A8648 0C01F32C */ jal func_8007CCB0 +/* 0A9248 800A8648 0C01F32C */ jal free_sprite /* 0A924C 800A864C AFA30144 */ sw $v1, 0x144($sp) /* 0A9250 800A8650 8FA30144 */ lw $v1, 0x144($sp) /* 0A9254 800A8654 10000014 */ b .L800A86A8 @@ -1668,14 +1668,14 @@ glabel func_800A8474 /* 0AA8B4 800A9CB4 3C0EFA00 */ lui $t6, 0xfa00 /* 0AA8B8 800A9CB8 250F0008 */ addiu $t7, $t0, 8 /* 0AA8BC 800A9CBC AE8F0000 */ sw $t7, ($s4) -/* 0AA8C0 800A9CC0 3C0B8012 */ lui $t3, %hi(D_80126D55) # $t3, 0x8012 +/* 0AA8C0 800A9CC0 3C0B8012 */ lui $t3, %hi(gMinimapGreen) # $t3, 0x8012 /* 0AA8C4 800A9CC4 AD0E0000 */ sw $t6, ($t0) -/* 0AA8C8 800A9CC8 916C6D55 */ lbu $t4, %lo(D_80126D55)($t3) -/* 0AA8CC 800A9CCC 3C188012 */ lui $t8, %hi(D_80126D54) # $t8, 0x8012 -/* 0AA8D0 800A9CD0 93196D54 */ lbu $t9, %lo(D_80126D54)($t8) -/* 0AA8D4 800A9CD4 3C0E8012 */ lui $t6, %hi(D_80126D56) # $t6, 0x8012 +/* 0AA8C8 800A9CC8 916C6D55 */ lbu $t4, %lo(gMinimapGreen)($t3) +/* 0AA8CC 800A9CCC 3C188012 */ lui $t8, %hi(gMinimapRed) # $t8, 0x8012 +/* 0AA8D0 800A9CD0 93196D54 */ lbu $t9, %lo(gMinimapRed)($t8) +/* 0AA8D4 800A9CD4 3C0E8012 */ lui $t6, %hi(gMinimapBlue) # $t6, 0x8012 /* 0AA8D8 800A9CD8 000C6C00 */ sll $t5, $t4, 0x10 -/* 0AA8DC 800A9CDC 91D86D56 */ lbu $t8, %lo(D_80126D56)($t6) +/* 0AA8DC 800A9CDC 91D86D56 */ lbu $t8, %lo(gMinimapBlue)($t6) /* 0AA8E0 800A9CE0 00195600 */ sll $t2, $t9, 0x18 /* 0AA8E4 800A9CE4 8FAC010C */ lw $t4, 0x10c($sp) /* 0AA8E8 800A9CE8 014D7825 */ or $t7, $t2, $t5 diff --git a/asm/non_matchings/unknown_09F8F0/func_800AA600.s b/asm/non_matchings/unknown_09F8F0/func_800AA600.s index 21a51605..5c448e23 100644 --- a/asm/non_matchings/unknown_09F8F0/func_800AA600.s +++ b/asm/non_matchings/unknown_09F8F0/func_800AA600.s @@ -50,7 +50,7 @@ glabel func_800AA600 /* 0AB298 800AA698 8FA40038 */ lw $a0, 0x38($sp) /* 0AB29C 800AA69C 00000000 */ nop /* 0AB2A0 800AA6A0 308B3FFF */ andi $t3, $a0, 0x3fff -/* 0AB2A4 800AA6A4 0C01EB9D */ jal func_8007AE74 +/* 0AB2A4 800AA6A4 0C01EB9D */ jal load_texture /* 0AB2A8 800AA6A8 01602025 */ move $a0, $t3 /* 0AB2AC 800AA6AC 3C098012 */ lui $t1, %hi(D_80126CF4) # $t1, 0x8012 /* 0AB2B0 800AA6B0 860D0006 */ lh $t5, 6($s0) diff --git a/asm/non_matchings/unknown_09F8F0/func_800AB35C.s b/asm/non_matchings/unknown_09F8F0/func_800AB35C.s index 72065244..e2b95e2a 100644 --- a/asm/non_matchings/unknown_09F8F0/func_800AB35C.s +++ b/asm/non_matchings/unknown_09F8F0/func_800AB35C.s @@ -57,7 +57,7 @@ glabel func_800AB35C /* 0AC024 800AB424 00000000 */ nop /* 0AC028 800AB428 10800006 */ beqz $a0, .L800AB444 /* 0AC02C 800AB42C 00000000 */ nop -/* 0AC030 800AB430 0C01ECAF */ jal func_8007B2BC +/* 0AC030 800AB430 0C01ECAF */ jal free_texture /* 0AC034 800AB434 00000000 */ nop /* 0AC038 800AB438 3C02800E */ lui $v0, %hi(D_800E28D8) # $v0, 0x800e /* 0AC03C 800AB43C 244228D8 */ addiu $v0, %lo(D_800E28D8) # addiu $v0, $v0, 0x28d8 diff --git a/asm/non_matchings/unknown_09F8F0/func_800ABB34.s b/asm/non_matchings/unknown_09F8F0/func_800ABB34.s index 4f573dc0..1696e98c 100644 --- a/asm/non_matchings/unknown_09F8F0/func_800ABB34.s +++ b/asm/non_matchings/unknown_09F8F0/func_800ABB34.s @@ -64,7 +64,7 @@ glabel func_800ABB34 /* 0AC81C 800ABC1C 8D29291C */ lw $t1, %lo(D_800E291C)($t1) /* 0AC820 800ABC20 00000000 */ nop /* 0AC824 800ABC24 8D240000 */ lw $a0, ($t1) -/* 0AC828 800ABC28 0C01EB9D */ jal func_8007AE74 +/* 0AC828 800ABC28 0C01EB9D */ jal load_texture /* 0AC82C 800ABC2C 00000000 */ nop /* 0AC830 800ABC30 8FBF0034 */ lw $ra, 0x34($sp) /* 0AC834 800ABC34 AE820008 */ sw $v0, 8($s4) diff --git a/asm/non_matchings/unknown_09F8F0/func_800AD144.s b/asm/non_matchings/unknown_09F8F0/func_800AD144.s index f6412b9b..775a9538 100644 --- a/asm/non_matchings/unknown_09F8F0/func_800AD144.s +++ b/asm/non_matchings/unknown_09F8F0/func_800AD144.s @@ -30,14 +30,14 @@ glabel func_800AD144 /* 0ADDB4 800AD1B4 AFBF0014 */ sw $ra, 0x14($sp) /* 0ADDB8 800AD1B8 AC202C90 */ sw $zero, %lo(D_800E2C90)($at) /* 0ADDBC 800AD1BC 8F040004 */ lw $a0, 4($t8) -/* 0ADDC0 800AD1C0 0C01EB9D */ jal func_8007AE74 +/* 0ADDC0 800AD1C0 0C01EB9D */ jal load_texture /* 0ADDC4 800AD1C4 00000000 */ nop /* 0ADDC8 800AD1C8 3C19800E */ lui $t9, %hi(D_800E291C) # $t9, 0x800e /* 0ADDCC 800AD1CC 8F39291C */ lw $t9, %lo(D_800E291C)($t9) /* 0ADDD0 800AD1D0 3C01800E */ lui $at, %hi(D_800E2C2C+12) # $at, 0x800e /* 0ADDD4 800AD1D4 AC222C38 */ sw $v0, %lo(D_800E2C2C+12)($at) /* 0ADDD8 800AD1D8 8F240004 */ lw $a0, 4($t9) -/* 0ADDDC 800AD1DC 0C01EB9D */ jal func_8007AE74 +/* 0ADDDC 800AD1DC 0C01EB9D */ jal load_texture /* 0ADDE0 800AD1E0 00000000 */ nop /* 0ADDE4 800AD1E4 3C08800E */ lui $t0, %hi(D_800E291C) # $t0, 0x800e /* 0ADDE8 800AD1E8 8D08291C */ lw $t0, %lo(D_800E291C)($t0) diff --git a/asm/non_matchings/waves/func_800B7EB4.s b/asm/non_matchings/waves/func_800B7EB4.s index 4c5b0b85..1fe5dce1 100644 --- a/asm/non_matchings/waves/func_800B7EB4.s +++ b/asm/non_matchings/waves/func_800B7EB4.s @@ -154,7 +154,7 @@ glabel func_800B7EB4 /* 0B8D04 800B8104 AC79000C */ sw $t9, 0xc($v1) .L800B8108: /* 0B8D08 800B8108 8E44002C */ lw $a0, 0x2c($s2) -/* 0B8D0C 800B810C 0C01EB9D */ jal func_8007AE74 +/* 0B8D0C 800B810C 0C01EB9D */ jal load_texture /* 0B8D10 800B8110 00000000 */ nop /* 0B8D14 800B8114 8FBF0024 */ lw $ra, 0x24($sp) /* 0B8D18 800B8118 3C01800E */ lui $at, %hi(D_800E30D0) # $at, 0x800e diff --git a/include/f3ddkr.h b/include/f3ddkr.h index 5a442a2f..d6cfd90d 100644 --- a/include/f3ddkr.h +++ b/include/f3ddkr.h @@ -104,4 +104,18 @@ _g->words.w1 = (unsigned int)(address); \ } +#define gDPSetPrimColorRGBA(pkt, rgba) \ +{ \ + Gfx *_g = (Gfx *)(pkt); \ + _g->words.w0 = _SHIFTL(G_SETPRIMCOLOR, 24, 8); \ + _g->words.w1 = rgba; \ +} + +#define gDPSetEnvColorRGBA(pkt, rgba) \ +{ \ + Gfx *_g = (Gfx *)(pkt); \ + _g->words.w0 = _SHIFTL(G_SETENVCOLOR, 24, 8); \ + _g->words.w1 = rgba; \ +} + #endif diff --git a/include/structs.h b/include/structs.h index 3b4c4c89..49a1df9e 100644 --- a/include/structs.h +++ b/include/structs.h @@ -32,11 +32,21 @@ typedef struct MenuElement { /* 0x1E */ u16 backgroundAlpha; // 0x0000 = No background, 0x00FF = full background color. } MenuElement; +#define TEX_FORMAT_RGBA32 0 +#define TEX_FORMAT_RGBA16 1 +#define TEX_FORMAT_I8 2 +#define TEX_FORMAT_I4 3 +#define TEX_FORMAT_IA16 4 +#define TEX_FORMAT_IA8 5 +#define TEX_FORMAT_IA4 6 +#define TEX_FORMAT_CI4 7 +#define TEX_FORMAT_CI8 8 + /* Size: 0x20 bytes */ typedef struct TextureHeader { /* 0x00 */ u8 width; /* 0x01 */ u8 height; - /* 0x02 */ u8 format; // Lower 3 bits determines image format. + /* 0x02 */ u8 format; // Lower 4 bits determines image format. // 0 = RGBA32 // 1 = RGBA16 // 2 = I8 @@ -44,24 +54,24 @@ typedef struct TextureHeader { // 4 = IA16 // 5 = IA8 // 6 = IA4 - // 7 = CI4 texture + // 7 = CI4 (16 colors) + // 8 = CI8 (64 colors) /* 0x03 */ u8 unk3; /* 0x04 */ u8 unk4; - /* 0x05 */ u8 unk5; // Always 0x01? + /* 0x05 */ u8 numberOfInstances; // Always 1 in the ROM. /* 0x06 */ u16 flags; // 0x04 = Interlaced texture // 0x40 = U clamp flag. 0 = Wrap, 1 = Clamp // 0x80 = V clamp flag. 0 = Wrap, 1 = Clamp - /* 0x08 */ u16 ci4Palette; // Offset to CI4 palette + /* 0x08 */ s16 ciPaletteOffset; /* 0x0A */ u8 unkA; /* 0x0B */ u8 numberOfCommands; // initialized in RAM; Number of commands in the texture display list. (Usually 0x07) /* 0x0C */ s32* cmd; // initialized in RAM; Pointer to texture display list. /* 0x10 */ u8 unk10; /* 0x11 */ u8 unk11; - /* 0x12 */ u8 numOfTextures; // For animated textures, static textures are just 0x01. Each texture has it's own header. - /* 0x13 */ u8 unk13; + /* 0x12 */ u16 numOfTextures; // For animated textures, static textures are just 0x01. Each texture has it's own header. /* 0x14 */ u16 frameAdvanceDelay; // How many frames to delay before moving to the next texture. - /* 0x16 */ u16 textureSize; // Size in number of bytes, including the header + /* 0x16 */ s16 textureSize; // Size in number of bytes, including the header /* 0x18 */ u8 unk18; /* 0x19 */ u8 unk19; /* 0x1A */ u8 unk1A; @@ -342,7 +352,7 @@ typedef struct LevelModel { u8 pad1C[4]; /* 0x20 */ s32 unk20; u8 pad24[0x14]; -/* 0x38 */ u32 unk38; +/* 0x38 */ u32 minimapColor; } LevelModel; typedef struct Object_3C { diff --git a/src/font.c b/src/font.c index 2a43c684..873767c0 100644 --- a/src/font.c +++ b/src/font.c @@ -232,7 +232,7 @@ void func_800C4170(s32 arg0) { // Minor issue with this loop. s32 i = 0; while (fontData->unk40[i] != -1) { - fontData->texturePointers[i] = func_8007AE74(fontData->unk40[i]); + fontData->texturePointers[i] = load_texture(fontData->unk40[i]); i++; if (i >= 64) { break; @@ -256,7 +256,7 @@ void func_800C422C(s32 arg0) { // Minor issue with this loop. s32 i = 0; while (fontData->unk40[i] != -1) { - func_8007B2BC(fontData->texturePointers[i]); + free_texture(fontData->texturePointers[i]); fontData->texturePointers[i] = NULL; i++; if (i >= 32) { diff --git a/src/memory.c b/src/memory.c index 89128947..ce718435 100644 --- a/src/memory.c +++ b/src/memory.c @@ -541,7 +541,42 @@ GLOBAL_ASM("asm/non_matchings/memory/allocate_memory_pool_slot.s") #endif -GLOBAL_ASM("asm/non_matchings/memory/func_80071850.s") +/** + * Returns the passed in address aligned to the next 16-byte boundary. + */ +u8 *align16(u8 *address) { + s32 remainder = (s32)address & 0xF; + if (remainder > 0) { + address = (u8*)(((s32)address - remainder) + 16); + } + return address; +} + +/** + * Returns the passed in address aligned to the next 8-byte boundary. + * Unused. + */ +u8 *align8(u8 *address) { + s32 remainder = (s32)address & 0x7; + if (remainder > 0) { + address = (u8*)(((s32)address - remainder) + 8); + } + return address; +} + +/** + * Returns the passed in address aligned to the next 4-byte boundary. + * Unused. + */ +u8 *align4(u8 *address) { + s32 remainder = (s32)address & 0x3; + if (remainder > 0) { + address = (u8*)(((s32)address - remainder) + 4); + } + return address; +} + +GLOBAL_ASM("asm/non_matchings/memory/func_800718A4.s") #ifdef NON_MATCHING s32 get_memory_color_tag_count(s32 arg0) { @@ -559,8 +594,8 @@ GLOBAL_ASM("asm/non_matchings/memory/get_memory_color_tag_count.s") #endif /** - * Unused. * Prints out the counts for each color tag in the main pool. + * Unused. */ void print_memory_color_tags(void) { stubbed_printf("RED %d\n", get_memory_color_tag_count(COLOR_TAG_RED)); @@ -575,8 +610,8 @@ void print_memory_color_tags(void) { } /** - * Unused. * Draws the counts for each color tag in the main pool. + * Unused. * See: https://tcrf.net/Diddy_Kong_Racing#Current_Colors */ void render_memory_color_tags(void) { diff --git a/src/menu.c b/src/menu.c index 39fd53dc..2f7d26fd 100644 --- a/src/menu.c +++ b/src/menu.c @@ -4312,8 +4312,8 @@ void func_8009C4A8(s16 *arg0) { } } -void func_8007B2BC(u32 arg0); -void func_8007CCB0(u32 arg0); +void free_texture(u32 arg0); +void free_sprite(u32 arg0); void gParticlePtrList_addObject(u32 arg0); void func_8005FF40(u32 arg0); @@ -4322,11 +4322,11 @@ void func_8009C508(s32 arg0) { if (D_80126550[arg0] != 0) { if ((((*D_800DF750)[arg0] & 0xC000) == 0xC000) && (D_80126550[arg0] != 0)) { set_free_queue_state(0); - func_8007B2BC((u32)D_80126550[arg0]); + free_texture((u32)D_80126550[arg0]); set_free_queue_state(2); } else { if ((*D_800DF750)[arg0] & 0x8000) { - func_8007CCB0((u32)D_80126550[arg0]); + free_sprite((u32)D_80126550[arg0]); } else { if ((*D_800DF750)[arg0] & 0x4000) { gParticlePtrList_addObject((u32)D_80126550[arg0]); diff --git a/src/particles.c b/src/particles.c index 808fc40f..f82fc3bf 100644 --- a/src/particles.c +++ b/src/particles.c @@ -219,7 +219,7 @@ void func_800AE2D8(void) { phi_s0 = 0; if (D_800E2E64 > 0) { do { - func_8007CCB0(*(D_800E2E60 + phi_s1)); + free_sprite(*(D_800E2E60 + phi_s1)); phi_s0 += 1; phi_s1 += 1; } while (phi_s0 < D_800E2E64); diff --git a/src/printf.c b/src/printf.c index 03898b14..5fe32708 100644 --- a/src/printf.c +++ b/src/printf.c @@ -119,9 +119,9 @@ GLOBAL_ASM("asm/non_matchings/printf/func_800B4A14.s") GLOBAL_ASM("asm/non_matchings/printf/sprintf.s") void func_800B5E88(void) { - D_80127CA0 = func_8007AE74(0); - D_80127CA4 = func_8007AE74(1); - D_80127CA8 = func_8007AE74(2); + D_80127CA0 = load_texture(0); + D_80127CA4 = load_texture(1); + D_80127CA8 = load_texture(2); D_801285D8 = &D_80127CD8[0]; } diff --git a/src/unknown_07B870.c b/src/textures_sprites.c similarity index 74% rename from src/unknown_07B870.c rename to src/textures_sprites.c index 3133849e..b100fe0a 100644 --- a/src/unknown_07B870.c +++ b/src/textures_sprites.c @@ -1,14 +1,11 @@ /* The comment below is needed for this file to be picked up by generate_ld */ /* RAM_POS: 0x8007AC70 */ -#include "unknown_07B870.h" - -#include "types.h" -#include "macros.h" +#include "textures_sprites.h" /************ .data ************/ -u32 D_800DE7C0 = 0xFF00FFFF; +u32 gTexColorTag = COLOR_TAG_MAGENTA; s32 D_800DE7C4 = 1; // See "include/f3ddkr.h" for the defines @@ -858,26 +855,84 @@ const char D_800E7C50[] = "TEXSPR Error: Tryed to deallocate non-existent sprite /*********************************/ +/* Size: 8 bytes */ +typedef struct unk8007F1E8_18 { + s32 unk0; + u8 unk4; + u8 unk5; + u8 unk6; + u8 unk7; +} unk8007F1E8_18; + +/* Size: Variable. */ +typedef struct unk8007F1E8 { + s32 unk0; + s32 unk4; + s32 unk8; + s32 unkC; + u8 unk10; + u8 unk11; + u8 unk12; + u8 unk13; + u8 unk14; + u8 unk15; + u8 unk16; + u8 unk17; + unk8007F1E8_18 unk18[1]; // Actual length depends on unk0 +} unk8007F1E8; + /************ .bss ************/ -s32 D_80126320[2]; -s32 D_80126328; -s32 D_8012632C; -s32 D_80126330[2]; -s32 D_80126338; -s32 D_8012633C; -s32 D_80126340; +s32 *D_80126320[2]; + +typedef struct TextureCacheEntry { + s32 id; + TextureHeader *texture; +} TextureCacheEntry; + +TextureCacheEntry *gTextureCache; + +u8 *gCiPalettes; +s32 gNumberOfLoadedTextures; +s32 D_80126334; +s32 D_80126338[2]; +s32 gCiPalettesSize; s32 D_80126344; -s32 D_80126348; -s32 D_8012634C; -s32 D_80126350; +s32 *gSpriteOffsetTable; + +typedef struct Sprite { + s16 baseTextureId; + s16 numberOfFrames; // 1 means static texture + s16 numberOfInstances; + s16 unk6; + TextureHeader **frames; + u8 unkC[1]; // Actual size varies. +} Sprite; + +typedef struct SpriteCacheEntry { + s32 id; + Sprite *sprite; +} SpriteCacheEntry; + +SpriteCacheEntry *gSpriteCache; + +Sprite *gCurrentSprite; s32 D_80126354; s32 D_80126358; s32 D_8012635C; s32 D_80126360; s32 D_80126364; s32 D_80126368; -s32 D_8012636C; + +/* Size: 0x28 bytes */ +typedef struct TempTexHeader { +/* 0x00 */ TextureHeader header; +/* 0x20 */ u32 uncompressedSize; // Little endian +/* 0x24 */ u8 gzipLevel; // Always 9. +/* 0x25 */ u8 pad25[3]; // padding +} TempTexHeader; + +TempTexHeader *gTempTextureHeader; s32 D_80126370; s32 D_80126374; s32 D_80126378; @@ -888,7 +943,7 @@ s16 D_80126384; /******************************/ -GLOBAL_ASM("asm/non_matchings/unknown_07B870/func_8007AC70.s") +GLOBAL_ASM("asm/non_matchings/textures_sprites/func_8007AC70.s") void func_8007AE0C(s32 arg0) { D_80126378 |= arg0; @@ -900,12 +955,12 @@ void func_8007AE28(s32 arg0) { /* Unused? */ s32 func_8007AE44(void) { - return D_80126338; + return D_80126338[0]; } /* Unused? */ s32 func_8007AE54(void) { - return D_8012633C; + return D_80126338[1]; } /* Unused? */ @@ -913,10 +968,172 @@ s32 func_8007AE64(void) { return D_80126354; } -GLOBAL_ASM("asm/non_matchings/unknown_07B870/func_8007AE74.s") -GLOBAL_ASM("asm/non_matchings/unknown_07B870/func_8007B2BC.s") -GLOBAL_ASM("asm/non_matchings/unknown_07B870/func_8007B374.s") -GLOBAL_ASM("asm/non_matchings/unknown_07B870/func_8007B3D0.s") +#ifdef NON_MATCHING +// Minor matching issues with loops, but should be functionally the same. +TextureHeader *load_texture(s32 arg0) { + s32 assetSection; + s32 assetIndex; + s32 assetOffset; + s32 assetSize; + s32 assetTable; + s32 texIndex; + s32 temp_a1; + s32 paletteOffset; + s32 i; + u8 *alignedAddress; + TextureHeader *tex; + TextureHeader *texTemp; + s32 numberOfTextures; + s32 sp3C; + s32 temp_a0; + s32 temp_v0_5; + + arg0 &= 0xFFFF; + assetIndex = arg0; + assetSection = ASSET_TEXTURES_2D; + assetTable = 0; + if (arg0 & 0x8000) { + assetTable = 1; + assetIndex = arg0 & 0x7FFF; + assetSection = ASSET_TEXTURES_3D; + } + if ((assetIndex >= D_80126338[assetTable]) || (assetIndex < 0)) { + arg0 = 0; + } + for (i = 0; i < gNumberOfLoadedTextures; i++) { + if (arg0 == gTextureCache[i].id) { + tex = gTextureCache[i].texture; + tex->numberOfInstances++; + return tex; + } + } + assetOffset = D_80126320[assetTable][assetIndex]; + assetSize = D_80126320[assetTable][assetIndex + 1] - assetOffset; + load_asset_to_address(assetSection, gTempTextureHeader, assetOffset, 0x28); + numberOfTextures = (gTempTextureHeader->header.numOfTextures >> 8) & 0xFFFF; + + if (!gTempTextureHeader->header.isCompressed) { + tex = allocate_from_main_pool((numberOfTextures * 0x60) + assetSize, gTexColorTag); + if (tex == NULL) { + return NULL; + } + load_asset_to_address(assetSection, tex, assetOffset, assetSize); + } else { + temp_v0_5 = byteswap32(&gTempTextureHeader->uncompressedSize); + temp_a0 = (numberOfTextures * 0x60) + temp_v0_5; + sp3C = temp_v0_5 + 0x20; + tex = allocate_from_main_pool(temp_a0 + 0x20, gTexColorTag); + if (tex == NULL) { + return NULL; + } + temp_a1 = ((s32)tex + sp3C) - assetSize; + temp_a1 -= temp_a1 % 0x10; + load_asset_to_address(assetSection, temp_a1, assetOffset, assetSize); + gzip_inflate(temp_a1 + 0x20, tex); + assetSize = sp3C - 0x20; + } + texIndex = -1; + for (i = 0; i < gNumberOfLoadedTextures; i++) { + if (gTextureCache[i].id == -1) { + texIndex = i; + } + } + if (texIndex == -1) { + texIndex = gNumberOfLoadedTextures++; + } + gTextureCache[texIndex].id = arg0; + gTextureCache[texIndex].texture = tex; + paletteOffset = -1; + if ((tex->format & 0xF) == TEX_FORMAT_CI4) { + if (D_80126344 == 0) { + load_asset_to_address(ASSET_EMPTY_14, &gCiPalettes[gCiPalettesSize], tex->ciPaletteOffset, 32); + tex->ciPaletteOffset = gCiPalettesSize; + gCiPalettesSize += 32; // (32 bytes / 2 bytes per color) = 16 colors. + } + paletteOffset = gCiPalettesSize - 32; + } + if ((tex->format & 0xF) == TEX_FORMAT_CI8) { + if (D_80126344 == 0) { + load_asset_to_address(ASSET_EMPTY_14, &gCiPalettesSize[gCiPalettes], tex->ciPaletteOffset, 128); + tex->ciPaletteOffset = gCiPalettesSize; + gCiPalettesSize += 128; // (128 bytes / 2 bytes per color) = 64 colors. + } + paletteOffset = gCiPalettesSize - 128; + } + D_80126344 = 0; + texTemp = tex; + alignedAddress = align16((u8*)((s32)texTemp + assetSize)); + for(i = 0; i < numberOfTextures; i++) { + build_tex_display_list(texTemp, alignedAddress); + if (paletteOffset >= 0) { + texTemp->ciPaletteOffset = paletteOffset; + alignedAddress += 0x30; // I'm guessing it takes 6 f3d commands to load the palette + } + alignedAddress += 0x60; // I'm guessing it takes 12 f3d commands to load the texture + texTemp = (TextureHeader*)((s32)texTemp + texTemp->textureSize); + } + if (gCiPalettesSize >= 0x280) { + return NULL; + } + if (gNumberOfLoadedTextures >= 701) { + return NULL; + } + return tex; +} +#else +GLOBAL_ASM("asm/non_matchings/textures_sprites/load_texture.s") +#endif + +#ifdef NON_MATCHING +void free_texture(TextureHeader *tex) { + s32 i; + if (tex != NULL) { + tex->numberOfInstances--; + if ((tex->numberOfInstances & 0xFF) <= 0) { + for(i = 0; i < gNumberOfLoadedTextures; i++) { + if (tex == gTextureCache[i].texture) { + free_from_memory_pool(tex); + gTextureCache[i].id = -1; + gTextureCache[i].texture = (TextureHeader *)-1; + } + } + } + } +} +#else +GLOBAL_ASM("asm/non_matchings/textures_sprites/free_texture.s") +#endif + +void func_8007B374(s32 arg0) { + gTexColorTag = arg0; +} + +#ifdef NON_MATCHING +// Unused. +TextureHeader *func_8007B380(s32 arg0) { + if ((arg0 < 0) || (arg0 >= gNumberOfLoadedTextures)) { + return 0; + } + // Regalloc issue here + if (gTextureCache[arg0].texture == (TextureHeader*)-1) { + return 0; + } + return gTextureCache[arg0].texture; +} +#else +GLOBAL_ASM("asm/non_matchings/textures_sprites/func_8007B380.s") +#endif + +void func_8007B3D0(Gfx **dlist) { + D_8012637C = 0; + D_80126374 = 0; + D_80126380 = 0; + D_80126382 = 1; + D_80126378 = 0; + D_80126384 = 0; + gDPPipeSync((*dlist)++) + gSPSetGeometryMode((*dlist)++, G_SHADING_SMOOTH | G_SHADE | G_ZBUFFER) +} void func_8007B43C(void) { D_80126384 = 1; @@ -928,32 +1145,204 @@ void func_8007B454(void) { D_80126382 = 1; } -GLOBAL_ASM("asm/non_matchings/unknown_07B870/func_8007B46C.s") -GLOBAL_ASM("asm/non_matchings/unknown_07B870/func_8007B4C8.s") -GLOBAL_ASM("asm/non_matchings/unknown_07B870/func_8007B4E8.s") -GLOBAL_ASM("asm/non_matchings/unknown_07B870/func_8007BA5C.s") +GLOBAL_ASM("asm/non_matchings/textures_sprites/func_8007B46C.s") + +void func_8007B4E8(s32, s32, s32, s32); +void func_8007B4C8(s32 arg0, s32 arg1, s32 arg2) { + func_8007B4E8(arg0, arg1, arg2, 0); +} + +GLOBAL_ASM("asm/non_matchings/textures_sprites/func_8007B4E8.s") +GLOBAL_ASM("asm/non_matchings/textures_sprites/func_8007BA5C.s") void func_8007BF1C(s32 arg0) { D_800DE7C4 = arg0; D_80126382 = 1; } -GLOBAL_ASM("asm/non_matchings/unknown_07B870/func_8007BF34.s") -GLOBAL_ASM("asm/non_matchings/unknown_07B870/func_8007C12C.s") -GLOBAL_ASM("asm/non_matchings/unknown_07B870/func_8007C57C.s") -GLOBAL_ASM("asm/non_matchings/unknown_07B870/func_8007C8E0.s") -GLOBAL_ASM("asm/non_matchings/unknown_07B870/func_8007CA68.s") -GLOBAL_ASM("asm/non_matchings/unknown_07B870/func_8007CCB0.s") -GLOBAL_ASM("asm/non_matchings/unknown_07B870/func_8007CDC0.s") -GLOBAL_ASM("asm/non_matchings/unknown_07B870/func_8007D0F4.s") +GLOBAL_ASM("asm/non_matchings/textures_sprites/func_8007BF34.s") +GLOBAL_ASM("asm/non_matchings/textures_sprites/func_8007C12C.s") -s32 func_8007EF64(s16 arg0) { - return arg0 + D_8012632C; +#ifdef NON_MATCHING +// Mostly has regalloc issues. +s32 get_texture_size_from_id(s32 arg0) { + s32 assetIndex; + s32 assetSection; + s32 assetTable; + s32 start; + s32 size; + + assetSection = ASSET_TEXTURES_2D; + assetIndex = arg0; + assetTable = 0; + if (arg0 & 0x8000) { + assetIndex = arg0 & 0x7FFF; + assetSection = ASSET_TEXTURES_3D; + assetTable = 1; + } + if ((assetIndex >= D_80126338[assetTable]) || (assetIndex < 0)) { + return 0; + } + start = D_80126320[assetTable][assetIndex]; + size = D_80126320[assetTable][assetIndex + 1] - start; + if (gTempTextureHeader->header.isCompressed) { + load_asset_to_address(assetSection, gTempTextureHeader, start, 0x28); + size = byteswap32(&gTempTextureHeader->uncompressedSize); + } + return (((gTempTextureHeader->header.numOfTextures >> 8) & 0xFFFF) * 0x60) + size; } -GLOBAL_ASM("asm/non_matchings/unknown_07B870/func_8007EF80.s") -GLOBAL_ASM("asm/non_matchings/unknown_07B870/func_8007F1E8.s") -GLOBAL_ASM("asm/non_matchings/unknown_07B870/func_8007F24C.s") -GLOBAL_ASM("asm/non_matchings/unknown_07B870/func_8007F414.s") -GLOBAL_ASM("asm/non_matchings/unknown_07B870/func_8007F460.s") -GLOBAL_ASM("asm/non_matchings/unknown_07B870/func_8007F594.s") +#else +GLOBAL_ASM("asm/non_matchings/textures_sprites/get_texture_size_from_id.s") +#endif + +GLOBAL_ASM("asm/non_matchings/textures_sprites/func_8007C660.s") + +#ifdef NON_MATCHING +// Unused +s32 func_8007C860(s32 spriteIndex) { + if ((spriteIndex < 0) || (spriteIndex >= D_80126358)) { + return -1; + } + // I need to skip a register here. + return gSpriteCache[spriteIndex].id; +} +#else +GLOBAL_ASM("asm/non_matchings/textures_sprites/func_8007C860.s") +#endif + +#ifdef NON_MATCHING +s32 load_sprite_info(s32 spriteIndex, s32 *numOfInstancesOut, s32 *unkOut, s32 *numFramesOut, s32 *formatOut, s32 *sizeOut) { + TextureHeader *tex; + s32 i, j; + s32 start, size; + + if ((spriteIndex < 0) || (spriteIndex >= D_80126354)) { + *numFramesOut = 0; + *numOfInstancesOut = 0; + *unkOut = 0; + return; + } + start = gSpriteOffsetTable[spriteIndex]; + size = gSpriteOffsetTable[spriteIndex + 1] - start; + load_asset_to_address(ASSET_SPRITES, gCurrentSprite, start, size); + tex = load_texture(gCurrentSprite->unkC[0] + gCurrentSprite->baseTextureId); + if (tex != NULL) { + *formatOut = tex->format & 0xF; + free_texture(tex); + *sizeOut = 0; + for (i = 0; i < gCurrentSprite->numberOfFrames; i++) { + for (j = gCurrentSprite->unkC[i]; j < gCurrentSprite->unkC[i + 1]; j++) { + *sizeOut += get_texture_size_from_id(gCurrentSprite->baseTextureId + j); + } + } + *numFramesOut = gCurrentSprite->numberOfFrames; + *numOfInstancesOut = gCurrentSprite->numberOfInstances; + *unkOut = gCurrentSprite->unk6; + return 1; + } + *numFramesOut = 0; + *numOfInstancesOut = 0; + *unkOut = 0; + return 0; +} +#else +GLOBAL_ASM("asm/non_matchings/textures_sprites/load_sprite_info.s") +#endif + +GLOBAL_ASM("asm/non_matchings/textures_sprites/func_8007CA68.s") + +#ifdef NON_MATCHING +void free_sprite(Sprite *sprite) { + s32 i, j, index; + if (sprite != NULL) { + sprite->numberOfInstances--; + if (sprite->numberOfInstances <= 0) { + for (i = 0; i < D_80126358; i++) { + if (sprite == gSpriteCache[i].sprite) { + for (j = 0; j < sprite->numberOfFrames; j++) { + free_texture(sprite->frames[j]); + } + free_from_memory_pool(sprite); + gSpriteCache[i].id = -1; + gSpriteCache[i].sprite = (Sprite *)-1; + break; + } + } + } + } +} +#else +GLOBAL_ASM("asm/non_matchings/textures_sprites/free_sprite.s") +#endif + +GLOBAL_ASM("asm/non_matchings/textures_sprites/func_8007CDC0.s") +GLOBAL_ASM("asm/non_matchings/textures_sprites/build_tex_display_list.s") + +s32 func_8007EF64(s16 arg0) { + return arg0 + gCiPalettes; +} + +// There might be a file boundary here. + +GLOBAL_ASM("asm/non_matchings/textures_sprites/func_8007EF80.s") + +void func_8007F1E8(unk8007F1E8 *arg0) { + s32 i; + + arg0->unk4 = 0; + arg0->unk8 = 0; + arg0->unkC = 0; + arg0->unk10 = arg0->unk14; + arg0->unk11 = arg0->unk15; + arg0->unk12 = arg0->unk16; + arg0->unk13 = arg0->unk17; + for(i = 0; i < arg0->unk0; i++) { + arg0->unkC += arg0->unk18[i].unk0; + } +} + +GLOBAL_ASM("asm/non_matchings/textures_sprites/func_8007F24C.s") + +typedef struct unk8007F414_E { + u16 unk0; + u16 unk2; +} unk8007F414_E; + +typedef struct unk8007F414 { + u16 unk0; + u16 unk2; + u16 unk4; + u16 unk6; + s32 unk8; + u16 unkC; + unk8007F414_E unkE[1]; +} unk8007F414; + +void func_8007F414(unk8007F414 *arg0) { + s32 i; + arg0->unk2 = 0; + arg0->unk4 = 0; + arg0->unk6 = 0; + arg0->unk8 = arg0->unkC; + for (i = 0; i < arg0->unk0; i++) { + arg0->unk6 += arg0->unkE[i].unk0; + } +} + +GLOBAL_ASM("asm/non_matchings/textures_sprites/func_8007F460.s") + +#ifdef NON_MATCHING +void func_8007F594(Gfx **dlist, u32 index, u32 primitiveColor, u32 environmentColor) { + if (index >= 2) { + index = 2; + } + // There are issues with the structure, but this should be equivalent functionality-wise. + gSPDisplayList((*dlist)++, D_800DF3A8) + gDkrDmaDisplayList((*dlist)++, &D_800DF410[index] + 0x80000000, numberOfGfxCommands(D_800DF410[0])) + gDPSetPrimColorRGBA((*dlist)++, primitiveColor) + gDPSetEnvColorRGBA((*dlist)++, environmentColor) +} +#else +GLOBAL_ASM("asm/non_matchings/textures_sprites/func_8007F594.s") +#endif diff --git a/src/unknown_07B870.h b/src/textures_sprites.h similarity index 52% rename from src/unknown_07B870.h rename to src/textures_sprites.h index de95182e..d22d7c07 100644 --- a/src/unknown_07B870.h +++ b/src/textures_sprites.h @@ -1,10 +1,14 @@ #ifndef _UNKNOWN_07B870_H_ #define _UNKNOWN_07B870_H_ +#include "asset_sections.h" #include "types.h" #include "f3ddkr.h" +#include "structs.h" +#include "macros.h" +#include "memory.h" -extern u32 D_800DE7C0; +extern u32 gTexColorTag; extern s32 D_800DE7C4; #endif diff --git a/src/unknown_00BC20.c b/src/unknown_00BC20.c index 4453206e..b6f868c7 100644 --- a/src/unknown_00BC20.c +++ b/src/unknown_00BC20.c @@ -327,11 +327,11 @@ void func_8000B290(){ get_misc_asset(20); /*{ if(D_800DC754->unk7a) - func_8007CCB0(); + free_sprite(); D_800DC754->unk7a = 0; if(D_800DC754->unk7C) - func_8007B2BC(); + free_texture(); D_800DC754->unk7C = 0; }*/ if(D_800DC75C) diff --git a/src/unknown_060450.c b/src/unknown_060450.c index 203773f0..4a3d97fd 100644 --- a/src/unknown_060450.c +++ b/src/unknown_060450.c @@ -122,7 +122,7 @@ void free_object_model(ObjectModel *model) { s32 i; for (i = 0; i < model->numberOfTextures; i++) { if (model->textures[i].texture != NULL) { - func_8007B2BC(model->textures[i].texture); + free_texture(model->textures[i].texture); } } if (model->unkC != NULL) { diff --git a/src/unknown_06B2B0.c b/src/unknown_06B2B0.c index 2fa70d5b..ddaf2fe1 100644 --- a/src/unknown_06B2B0.c +++ b/src/unknown_06B2B0.c @@ -515,7 +515,7 @@ void load_level(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { func_800AB308(-1, -0x200); } if (gCurrentLevelHeader->unk49 == -1) { - gCurrentLevelHeader->unkA4 = func_8007AE74(gCurrentLevelHeader->unkA4); + gCurrentLevelHeader->unkA4 = load_texture(gCurrentLevelHeader->unkA4); gCurrentLevelHeader->unkA8 = (u16)0; gCurrentLevelHeader->unkAA = (u16)0; } @@ -574,7 +574,7 @@ void func_8006BEFC(void) { func_800AB35C(); } if (gCurrentLevelHeader->unk49 == 0xFF) { - func_8007B2BC(gCurrentLevelHeader->unkA4); + free_texture(gCurrentLevelHeader->unkA4); } } diff --git a/src/unknown_09F8F0.c b/src/unknown_09F8F0.c index f6be8cf1..eb5295d3 100644 --- a/src/unknown_09F8F0.c +++ b/src/unknown_09F8F0.c @@ -9,6 +9,8 @@ typedef struct { u8 unk0[0x4C4]; u16 unk4C4; + u8 unk4C6[0x1B4]; + s8 unk67A; } unk80126CDC; typedef struct { @@ -238,9 +240,9 @@ s32 D_80126D44; s32 D_80126D48; s32 D_80126D4C; s32 D_80126D50; -u8 D_80126D54; -u8 D_80126D55; -u8 D_80126D56; +u8 gMinimapRed; +u8 gMinimapGreen; +u8 gMinimapBlue; s32 D_80126D58; s32 D_80126D5C; unk80126D60* D_80126D60; @@ -275,6 +277,21 @@ s32 D_801271B0[640]; /******************************/ +typedef struct { + u8 unk0[0x1D8]; + s8 unk1D8; +} unk800A0DC0_2; + +typedef struct { + u8 unk0[0x64]; + unk800A0DC0_2* unk64; +} unk800A0DC0; + +void func_80068508(s32); +void func_800A14F0(unk800A0DC0 *, s32); +void func_800A3CE4(s32, s32); +void func_800A7520(unk800A0DC0 *, s32); + GLOBAL_ASM("asm/non_matchings/unknown_09F8F0/func_8009ECF0.s") GLOBAL_ASM("asm/non_matchings/unknown_09F8F0/func_8009F034.s") @@ -299,16 +316,6 @@ void func_800A0B74(void) { GLOBAL_ASM("asm/non_matchings/unknown_09F8F0/func_800A0BD4.s") -typedef struct { - u8 unk0[0x64]; - s32* unk64; -} unk800A0DC0; - -typedef struct { - u8 unk0[0x1D8]; - s8 unk1D8; -} unk800A0DC0_2; - void func_800A0DC0(s32 arg0, unk800A0DC0* arg1, s32 arg2) { unk800A0DC0_2* temp = arg1->unk64; @@ -336,7 +343,25 @@ void func_800A0DC0(s32 arg0, unk800A0DC0* arg1, s32 arg2) { GLOBAL_ASM("asm/non_matchings/unknown_09F8F0/func_800A0EB4.s") GLOBAL_ASM("asm/non_matchings/unknown_09F8F0/func_800A1248.s") -GLOBAL_ASM("asm/non_matchings/unknown_09F8F0/func_800A1428.s") + +void func_800A1428(s32 arg0, unk800A0DC0* arg1, s32 arg2) { + unk800A0DC0_2* temp = arg1->unk64; + if (temp->unk1D8 == 0) { + func_80068508(1); + func_800A3CE4(arg0, arg2); + func_800A7520(arg1, arg2); + if ((0x7F - (arg2 * 2)) >= D_80126CDC->unk67A) { + D_80126CDC->unk67A += (arg2 * 2); + } else { + D_80126CDC->unk67A = (D_80126CDC->unk67A + (arg2 * 2)) - 0xFF; + } + if (D_80126D37 != 2) { + func_800A14F0(arg1, arg2); + } + func_80068508(0); + } +} + GLOBAL_ASM("asm/non_matchings/unknown_09F8F0/func_800A14F0.s") GLOBAL_ASM("asm/non_matchings/unknown_09F8F0/func_800A19A4.s") GLOBAL_ASM("asm/non_matchings/unknown_09F8F0/func_800A1C04.s") @@ -432,10 +457,10 @@ GLOBAL_ASM("asm/non_matchings/unknown_09F8F0/func_800A7FBC.s") void func_800A83B4(LevelModel *model) { s32 sp2C; - D_80126D54 = (model->unk38 >> 16) & 0xFF; - D_80126D55 = (model->unk38 >> 8) & 0xFF; - D_80126D56 = model->unk38 & 0xFF; - func_8007C8E0(model->unk20, &D_80126D1C, &D_80126D20, &sp2C, &sp2C, &sp2C); + gMinimapRed = (model->minimapColor >> 16) & 0xFF; + gMinimapGreen = (model->minimapColor >> 8) & 0xFF; + gMinimapBlue = model->minimapColor & 0xFF; + load_sprite_info(model->unk20, &D_80126D1C, &D_80126D20, &sp2C, &sp2C, &sp2C); func_8007CA68(model->unk20, 0, &D_80126D14, &D_80126D18, &sp2C); model->unk20 = func_8007C12C(model->unk20, 1); } diff --git a/src/unknown_0ABDF0.c b/src/unknown_0ABDF0.c index ecd4b618..1199b309 100644 --- a/src/unknown_0ABDF0.c +++ b/src/unknown_0ABDF0.c @@ -205,7 +205,7 @@ s32 D_80127C0C; s32 D_80127C10; s32 D_80127C14; s32 D_80127C18; -s32 D_80127C1C; +s16 *D_80127C1C; s32 D_80127C20; s32 D_80127C24; s32 D_80127C28; @@ -259,17 +259,17 @@ GLOBAL_ASM("asm/non_matchings/unknown_09F8F0/func_800AD144.s") void func_800AD220(void) { if (D_800E2C2C[0].unkC != 0) { - func_8007B2BC(D_800E2C2C[0].unkC); + free_texture(D_800E2C2C[0].unkC); D_800E2C88 = 0; } if (D_800E2C2C[1].unkC != 0) { - func_8007B2BC(D_800E2C2C[1].unkC); + free_texture(D_800E2C2C[1].unkC); D_800E2C88 = 0; } if (D_800E2C8C != 0) { - func_8007CCB0(D_800E2C8C); + free_sprite(D_800E2C8C); D_800E2C8C = 0; } diff --git a/src/waves.c b/src/waves.c index b6cffa03..65bb4051 100644 --- a/src/waves.c +++ b/src/waves.c @@ -174,7 +174,7 @@ s32 D_8012A728[2]; u8* allocate_from_main_pool_safe(s32 arg0, s32 arg1); void free_from_memory_pool(s32* arg0); -void func_8007B2BC(s32* arg0); +void free_texture(s32* arg0); void func_800C5494(s32 arg0); void func_800C5620(s32 arg0); @@ -204,7 +204,7 @@ void func_800B7D20(void) { D_800E3080[0] = NULL; } if (D_800E30D0 != NULL) { - func_8007B2BC(D_800E30D0); + free_texture(D_800E30D0); D_800E30D0 = NULL; } if (D_800E30D4 != NULL) {