From c30ebc31e74d478997673396acfc8dd7920a18ee Mon Sep 17 00:00:00 2001 From: Duncan Date: Fri, 5 Mar 2021 04:51:20 +0000 Subject: [PATCH] Matched config_gfx_pool and rendering_init (#17) * Match config_gfx_pool * Label function and remove non-matching asm * Match rendering_init * Remove warnings from previous work * Label offsets as per sm64 --- asm/code_8001F980.s | 4 +- asm/code_80091750.s | 92 ++++++++++----------- asm/code_802A3730.s | 20 ++--- asm/non_matchings/main/func_80000E00.s | 46 ----------- asm/non_matchings/main/func_80000EB4.s | 33 -------- asm/non_matchings/main/func_80000F34.s | 8 +- asm/non_matchings/main/thread5_game_logic.s | 4 +- data/data_0DD0A0.s | 4 +- src/main.c | 67 +++++++-------- src/main.h | 2 +- undefined_syms.txt | 2 +- 11 files changed, 96 insertions(+), 186 deletions(-) delete mode 100644 asm/non_matchings/main/func_80000E00.s delete mode 100644 asm/non_matchings/main/func_80000EB4.s diff --git a/asm/code_8001F980.s b/asm/code_8001F980.s index 8f21d7ca0..5a36bc65c 100644 --- a/asm/code_8001F980.s +++ b/asm/code_8001F980.s @@ -642,8 +642,8 @@ glabel func_80020000 /* 020EC8 800202C8 8FA80038 */ lw $t0, 0x38($sp) /* 020ECC 800202CC 3C18800E */ lui $t8, %hi(D_800DDB50) /* 020ED0 800202D0 0312C021 */ addu $t8, $t8, $s2 -/* 020ED4 800202D4 3C0E800E */ lui $t6, %hi(D_800DC560) # $t6, 0x800e -/* 020ED8 800202D8 95CEC560 */ lhu $t6, %lo(D_800DC560)($t6) +/* 020ED4 800202D4 3C0E800E */ lui $t6, %hi(gFrameBufferIndex) # $t6, 0x800e +/* 020ED8 800202D8 95CEC560 */ lhu $t6, %lo(gFrameBufferIndex)($t6) /* 020EDC 800202DC 8318DB50 */ lb $t8, %lo(D_800DDB50)($t8) /* 020EE0 800202E0 00121840 */ sll $v1, $s2, 1 /* 020EE4 800202E4 00107900 */ sll $t7, $s0, 4 diff --git a/asm/code_80091750.s b/asm/code_80091750.s index 0ed05f510..9c1350d39 100644 --- a/asm/code_80091750.s +++ b/asm/code_80091750.s @@ -762,8 +762,8 @@ glabel func_800921C0 /* 092DCC 800921CC 0C02D148 */ jal func_800B4520 /* 092DD0 800921D0 00000000 */ nop /* 092DD4 800921D4 10400009 */ beqz $v0, .L800921FC -/* 092DD8 800921D8 3C04800E */ lui $a0, %hi(D_800DC54C) # $a0, 0x800e -/* 092DDC 800921DC 8C84C54C */ lw $a0, %lo(D_800DC54C)($a0) +/* 092DD8 800921D8 3C04800E */ lui $a0, %hi(gGlobalTimer) # $a0, 0x800e +/* 092DDC 800921DC 8C84C54C */ lw $a0, %lo(gGlobalTimer)($a0) /* 092DE0 800921E0 24010003 */ li $at, 3 /* 092DE4 800921E4 0081001A */ div $zero, $a0, $at /* 092DE8 800921E8 00002010 */ mfhi $a0 @@ -836,8 +836,8 @@ glabel func_80092290 /* 092EC4 800922C4 AFB00018 */ sw $s0, 0x18($sp) /* 092EC8 800922C8 28810006 */ slti $at, $a0, 6 /* 092ECC 800922CC 10200080 */ beqz $at, .L800924D0 -/* 092ED0 800922D0 3C0F800E */ lui $t7, %hi(D_800DC54C) # $t7, 0x800e -/* 092ED4 800922D4 8DEFC54C */ lw $t7, %lo(D_800DC54C)($t7) +/* 092ED0 800922D0 3C0F800E */ lui $t7, %hi(gGlobalTimer) # $t7, 0x800e +/* 092ED4 800922D4 8DEFC54C */ lw $t7, %lo(gGlobalTimer)($t7) /* 092ED8 800922D8 00047080 */ sll $t6, $a0, 2 /* 092EDC 800922DC 3C10800F */ lui $s0, %hi(D_800E84C0) # $s0, 0x800f /* 092EE0 800922E0 05E10004 */ bgez $t7, .L800922F4 @@ -4700,14 +4700,14 @@ glabel func_800959F8 /* 0965F8 800959F8 3C028019 */ lui $v0, %hi(D_80190004) # $v0, 0x8019 /* 0965FC 800959FC 8042E860 */ lb $v0, %lo(D_8018E860)($v0) /* 096600 80095A00 3C190200 */ lui $t9, %hi(D_02007BB8) # $t9, 0x200 -/* 096604 80095A04 3C0F800E */ lui $t7, %hi(D_800DC54C) # $t7, 0x800e +/* 096604 80095A04 3C0F800E */ lui $t7, %hi(gGlobalTimer) # $t7, 0x800e /* 096608 80095A08 28410004 */ slti $at, $v0, 4 /* 09660C 80095A0C 10200003 */ beqz $at, .L80095A1C /* 096610 80095A10 27397BB8 */ addiu $t9, %lo(D_02007BB8) # addiu $t9, $t9, 0x7bb8 /* 096614 80095A14 1000000A */ b .L80095A40 /* 096618 80095A18 00401825 */ move $v1, $v0 .L80095A1C: -/* 09661C 80095A1C 8DEFC54C */ lw $t7, %lo(D_800DC54C)($t7) +/* 09661C 80095A1C 8DEFC54C */ lw $t7, %lo(gGlobalTimer)($t7) /* 096620 80095A20 00027040 */ sll $t6, $v0, 1 /* 096624 80095A24 05E10004 */ bgez $t7, .L80095A38 /* 096628 80095A28 31F80001 */ andi $t8, $t7, 1 @@ -6435,8 +6435,8 @@ glabel func_80097274 /* 097EF0 800972F0 02005025 */ move $t2, $s0 /* 097EF4 800972F4 3C0EFA00 */ lui $t6, 0xfa00 /* 097EF8 800972F8 AD4E0000 */ sw $t6, ($t2) -/* 097EFC 800972FC 3C0F800E */ lui $t7, %hi(D_800DC54C) # $t7, 0x800e -/* 097F00 80097300 8DEFC54C */ lw $t7, %lo(D_800DC54C)($t7) +/* 097EFC 800972FC 3C0F800E */ lui $t7, %hi(gGlobalTimer) # $t7, 0x800e +/* 097F00 80097300 8DEFC54C */ lw $t7, %lo(gGlobalTimer)($t7) /* 097F04 80097304 26100008 */ addiu $s0, $s0, 8 /* 097F08 80097308 02006825 */ move $t5, $s0 /* 097F0C 8009730C 3C0EFC25 */ lui $t6, (0xFC2527FF >> 16) # lui $t6, 0xfc25 @@ -15753,8 +15753,8 @@ glabel L8009F874 /* 0A04B0 8009F8B0 10000404 */ b .L800A08C4 /* 0A04B4 8009F8B4 AE020000 */ sw $v0, ($s0) glabel L8009F8B8 -/* 0A04B8 8009F8B8 3C18800E */ lui $t8, %hi(D_800DC54C) # $t8, 0x800e -/* 0A04BC 8009F8BC 8F18C54C */ lw $t8, %lo(D_800DC54C)($t8) +/* 0A04B8 8009F8B8 3C18800E */ lui $t8, %hi(gGlobalTimer) # $t8, 0x800e +/* 0A04BC 8009F8BC 8F18C54C */ lw $t8, %lo(gGlobalTimer)($t8) /* 0A04C0 8009F8C0 3C050200 */ lui $a1, %hi(D_02004610) # $a1, 0x200 /* 0A04C4 8009F8C4 24A54610 */ addiu $a1, %lo(D_02004610) # addiu $a1, $a1, 0x4610 /* 0A04C8 8009F8C8 07010003 */ bgez $t8, .L8009F8D8 @@ -15827,8 +15827,8 @@ glabel L8009F904 /* 0A05C8 8009F9C8 28611EAA */ slti $at, $v1, 0x1eaa /* 0A05CC 8009F9CC 1020000C */ beqz $at, .L8009FA00 /* 0A05D0 8009F9D0 00608825 */ move $s1, $v1 -/* 0A05D4 8009F9D4 3C04800E */ lui $a0, %hi(D_800DC54C) # $a0, 0x800e -/* 0A05D8 8009F9D8 8C84C54C */ lw $a0, %lo(D_800DC54C)($a0) +/* 0A05D4 8009F9D4 3C04800E */ lui $a0, %hi(gGlobalTimer) # $a0, 0x800e +/* 0A05D8 8009F9D8 8C84C54C */ lw $a0, %lo(gGlobalTimer)($a0) /* 0A05DC 8009F9DC 04810004 */ bgez $a0, .L8009F9F0 /* 0A05E0 8009F9E0 30980001 */ andi $t8, $a0, 1 /* 0A05E4 8009F9E4 13000002 */ beqz $t8, .L8009F9F0 @@ -15842,8 +15842,8 @@ glabel L8009F904 .L8009FA00: /* 0A0600 8009FA00 28612329 */ slti $at, $v1, 0x2329 /* 0A0604 8009FA04 10200009 */ beqz $at, .L8009FA2C -/* 0A0608 8009FA08 3C04800E */ lui $a0, %hi(D_800DC54C) # $a0, 0x800e -/* 0A060C 8009FA0C 8C84C54C */ lw $a0, %lo(D_800DC54C)($a0) +/* 0A0608 8009FA08 3C04800E */ lui $a0, %hi(gGlobalTimer) # $a0, 0x800e +/* 0A060C 8009FA0C 8C84C54C */ lw $a0, %lo(gGlobalTimer)($a0) /* 0A0610 8009FA10 24010003 */ li $at, 3 /* 0A0614 8009FA14 0081001A */ div $zero, $a0, $at /* 0A0618 8009FA18 00002010 */ mfhi $a0 @@ -16327,13 +16327,13 @@ glabel L800A00FC /* 0A0D14 800A0114 530001EC */ beql $t8, $zero, .L800A08C8 /* 0A0D18 800A0118 8FBF0034 */ lw $ra, 0x34($sp) /* 0A0D1C 800A011C 8339EDE8 */ lb $t9, %lo(D_8018EDE8)($t9) # -0x1218($t9) -/* 0A0D20 800A0120 3C06800E */ lui $a2, %hi(D_800DC54C) # $a2, 0x800e +/* 0A0D20 800A0120 3C06800E */ lui $a2, %hi(gGlobalTimer) # $a2, 0x800e /* 0A0D24 800A0124 17200003 */ bnez $t9, .L800A0134 /* 0A0D28 800A0128 00000000 */ nop /* 0A0D2C 800A012C 10000011 */ b .L800A0174 /* 0A0D30 800A0130 240600FF */ li $a2, 255 .L800A0134: -/* 0A0D34 800A0134 8CC6C54C */ lw $a2, %lo(D_800DC54C)($a2) +/* 0A0D34 800A0134 8CC6C54C */ lw $a2, %lo(gGlobalTimer)($a2) /* 0A0D38 800A0138 04C10004 */ bgez $a2, .L800A014C /* 0A0D3C 800A013C 30C9000F */ andi $t1, $a2, 0xf /* 0A0D40 800A0140 11200002 */ beqz $t1, .L800A014C @@ -18793,9 +18793,9 @@ glabel L800A23DC /* 0A3074 800A2474 258C7918 */ addiu $t4, %lo(D_800E7918) # addiu $t4, $t4, 0x7918 /* 0A3078 800A2478 25AE002A */ addiu $t6, $t5, 0x2a /* 0A307C 800A247C 240B005C */ li $t3, 92 -/* 0A3080 800A2480 3C17800E */ lui $s7, %hi(D_800DC54C) # $s7, 0x800e +/* 0A3080 800A2480 3C17800E */ lui $s7, %hi(gGlobalTimer) # $s7, 0x800e /* 0A3084 800A2484 4481A000 */ mtc1 $at, $f20 -/* 0A3088 800A2488 26F7C54C */ addiu $s7, %lo(D_800DC54C) # addiu $s7, $s7, -0x3ab4 +/* 0A3088 800A2488 26F7C54C */ addiu $s7, %lo(gGlobalTimer) # addiu $s7, $s7, -0x3ab4 /* 0A308C 800A248C AFAB0088 */ sw $t3, 0x88($sp) /* 0A3090 800A2490 AFAE0078 */ sw $t6, 0x78($sp) /* 0A3094 800A2494 AFAC0084 */ sw $t4, 0x84($sp) @@ -18975,9 +18975,9 @@ glabel L800A26A8 /* 0A330C 800A270C 3C09800E */ lui $t1, %hi(D_800E7918) # $t1, 0x800e /* 0A3310 800A2710 25297918 */ addiu $t1, %lo(D_800E7918) # addiu $t1, $t1, 0x7918 /* 0A3314 800A2714 240A005C */ li $t2, 92 -/* 0A3318 800A2718 3C17800E */ lui $s7, %hi(D_800DC54C) # $s7, 0x800e +/* 0A3318 800A2718 3C17800E */ lui $s7, %hi(gGlobalTimer) # $s7, 0x800e /* 0A331C 800A271C 4481A000 */ mtc1 $at, $f20 -/* 0A3320 800A2720 26F7C54C */ addiu $s7, %lo(D_800DC54C) # addiu $s7, $s7, -0x3ab4 +/* 0A3320 800A2720 26F7C54C */ addiu $s7, %lo(gGlobalTimer) # addiu $s7, $s7, -0x3ab4 /* 0A3324 800A2724 AFAA0088 */ sw $t2, 0x88($sp) /* 0A3328 800A2728 AFA90084 */ sw $t1, 0x84($sp) /* 0A332C 800A272C 24160020 */ li $s6, 32 @@ -19199,11 +19199,11 @@ glabel L800A29D0 /* 0A363C 800A2A3C 3C0A800E */ lui $t2, %hi(D_800E7918) # $t2, 0x800e /* 0A3640 800A2A40 254A7918 */ addiu $t2, %lo(D_800E7918) # addiu $t2, $t2, 0x7918 /* 0A3644 800A2A44 2408005C */ li $t0, 92 -/* 0A3648 800A2A48 3C17800E */ lui $s7, %hi(D_800DC54C) # $s7, 0x800e +/* 0A3648 800A2A48 3C17800E */ lui $s7, %hi(gGlobalTimer) # $s7, 0x800e /* 0A364C 800A2A4C 3C15800E */ lui $s5, %hi(D_800E7938) # $s5, 0x800e /* 0A3650 800A2A50 4481A000 */ mtc1 $at, $f20 /* 0A3654 800A2A54 26B57938 */ addiu $s5, %lo(D_800E7938) # addiu $s5, $s5, 0x7938 -/* 0A3658 800A2A58 26F7C54C */ addiu $s7, %lo(D_800DC54C) # addiu $s7, $s7, -0x3ab4 +/* 0A3658 800A2A58 26F7C54C */ addiu $s7, %lo(gGlobalTimer) # addiu $s7, $s7, -0x3ab4 /* 0A365C 800A2A5C AFA80088 */ sw $t0, 0x88($sp) /* 0A3660 800A2A60 AFAA0084 */ sw $t2, 0x84($sp) /* 0A3664 800A2A64 24160020 */ li $s6, 32 @@ -19594,8 +19594,8 @@ glabel func_800A2EB8 /* 0A3BDC 800A2FDC 24A50028 */ addiu $a1, $a1, 0x28 /* 0A3BE0 800A2FE0 3C108016 */ lui $s0, %hi(D_80164360) # $s0, 0x8016 /* 0A3BE4 800A2FE4 3C178019 */ lui $s7, %hi(D_8018EDF3) # $s7, 0x8019 -/* 0A3BE8 800A2FE8 3C15800E */ lui $s5, %hi(D_800DC54C) # $s5, 0x800e -/* 0A3BEC 800A2FEC 26B5C54C */ addiu $s5, %lo(D_800DC54C) # addiu $s5, $s5, -0x3ab4 +/* 0A3BE8 800A2FE8 3C15800E */ lui $s5, %hi(gGlobalTimer) # $s5, 0x800e +/* 0A3BEC 800A2FEC 26B5C54C */ addiu $s5, %lo(gGlobalTimer) # addiu $s5, $s5, -0x3ab4 /* 0A3BF0 800A2FF0 26F7EDF3 */ addiu $s7, %lo(D_8018EDF3) # addiu $s7, $s7, -0x120d /* 0A3BF4 800A2FF4 26104360 */ addiu $s0, %lo(D_80164360) # addiu $s0, $s0, 0x4360 /* 0A3BF8 800A2FF8 00009025 */ move $s2, $zero @@ -20018,10 +20018,10 @@ glabel func_800A34A8 /* 0A4240 800A3640 24840061 */ addiu $a0, $a0, 0x61 /* 0A4244 800A3644 0C024CC9 */ jal func_80093324 /* 0A4248 800A3648 01EE2823 */ subu $a1, $t7, $t6 -/* 0A424C 800A364C 3C17800E */ lui $s7, %hi(D_800DC54C) # $s7, 0x800e +/* 0A424C 800A364C 3C17800E */ lui $s7, %hi(gGlobalTimer) # $s7, 0x800e /* 0A4250 800A3650 3C168016 */ lui $s6, %hi(D_80164360) # $s6, 0x8016 /* 0A4254 800A3654 26D64360 */ addiu $s6, %lo(D_80164360) # addiu $s6, $s6, 0x4360 -/* 0A4258 800A3658 26F7C54C */ addiu $s7, %lo(D_800DC54C) # addiu $s7, $s7, -0x3ab4 +/* 0A4258 800A3658 26F7C54C */ addiu $s7, %lo(gGlobalTimer) # addiu $s7, $s7, -0x3ab4 /* 0A425C 800A365C 00008825 */ move $s1, $zero /* 0A4260 800A3660 241E0003 */ li $fp, 3 /* 0A4264 800A3664 24150009 */ li $s5, 9 @@ -21110,8 +21110,8 @@ glabel func_800A4550 /* 0A5208 800A4608 00695004 */ sllv $t2, $t1, $v1 /* 0A520C 800A460C 010A5824 */ and $t3, $t0, $t2 /* 0A5210 800A4610 11600007 */ beqz $t3, .L800A4630 -/* 0A5214 800A4614 3C04800E */ lui $a0, %hi(D_800DC54C) # $a0, 0x800e -/* 0A5218 800A4618 8C84C54C */ lw $a0, %lo(D_800DC54C)($a0) +/* 0A5214 800A4614 3C04800E */ lui $a0, %hi(gGlobalTimer) # $a0, 0x800e +/* 0A5218 800A4618 8C84C54C */ lw $a0, %lo(gGlobalTimer)($a0) /* 0A521C 800A461C 24010003 */ li $at, 3 /* 0A5220 800A4620 0081001A */ div $zero, $a0, $at /* 0A5224 800A4624 00002010 */ mfhi $a0 @@ -21125,8 +21125,8 @@ glabel func_800A4550 /* 0A523C 800A463C 24040003 */ li $a0, 3 /* 0A5240 800A4640 05A00008 */ bltz $t5, .L800A4664 /* 0A5244 800A4644 00000000 */ nop -/* 0A5248 800A4648 3C04800E */ lui $a0, %hi(D_800DC54C) # $a0, 0x800e -/* 0A524C 800A464C 8C84C54C */ lw $a0, %lo(D_800DC54C)($a0) +/* 0A5248 800A4648 3C04800E */ lui $a0, %hi(gGlobalTimer) # $a0, 0x800e +/* 0A524C 800A464C 8C84C54C */ lw $a0, %lo(gGlobalTimer)($a0) /* 0A5250 800A4650 24010003 */ li $at, 3 /* 0A5254 800A4654 0081001A */ div $zero, $a0, $at /* 0A5258 800A4658 00002010 */ mfhi $a0 @@ -21270,11 +21270,11 @@ glabel func_800A474C /* 0A5454 800A4854 50200010 */ beql $at, $zero, .L800A4898 /* 0A5458 800A4858 8C590020 */ lw $t9, 0x20($v0) /* 0A545C 800A485C 8C4D001C */ lw $t5, 0x1c($v0) -/* 0A5460 800A4860 3C0E800E */ lui $t6, %hi(D_800DC54C) # $t6, 0x800e +/* 0A5460 800A4860 3C0E800E */ lui $t6, %hi(gGlobalTimer) # $t6, 0x800e /* 0A5464 800A4864 24020003 */ li $v0, 3 /* 0A5468 800A4868 158D0008 */ bne $t4, $t5, .L800A488C /* 0A546C 800A486C 00000000 */ nop -/* 0A5470 800A4870 8DCEC54C */ lw $t6, %lo(D_800DC54C)($t6) +/* 0A5470 800A4870 8DCEC54C */ lw $t6, %lo(gGlobalTimer)($t6) /* 0A5474 800A4874 24010003 */ li $at, 3 /* 0A5478 800A4878 01C1001A */ div $zero, $t6, $at /* 0A547C 800A487C 00007810 */ mfhi $t7 @@ -21289,8 +21289,8 @@ glabel func_800A474C /* 0A5498 800A4898 24020003 */ li $v0, 3 /* 0A549C 800A489C 13200009 */ beqz $t9, .L800A48C4 /* 0A54A0 800A48A0 00000000 */ nop -/* 0A54A4 800A48A4 3C02800E */ lui $v0, %hi(D_800DC54C) # $v0, 0x800e -/* 0A54A8 800A48A8 8C42C54C */ lw $v0, %lo(D_800DC54C)($v0) +/* 0A54A4 800A48A4 3C02800E */ lui $v0, %hi(gGlobalTimer) # $v0, 0x800e +/* 0A54A8 800A48A8 8C42C54C */ lw $v0, %lo(gGlobalTimer)($v0) /* 0A54AC 800A48AC 24010003 */ li $at, 3 /* 0A54B0 800A48B0 0041001A */ div $zero, $v0, $at /* 0A54B4 800A48B4 0000C010 */ mfhi $t8 @@ -22283,11 +22283,11 @@ glabel func_800A5738 /* 0A6360 800A5760 14600037 */ bnez $v1, .L800A5840 /* 0A6364 800A5764 3C108015 */ lui $s0, %hi(gDisplayListHead) # 0x8015 /* 0A6368 800A5768 8C8E001C */ lw $t6, 0x1c($a0) -/* 0A636C 800A576C 3C0F800E */ lui $t7, %hi(D_800DC54C) # $t7, 0x800e +/* 0A636C 800A576C 3C0F800E */ lui $t7, %hi(gGlobalTimer) # $t7, 0x800e /* 0A6370 800A5770 29C1001E */ slti $at, $t6, 0x1e /* 0A6374 800A5774 54200228 */ bnel $at, $zero, .L800A6018 /* 0A6378 800A5778 8FBF0044 */ lw $ra, 0x44($sp) -/* 0A637C 800A577C 8DEFC54C */ lw $t7, %lo(D_800DC54C)($t7) +/* 0A637C 800A577C 8DEFC54C */ lw $t7, %lo(gGlobalTimer)($t7) /* 0A6380 800A5780 3C11800E */ lui $s1, %hi(D_800E775C) # $s1, 0x800e /* 0A6384 800A5784 2631775C */ addiu $s1, %lo(D_800E775C) # addiu $s1, $s1, 0x775c /* 0A6388 800A5788 05E10003 */ bgez $t7, .L800A5798 @@ -23602,8 +23602,8 @@ glabel func_800A69C8 /* 0A76D0 800A6AD0 10000011 */ b .L800A6B18 /* 0A76D4 800A6AD4 92840000 */ lbu $a0, ($s4) .L800A6AD8: -/* 0A76D8 800A6AD8 3C0B800E */ lui $t3, %hi(D_800DC54C) # $t3, 0x800e -/* 0A76DC 800A6ADC 8D6BC54C */ lw $t3, %lo(D_800DC54C)($t3) +/* 0A76D8 800A6AD8 3C0B800E */ lui $t3, %hi(gGlobalTimer) # $t3, 0x800e +/* 0A76DC 800A6ADC 8D6BC54C */ lw $t3, %lo(gGlobalTimer)($t3) /* 0A76E0 800A6AE0 0175001A */ div $zero, $t3, $s5 /* 0A76E4 800A6AE4 00002010 */ mfhi $a0 /* 0A76E8 800A6AE8 16A00002 */ bnez $s5, .L800A6AF4 @@ -23881,8 +23881,8 @@ glabel func_800A6E94 /* 0A7ABC 800A6EBC AFA60058 */ sw $a2, 0x58($sp) /* 0A7AC0 800A6EC0 1700000A */ bnez $t8, .L800A6EEC /* 0A7AC4 800A6EC4 AFB8003C */ sw $t8, 0x3c($sp) -/* 0A7AC8 800A6EC8 3C04800E */ lui $a0, %hi(D_800DC54C) # $a0, 0x800e -/* 0A7ACC 800A6ECC 8C84C54C */ lw $a0, %lo(D_800DC54C)($a0) +/* 0A7AC8 800A6EC8 3C04800E */ lui $a0, %hi(gGlobalTimer) # $a0, 0x800e +/* 0A7ACC 800A6ECC 8C84C54C */ lw $a0, %lo(gGlobalTimer)($a0) /* 0A7AD0 800A6ED0 24010003 */ li $at, 3 /* 0A7AD4 800A6ED4 0081001A */ div $zero, $a0, $at /* 0A7AD8 800A6ED8 00002010 */ mfhi $a0 @@ -23938,8 +23938,8 @@ glabel func_800A6E94 /* 0A7B98 800A6F98 00002025 */ move $a0, $zero /* 0A7B9C 800A6F9C 1449000B */ bne $v0, $t1, .L800A6FCC /* 0A7BA0 800A6FA0 00000000 */ nop -/* 0A7BA4 800A6FA4 3C04800E */ lui $a0, %hi(D_800DC54C) # $a0, 0x800e -/* 0A7BA8 800A6FA8 8C84C54C */ lw $a0, %lo(D_800DC54C)($a0) +/* 0A7BA4 800A6FA4 3C04800E */ lui $a0, %hi(gGlobalTimer) # $a0, 0x800e +/* 0A7BA8 800A6FA8 8C84C54C */ lw $a0, %lo(gGlobalTimer)($a0) /* 0A7BAC 800A6FAC 24010003 */ li $at, 3 /* 0A7BB0 800A6FB0 AFA20038 */ sw $v0, 0x38($sp) /* 0A7BB4 800A6FB4 0081001A */ div $zero, $a0, $at @@ -23979,11 +23979,11 @@ glabel func_800A6E94 /* 0A7C34 800A7034 24A50069 */ addiu $a1, $a1, 0x69 /* 0A7C38 800A7038 8FA20038 */ lw $v0, 0x38($sp) /* 0A7C3C 800A703C 8FAC003C */ lw $t4, 0x3c($sp) -/* 0A7C40 800A7040 3C04800E */ lui $a0, %hi(D_800DC54C) # $a0, 0x800e +/* 0A7C40 800A7040 3C04800E */ lui $a0, %hi(gGlobalTimer) # $a0, 0x800e /* 0A7C44 800A7044 24420001 */ addiu $v0, $v0, 1 /* 0A7C48 800A7048 144C0009 */ bne $v0, $t4, .L800A7070 /* 0A7C4C 800A704C 00000000 */ nop -/* 0A7C50 800A7050 8C84C54C */ lw $a0, %lo(D_800DC54C)($a0) +/* 0A7C50 800A7050 8C84C54C */ lw $a0, %lo(gGlobalTimer)($a0) /* 0A7C54 800A7054 24010003 */ li $at, 3 /* 0A7C58 800A7058 0081001A */ div $zero, $a0, $at /* 0A7C5C 800A705C 00002010 */ mfhi $a0 @@ -24435,8 +24435,8 @@ glabel func_800A761C /* 0A82F0 800A76F0 00003825 */ move $a3, $zero /* 0A82F4 800A76F4 0C024DBB */ jal draw_text /* 0A82F8 800A76F8 01AE2023 */ subu $a0, $t5, $t6 -/* 0A82FC 800A76FC 3C04800E */ lui $a0, %hi(D_800DC54C) # $a0, 0x800e -/* 0A8300 800A7700 8C84C54C */ lw $a0, %lo(D_800DC54C)($a0) +/* 0A82FC 800A76FC 3C04800E */ lui $a0, %hi(gGlobalTimer) # $a0, 0x800e +/* 0A8300 800A7700 8C84C54C */ lw $a0, %lo(gGlobalTimer)($a0) /* 0A8304 800A7704 24010003 */ li $at, 3 /* 0A8308 800A7708 0081001A */ div $zero, $a0, $at /* 0A830C 800A770C 00002010 */ mfhi $a0 diff --git a/asm/code_802A3730.s b/asm/code_802A3730.s index c5ad850d9..f05a7ecdf 100644 --- a/asm/code_802A3730.s +++ b/asm/code_802A3730.s @@ -358,11 +358,11 @@ glabel func_802A39E0 /* 10D238 802A3C28 AC590000 */ sw $t9, ($v0) /* 10D23C 802A3C2C 8C620000 */ lw $v0, ($v1) /* 10D240 802A3C30 3718013F */ ori $t8, (0xFF10013F & 0xFFFF) # ori $t8, $t8, 0x13f -/* 10D244 802A3C34 3C0F800E */ lui $t7, %hi(D_800DC560) # $t7, 0x800e +/* 10D244 802A3C34 3C0F800E */ lui $t7, %hi(gFrameBufferIndex) # $t7, 0x800e /* 10D248 802A3C38 244E0008 */ addiu $t6, $v0, 8 /* 10D24C 802A3C3C AC6E0000 */ sw $t6, ($v1) /* 10D250 802A3C40 AC580000 */ sw $t8, ($v0) -/* 10D254 802A3C44 95EFC560 */ lhu $t7, %lo(D_800DC560)($t7) +/* 10D254 802A3C44 95EFC560 */ lhu $t7, %lo(gFrameBufferIndex)($t7) /* 10D258 802A3C48 3C0E8015 */ lui $t6, %hi(D_801502A8) /* 10D25C 802A3C4C 3C011FFF */ lui $at, (0x1FFFFFFF >> 16) # lui $at, 0x1fff /* 10D260 802A3C50 000FC880 */ sll $t9, $t7, 2 @@ -464,11 +464,11 @@ glabel func_802A3CB0 /* 10D3D8 802A3DC8 AC580000 */ sw $t8, ($v0) /* 10D3DC 802A3DCC 8C620000 */ lw $v0, ($v1) /* 10D3E0 802A3DD0 35CE013F */ ori $t6, (0xFF10013F & 0xFFFF) # ori $t6, $t6, 0x13f -/* 10D3E4 802A3DD4 3C0F800E */ lui $t7, %hi(D_800DC560) # $t7, 0x800e +/* 10D3E4 802A3DD4 3C0F800E */ lui $t7, %hi(gFrameBufferIndex) # $t7, 0x800e /* 10D3E8 802A3DD8 24590008 */ addiu $t9, $v0, 8 /* 10D3EC 802A3DDC AC790000 */ sw $t9, ($v1) /* 10D3F0 802A3DE0 AC4E0000 */ sw $t6, ($v0) -/* 10D3F4 802A3DE4 95EFC560 */ lhu $t7, %lo(D_800DC560)($t7) +/* 10D3F4 802A3DE4 95EFC560 */ lhu $t7, %lo(gFrameBufferIndex)($t7) /* 10D3F8 802A3DE8 3C198015 */ lui $t9, %hi(D_801502A8) # 0x8015 /* 10D3FC 802A3DEC 000FC080 */ sll $t8, $t7, 2 /* 10D400 802A3DF0 0338C821 */ addu $t9, $t9, $t8 @@ -742,9 +742,9 @@ glabel func_802A41D4 /* 10D7F4 802A41E4 35EF013F */ ori $t7, (0xFF10013F & 0xFFFF) # ori $t7, $t7, 0x13f /* 10D7F8 802A41E8 244E0008 */ addiu $t6, $v0, 8 /* 10D7FC 802A41EC AC6E0000 */ sw $t6, ($v1) -/* 10D800 802A41F0 3C18800E */ lui $t8, %hi(D_800DC560) # $t8, 0x800e +/* 10D800 802A41F0 3C18800E */ lui $t8, %hi(gFrameBufferIndex) # $t8, 0x800e /* 10D804 802A41F4 AC4F0000 */ sw $t7, ($v0) -/* 10D808 802A41F8 9718C560 */ lhu $t8, %lo(D_800DC560)($t8) +/* 10D808 802A41F8 9718C560 */ lhu $t8, %lo(gFrameBufferIndex)($t8) /* 10D80C 802A41FC 3C0D8015 */ lui $t5, %hi(D_801502A8) # 0x8015 /* 10D810 802A4200 3C011FFF */ lui $at, (0x1FFFFFFF >> 16) # lui $at, 0x1fff /* 10D814 802A4204 0018C880 */ sll $t9, $t8, 2 @@ -841,9 +841,9 @@ glabel func_802A4300 /* 10D978 802A4368 3739013F */ ori $t9, (0xFF10013F & 0xFFFF) # ori $t9, $t9, 0x13f /* 10D97C 802A436C 24580008 */ addiu $t8, $v0, 8 /* 10D980 802A4370 AC780000 */ sw $t8, ($v1) -/* 10D984 802A4374 3C0E800E */ lui $t6, %hi(D_800DC560) # $t6, 0x800e +/* 10D984 802A4374 3C0E800E */ lui $t6, %hi(gFrameBufferIndex) # $t6, 0x800e /* 10D988 802A4378 AC590000 */ sw $t9, ($v0) -/* 10D98C 802A437C 95CEC560 */ lhu $t6, %lo(D_800DC560)($t6) +/* 10D98C 802A437C 95CEC560 */ lhu $t6, %lo(gFrameBufferIndex)($t6) /* 10D990 802A4380 3C188015 */ lui $t8, %hi(D_801502A8) /* 10D994 802A4384 3C0C1FFF */ lui $t4, (0x1FFFFFFF >> 16) # lui $t4, 0x1fff /* 10D998 802A4388 000E7880 */ sll $t7, $t6, 2 @@ -2243,9 +2243,9 @@ glabel func_802A5760 /* 10EE30 802A5820 35CE013F */ ori $t6, (0xFF10013F & 0xFFFF) # ori $t6, $t6, 0x13f /* 10EE34 802A5824 24590008 */ addiu $t9, $v0, 8 /* 10EE38 802A5828 AC790000 */ sw $t9, ($v1) -/* 10EE3C 802A582C 3C0F800E */ lui $t7, %hi(D_800DC560) # $t7, 0x800e +/* 10EE3C 802A582C 3C0F800E */ lui $t7, %hi(gFrameBufferIndex) # $t7, 0x800e /* 10EE40 802A5830 AC4E0000 */ sw $t6, ($v0) -/* 10EE44 802A5834 95EFC560 */ lhu $t7, %lo(D_800DC560)($t7) +/* 10EE44 802A5834 95EFC560 */ lhu $t7, %lo(gFrameBufferIndex)($t7) /* 10EE48 802A5838 3C198015 */ lui $t9, %hi(D_801502A8) # 0x8015 /* 10EE4C 802A583C 3C011FFF */ lui $at, (0x1FFFFFFF >> 16) # lui $at, 0x1fff /* 10EE50 802A5840 000FC080 */ sll $t8, $t7, 2 diff --git a/asm/non_matchings/main/func_80000E00.s b/asm/non_matchings/main/func_80000E00.s deleted file mode 100644 index 244af0f14..000000000 --- a/asm/non_matchings/main/func_80000E00.s +++ /dev/null @@ -1,46 +0,0 @@ -glabel func_80000E00 -/* 001A00 80000E00 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 001A04 80000E04 3C028015 */ lui $v0, %hi(gGfxPool) # $v0, 0x8015 -/* 001A08 80000E08 3C0E8010 */ lui $t6, %hi(D_800FD860) # 0x8010 -/* 001A0C 80000E0C 2442EF40 */ addiu $v0, %lo(gGfxPool) # addiu $v0, $v0, -0x10c0 -/* 001A10 80000E10 AFBF0014 */ sw $ra, 0x14($sp) -/* 001A14 80000E14 25C5D860 */ addiu $a1, $t6, %lo(D_800FD860) # -0x27a0 -/* 001A18 80000E18 AC450000 */ sw $a1, ($v0) -/* 001A1C 80000E1C 0C0A9EE5 */ jal set_segment_base_addr -/* 001A20 80000E20 24040001 */ li $a0, 1 -/* 001A24 80000E24 3C028015 */ lui $v0, %hi(gGfxPool) # $v0, 0x8015 -/* 001A28 80000E28 8C42EF40 */ lw $v0, %lo(gGfxPool)($v0) -/* 001A2C 80000E2C 3C010002 */ lui $at, (0x00028B20 >> 16) # lui $at, 2 -/* 001A30 80000E30 34218B20 */ ori $at, (0x00028B20 & 0xFFFF) # ori $at, $at, 0x8b20 -/* 001A34 80000E34 00417821 */ addu $t7, $v0, $at -/* 001A38 80000E38 3C018015 */ lui $at, %hi(gGfxSPTask) # $at, 0x8015 -/* 001A3C 80000E3C AC2F029C */ sw $t7, %lo(gGfxSPTask)($at) -/* 001A40 80000E40 3C010001 */ lui $at, (0x0001A0C0 >> 16) # lui $at, 1 -/* 001A44 80000E44 3421A0C0 */ ori $at, (0x0001A0C0 & 0xFFFF) # ori $at, $at, 0xa0c0 -/* 001A48 80000E48 0041C021 */ addu $t8, $v0, $at -/* 001A4C 80000E4C 3C018015 */ lui $at, %hi(gDisplayListHead) # $at, 0x8015 -/* 001A50 80000E50 0C00032A */ jal func_80000CA8 -/* 001A54 80000E54 AC380298 */ sw $t8, %lo(gDisplayListHead)($at) -/* 001A58 80000E58 0C00034F */ jal func_80000D3C -/* 001A5C 80000E5C 00002025 */ move $a0, $zero -/* 001A60 80000E60 0C00033A */ jal func_80000CE8 -/* 001A64 80000E64 00000000 */ nop -/* 001A68 80000E68 3C048015 */ lui $a0, %hi(gGfxPool) # $a0, 0x8015 -/* 001A6C 80000E6C 8C84EF40 */ lw $a0, %lo(gGfxPool)($a0) -/* 001A70 80000E70 3C010002 */ lui $at, (0x00028B20 >> 16) # lui $at, 2 -/* 001A74 80000E74 34218B20 */ ori $at, (0x00028B20 & 0xFFFF) # ori $at, $at, 0x8b20 -/* 001A78 80000E78 0C000310 */ jal send_display_list -/* 001A7C 80000E7C 00812021 */ addu $a0, $a0, $at -/* 001A80 80000E80 3C02800E */ lui $v0, %hi(D_800DC560) # $v0, 0x800e -/* 001A84 80000E84 3C03800E */ lui $v1, %hi(D_800DC54C) # $v1, 0x800e -/* 001A88 80000E88 2463C54C */ addiu $v1, %lo(D_800DC54C) # addiu $v1, $v1, -0x3ab4 -/* 001A8C 80000E8C 2442C560 */ addiu $v0, %lo(D_800DC560) # addiu $v0, $v0, -0x3aa0 -/* 001A90 80000E90 94590000 */ lhu $t9, ($v0) -/* 001A94 80000E94 8C690000 */ lw $t1, ($v1) -/* 001A98 80000E98 8FBF0014 */ lw $ra, 0x14($sp) -/* 001A9C 80000E9C 27280001 */ addiu $t0, $t9, 1 -/* 001AA0 80000EA0 252A0001 */ addiu $t2, $t1, 1 -/* 001AA4 80000EA4 A4480000 */ sh $t0, ($v0) -/* 001AA8 80000EA8 AC6A0000 */ sw $t2, ($v1) -/* 001AAC 80000EAC 03E00008 */ jr $ra -/* 001AB0 80000EB0 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/non_matchings/main/func_80000EB4.s b/asm/non_matchings/main/func_80000EB4.s deleted file mode 100644 index 8d9fd4b2e..000000000 --- a/asm/non_matchings/main/func_80000EB4.s +++ /dev/null @@ -1,33 +0,0 @@ -glabel func_80000EB4 -/* 001AB4 80000EB4 3C0E800E */ lui $t6, %hi(D_800DC54C) # $t6, 0x800e -/* 001AB8 80000EB8 8DCEC54C */ lw $t6, %lo(D_800DC54C)($t6) -/* 001ABC 80000EBC 3C010002 */ lui $at, (0x00028B70 >> 16) # lui $at, 2 -/* 001AC0 80000EC0 34218B70 */ ori $at, (0x00028B70 & 0xFFFF) # ori $at, $at, 0x8b70 -/* 001AC4 80000EC4 31CF0001 */ andi $t7, $t6, 1 -/* 001AC8 80000EC8 01E10019 */ multu $t7, $at -/* 001ACC 80000ECC 3C198010 */ lui $t9, %hi(D_800FD860) # $t9, 0x8010 -/* 001AD0 80000ED0 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 001AD4 80000ED4 3C028015 */ lui $v0, %hi(gGfxPool) # $v0, 0x8015 -/* 001AD8 80000ED8 2739D860 */ addiu $t9, %lo(D_800FD860) # addiu $t9, $t9, -0x27a0 -/* 001ADC 80000EDC 2442EF40 */ addiu $v0, %lo(gGfxPool) # addiu $v0, $v0, -0x10c0 -/* 001AE0 80000EE0 AFBF0014 */ sw $ra, 0x14($sp) -/* 001AE4 80000EE4 24040001 */ li $a0, 1 -/* 001AE8 80000EE8 0000C012 */ mflo $t8 -/* 001AEC 80000EEC 03192821 */ addu $a1, $t8, $t9 -/* 001AF0 80000EF0 0C0A9EE5 */ jal set_segment_base_addr -/* 001AF4 80000EF4 AC450000 */ sw $a1, ($v0) -/* 001AF8 80000EF8 3C028015 */ lui $v0, %hi(gGfxPool) # $v0, 0x8015 -/* 001AFC 80000EFC 8C42EF40 */ lw $v0, %lo(gGfxPool)($v0) -/* 001B00 80000F00 3C010001 */ lui $at, (0x0001A0C0 >> 16) # lui $at, 1 -/* 001B04 80000F04 3421A0C0 */ ori $at, (0x0001A0C0 & 0xFFFF) # ori $at, $at, 0xa0c0 -/* 001B08 80000F08 00414821 */ addu $t1, $v0, $at -/* 001B0C 80000F0C 3C018015 */ lui $at, %hi(gDisplayListHead) # $at, 0x8015 -/* 001B10 80000F10 AC290298 */ sw $t1, %lo(gDisplayListHead)($at) -/* 001B14 80000F14 3C010002 */ lui $at, (0x00028B20 >> 16) # lui $at, 2 -/* 001B18 80000F18 8FBF0014 */ lw $ra, 0x14($sp) -/* 001B1C 80000F1C 34218B20 */ ori $at, (0x00028B20 & 0xFFFF) # ori $at, $at, 0x8b20 -/* 001B20 80000F20 00415021 */ addu $t2, $v0, $at -/* 001B24 80000F24 3C018015 */ lui $at, %hi(gGfxSPTask) # $at, 0x8015 -/* 001B28 80000F28 AC2A029C */ sw $t2, %lo(gGfxSPTask)($at) -/* 001B2C 80000F2C 03E00008 */ jr $ra -/* 001B30 80000F30 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/non_matchings/main/func_80000F34.s b/asm/non_matchings/main/func_80000F34.s index d0d845983..f17239480 100644 --- a/asm/non_matchings/main/func_80000F34.s +++ b/asm/non_matchings/main/func_80000F34.s @@ -51,14 +51,14 @@ glabel func_80000F34 /* 001BF8 80000FF8 8C8402A8 */ lw $a0, %lo(D_801502A8)($a0) # 0x2a8($a0) /* 001BFC 80000FFC 96090000 */ lhu $t1, ($s0) /* 001C00 80001000 24030003 */ li $v1, 3 -/* 001C04 80001004 3C02800E */ lui $v0, %hi(D_800DC560) # $v0, 0x800e +/* 001C04 80001004 3C02800E */ lui $v0, %hi(gFrameBufferIndex) # $v0, 0x800e /* 001C08 80001008 252A0001 */ addiu $t2, $t1, 1 /* 001C0C 8000100C 314BFFFF */ andi $t3, $t2, 0xffff /* 001C10 80001010 146B0002 */ bne $v1, $t3, .L8000101C /* 001C14 80001014 A60A0000 */ sh $t2, ($s0) /* 001C18 80001018 A6000000 */ sh $zero, ($s0) .L8000101C: -/* 001C1C 8000101C 2442C560 */ addiu $v0, %lo(D_800DC560) # addiu $v0, $v0, -0x3aa0 +/* 001C1C 8000101C 2442C560 */ addiu $v0, %lo(gFrameBufferIndex) # addiu $v0, $v0, -0x3aa0 /* 001C20 80001020 944C0000 */ lhu $t4, ($v0) /* 001C24 80001024 258D0001 */ addiu $t5, $t4, 1 /* 001C28 80001028 31AEFFFF */ andi $t6, $t5, 0xffff @@ -66,8 +66,8 @@ glabel func_80000F34 /* 001C30 80001030 A44D0000 */ sh $t5, ($v0) /* 001C34 80001034 A4400000 */ sh $zero, ($v0) .L80001038: -/* 001C38 80001038 3C02800E */ lui $v0, %hi(D_800DC54C) # $v0, 0x800e -/* 001C3C 8000103C 2442C54C */ addiu $v0, %lo(D_800DC54C) # addiu $v0, $v0, -0x3ab4 +/* 001C38 80001038 3C02800E */ lui $v0, %hi(gGlobalTimer) # $v0, 0x800e +/* 001C3C 8000103C 2442C54C */ addiu $v0, %lo(gGlobalTimer) # addiu $v0, $v0, -0x3ab4 /* 001C40 80001040 8C4F0000 */ lw $t7, ($v0) /* 001C44 80001044 8FBF001C */ lw $ra, 0x1c($sp) /* 001C48 80001048 8FB00018 */ lw $s0, 0x18($sp) diff --git a/asm/non_matchings/main/thread5_game_logic.s b/asm/non_matchings/main/thread5_game_logic.s index 39d5f4d49..8c83868e8 100644 --- a/asm/non_matchings/main/thread5_game_logic.s +++ b/asm/non_matchings/main/thread5_game_logic.s @@ -50,7 +50,7 @@ glabel thread5_game_logic /* 003438 80002838 AC28F8C8 */ sw $t0, %lo(D_8015F8C8)($at) /* 00343C 8000283C 3C018016 */ lui $at, %hi(D_8015F8CC) # $at, 0x8016 /* 003440 80002840 2449001C */ addiu $t1, $v0, 0x1c -/* 003444 80002844 0C000380 */ jal func_80000E00 +/* 003444 80002844 0C000380 */ jal rendering_init /* 003448 80002848 AC29F8CC */ sw $t1, %lo(D_8015F8CC)($at) /* 00344C 8000284C 0C00028A */ jal read_controllers /* 003450 80002850 00000000 */ nop @@ -72,7 +72,7 @@ glabel thread5_game_logic .L8000288C: /* 00348C 8000288C 0C000D54 */ jal profiler_log_thread5_time /* 003490 80002890 00002025 */ move $a0, $zero -/* 003494 80002894 0C0003AD */ jal func_80000EB4 +/* 003494 80002894 0C0003AD */ jal config_gfx_pool /* 003498 80002898 00000000 */ nop /* 00349C 8000289C 0C00028A */ jal read_controllers /* 0034A0 800028A0 00000000 */ nop diff --git a/data/data_0DD0A0.s b/data/data_0DD0A0.s index 6e9958143..a6b374b12 100644 --- a/data/data_0DD0A0.s +++ b/data/data_0DD0A0.s @@ -122,13 +122,13 @@ glabel D_800DC544 glabel D_800DC548 .word 0x00000000 -glabel D_800DC54C +glabel gGlobalTimer .word 0x00000000, 0x00000000, 0x00000000, 0x00000000 glabel D_800DC55C .hword 0x0000, 0x0000 -glabel D_800DC560 +glabel gFrameBufferIndex .hword 0x0000, 0x0000, 0x0000, 0x0000 glabel D_800DC568 diff --git a/src/main.c b/src/main.c index 3e230b74b..f26acd62f 100644 --- a/src/main.c +++ b/src/main.c @@ -4,6 +4,7 @@ #include "config.h" #include "profiler.h" #include "main.h" +#include "memory.h" #include "segments.h" #include "segment_symbols.h" @@ -88,6 +89,11 @@ extern u32 D_802F9F80; extern struct SPTask* sNextDisplaySPTask; +extern u16 gFrameBufferIndex; + +extern struct GfxPool gGfxPools[2]; +extern s32 gGlobalTimer; + // Declarations (in this file) void thread1_idle(void *arg0); void thread3_video(void *arg0); @@ -186,7 +192,7 @@ void func_800006E8(void) { } void init_controllers(void) { - osCreateMesgQueue(&gSIEventMesgQueue, &gSIEventMesgBuf, ARRAY_COUNT(gSIEventMesgBuf)); + osCreateMesgQueue(&gSIEventMesgQueue, &gSIEventMesgBuf[0], ARRAY_COUNT(gSIEventMesgBuf)); osSetEventMesg(OS_EVENT_SI, &gSIEventMesgQueue, (OSMesg) 0x33333333); osContInit(&gSIEventMesgQueue, &gControllerBits, &gControllerStatuses); if ((gControllerBits & 1) == 0) { @@ -293,7 +299,7 @@ void send_display_list(struct SPTask *spTask) { if (sCurrentDisplaySPTask == NULL) { sCurrentDisplaySPTask = spTask; sNextDisplaySPTask = NULL; - osSendMesg(&gIntrMesgQueue, MESG_START_GFX_SPTASK, OS_MESG_NOBLOCK); + osSendMesg(&gIntrMesgQueue, (OSMesg) MESG_START_GFX_SPTASK, OS_MESG_NOBLOCK); } else{ sNextDisplaySPTask = spTask; @@ -336,42 +342,25 @@ void func_80000D3C(s32 arg0) { GLOBAL_ASM("asm/non_matchings/main/func_80000D3C.s") #endif -// likely rendering_init from SM64 -#ifdef MIPS_TO_C -// generated by mips_to_c commit cae1414eb1bf34873a831a523692fe29870a6f3b -void *func_80000E00(void) { - gGfxPool = 0x800FD860; - set_segment_base_addr(1, 0x800FD860); - gGfxSPTask = (s32) (gGfxPool + 0x28B20); - gDisplayListHead = (s32) (gGfxPool + 0x1A0C0); +void rendering_init(void) { + gGfxPool = &gGfxPools[0]; + set_segment_base_addr(1, gGfxPool->buffer); + gGfxSPTask = &gGfxPool->spTask; + gDisplayListHead = &gGfxPool->buffer[0x3418]; func_80000CA8(); func_80000D3C(0); func_80000CE8(); - send_display_list(gGfxPool + 0x28B20); - D_800DC560 = (u16) (D_800DC560 + 1); - D_800DC54C = (s32) (D_800DC54C + 1); - return &D_800DC560; + send_display_list(&gGfxPool->spTask); + gFrameBufferIndex++; + gGlobalTimer++; } -#else -GLOBAL_ASM("asm/non_matchings/main/func_80000E00.s") -#endif -// likely config_gfx_pool from SM64 -#ifdef MIPS_TO_C -// generated by mips_to_c commit cae1414eb1bf34873a831a523692fe29870a6f3b -s32 func_80000EB4(void) { - void *temp_a1; - - temp_a1 = ((D_800DC54C & 1) * 0x28B70) + &D_800FD860; - gGfxPool = temp_a1; - set_segment_base_addr(1, temp_a1); - gDisplayListHead = (s32) (gGfxPool + 0x1A0C0); - gGfxSPTask = (s32) (gGfxPool + 0x28B20); - return gGfxPool; +void config_gfx_pool(void) { + gGfxPool = &gGfxPools[gGlobalTimer & 1]; + set_segment_base_addr(1, gGfxPool->buffer); + gDisplayListHead = &gGfxPool->buffer[0x3418]; + gGfxSPTask = &gGfxPool->spTask; } -#else -GLOBAL_ASM("asm/non_matchings/main/func_80000EB4.s") -#endif // likely display_and_vsync from SM64 #ifdef MIPS_TO_C @@ -394,13 +383,13 @@ void *func_80000F34(void) { if (3 == (temp_t2 & 0xFFFF)) { D_800DC55C = (u16)0U; } - temp_t5 = D_800DC560 + 1; - D_800DC560 = temp_t5; + temp_t5 = gFrameBufferIndex + 1; + gFrameBufferIndex = temp_t5; if (3 == (temp_t5 & 0xFFFF)) { - D_800DC560 = (u16)0U; + gFrameBufferIndex = (u16)0U; } - D_800DC54C = (s32) (D_800DC54C + 1); - return &D_800DC54C; + gGlobalTimer = (s32) (gGlobalTimer + 1); + return &gGlobalTimer; } #else GLOBAL_ASM("asm/non_matchings/main/func_80000F34.s") @@ -1157,7 +1146,7 @@ void thread5_game_logic(s32 arg0) { D_8015F8C4 = (s32) (D_800DC600 + 0x17); D_8015F8C8 = (s32) (D_800DC600 + 0x19); D_8015F8CC = (s32) (D_800DC600 + 0x1C); - func_80000E00(); + rendering_init(); read_controllers(); func_800C5CB8(); loop_3: @@ -1167,7 +1156,7 @@ loop_3: func_80002684(); } profiler_log_thread5_time(0); - func_80000EB4(); + config_gfx_pool(); read_controllers(); func_80001ECC(); func_80000CE8(); diff --git a/src/main.h b/src/main.h index 316ef9d0f..c21216ddb 100644 --- a/src/main.h +++ b/src/main.h @@ -3,7 +3,7 @@ #include "types.h" -#define GFX_POOL_SIZE 6400 +#define GFX_POOL_SIZE 20836 struct GfxPool { Gfx buffer[GFX_POOL_SIZE]; struct SPTask spTask; diff --git a/undefined_syms.txt b/undefined_syms.txt index e482d7e69..d43840260 100644 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -670,7 +670,7 @@ D_800FAEC8 = 0x800FAEC8; D_800FBCA0 = 0x800FBCA0; D_800FCA78 = 0x800FCA78; D_800FD850 = 0x800FD850; -D_800FD860 = 0x800FD860; +gGfxPools = 0x800FD860; D_801001D8 = 0x801001D8; gGfxPool = 0x8014EF40; D_8014EF48 = 0x8014EF48;