From c931cd58376a6a9bda2290063974d2cfb371685b Mon Sep 17 00:00:00 2001 From: Random <28494085+Random0666@users.noreply.github.com> Date: Thu, 19 Mar 2020 23:29:33 +0100 Subject: [PATCH] Decompiled z_title.c `z_title.c` : matching --- asm/graph.s | 4 +- .../gamestates/ovl_title/func_80800000.s | 91 ----- .../gamestates/ovl_title/func_80800134.s | 38 -- .../gamestates/ovl_title/func_808001C8.s | 376 ------------------ .../gamestates/ovl_title/func_8080073C.s | 86 ---- .../gamestates/ovl_title/func_80800878.s | 100 ----- data/overlays/gamestates/z_title.data.s | 15 - include/functions.h | 4 +- include/segment_symbols.h | 1 + include/variables.h | 2 +- include/z64.h | 20 +- spec | 1 - src/code/title_setup.c | 2 +- src/overlays/gamestates/ovl_title/z_title.c | 210 +++++++++- undefined_syms.txt | 1 + 15 files changed, 223 insertions(+), 728 deletions(-) delete mode 100644 asm/non_matchings/overlays/gamestates/ovl_title/func_80800000.s delete mode 100644 asm/non_matchings/overlays/gamestates/ovl_title/func_80800134.s delete mode 100644 asm/non_matchings/overlays/gamestates/ovl_title/func_808001C8.s delete mode 100644 asm/non_matchings/overlays/gamestates/ovl_title/func_8080073C.s delete mode 100644 asm/non_matchings/overlays/gamestates/ovl_title/func_80800878.s delete mode 100644 data/overlays/gamestates/z_title.data.s diff --git a/asm/graph.s b/asm/graph.s index 2c0e13348d..95e67955a5 100644 --- a/asm/graph.s +++ b/asm/graph.s @@ -286,12 +286,12 @@ glabel func_800C5C2C /* B3CDF8 800C5C58 3C0F8080 */ lui $t7, %hi(func_80801E44) # $t7, 0x8080 /* B3CDFC 800C5C5C 25EF1E44 */ addiu $t7, %lo(func_80801E44) # addiu $t7, $t7, 0x1e44 /* B3CE00 800C5C60 144F0004 */ bne $v0, $t7, .L800C5C74 -/* B3CE04 800C5C64 3C188080 */ lui $t8, %hi(func_80800878) # $t8, 0x8080 +/* B3CE04 800C5C64 3C188080 */ lui $t8, %hi(Title_Init) # $t8, 0x8080 /* B3CE08 800C5C68 3C028012 */ lui $v0, %hi(D_8011F860) # $v0, 0x8012 /* B3CE0C 800C5C6C 10000022 */ b .L800C5CF8 /* B3CE10 800C5C70 2442F860 */ addiu $v0, %lo(D_8011F860) # addiu $v0, $v0, -0x7a0 .L800C5C74: -/* B3CE14 800C5C74 27180878 */ addiu $t8, %lo(func_80800878) # addiu $t8, $t8, 0x878 +/* B3CE14 800C5C74 27180878 */ addiu $t8, %lo(Title_Init) # addiu $t8, $t8, 0x878 /* B3CE18 800C5C78 14580004 */ bne $v0, $t8, .L800C5C8C /* B3CE1C 800C5C7C 3C19800C */ lui $t9, %hi(func_800BCA64) # $t9, 0x800c /* B3CE20 800C5C80 3C028012 */ lui $v0, %hi(D_8011F890) # $v0, 0x8012 diff --git a/asm/non_matchings/overlays/gamestates/ovl_title/func_80800000.s b/asm/non_matchings/overlays/gamestates/ovl_title/func_80800000.s deleted file mode 100644 index 73ff91e289..0000000000 --- a/asm/non_matchings/overlays/gamestates/ovl_title/func_80800000.s +++ /dev/null @@ -1,91 +0,0 @@ -.rdata - -glabel D_808009C0 - .asciz "NOT MARIO CLUB VERSION" - .balign 4 - -glabel D_808009D8 - .asciz "[Creator:%s]" - .balign 4 - -glabel D_808009E8 - .asciz "[Date:%s]" - .balign 4 - - .text - -glabel func_80800000 -/* 00000 80800000 27BDFFC0 */ addiu $sp, $sp, 0xFFC0 ## $sp = FFFFFFC0 -/* 00004 80800004 AFBF003C */ sw $ra, 0x003C($sp) -/* 00008 80800008 AFBE0038 */ sw $s8, 0x0038($sp) -/* 0000C 8080000C AFB10034 */ sw $s1, 0x0034($sp) -/* 00010 80800010 AFB00030 */ sw $s0, 0x0030($sp) -/* 00014 80800014 AFA40040 */ sw $a0, 0x0040($sp) -/* 00018 80800018 8C910000 */ lw $s1, 0x0000($a0) ## 00000000 -/* 0001C 8080001C 03A0F025 */ or $s8, $sp, $zero ## $s8 = FFFFFFC0 -/* 00020 80800020 0C025047 */ jal func_8009411C -/* 00024 80800024 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000 -/* 00028 80800028 27BDFFD0 */ addiu $sp, $sp, 0xFFD0 ## $sp = FFFFFF90 -/* 0002C 8080002C 27B00018 */ addiu $s0, $sp, 0x0018 ## $s0 = FFFFFFA8 -/* 00030 80800030 00408825 */ or $s1, $v0, $zero ## $s1 = 00000000 -/* 00034 80800034 0C03EEE3 */ jal GfxPrint_Ctor -/* 00038 80800038 02002025 */ or $a0, $s0, $zero ## $a0 = FFFFFFA8 -/* 0003C 8080003C 02002025 */ or $a0, $s0, $zero ## $a0 = FFFFFFA8 -/* 00040 80800040 0C03EF07 */ jal GfxPrint_Open -/* 00044 80800044 02202825 */ or $a1, $s1, $zero ## $a1 = 00000000 -/* 00048 80800048 240F00FF */ addiu $t7, $zero, 0x00FF ## $t7 = 000000FF -/* 0004C 8080004C AFAF0010 */ sw $t7, 0x0010($sp) -/* 00050 80800050 02002025 */ or $a0, $s0, $zero ## $a0 = FFFFFFA8 -/* 00054 80800054 240500FF */ addiu $a1, $zero, 0x00FF ## $a1 = 000000FF -/* 00058 80800058 2406009B */ addiu $a2, $zero, 0x009B ## $a2 = 0000009B -/* 0005C 8080005C 0C03ECEB */ jal GfxPrint_SetColor -/* 00060 80800060 240700FF */ addiu $a3, $zero, 0x00FF ## $a3 = 000000FF -/* 00064 80800064 02002025 */ or $a0, $s0, $zero ## $a0 = FFFFFFA8 -/* 00068 80800068 24050009 */ addiu $a1, $zero, 0x0009 ## $a1 = 00000009 -/* 0006C 8080006C 0C03ED07 */ jal GfxPrint_SetPos -/* 00070 80800070 24060015 */ addiu $a2, $zero, 0x0015 ## $a2 = 00000015 -/* 00074 80800074 3C058080 */ lui $a1, %hi(D_808009C0) ## $a1 = 80800000 -/* 00078 80800078 24A509C0 */ addiu $a1, $a1, %lo(D_808009C0) ## $a1 = 808009C0 -/* 0007C 8080007C 0C03EF2D */ jal GfxPrint_Printf -/* 00080 80800080 02002025 */ or $a0, $s0, $zero ## $a0 = FFFFFFA8 -/* 00084 80800084 241800FF */ addiu $t8, $zero, 0x00FF ## $t8 = 000000FF -/* 00088 80800088 AFB80010 */ sw $t8, 0x0010($sp) -/* 0008C 8080008C 02002025 */ or $a0, $s0, $zero ## $a0 = FFFFFFA8 -/* 00090 80800090 240500FF */ addiu $a1, $zero, 0x00FF ## $a1 = 000000FF -/* 00094 80800094 240600FF */ addiu $a2, $zero, 0x00FF ## $a2 = 000000FF -/* 00098 80800098 0C03ECEB */ jal GfxPrint_SetColor -/* 0009C 8080009C 240700FF */ addiu $a3, $zero, 0x00FF ## $a3 = 000000FF -/* 000A0 808000A0 02002025 */ or $a0, $s0, $zero ## $a0 = FFFFFFA8 -/* 000A4 808000A4 24050007 */ addiu $a1, $zero, 0x0007 ## $a1 = 00000007 -/* 000A8 808000A8 0C03ED07 */ jal GfxPrint_SetPos -/* 000AC 808000AC 24060017 */ addiu $a2, $zero, 0x0017 ## $a2 = 00000017 -/* 000B0 808000B0 3C058080 */ lui $a1, %hi(D_808009D8) ## $a1 = 80800000 -/* 000B4 808000B4 3C068001 */ lui $a2, 0x8001 ## $a2 = 80010000 -/* 000B8 808000B8 24C62340 */ addiu $a2, $a2, 0x2340 ## $a2 = 80012340 -/* 000BC 808000BC 24A509D8 */ addiu $a1, $a1, %lo(D_808009D8) ## $a1 = 808009D8 -/* 000C0 808000C0 0C03EF2D */ jal GfxPrint_Printf -/* 000C4 808000C4 02002025 */ or $a0, $s0, $zero ## $a0 = FFFFFFA8 -/* 000C8 808000C8 02002025 */ or $a0, $s0, $zero ## $a0 = FFFFFFA8 -/* 000CC 808000CC 24050007 */ addiu $a1, $zero, 0x0007 ## $a1 = 00000007 -/* 000D0 808000D0 0C03ED07 */ jal GfxPrint_SetPos -/* 000D4 808000D4 24060018 */ addiu $a2, $zero, 0x0018 ## $a2 = 00000018 -/* 000D8 808000D8 3C058080 */ lui $a1, %hi(D_808009E8) ## $a1 = 80800000 -/* 000DC 808000DC 3C068001 */ lui $a2, 0x8001 ## $a2 = 80010000 -/* 000E0 808000E0 24C62350 */ addiu $a2, $a2, 0x2350 ## $a2 = 80012350 -/* 000E4 808000E4 24A509E8 */ addiu $a1, $a1, %lo(D_808009E8) ## $a1 = 808009E8 -/* 000E8 808000E8 0C03EF2D */ jal GfxPrint_Printf -/* 000EC 808000EC 02002025 */ or $a0, $s0, $zero ## $a0 = FFFFFFA8 -/* 000F0 808000F0 0C03EF19 */ jal GfxPrint_Close -/* 000F4 808000F4 02002025 */ or $a0, $s0, $zero ## $a0 = FFFFFFA8 -/* 000F8 808000F8 00408825 */ or $s1, $v0, $zero ## $s1 = 00000000 -/* 000FC 808000FC 0C03EF05 */ jal GfxPrint_Dtor -/* 00100 80800100 02002025 */ or $a0, $s0, $zero ## $a0 = FFFFFFA8 -/* 00104 80800104 8FD90040 */ lw $t9, 0x0040($s8) ## 00000000 -/* 00108 80800108 03C0E825 */ or $sp, $s8, $zero ## $sp = FFFFFFC0 -/* 0010C 8080010C AF310000 */ sw $s1, 0x0000($t9) ## 00000000 -/* 00110 80800110 8FDF003C */ lw $ra, 0x003C($s8) ## FFFFFFFC -/* 00114 80800114 8FD10034 */ lw $s1, 0x0034($s8) ## FFFFFFF4 -/* 00118 80800118 8FD00030 */ lw $s0, 0x0030($s8) ## FFFFFFF0 -/* 0011C 8080011C 8FDE0038 */ lw $s8, 0x0038($s8) ## FFFFFFF8 -/* 00120 80800120 03E00008 */ jr $ra -/* 00124 80800124 27BD0040 */ addiu $sp, $sp, 0x0040 ## $sp = 00000000 \ No newline at end of file diff --git a/asm/non_matchings/overlays/gamestates/ovl_title/func_80800134.s b/asm/non_matchings/overlays/gamestates/ovl_title/func_80800134.s deleted file mode 100644 index c6b57724c0..0000000000 --- a/asm/non_matchings/overlays/gamestates/ovl_title/func_80800134.s +++ /dev/null @@ -1,38 +0,0 @@ -glabel func_80800134 -/* 00134 80800134 27BDFFB8 */ addiu $sp, $sp, 0xFFB8 ## $sp = FFFFFFB8 -/* 00138 80800138 44800000 */ mtc1 $zero, $f0 ## $f0 = 0.00 -/* 0013C 8080013C AFA70054 */ sw $a3, 0x0054($sp) -/* 00140 80800140 3C013F80 */ lui $at, 0x3F80 ## $at = 3F800000 -/* 00144 80800144 44856000 */ mtc1 $a1, $f12 ## $f12 = 0.00 -/* 00148 80800148 44867000 */ mtc1 $a2, $f14 ## $f14 = 0.00 -/* 0014C 8080014C C7A40054 */ lwc1 $f4, 0x0054($sp) -/* 00150 80800150 44813000 */ mtc1 $at, $f6 ## $f6 = 1.00 -/* 00154 80800154 AFA40048 */ sw $a0, 0x0048($sp) -/* 00158 80800158 AFBF0014 */ sw $ra, 0x0014($sp) -/* 0015C 8080015C 248400A8 */ addiu $a0, $a0, 0x00A8 ## $a0 = 000000A8 -/* 00160 80800160 AFA4001C */ sw $a0, 0x001C($sp) -/* 00164 80800164 3C064120 */ lui $a2, 0x4120 ## $a2 = 41200000 -/* 00168 80800168 3C0541F0 */ lui $a1, 0x41F0 ## $a1 = 41F00000 -/* 0016C 8080016C 3C074648 */ lui $a3, 0x4648 ## $a3 = 46480000 -/* 00170 80800170 E7A00028 */ swc1 $f0, 0x0028($sp) -/* 00174 80800174 E7A00020 */ swc1 $f0, 0x0020($sp) -/* 00178 80800178 E7A00034 */ swc1 $f0, 0x0034($sp) -/* 0017C 8080017C E7A00030 */ swc1 $f0, 0x0030($sp) -/* 00180 80800180 E7A0002C */ swc1 $f0, 0x002C($sp) -/* 00184 80800184 E7AC0038 */ swc1 $f12, 0x0038($sp) -/* 00188 80800188 E7AE003C */ swc1 $f14, 0x003C($sp) -/* 0018C 8080018C E7A40040 */ swc1 $f4, 0x0040($sp) -/* 00190 80800190 0C02A918 */ jal func_800AA460 -/* 00194 80800194 E7A60024 */ swc1 $f6, 0x0024($sp) -/* 00198 80800198 8FA4001C */ lw $a0, 0x001C($sp) -/* 0019C 8080019C 27A50038 */ addiu $a1, $sp, 0x0038 ## $a1 = FFFFFFF0 -/* 001A0 808001A0 27A6002C */ addiu $a2, $sp, 0x002C ## $a2 = FFFFFFE4 -/* 001A4 808001A4 0C02A8D6 */ jal func_800AA358 -/* 001A8 808001A8 27A70020 */ addiu $a3, $sp, 0x0020 ## $a3 = FFFFFFD8 -/* 001AC 808001AC 8FA4001C */ lw $a0, 0x001C($sp) -/* 001B0 808001B0 0C02AA94 */ jal func_800AAA50 -/* 001B4 808001B4 2405000F */ addiu $a1, $zero, 0x000F ## $a1 = 0000000F -/* 001B8 808001B8 8FBF0014 */ lw $ra, 0x0014($sp) -/* 001BC 808001BC 27BD0048 */ addiu $sp, $sp, 0x0048 ## $sp = 00000000 -/* 001C0 808001C0 03E00008 */ jr $ra -/* 001C4 808001C4 00000000 */ nop diff --git a/asm/non_matchings/overlays/gamestates/ovl_title/func_808001C8.s b/asm/non_matchings/overlays/gamestates/ovl_title/func_808001C8.s deleted file mode 100644 index 46e2b766f0..0000000000 --- a/asm/non_matchings/overlays/gamestates/ovl_title/func_808001C8.s +++ /dev/null @@ -1,376 +0,0 @@ -.rdata - -glabel D_808009F4 - .asciz "../z_title.c" - .balign 4 - -glabel D_80800A04 - .asciz "../z_title.c" - .balign 4 - -glabel D_80800A14 - .asciz "../z_title.c" - .balign 4 - -.late_rodata - -glabel D_80800A9C - .word 0xC59AA92F -glabel D_80800AA0 - .word 0x457A28AB -glabel D_80800AA4 - .word 0x448BE2AE, 0x00000000, 0x00000000 - - .text - -glabel func_808001C8 -/* 001C8 808001C8 27BDFF10 */ addiu $sp, $sp, 0xFF10 ## $sp = FFFFFF10 -/* 001CC 808001CC AFBF0024 */ sw $ra, 0x0024($sp) -/* 001D0 808001D0 AFB00020 */ sw $s0, 0x0020($sp) -/* 001D4 808001D4 8C850000 */ lw $a1, 0x0000($a0) ## 00000000 -/* 001D8 808001D8 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000 -/* 001DC 808001DC 3C068080 */ lui $a2, %hi(D_808009F4) ## $a2 = 80800000 -/* 001E0 808001E0 24C609F4 */ addiu $a2, $a2, %lo(D_808009F4) ## $a2 = 808009F4 -/* 001E4 808001E4 27A400A8 */ addiu $a0, $sp, 0x00A8 ## $a0 = FFFFFFB8 -/* 001E8 808001E8 2407018B */ addiu $a3, $zero, 0x018B ## $a3 = 0000018B -/* 001EC 808001EC 0C031AB1 */ jal func_800C6AC4 -/* 001F0 808001F0 AFA500B8 */ sw $a1, 0x00B8($sp) -/* 001F4 808001F4 3C01428A */ lui $at, 0x428A ## $at = 428A0000 -/* 001F8 808001F8 44810000 */ mtc1 $at, $f0 ## $f0 = 69.00 -/* 001FC 808001FC 3C018080 */ lui $at, %hi(D_80800A9C) ## $at = 80800000 -/* 00200 80800200 C4240A9C */ lwc1 $f4, %lo(D_80800A9C)($at) -/* 00204 80800204 3C018080 */ lui $at, %hi(D_80800AA0) ## $at = 80800000 -/* 00208 80800208 44801000 */ mtc1 $zero, $f2 ## $f2 = 0.00 -/* 0020C 8080020C C4260AA0 */ lwc1 $f6, %lo(D_80800AA0)($at) -/* 00210 80800210 3C018080 */ lui $at, %hi(D_80800AA4) ## $at = 80800000 -/* 00214 80800214 C4280AA4 */ lwc1 $f8, %lo(D_80800AA4)($at) -/* 00218 80800218 E7A000DC */ swc1 $f0, 0x00DC($sp) -/* 0021C 8080021C E7A000E0 */ swc1 $f0, 0x00E0($sp) -/* 00220 80800220 E7A000E4 */ swc1 $f0, 0x00E4($sp) -/* 00224 80800224 E7A400C4 */ swc1 $f4, 0x00C4($sp) -/* 00228 80800228 E7A600C8 */ swc1 $f6, 0x00C8($sp) -/* 0022C 8080022C E7A200D0 */ swc1 $f2, 0x00D0($sp) -/* 00230 80800230 E7A200D4 */ swc1 $f2, 0x00D4($sp) -/* 00234 80800234 E7A200D8 */ swc1 $f2, 0x00D8($sp) -/* 00238 80800238 E7A800CC */ swc1 $f8, 0x00CC($sp) -/* 0023C 8080023C 8E070000 */ lw $a3, 0x0000($s0) ## 00000000 -/* 00240 80800240 27A400D0 */ addiu $a0, $sp, 0x00D0 ## $a0 = FFFFFFE0 -/* 00244 80800244 27A500C4 */ addiu $a1, $sp, 0x00C4 ## $a1 = FFFFFFD4 -/* 00248 80800248 0C00BAAF */ jal func_8002EABC -/* 0024C 8080024C 27A600DC */ addiu $a2, $sp, 0x00DC ## $a2 = FFFFFFEC -/* 00250 80800250 8FA800B8 */ lw $t0, 0x00B8($sp) -/* 00254 80800254 3C0FDB02 */ lui $t7, 0xDB02 ## $t7 = DB020000 -/* 00258 80800258 24180018 */ addiu $t8, $zero, 0x0018 ## $t8 = 00000018 -/* 0025C 8080025C 8D0202C0 */ lw $v0, 0x02C0($t0) ## 000002C0 -/* 00260 80800260 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 00264 80800264 24050000 */ addiu $a1, $zero, 0x0000 ## $a1 = 00000000 -/* 00268 80800268 244E0008 */ addiu $t6, $v0, 0x0008 ## $t6 = 00000008 -/* 0026C 8080026C AD0E02C0 */ sw $t6, 0x02C0($t0) ## 000002C0 -/* 00270 80800270 AC580004 */ sw $t8, 0x0004($v0) ## 00000004 -/* 00274 80800274 AC4F0000 */ sw $t7, 0x0000($v0) ## 00000000 -/* 00278 80800278 8D0202C0 */ lw $v0, 0x02C0($t0) ## 000002C0 -/* 0027C 8080027C 3C0F8080 */ lui $t7, %hi(D_808009B0) ## $t7 = 80800000 -/* 00280 80800280 3C0EDC08 */ lui $t6, 0xDC08 ## $t6 = DC080000 -/* 00284 80800284 24590008 */ addiu $t9, $v0, 0x0008 ## $t9 = 00000008 -/* 00288 80800288 AD1902C0 */ sw $t9, 0x02C0($t0) ## 000002C0 -/* 0028C 8080028C 35CE060A */ ori $t6, $t6, 0x060A ## $t6 = DC08060A -/* 00290 80800290 25EF09B0 */ addiu $t7, $t7, %lo(D_808009B0) ## $t7 = 808009B0 -/* 00294 80800294 AC4F0004 */ sw $t7, 0x0004($v0) ## 00000004 -/* 00298 80800298 AC4E0000 */ sw $t6, 0x0000($v0) ## 00000000 -/* 0029C 8080029C 8D0202C0 */ lw $v0, 0x02C0($t0) ## 000002C0 -/* 002A0 808002A0 3C0E8080 */ lui $t6, %hi(D_808009A8) ## $t6 = 80800000 -/* 002A4 808002A4 3C19DC08 */ lui $t9, 0xDC08 ## $t9 = DC080000 -/* 002A8 808002A8 24580008 */ addiu $t8, $v0, 0x0008 ## $t8 = 00000008 -/* 002AC 808002AC AD1802C0 */ sw $t8, 0x02C0($t0) ## 000002C0 -/* 002B0 808002B0 3739090A */ ori $t9, $t9, 0x090A ## $t9 = DC08090A -/* 002B4 808002B4 25CE09A8 */ addiu $t6, $t6, %lo(D_808009A8) ## $t6 = 808009A8 -/* 002B8 808002B8 AC4E0004 */ sw $t6, 0x0004($v0) ## 00000004 -/* 002BC 808002BC AC590000 */ sw $t9, 0x0000($v0) ## 00000000 -/* 002C0 808002C0 3C064316 */ lui $a2, 0x4316 ## $a2 = 43160000 -/* 002C4 808002C4 3C074396 */ lui $a3, 0x4396 ## $a3 = 43960000 -/* 002C8 808002C8 0C20004D */ jal func_80800134 -/* 002CC 808002CC AFA800B8 */ sw $t0, 0x00B8($sp) -/* 002D0 808002D0 0C024F46 */ jal func_80093D18 -/* 002D4 808002D4 8E040000 */ lw $a0, 0x0000($s0) ## 00000000 -/* 002D8 808002D8 3C01C254 */ lui $at, 0xC254 ## $at = C2540000 -/* 002DC 808002DC 44816000 */ mtc1 $at, $f12 ## $f12 = -53.00 -/* 002E0 808002E0 3C01C0A0 */ lui $at, 0xC0A0 ## $at = C0A00000 -/* 002E4 808002E4 44817000 */ mtc1 $at, $f14 ## $f14 = -5.00 -/* 002E8 808002E8 24060000 */ addiu $a2, $zero, 0x0000 ## $a2 = 00000000 -/* 002EC 808002EC 0C034261 */ jal Matrix_Translate -/* 002F0 808002F0 00003825 */ or $a3, $zero, $zero ## $a3 = 00000000 -/* 002F4 808002F4 3C013F80 */ lui $at, 0x3F80 ## $at = 3F800000 -/* 002F8 808002F8 44816000 */ mtc1 $at, $f12 ## $f12 = 1.00 -/* 002FC 808002FC 24070001 */ addiu $a3, $zero, 0x0001 ## $a3 = 00000001 -/* 00300 80800300 44066000 */ mfc1 $a2, $f12 -/* 00304 80800304 0C0342A3 */ jal Matrix_Scale -/* 00308 80800308 46006386 */ mov.s $f14, $f12 -/* 0030C 8080030C 3C058080 */ lui $a1, %hi(D_808009A0) ## $a1 = 80800000 -/* 00310 80800310 84A509A0 */ lh $a1, %lo(D_808009A0)($a1) -/* 00314 80800314 00002025 */ or $a0, $zero, $zero ## $a0 = 00000000 -/* 00318 80800318 00003025 */ or $a2, $zero, $zero ## $a2 = 00000000 -/* 0031C 8080031C 0C034421 */ jal Matrix_RotateXYZ -/* 00320 80800320 24070001 */ addiu $a3, $zero, 0x0001 ## $a3 = 00000001 -/* 00324 80800324 8FA800B8 */ lw $t0, 0x00B8($sp) -/* 00328 80800328 3C18DA38 */ lui $t8, 0xDA38 ## $t8 = DA380000 -/* 0032C 8080032C 37180003 */ ori $t8, $t8, 0x0003 ## $t8 = DA380003 -/* 00330 80800330 8D0202C0 */ lw $v0, 0x02C0($t0) ## 000002C0 -/* 00334 80800334 3C058080 */ lui $a1, %hi(D_80800A04) ## $a1 = 80800000 -/* 00338 80800338 24A50A04 */ addiu $a1, $a1, %lo(D_80800A04) ## $a1 = 80800A04 -/* 0033C 8080033C 244F0008 */ addiu $t7, $v0, 0x0008 ## $t7 = 00000008 -/* 00340 80800340 AD0F02C0 */ sw $t7, 0x02C0($t0) ## 000002C0 -/* 00344 80800344 AC580000 */ sw $t8, 0x0000($v0) ## 00000000 -/* 00348 80800348 8E040000 */ lw $a0, 0x0000($s0) ## 00000000 -/* 0034C 8080034C 240601A8 */ addiu $a2, $zero, 0x01A8 ## $a2 = 000001A8 -/* 00350 80800350 AFA800B8 */ sw $t0, 0x00B8($sp) -/* 00354 80800354 0C0346A2 */ jal Matrix_NewMtx -/* 00358 80800358 AFA20098 */ sw $v0, 0x0098($sp) -/* 0035C 8080035C 8FA30098 */ lw $v1, 0x0098($sp) -/* 00360 80800360 8FA800B8 */ lw $t0, 0x00B8($sp) -/* 00364 80800364 3C0F0100 */ lui $t7, 0x0100 ## $t7 = 01000000 -/* 00368 80800368 AC620004 */ sw $v0, 0x0004($v1) ## 00000004 -/* 0036C 8080036C 8D0202C0 */ lw $v0, 0x02C0($t0) ## 000002C0 -/* 00370 80800370 25EF2720 */ addiu $t7, $t7, 0x2720 ## $t7 = 01002720 -/* 00374 80800374 3C0EDE00 */ lui $t6, 0xDE00 ## $t6 = DE000000 -/* 00378 80800378 24590008 */ addiu $t9, $v0, 0x0008 ## $t9 = 00000008 -/* 0037C 8080037C AD1902C0 */ sw $t9, 0x02C0($t0) ## 000002C0 -/* 00380 80800380 AC4F0004 */ sw $t7, 0x0004($v0) ## 00000004 -/* 00384 80800384 AC4E0000 */ sw $t6, 0x0000($v0) ## 00000000 -/* 00388 80800388 8E040000 */ lw $a0, 0x0000($s0) ## 00000000 -/* 0038C 8080038C 0C025131 */ jal func_800944C4 -/* 00390 80800390 AFA800B8 */ sw $t0, 0x00B8($sp) -/* 00394 80800394 8FA800B8 */ lw $t0, 0x00B8($sp) -/* 00398 80800398 3C05E700 */ lui $a1, 0xE700 ## $a1 = E7000000 -/* 0039C 8080039C 3C0EE300 */ lui $t6, 0xE300 ## $t6 = E3000000 -/* 003A0 808003A0 8D0202C0 */ lw $v0, 0x02C0($t0) ## 000002C0 -/* 003A4 808003A4 35CE0A01 */ ori $t6, $t6, 0x0A01 ## $t6 = E3000A01 -/* 003A8 808003A8 3C0F0010 */ lui $t7, 0x0010 ## $t7 = 00100000 -/* 003AC 808003AC 24580008 */ addiu $t8, $v0, 0x0008 ## $t8 = 00000008 -/* 003B0 808003B0 AD1802C0 */ sw $t8, 0x02C0($t0) ## 000002C0 -/* 003B4 808003B4 AC400004 */ sw $zero, 0x0004($v0) ## 00000004 -/* 003B8 808003B8 AC450000 */ sw $a1, 0x0000($v0) ## 00000000 -/* 003BC 808003BC 8D0202C0 */ lw $v0, 0x02C0($t0) ## 000002C0 -/* 003C0 808003C0 3C09F200 */ lui $t1, 0xF200 ## $t1 = F2000000 -/* 003C4 808003C4 3C1F070B */ lui $ra, 0x070B ## $ra = 070B0000 -/* 003C8 808003C8 24590008 */ addiu $t9, $v0, 0x0008 ## $t9 = 00000008 -/* 003CC 808003CC AD1902C0 */ sw $t9, 0x02C0($t0) ## 000002C0 -/* 003D0 808003D0 AC4F0004 */ sw $t7, 0x0004($v0) ## 00000004 -/* 003D4 808003D4 AC4E0000 */ sw $t6, 0x0000($v0) ## 00000000 -/* 003D8 808003D8 8D0202C0 */ lw $v0, 0x02C0($t0) ## 000002C0 -/* 003DC 808003DC 3C0E0C18 */ lui $t6, 0x0C18 ## $t6 = 0C180000 -/* 003E0 808003E0 3C19E200 */ lui $t9, 0xE200 ## $t9 = E2000000 -/* 003E4 808003E4 24580008 */ addiu $t8, $v0, 0x0008 ## $t8 = 00000008 -/* 003E8 808003E8 AD1802C0 */ sw $t8, 0x02C0($t0) ## 000002C0 -/* 003EC 808003EC 3739001C */ ori $t9, $t9, 0x001C ## $t9 = E200001C -/* 003F0 808003F0 35CE4340 */ ori $t6, $t6, 0x4340 ## $t6 = 0C184340 -/* 003F4 808003F4 AC4E0004 */ sw $t6, 0x0004($v0) ## 00000004 -/* 003F8 808003F8 AC590000 */ sw $t9, 0x0000($v0) ## 00000000 -/* 003FC 808003FC 8D0202C0 */ lw $v0, 0x02C0($t0) ## 000002C0 -/* 00400 80800400 3C19350C */ lui $t9, 0x350C ## $t9 = 350C0000 -/* 00404 80800404 3C18FC26 */ lui $t8, 0xFC26 ## $t8 = FC260000 -/* 00408 80800408 244F0008 */ addiu $t7, $v0, 0x0008 ## $t7 = 00000008 -/* 0040C 8080040C AD0F02C0 */ sw $t7, 0x02C0($t0) ## 000002C0 -/* 00410 80800410 37187E60 */ ori $t8, $t8, 0x7E60 ## $t8 = FC267E60 -/* 00414 80800414 3739F37F */ ori $t9, $t9, 0xF37F ## $t9 = 350CF37F -/* 00418 80800418 AC590004 */ sw $t9, 0x0004($v0) ## 00000004 -/* 0041C 8080041C AC580000 */ sw $t8, 0x0000($v0) ## 00000000 -/* 00420 80800420 8D0202C0 */ lw $v0, 0x02C0($t0) ## 000002C0 -/* 00424 80800424 3C18AAFF */ lui $t8, 0xAAFF ## $t8 = AAFF0000 -/* 00428 80800428 3718FFFF */ ori $t8, $t8, 0xFFFF ## $t8 = AAFFFFFF -/* 0042C 8080042C 244E0008 */ addiu $t6, $v0, 0x0008 ## $t6 = 00000008 -/* 00430 80800430 AD0E02C0 */ sw $t6, 0x02C0($t0) ## 000002C0 -/* 00434 80800434 3C0FFA00 */ lui $t7, 0xFA00 ## $t7 = FA000000 -/* 00438 80800438 AC4F0000 */ sw $t7, 0x0000($v0) ## 00000000 -/* 0043C 8080043C AC580004 */ sw $t8, 0x0004($v0) ## 00000004 -/* 00440 80800440 8D0202C0 */ lw $v0, 0x02C0($t0) ## 000002C0 -/* 00444 80800444 340FFF80 */ ori $t7, $zero, 0xFF80 ## $t7 = 0000FF80 -/* 00448 80800448 3C0EFB00 */ lui $t6, 0xFB00 ## $t6 = FB000000 -/* 0044C 8080044C 24590008 */ addiu $t9, $v0, 0x0008 ## $t9 = 00000008 -/* 00450 80800450 AD1902C0 */ sw $t9, 0x02C0($t0) ## 000002C0 -/* 00454 80800454 AC4F0004 */ sw $t7, 0x0004($v0) ## 00000004 -/* 00458 80800458 AC4E0000 */ sw $t6, 0x0000($v0) ## 00000000 -/* 0045C 8080045C 8D0202C0 */ lw $v0, 0x02C0($t0) ## 000002C0 -/* 00460 80800460 3C0E0100 */ lui $t6, 0x0100 ## $t6 = 01000000 -/* 00464 80800464 25CE1800 */ addiu $t6, $t6, 0x1800 ## $t6 = 01001800 -/* 00468 80800468 24580008 */ addiu $t8, $v0, 0x0008 ## $t8 = 00000008 -/* 0046C 8080046C AD1802C0 */ sw $t8, 0x02C0($t0) ## 000002C0 -/* 00470 80800470 3C19FD90 */ lui $t9, 0xFD90 ## $t9 = FD900000 -/* 00474 80800474 AC590000 */ sw $t9, 0x0000($v0) ## 00000000 -/* 00478 80800478 AC4E0004 */ sw $t6, 0x0004($v0) ## 00000004 -/* 0047C 8080047C 8D0202C0 */ lw $v0, 0x02C0($t0) ## 000002C0 -/* 00480 80800480 3C190701 */ lui $t9, 0x0701 ## $t9 = 07010000 -/* 00484 80800484 3C18F590 */ lui $t8, 0xF590 ## $t8 = F5900000 -/* 00488 80800488 244F0008 */ addiu $t7, $v0, 0x0008 ## $t7 = 00000008 -/* 0048C 8080048C AD0F02C0 */ sw $t7, 0x02C0($t0) ## 000002C0 -/* 00490 80800490 37180100 */ ori $t8, $t8, 0x0100 ## $t8 = F5900100 -/* 00494 80800494 37396C52 */ ori $t9, $t9, 0x6C52 ## $t9 = 07016C52 -/* 00498 80800498 AC590004 */ sw $t9, 0x0004($v0) ## 00000004 -/* 0049C 8080049C AC580000 */ sw $t8, 0x0000($v0) ## 00000000 -/* 004A0 808004A0 8D0202C0 */ lw $v0, 0x02C0($t0) ## 000002C0 -/* 004A4 808004A4 3C0FE600 */ lui $t7, 0xE600 ## $t7 = E6000000 -/* 004A8 808004A8 3C19F300 */ lui $t9, 0xF300 ## $t9 = F3000000 -/* 004AC 808004AC 244E0008 */ addiu $t6, $v0, 0x0008 ## $t6 = 00000008 -/* 004B0 808004B0 AD0E02C0 */ sw $t6, 0x02C0($t0) ## 000002C0 -/* 004B4 808004B4 AC400004 */ sw $zero, 0x0004($v0) ## 00000004 -/* 004B8 808004B8 AC4F0000 */ sw $t7, 0x0000($v0) ## 00000000 -/* 004BC 808004BC 8D0202C0 */ lw $v0, 0x02C0($t0) ## 000002C0 -/* 004C0 808004C0 3C0E071F */ lui $t6, 0x071F ## $t6 = 071F0000 -/* 004C4 808004C4 35CEF200 */ ori $t6, $t6, 0xF200 ## $t6 = 071FF200 -/* 004C8 808004C8 24580008 */ addiu $t8, $v0, 0x0008 ## $t8 = 00000008 -/* 004CC 808004CC AD1802C0 */ sw $t8, 0x02C0($t0) ## 000002C0 -/* 004D0 808004D0 AC4E0004 */ sw $t6, 0x0004($v0) ## 00000004 -/* 004D4 808004D4 AC590000 */ sw $t9, 0x0000($v0) ## 00000000 -/* 004D8 808004D8 8D0202C0 */ lw $v0, 0x02C0($t0) ## 000002C0 -/* 004DC 808004DC 3C19F588 */ lui $t9, 0xF588 ## $t9 = F5880000 -/* 004E0 808004E0 3C0E0101 */ lui $t6, 0x0101 ## $t6 = 01010000 -/* 004E4 808004E4 244F0008 */ addiu $t7, $v0, 0x0008 ## $t7 = 00000008 -/* 004E8 808004E8 AD0F02C0 */ sw $t7, 0x02C0($t0) ## 000002C0 -/* 004EC 808004EC AC400004 */ sw $zero, 0x0004($v0) ## 00000004 -/* 004F0 808004F0 AC450000 */ sw $a1, 0x0000($v0) ## 00000000 -/* 004F4 808004F4 8D0202C0 */ lw $v0, 0x02C0($t0) ## 000002C0 -/* 004F8 808004F8 35CE6C52 */ ori $t6, $t6, 0x6C52 ## $t6 = 01016C52 -/* 004FC 808004FC 37390900 */ ori $t9, $t9, 0x0900 ## $t9 = F5880900 -/* 00500 80800500 24580008 */ addiu $t8, $v0, 0x0008 ## $t8 = 00000008 -/* 00504 80800504 AD1802C0 */ sw $t8, 0x02C0($t0) ## 000002C0 -/* 00508 80800508 AC4E0004 */ sw $t6, 0x0004($v0) ## 00000004 -/* 0050C 8080050C AC590000 */ sw $t9, 0x0000($v0) ## 00000000 -/* 00510 80800510 8D0202C0 */ lw $v0, 0x02C0($t0) ## 000002C0 -/* 00514 80800514 3C180107 */ lui $t8, 0x0107 ## $t8 = 01070000 -/* 00518 80800518 3718C07C */ ori $t8, $t8, 0xC07C ## $t8 = 0107C07C -/* 0051C 8080051C 244F0008 */ addiu $t7, $v0, 0x0008 ## $t7 = 00000008 -/* 00520 80800520 AD0F02C0 */ sw $t7, 0x02C0($t0) ## 000002C0 -/* 00524 80800524 3C0A0100 */ lui $t2, 0x0100 ## $t2 = 01000000 -/* 00528 80800528 254A0000 */ addiu $t2, $t2, 0x0000 ## $t2 = 01000000 -/* 0052C 8080052C 37FFF056 */ ori $ra, $ra, 0xF056 ## $ra = 070BF056 -/* 00530 80800530 00003025 */ or $a2, $zero, $zero ## $a2 = 00000000 -/* 00534 80800534 2407005E */ addiu $a3, $zero, 0x005E ## $a3 = 0000005E -/* 00538 80800538 00002025 */ or $a0, $zero, $zero ## $a0 = 00000000 -/* 0053C 8080053C 3C0D0700 */ lui $t5, 0x0700 ## $t5 = 07000000 -/* 00540 80800540 3C0CF590 */ lui $t4, 0xF590 ## $t4 = F5900000 -/* 00544 80800544 240B0180 */ addiu $t3, $zero, 0x0180 ## $t3 = 00000180 -/* 00548 80800548 AC580004 */ sw $t8, 0x0004($v0) ## 00000004 -/* 0054C 8080054C AC490000 */ sw $t1, 0x0000($v0) ## 00000000 -.L80800550: -/* 00550 80800550 008B0019 */ multu $a0, $t3 -/* 00554 80800554 8D0202C0 */ lw $v0, 0x02C0($t0) ## 000002C0 -/* 00558 80800558 3C0EFD90 */ lui $t6, 0xFD90 ## $t6 = FD900000 -/* 0055C 8080055C 24E50002 */ addiu $a1, $a3, 0x0002 ## $a1 = 00000060 -/* 00560 80800560 24590008 */ addiu $t9, $v0, 0x0008 ## $t9 = 00000008 -/* 00564 80800564 AD1902C0 */ sw $t9, 0x02C0($t0) ## 000002C0 -/* 00568 80800568 AC4E0000 */ sw $t6, 0x0000($v0) ## 00000000 -/* 0056C 8080056C 3C01E448 */ lui $at, 0xE448 ## $at = E4480000 -/* 00570 80800570 34214000 */ ori $at, $at, 0x4000 ## $at = E4484000 -/* 00574 80800574 24C60001 */ addiu $a2, $a2, 0x0001 ## $a2 = 00000001 -/* 00578 80800578 00007812 */ mflo $t7 -/* 0057C 8080057C 014FC021 */ addu $t8, $t2, $t7 -/* 00580 80800580 AC580004 */ sw $t8, 0x0004($v0) ## 00000004 -/* 00584 80800584 8D0202C0 */ lw $v0, 0x02C0($t0) ## 000002C0 -/* 00588 80800588 3C0FE600 */ lui $t7, 0xE600 ## $t7 = E6000000 -/* 0058C 8080058C 30C6FFFF */ andi $a2, $a2, 0xFFFF ## $a2 = 00000001 -/* 00590 80800590 24590008 */ addiu $t9, $v0, 0x0008 ## $t9 = 00000008 -/* 00594 80800594 AD1902C0 */ sw $t9, 0x02C0($t0) ## 000002C0 -/* 00598 80800598 AC4D0004 */ sw $t5, 0x0004($v0) ## 00000004 -/* 0059C 8080059C AC4C0000 */ sw $t4, 0x0000($v0) ## 00000000 -/* 005A0 808005A0 8D0202C0 */ lw $v0, 0x02C0($t0) ## 000002C0 -/* 005A4 808005A4 3C19F300 */ lui $t9, 0xF300 ## $t9 = F3000000 -/* 005A8 808005A8 244E0008 */ addiu $t6, $v0, 0x0008 ## $t6 = 00000008 -/* 005AC 808005AC AD0E02C0 */ sw $t6, 0x02C0($t0) ## 000002C0 -/* 005B0 808005B0 AC400004 */ sw $zero, 0x0004($v0) ## 00000004 -/* 005B4 808005B4 AC4F0000 */ sw $t7, 0x0000($v0) ## 00000000 -/* 005B8 808005B8 8D0202C0 */ lw $v0, 0x02C0($t0) ## 000002C0 -/* 005BC 808005BC 3C0FE700 */ lui $t7, 0xE700 ## $t7 = E7000000 -/* 005C0 808005C0 24580008 */ addiu $t8, $v0, 0x0008 ## $t8 = 00000008 -/* 005C4 808005C4 AD1802C0 */ sw $t8, 0x02C0($t0) ## 000002C0 -/* 005C8 808005C8 AC5F0004 */ sw $ra, 0x0004($v0) ## 00000004 -/* 005CC 808005CC AC590000 */ sw $t9, 0x0000($v0) ## 00000000 -/* 005D0 808005D0 8D0202C0 */ lw $v0, 0x02C0($t0) ## 000002C0 -/* 005D4 808005D4 3C19F588 */ lui $t9, 0xF588 ## $t9 = F5880000 -/* 005D8 808005D8 37393000 */ ori $t9, $t9, 0x3000 ## $t9 = F5883000 -/* 005DC 808005DC 244E0008 */ addiu $t6, $v0, 0x0008 ## $t6 = 00000008 -/* 005E0 808005E0 AD0E02C0 */ sw $t6, 0x02C0($t0) ## 000002C0 -/* 005E4 808005E4 AC400004 */ sw $zero, 0x0004($v0) ## 00000004 -/* 005E8 808005E8 AC4F0000 */ sw $t7, 0x0000($v0) ## 00000000 -/* 005EC 808005EC 8D0202C0 */ lw $v0, 0x02C0($t0) ## 000002C0 -/* 005F0 808005F0 3C0F002F */ lui $t7, 0x002F ## $t7 = 002F0000 -/* 005F4 808005F4 35EFC004 */ ori $t7, $t7, 0xC004 ## $t7 = 002FC004 -/* 005F8 808005F8 24580008 */ addiu $t8, $v0, 0x0008 ## $t8 = 00000008 -/* 005FC 808005FC AD1802C0 */ sw $t8, 0x02C0($t0) ## 000002C0 -/* 00600 80800600 AC400004 */ sw $zero, 0x0004($v0) ## 00000004 -/* 00604 80800604 AC590000 */ sw $t9, 0x0000($v0) ## 00000000 -/* 00608 80800608 8D0202C0 */ lw $v0, 0x02C0($t0) ## 000002C0 -/* 0060C 8080060C 244E0008 */ addiu $t6, $v0, 0x0008 ## $t6 = 00000008 -/* 00610 80800610 AD0E02C0 */ sw $t6, 0x02C0($t0) ## 000002C0 -/* 00614 80800614 AC4F0004 */ sw $t7, 0x0004($v0) ## 00000004 -/* 00618 80800618 AC490000 */ sw $t1, 0x0000($v0) ## 00000000 -/* 0061C 8080061C 8D0202C0 */ lw $v0, 0x02C0($t0) ## 000002C0 -/* 00620 80800620 00047880 */ sll $t7, $a0, 2 -/* 00624 80800624 00C02025 */ or $a0, $a2, $zero ## $a0 = 00000001 -/* 00628 80800628 24580008 */ addiu $t8, $v0, 0x0008 ## $t8 = 00000008 -/* 0062C 8080062C AD1802C0 */ sw $t8, 0x02C0($t0) ## 000002C0 -/* 00630 80800630 861901DC */ lh $t9, 0x01DC($s0) ## 000001DC -/* 00634 80800634 332E007F */ andi $t6, $t9, 0x007F ## $t6 = 00000000 -/* 00638 80800638 01CFC023 */ subu $t8, $t6, $t7 -/* 0063C 8080063C 860E01DE */ lh $t6, 0x01DE($s0) ## 000001DE -/* 00640 80800640 33190FFF */ andi $t9, $t8, 0x0FFF ## $t9 = 00000008 -/* 00644 80800644 31CF0FFF */ andi $t7, $t6, 0x0FFF ## $t7 = 00000000 -/* 00648 80800648 000FC300 */ sll $t8, $t7, 12 -/* 0064C 8080064C 03097025 */ or $t6, $t8, $t1 ## $t6 = F2000008 -/* 00650 80800650 01D97825 */ or $t7, $t6, $t9 ## $t7 = F2000008 -/* 00654 80800654 3C180100 */ lui $t8, 0x0100 ## $t8 = 01000000 -/* 00658 80800658 AC580004 */ sw $t8, 0x0004($v0) ## 00000004 -/* 0065C 8080065C AC4F0000 */ sw $t7, 0x0000($v0) ## 00000000 -/* 00660 80800660 8D0202C0 */ lw $v0, 0x02C0($t0) ## 000002C0 -/* 00664 80800664 0005C880 */ sll $t9, $a1, 2 -/* 00668 80800668 332F0FFF */ andi $t7, $t9, 0x0FFF ## $t7 = 00000008 -/* 0066C 8080066C 244E0008 */ addiu $t6, $v0, 0x0008 ## $t6 = 00000008 -/* 00670 80800670 AD0E02C0 */ sw $t6, 0x02C0($t0) ## 000002C0 -/* 00674 80800674 01E1C025 */ or $t8, $t7, $at ## $t8 = E4484008 -/* 00678 80800678 3C010018 */ lui $at, 0x0018 ## $at = 00180000 -/* 0067C 8080067C 00077080 */ sll $t6, $a3, 2 -/* 00680 80800680 31D90FFF */ andi $t9, $t6, 0x0FFF ## $t9 = 00000008 -/* 00684 80800684 34214000 */ ori $at, $at, 0x4000 ## $at = 00184000 -/* 00688 80800688 03217825 */ or $t7, $t9, $at ## $t7 = 00184008 -/* 0068C 8080068C AC4F0004 */ sw $t7, 0x0004($v0) ## 00000004 -/* 00690 80800690 AC580000 */ sw $t8, 0x0000($v0) ## 00000000 -/* 00694 80800694 8D0202C0 */ lw $v0, 0x02C0($t0) ## 000002C0 -/* 00698 80800698 3C0EE100 */ lui $t6, 0xE100 ## $t6 = E1000000 -/* 0069C 8080069C 28C10010 */ slti $at, $a2, 0x0010 -/* 006A0 808006A0 24580008 */ addiu $t8, $v0, 0x0008 ## $t8 = 00000008 -/* 006A4 808006A4 AD1802C0 */ sw $t8, 0x02C0($t0) ## 000002C0 -/* 006A8 808006A8 AC400004 */ sw $zero, 0x0004($v0) ## 00000004 -/* 006AC 808006AC AC4E0000 */ sw $t6, 0x0000($v0) ## 00000000 -/* 006B0 808006B0 8D0202C0 */ lw $v0, 0x02C0($t0) ## 000002C0 -/* 006B4 808006B4 3C180400 */ lui $t8, 0x0400 ## $t8 = 04000000 -/* 006B8 808006B8 37180400 */ ori $t8, $t8, 0x0400 ## $t8 = 04000400 -/* 006BC 808006BC 24590008 */ addiu $t9, $v0, 0x0008 ## $t9 = 00000008 -/* 006C0 808006C0 AD1902C0 */ sw $t9, 0x02C0($t0) ## 000002C0 -/* 006C4 808006C4 3C0FF100 */ lui $t7, 0xF100 ## $t7 = F1000000 -/* 006C8 808006C8 30A7FFFF */ andi $a3, $a1, 0xFFFF ## $a3 = 00000060 -/* 006CC 808006CC AC4F0000 */ sw $t7, 0x0000($v0) ## 00000000 -/* 006D0 808006D0 1420FF9F */ bne $at, $zero, .L80800550 -/* 006D4 808006D4 AC580004 */ sw $t8, 0x0004($v0) ## 00000004 -/* 006D8 808006D8 860E01D6 */ lh $t6, 0x01D6($s0) ## 000001D6 -/* 006DC 808006DC 8E040000 */ lw $a0, 0x0000($s0) ## 00000000 -/* 006E0 808006E0 24190002 */ addiu $t9, $zero, 0x0002 ## $t9 = 00000002 -/* 006E4 808006E4 AFB90014 */ sw $t9, 0x0014($sp) -/* 006E8 808006E8 00002825 */ or $a1, $zero, $zero ## $a1 = 00000000 -/* 006EC 808006EC 00003025 */ or $a2, $zero, $zero ## $a2 = 00000000 -/* 006F0 808006F0 00003825 */ or $a3, $zero, $zero ## $a3 = 00000000 -/* 006F4 808006F4 0C01D9CB */ jal func_8007672C -/* 006F8 808006F8 AFAE0010 */ sw $t6, 0x0010($sp) -/* 006FC 808006FC 3C0F8080 */ lui $t7, %hi(D_808009A0) ## $t7 = 80800000 -/* 00700 80800700 85EF09A0 */ lh $t7, %lo(D_808009A0)($t7) -/* 00704 80800704 3C018080 */ lui $at, %hi(D_808009A0) ## $at = 80800000 -/* 00708 80800708 3C068080 */ lui $a2, %hi(D_80800A14) ## $a2 = 80800000 -/* 0070C 8080070C 25F8012C */ addiu $t8, $t7, 0x012C ## $t8 = 8080012C -/* 00710 80800710 A43809A0 */ sh $t8, %lo(D_808009A0)($at) -/* 00714 80800714 8E050000 */ lw $a1, 0x0000($s0) ## 00000000 -/* 00718 80800718 24C60A14 */ addiu $a2, $a2, %lo(D_80800A14) ## $a2 = 80800A14 -/* 0071C 8080071C 27A400A8 */ addiu $a0, $sp, 0x00A8 ## $a0 = FFFFFFB8 -/* 00720 80800720 0C031AD5 */ jal func_800C6B54 -/* 00724 80800724 240701E3 */ addiu $a3, $zero, 0x01E3 ## $a3 = 000001E3 -/* 00728 80800728 8FBF0024 */ lw $ra, 0x0024($sp) -/* 0072C 8080072C 8FB00020 */ lw $s0, 0x0020($sp) -/* 00730 80800730 27BD00F0 */ addiu $sp, $sp, 0x00F0 ## $sp = 00000000 -/* 00734 80800734 03E00008 */ jr $ra -/* 00738 80800738 00000000 */ nop diff --git a/asm/non_matchings/overlays/gamestates/ovl_title/func_8080073C.s b/asm/non_matchings/overlays/gamestates/ovl_title/func_8080073C.s deleted file mode 100644 index fcb96cbd5e..0000000000 --- a/asm/non_matchings/overlays/gamestates/ovl_title/func_8080073C.s +++ /dev/null @@ -1,86 +0,0 @@ -.rdata - -glabel D_80800A24 - .asciz "../z_title.c" - .balign 4 - -glabel D_80800A34 - .asciz "../z_title.c" - .balign 4 - - .text - -glabel func_8080073C -/* 0073C 8080073C 27BDFFB0 */ addiu $sp, $sp, 0xFFB0 ## $sp = FFFFFFB0 -/* 00740 80800740 AFBF001C */ sw $ra, 0x001C($sp) -/* 00744 80800744 AFB10018 */ sw $s1, 0x0018($sp) -/* 00748 80800748 AFB00014 */ sw $s0, 0x0014($sp) -/* 0074C 8080074C 8C850000 */ lw $a1, 0x0000($a0) ## 00000000 -/* 00750 80800750 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000 -/* 00754 80800754 3C068080 */ lui $a2, %hi(D_80800A24) ## $a2 = 80800000 -/* 00758 80800758 24C60A24 */ addiu $a2, $a2, %lo(D_80800A24) ## $a2 = 80800A24 -/* 0075C 8080075C 27A40038 */ addiu $a0, $sp, 0x0038 ## $a0 = FFFFFFE8 -/* 00760 80800760 240701EE */ addiu $a3, $zero, 0x01EE ## $a3 = 000001EE -/* 00764 80800764 0C031AB1 */ jal func_800C6AC4 -/* 00768 80800768 00A08825 */ or $s1, $a1, $zero ## $s1 = 00000000 -/* 0076C 8080076C 8E2302C0 */ lw $v1, 0x02C0($s1) ## 000002C0 -/* 00770 80800770 3C0FDB06 */ lui $t7, 0xDB06 ## $t7 = DB060000 -/* 00774 80800774 3C19DB06 */ lui $t9, 0xDB06 ## $t9 = DB060000 -/* 00778 80800778 246E0008 */ addiu $t6, $v1, 0x0008 ## $t6 = 00000008 -/* 0077C 8080077C AE2E02C0 */ sw $t6, 0x02C0($s1) ## 000002C0 -/* 00780 80800780 AC600004 */ sw $zero, 0x0004($v1) ## 00000004 -/* 00784 80800784 AC6F0000 */ sw $t7, 0x0000($v1) ## 00000000 -/* 00788 80800788 8E2302C0 */ lw $v1, 0x02C0($s1) ## 000002C0 -/* 0078C 8080078C 37390004 */ ori $t9, $t9, 0x0004 ## $t9 = DB060004 -/* 00790 80800790 00002825 */ or $a1, $zero, $zero ## $a1 = 00000000 -/* 00794 80800794 24780008 */ addiu $t8, $v1, 0x0008 ## $t8 = 00000008 -/* 00798 80800798 AE3802C0 */ sw $t8, 0x02C0($s1) ## 000002C0 -/* 0079C 8080079C AC790000 */ sw $t9, 0x0000($v1) ## 00000000 -/* 007A0 808007A0 8E0800A4 */ lw $t0, 0x00A4($s0) ## 000000A4 -/* 007A4 808007A4 00003025 */ or $a2, $zero, $zero ## $a2 = 00000000 -/* 007A8 808007A8 00003825 */ or $a3, $zero, $zero ## $a3 = 00000000 -/* 007AC 808007AC AC680004 */ sw $t0, 0x0004($v1) ## 00000004 -/* 007B0 808007B0 0C025492 */ jal func_80095248 -/* 007B4 808007B4 8E040000 */ lw $a0, 0x0000($s0) ## 00000000 -/* 007B8 808007B8 0C20004A */ jal func_80800128 -/* 007BC 808007BC 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 007C0 808007C0 0C200072 */ jal func_808001C8 -/* 007C4 808007C4 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 007C8 808007C8 3C098013 */ lui $t1, 0x8013 ## $t1 = 80130000 -/* 007CC 808007CC 8D29DBC0 */ lw $t1, -0x2440($t1) ## 8012DBC0 -/* 007D0 808007D0 51200008 */ beql $t1, $zero, .L808007F4 -/* 007D4 808007D4 920C01E1 */ lbu $t4, 0x01E1($s0) ## 000001E1 -/* 007D8 808007D8 8E2A02C0 */ lw $t2, 0x02C0($s1) ## 000002C0 -/* 007DC 808007DC 27A4002C */ addiu $a0, $sp, 0x002C ## $a0 = FFFFFFDC -/* 007E0 808007E0 0C200000 */ jal func_80800000 -/* 007E4 808007E4 AFAA002C */ sw $t2, 0x002C($sp) -/* 007E8 808007E8 8FAB002C */ lw $t3, 0x002C($sp) -/* 007EC 808007EC AE2B02C0 */ sw $t3, 0x02C0($s1) ## 000002C0 -/* 007F0 808007F0 920C01E1 */ lbu $t4, 0x01E1($s0) ## 000001E1 -.L808007F4: -/* 007F4 808007F4 3C068080 */ lui $a2, %hi(D_80800A34) ## $a2 = 80800000 -/* 007F8 808007F8 24C60A34 */ addiu $a2, $a2, %lo(D_80800A34) ## $a2 = 80800A34 -/* 007FC 808007FC 1180000E */ beq $t4, $zero, .L80800838 -/* 00800 80800800 27A40038 */ addiu $a0, $sp, 0x0038 ## $a0 = FFFFFFE8 -/* 00804 80800804 3C028016 */ lui $v0, 0x8016 ## $v0 = 80160000 -/* 00808 80800808 2442E660 */ addiu $v0, $v0, 0xE660 ## $v0 = 8015E660 -/* 0080C 8080080C 240300FF */ addiu $v1, $zero, 0x00FF ## $v1 = 000000FF -/* 00810 80800810 240D0001 */ addiu $t5, $zero, 0x0001 ## $t5 = 00000001 -/* 00814 80800814 A04313E0 */ sb $v1, 0x13E0($v0) ## 8015FA40 -/* 00818 80800818 A04313E1 */ sb $v1, 0x13E1($v0) ## 8015FA41 -/* 0081C 8080081C AC4D135C */ sw $t5, 0x135C($v0) ## 8015F9BC -/* 00820 80800820 3C0E8080 */ lui $t6, 0x8080 ## $t6 = 80800000 -/* 00824 80800824 25CE3CAC */ addiu $t6, $t6, 0x3CAC ## $t6 = 80803CAC -/* 00828 80800828 240F01D0 */ addiu $t7, $zero, 0x01D0 ## $t7 = 000001D0 -/* 0082C 8080082C AE000098 */ sw $zero, 0x0098($s0) ## 00000098 -/* 00830 80800830 AE0F0010 */ sw $t7, 0x0010($s0) ## 00000010 -/* 00834 80800834 AE0E000C */ sw $t6, 0x000C($s0) ## 0000000C -.L80800838: -/* 00838 80800838 8E050000 */ lw $a1, 0x0000($s0) ## 00000000 -/* 0083C 8080083C 0C031AD5 */ jal func_800C6B54 -/* 00840 80800840 2407021D */ addiu $a3, $zero, 0x021D ## $a3 = 0000021D -/* 00844 80800844 8FBF001C */ lw $ra, 0x001C($sp) -/* 00848 80800848 8FB00014 */ lw $s0, 0x0014($sp) -/* 0084C 8080084C 8FB10018 */ lw $s1, 0x0018($sp) -/* 00850 80800850 03E00008 */ jr $ra -/* 00854 80800854 27BD0050 */ addiu $sp, $sp, 0x0050 ## $sp = 00000000 diff --git a/asm/non_matchings/overlays/gamestates/ovl_title/func_80800878.s b/asm/non_matchings/overlays/gamestates/ovl_title/func_80800878.s deleted file mode 100644 index 1badaae37a..0000000000 --- a/asm/non_matchings/overlays/gamestates/ovl_title/func_80800878.s +++ /dev/null @@ -1,100 +0,0 @@ -.rdata - -glabel D_80800A44 - .asciz "../z_title.c" - .balign 4 - -glabel D_80800A54 - .asciz "z_title.c\n" - .balign 4 - -glabel D_80800A60 - .asciz "this->staticSegment != NULL" - .balign 4 - -glabel D_80800A7C - .asciz "../z_title.c" - .balign 4 - -glabel D_80800A8C - .asciz "../z_title.c" - .balign 4 - - .text - -glabel func_80800878 -/* 00878 80800878 27BDFFC8 */ addiu $sp, $sp, 0xFFC8 ## $sp = FFFFFFC8 -/* 0087C 8080087C 3C0201AA */ lui $v0, 0x01AA ## $v0 = 01AA0000 -/* 00880 80800880 3C0E01AA */ lui $t6, 0x01AA ## $t6 = 01AA0000 -/* 00884 80800884 25CE3DC0 */ addiu $t6, $t6, 0x3DC0 ## $t6 = 01AA3DC0 -/* 00888 80800888 24421000 */ addiu $v0, $v0, 0x1000 ## $v0 = 01AA1000 -/* 0088C 8080088C AFBF0024 */ sw $ra, 0x0024($sp) -/* 00890 80800890 AFB00020 */ sw $s0, 0x0020($sp) -/* 00894 80800894 01C22823 */ subu $a1, $t6, $v0 -/* 00898 80800898 3C068080 */ lui $a2, %hi(D_80800A44) ## $a2 = 80800000 -/* 0089C 8080089C 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000 -/* 008A0 808008A0 24C60A44 */ addiu $a2, $a2, %lo(D_80800A44) ## $a2 = 80800A44 -/* 008A4 808008A4 AFA50028 */ sw $a1, 0x0028($sp) -/* 008A8 808008A8 AFA2002C */ sw $v0, 0x002C($sp) -/* 008AC 808008AC 0C031521 */ jal Game_Alloc -/* 008B0 808008B0 24070263 */ addiu $a3, $zero, 0x0263 ## $a3 = 00000263 -/* 008B4 808008B4 3C048080 */ lui $a0, %hi(D_80800A54) ## $a0 = 80800000 -/* 008B8 808008B8 AE0200A4 */ sw $v0, 0x00A4($s0) ## 000000A4 -/* 008BC 808008BC 0C00084C */ jal osSyncPrintf -/* 008C0 808008C0 24840A54 */ addiu $a0, $a0, %lo(D_80800A54) ## $a0 = 80800A54 -/* 008C4 808008C4 8E0400A4 */ lw $a0, 0x00A4($s0) ## 000000A4 -/* 008C8 808008C8 3C058080 */ lui $a1, %hi(D_80800A7C) ## $a1 = 80800000 -/* 008CC 808008CC 24A50A7C */ addiu $a1, $a1, %lo(D_80800A7C) ## $a1 = 80800A7C -/* 008D0 808008D0 14800005 */ bne $a0, $zero, .L808008E8 -/* 008D4 808008D4 24060266 */ addiu $a2, $zero, 0x0266 ## $a2 = 00000266 -/* 008D8 808008D8 3C048080 */ lui $a0, %hi(D_80800A60) ## $a0 = 80800000 -/* 008DC 808008DC 0C0007FC */ jal __assert -/* 008E0 808008E0 24840A60 */ addiu $a0, $a0, %lo(D_80800A60) ## $a0 = 80800A60 -/* 008E4 808008E4 8E0400A4 */ lw $a0, 0x00A4($s0) ## 000000A4 -.L808008E8: -/* 008E8 808008E8 3C078080 */ lui $a3, %hi(D_80800A8C) ## $a3 = 80800000 -/* 008EC 808008EC 240F0267 */ addiu $t7, $zero, 0x0267 ## $t7 = 00000267 -/* 008F0 808008F0 AFAF0010 */ sw $t7, 0x0010($sp) -/* 008F4 808008F4 24E70A8C */ addiu $a3, $a3, %lo(D_80800A8C) ## $a3 = 80800A8C -/* 008F8 808008F8 8FA5002C */ lw $a1, 0x002C($sp) -/* 008FC 808008FC 0C0006A8 */ jal DmaMgr_SendRequest1 -/* 00900 80800900 8FA60028 */ lw $a2, 0x0028($sp) -/* 00904 80800904 3C198016 */ lui $t9, 0x8016 ## $t9 = 80160000 -/* 00908 80800908 8F39FA90 */ lw $t9, -0x0570($t9) ## 8015FA90 -/* 0090C 8080090C 24180001 */ addiu $t8, $zero, 0x0001 ## $t8 = 00000001 -/* 00910 80800910 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 00914 80800914 0C034204 */ jal Matrix_Init -/* 00918 80800918 A7380110 */ sh $t8, 0x0110($t9) ## 80160110 -/* 0091C 8080091C 260400A8 */ addiu $a0, $s0, 0x00A8 ## $a0 = 000000A8 -/* 00920 80800920 0C02A89E */ jal func_800AA278 -/* 00924 80800924 8E050000 */ lw $a1, 0x0000($s0) ## 00000000 -/* 00928 80800928 3C088080 */ lui $t0, %hi(func_8080073C) ## $t0 = 80800000 -/* 0092C 8080092C 3C098080 */ lui $t1, %hi(func_80800858) ## $t1 = 80800000 -/* 00930 80800930 2508073C */ addiu $t0, $t0, %lo(func_8080073C) ## $t0 = 8080073C -/* 00934 80800934 25290858 */ addiu $t1, $t1, %lo(func_80800858) ## $t1 = 80800858 -/* 00938 80800938 AE080004 */ sw $t0, 0x0004($s0) ## 00000004 -/* 0093C 8080093C AE090008 */ sw $t1, 0x0008($s0) ## 00000008 -/* 00940 80800940 A20001E1 */ sb $zero, 0x01E1($s0) ## 000001E1 -/* 00944 80800944 240A00FF */ addiu $t2, $zero, 0x00FF ## $t2 = 000000FF -/* 00948 80800948 3C018016 */ lui $at, 0x8016 ## $at = 80160000 -/* 0094C 8080094C AC2AF9B4 */ sw $t2, -0x064C($at) ## 8015F9B4 -/* 00950 80800950 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 00954 80800954 0C02A735 */ jal func_800A9CD4 -/* 00958 80800958 260501D0 */ addiu $a1, $s0, 0x01D0 ## $a1 = 000001D0 -/* 0095C 8080095C 240B0014 */ addiu $t3, $zero, 0x0014 ## $t3 = 00000014 -/* 00960 80800960 240C00FF */ addiu $t4, $zero, 0x00FF ## $t4 = 000000FF -/* 00964 80800964 240DFFFD */ addiu $t5, $zero, 0xFFFD ## $t5 = FFFFFFFD -/* 00968 80800968 240E003C */ addiu $t6, $zero, 0x003C ## $t6 = 0000003C -/* 0096C 8080096C A60001DC */ sh $zero, 0x01DC($s0) ## 000001DC -/* 00970 80800970 A60B01D4 */ sh $t3, 0x01D4($s0) ## 000001D4 -/* 00974 80800974 A60C01D6 */ sh $t4, 0x01D6($s0) ## 000001D6 -/* 00978 80800978 A60D01D8 */ sh $t5, 0x01D8($s0) ## 000001D8 -/* 0097C 8080097C A60E01DA */ sh $t6, 0x01DA($s0) ## 000001DA -/* 00980 80800980 8FBF0024 */ lw $ra, 0x0024($sp) -/* 00984 80800984 8FB00020 */ lw $s0, 0x0020($sp) -/* 00988 80800988 27BD0038 */ addiu $sp, $sp, 0x0038 ## $sp = 00000000 -/* 0098C 8080098C 03E00008 */ jr $ra -/* 00990 80800990 00000000 */ nop -/* 00994 80800994 00000000 */ nop -/* 00998 80800998 00000000 */ nop -/* 0099C 8080099C 00000000 */ nop diff --git a/data/overlays/gamestates/z_title.data.s b/data/overlays/gamestates/z_title.data.s deleted file mode 100644 index 3fd6874248..0000000000 --- a/data/overlays/gamestates/z_title.data.s +++ /dev/null @@ -1,15 +0,0 @@ -.include "macro.inc" - - # assembler directives - .set noat # allow manual use of $at - .set noreorder # don't insert nops after branches - .set gp=64 # allow use of 64-bit general purposee registers - -.section .data - -glabel D_808009A0 - .word 0x00000000, 0x00000000 -glabel D_808009A8 - .word 0x64646400, 0x64646400 -glabel D_808009B0 - .word 0xFFFFFF00, 0xFFFFFF00, 0x45454500, 0x00000000 diff --git a/include/functions.h b/include/functions.h index 3562b89692..db34b65c90 100644 --- a/include/functions.h +++ b/include/functions.h @@ -2384,5 +2384,7 @@ void func_801109B0(GlobalContext* globalCtx); void func_80110F68(GlobalContext* globalCtx); void func_80112098(GlobalContext* globalCtx); -void func_80800878(TitleContext*); +void Title_Init(TitleContext*); +void Opening_Init(OpeningContext* this); + #endif diff --git a/include/segment_symbols.h b/include/segment_symbols.h index 0be701c23b..020d4c4837 100644 --- a/include/segment_symbols.h +++ b/include/segment_symbols.h @@ -921,6 +921,7 @@ DECLARE_ROM_SEGMENT(g_pn_55) DECLARE_ROM_SEGMENT(g_pn_56) DECLARE_ROM_SEGMENT(g_pn_57) +DECLARE_ROM_SEGMENT(nintendo_rogo_static) DECLARE_ROM_SEGMENT(title_static) DECLARE_ROM_SEGMENT(parameter_static) DECLARE_ROM_SEGMENT(vr_cloud2_static) diff --git a/include/variables.h b/include/variables.h index 510803400b..07a677dc9e 100644 --- a/include/variables.h +++ b/include/variables.h @@ -697,7 +697,7 @@ extern volatile u32 D_8012D290; extern Mtx gMtxClear; extern MtxF gMtxFClear; //extern ? D_8012DBB0; -//extern ? D_8012DBC0; +extern u32 D_8012DBC0; extern volatile u32 gIrqMgrResetStatus; extern u32 D_8012DBA0; extern u32 D_8012DBA4; diff --git a/include/z64.h b/include/z64.h index dc0baf5ee5..1c3f97cec4 100644 --- a/include/z64.h +++ b/include/z64.h @@ -808,6 +808,11 @@ typedef struct /* 0x04 */ u32 vromEnd; } RomFile; // size = 0x8 +typedef struct +{ + /* 0x00 */ void* read_buff; +} Sram; // size = 0x4 + typedef struct GameAllocEntry { /* 0x00 */ struct GameAllocEntry* next; @@ -840,10 +845,17 @@ typedef struct GameState typedef struct { /* 0x0000 */ GameState state; - /* 0x00A4 */ char unk_A4[0x12C]; - /* 0x01D0 */ UNK_TYPE unk_1D0; - /* 0x01D4 */ char unk_1D4[0xD]; - /* 0x01E1 */ u8 unk_1E1; + /* 0x00A4 */ void* staticSegment; + /* 0x00A8 */ View view; + /* 0x01D0 */ Sram sram; + /* 0x01D4 */ u16 unk_1D4; // not used in mq dbg (some sort of timer that doesn't seem to affect anything) + /* 0x01D6 */ s16 coverAlpha; + /* 0x01D8 */ s16 addAlpha; // not used in mq dbg + /* 0x01DA */ u16 visibleDuration; // not used in mq dbg + /* 0x01DC */ s16 ult; + /* 0x01DE */ s16 uls; + /* 0x01E0 */ char unk_1E0; + /* 0x01E1 */ u8 exit; /* 0x01E2 */ char unk_1E2[6]; } TitleContext; // size = 0x1E8 diff --git a/spec b/spec index 1a3b075a91..5f36c2d6cb 100644 --- a/spec +++ b/spec @@ -615,7 +615,6 @@ endseg beginseg name "ovl_title" include "build/src/overlays/gamestates/ovl_title/z_title.o" - include "build/data/overlays/gamestates/z_title.data.o" include "build/data/overlays/gamestates/z_title.reloc.o" address 0x80800000 endseg diff --git a/src/code/title_setup.c b/src/code/title_setup.c index 22ee8b1816..d7ac9cc87a 100644 --- a/src/code/title_setup.c +++ b/src/code/title_setup.c @@ -6,7 +6,7 @@ void TitleSetup_InitImpl(GameState* gameState) osSyncPrintf("ゼルダ共通データ初期化\n"); SaveContext_Init(); gameState->running = false; - gameState->init = func_80800878; gameState->size = sizeof(TitleContext); + gameState->init = Title_Init; gameState->size = sizeof(TitleContext); } void TitleSetup_Destroy(GameState* gameState) diff --git a/src/overlays/gamestates/ovl_title/z_title.c b/src/overlays/gamestates/ovl_title/z_title.c index 4053f152bc..16ba79987a 100644 --- a/src/overlays/gamestates/ovl_title/z_title.c +++ b/src/overlays/gamestates/ovl_title/z_title.c @@ -6,23 +6,209 @@ #include #include +#include -#pragma GLOBAL_ASM("asm/non_matchings/overlays/gamestates/ovl_title/func_80800000.s") +extern Gfx D_01002720[]; +extern u8 D_01001800[]; +extern u8 D_01000000[]; -void func_80800128(TitleContext* this) +void Title_PrintBuildInfo(Gfx** gfxp) { - this->unk_1E1 = 1; + Gfx* g; + GfxPrint* printer; + + g = *gfxp; + g = func_8009411C(g); + printer = alloca(0x30); + GfxPrint_Ctor(printer); + GfxPrint_Open(printer, g); + GfxPrint_SetColor(printer, 0xFF, 0x9B, 0xFF, 0xFF); + GfxPrint_SetPos(printer, 9, 21); + GfxPrint_Printf(printer, "NOT MARIO CLUB VERSION"); + GfxPrint_SetColor(printer, 0xFF, 0xFF, 0xFF, 0xFF); + GfxPrint_SetPos(printer, 7, 23); + GfxPrint_Printf(printer, "[Creator:%s]", gBuildTeam); + GfxPrint_SetPos(printer, 7, 24); + GfxPrint_Printf(printer, "[Date:%s]", gBuildDate); + g = GfxPrint_Close(printer); + GfxPrint_Dtor(printer); + *gfxp = g; } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/gamestates/ovl_title/func_80800134.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/gamestates/ovl_title/func_808001C8.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/gamestates/ovl_title/func_8080073C.s") - -void func_80800858(TitleContext* this) +// Note: In other rom versions this function also updates unk_1D4, coverAlpha, addAlpha, visibleDuration to calculate the fade-in/fade-out + the duration of the n64 logo animation +void Title_Calc(TitleContext* this) { - func_800A9AD0(this, &this->unk_1D0); + this->exit = 1; } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/gamestates/ovl_title/func_80800878.s") +void Title_InitView(TitleContext* this, float x, float y, float z) +{ + View* view; + Vec3f v1; + Vec3f v2; + Vec3f v3; + + view = &this->view; + v3.z = 0; + v3.x = 0; + v2.z = 0; + v2.y = 0; + v2.x = 0; + v1.x = x; + v1.y = y; + v1.z = z; + v3.y = 1.0; + + func_800AA460(view, 30.0f, 10.0f, 12800.0f); + func_800AA358(view, &v1, &v2, &v3); + func_800AAA50(view, 0xF); +} + +void Title_Draw(TitleContext* this) +{ + static s16 sTitleRotY = 0; + static u32 D_808009A4 = 0; + static Lights1 sTitleLights = gdSPDefLights1(0x64, 0x64, 0x64, 0xFF, 0xFF, 0xFF, 0x45, 0x45, 0x45); + + u16 y; + u16 idx; + char pad1[0x4]; + Vec3f v3; + Vec3f v1; + Vec3f v2; + char pad2[0x8]; + GraphicsContext* gfxCtx = this->state.gfxCtx; + Gfx* gfxArr[4]; + + func_800C6AC4(&gfxArr, this->state.gfxCtx, "../z_title.c", 395); + + v3.x = 69; + v3.y = 69; + v3.z = 69; + v2.x = -4949.148; + v2.y = 4002.5417; + v1.x = 0; + v1.y = 0; + v1.z = 0; + v2.z = 1119.0837; + + func_8002EABC(&v1, &v2, &v3, this->state.gfxCtx); + gSPSetLights1(gfxCtx->polyOpa.p++, sTitleLights); + Title_InitView(this, 0, 150.0, 300.0); + func_80093D18(this->state.gfxCtx); + Matrix_Translate(-53.0, -5.0, 0, 0); + Matrix_Scale(1.0, 1.0, 1.0, 1); + Matrix_RotateXYZ(0, sTitleRotY, 0, 1); + + gSPMatrix(gfxCtx->polyOpa.p++, Matrix_NewMtx(this->state.gfxCtx, "../z_title.c", 424), G_MTX_LOAD); + gSPDisplayList(gfxCtx->polyOpa.p++, &D_01002720); + func_800944C4(this->state.gfxCtx); + gDPPipeSync(gfxCtx->polyOpa.p++); + gDPSetCycleType(gfxCtx->polyOpa.p++, G_CYC_2CYCLE); + gDPSetRenderMode(gfxCtx->polyOpa.p++, G_RM_XLU_SURF2, G_RM_OPA_CI | CVG_DST_WRAP); + gDPSetCombineLERP(gfxCtx->polyOpa.p++, TEXEL1, PRIMITIVE, ENV_ALPHA, TEXEL0, 0, 0, 0, TEXEL0, PRIMITIVE, ENVIRONMENT, COMBINED, ENVIRONMENT, COMBINED, 0, PRIMITIVE, 0); + gDPSetPrimColor(gfxCtx->polyOpa.p++, 0, 0, 170, 255, 255, 255); + gDPSetEnvColor(gfxCtx->polyOpa.p++, 0, 0, 255, 128); + + _gDPLoadTextureBlockTile(gfxCtx->polyOpa.p++, + &D_01001800, + 0x100, + 1, + G_IM_FMT_I, + G_IM_SIZ_8b, + 32, 32, + 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, + 5, 5, + 2, 11); + + + for (idx = 0, y = 94; idx < 16; idx++, y += 2) + { + gDPLoadTextureBlock(gfxCtx->polyOpa.p++, + &D_01000000[0x180 * idx], + G_IM_FMT_I, + G_IM_SIZ_8b, + 192, 2, + 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMASK, G_TX_NOMASK, + G_TX_NOLOD, G_TX_NOLOD); + + gDPSetTileSize(gfxCtx->polyOpa.p++, /*G_TX_RENDERTILE*/1, this->uls, (this->ult & 0x7F) - idx*4, 0, 0); + gSPTextureRectangle(gfxCtx->polyOpa.p++, 388, y << 2, 1156, (y+2)<<2, G_TX_RENDERTILE, 0, 0, 1024, 1024); + } + + + + func_8007672C(this->state.gfxCtx, 0, 0, 0, (s16)this->coverAlpha, 2); + + sTitleRotY += 300; + + func_800C6B54(&gfxArr, this->state.gfxCtx, "../z_title.c", 483); +} + +void Title_Update(TitleContext* this) +{ + GraphicsContext* gfxCtx = this->state.gfxCtx; + u32 pad; + Gfx* gfxArr[4]; + u32 pad2; + Gfx* gfx[2]; + + func_800C6AC4(&gfxArr, this->state.gfxCtx, "../z_title.c", 494); + + gSPSegment(gfxCtx->polyOpa.p++, 0, NULL); + gSPSegment(gfxCtx->polyOpa.p++, 1, this->staticSegment); + func_80095248(this->state.gfxCtx, 0, 0, 0); + Title_Calc(this); + Title_Draw(this); + if (D_8012DBC0) + { + gfx[0] = gfxCtx->polyOpa.p; + Title_PrintBuildInfo(&gfx); + gfxCtx->polyOpa.p = gfx[0]; + } + if (this->exit) + { + gSaveContext.seq_index = -1; + gSaveContext.night_sfx = -1; + gSaveContext.game_mode = 1; + this->state.running = false; + this->state.init = Opening_Init; this->state.size = sizeof(OpeningContext); + } + + func_800C6B54(&gfxArr, this->state.gfxCtx, "../z_title.c", 541); +} + +void Title_Destroy(TitleContext* this) +{ + func_800A9AD0(this, &this->sram); +} + +void Title_Init(TitleContext* this) +{ + u32 size = (u32)_nintendo_rogo_staticSegmentRomEnd - (u32)_nintendo_rogo_staticSegmentRomStart; + u32 pad; + + this->staticSegment = Game_Alloc(&this->state, size, "../z_title.c", 611); + osSyncPrintf("z_title.c\n"); + if (this->staticSegment == NULL) + { + __assert("this->staticSegment != NULL", "../z_title.c", 614); + } + DmaMgr_SendRequest1(this->staticSegment, (u32)_nintendo_rogo_staticSegmentRomStart, size, "../z_title.c", 615); + R_UPDATE_RATE = 1; + Matrix_Init(&this->state); + func_800AA278(&this->view, this->state.gfxCtx); + this->state.main = Title_Update; + this->state.destroy = Title_Destroy; + this->exit = false; + gSaveContext.file_num = 0xFF; + func_800A9CD4(&this->state, &this->sram); + this->ult = 0; + this->unk_1D4 = 0x14; + this->coverAlpha = 0xFF; + this->addAlpha = -3; + this->visibleDuration = 0x3C; +} diff --git a/undefined_syms.txt b/undefined_syms.txt index 102b185600..38e746d44e 100644 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -275,6 +275,7 @@ D_01AA3DC0 = 0x01AA3DC0; D_01AA1000 = 0x01AA1000; D_01002720 = 0x01002720; D_01001800 = 0x01001800; +D_01000000 = 0x01000000; // z_shot_sun D_02007020 = 0x02007020;