From ba6205863d13f8b37ef4f5400f76d4c92f44c865 Mon Sep 17 00:00:00 2001 From: David Benepe Date: Tue, 6 Jul 2021 20:13:31 -0500 Subject: [PATCH] Documented video file --- asm/non_matchings/camera/func_80066940.s | 2 +- asm/non_matchings/camera/func_80066CDC.s | 2 +- asm/non_matchings/camera/func_80067A3C.s | 2 +- asm/non_matchings/camera/func_80067F2C.s | 2 +- asm/non_matchings/camera/func_800682AC.s | 2 +- asm/non_matchings/camera/func_80068514.s | 4 +- asm/non_matchings/camera/func_80068BF4.s | 4 +- asm/non_matchings/menu/func_80085B9C.s | 2 +- asm/non_matchings/menu/func_80094688.s | 2 +- asm/non_matchings/menu/menu_credits_loop.s | 2 +- .../menu/menu_track_select_init.s | 2 +- .../unknown_003260/audioNewThread.s | 4 +- .../unknown_00BC20/func_80018CE0.s | 4 +- .../unknown_043920/func_80059790.s | 4 +- .../unknown_06B2B0/func_8006C3E0.s | 2 +- asm/non_matchings/unknown_06B2B0/render.s | 32 +- .../unknown_077C50/func_80077050.s | 2 +- .../unknown_077C50/func_80077268.s | 2 +- .../unknown_078050/func_80077B9C.s | 2 +- .../unknown_078050/func_80078054.s | 2 +- .../unknown_078050/func_80078190.s | 2 +- .../unknown_078050/func_800787FC.s | 2 +- .../unknown_078050/func_80078D00.s | 2 +- .../unknown_078050/setupOSTasks.s | 16 +- .../unknown_07AF10/func_8007A310.s | 126 ------- .../unknown_07AF10/func_8007A550.s | 191 ----------- .../unknown_07AF10/func_8007A7E8.s | 104 ------ .../unknown_07AF10/func_8007AB9C.s | 26 -- .../unknown_09F8F0/func_800ACA20.s | 2 +- .../unknown_0AEE70/func_800B5F78.s | 2 +- .../unknown_0B8920/func_800C0A08.s | 2 +- .../unknown_0B8920/func_800C28E8.s | 2 +- .../{unknown_07AF10 => video}/func_8007A98C.s | 6 +- .../{unknown_07AF10 => video}/memory_copy.s | 0 include/PR/os_vi.h | 15 + lib/src/vitbl.c | 3 +- src/camera.c | 2 +- src/unknown_003260.c | 4 +- src/unknown_06B2B0.c | 22 +- src/unknown_079F50.c | 4 +- src/unknown_07AF10.c | 222 ------------ src/unknown_07AF10.h | 20 -- src/unknown_0C4800.c | 2 +- src/video.c | 321 ++++++++++++++++++ src/video.h | 38 +++ 45 files changed, 450 insertions(+), 766 deletions(-) delete mode 100644 asm/non_matchings/unknown_07AF10/func_8007A310.s delete mode 100644 asm/non_matchings/unknown_07AF10/func_8007A550.s delete mode 100644 asm/non_matchings/unknown_07AF10/func_8007A7E8.s delete mode 100644 asm/non_matchings/unknown_07AF10/func_8007AB9C.s rename asm/non_matchings/{unknown_07AF10 => video}/func_8007A98C.s (96%) rename asm/non_matchings/{unknown_07AF10 => video}/memory_copy.s (100%) delete mode 100644 src/unknown_07AF10.c delete mode 100644 src/unknown_07AF10.h create mode 100644 src/video.c create mode 100644 src/video.h diff --git a/asm/non_matchings/camera/func_80066940.s b/asm/non_matchings/camera/func_80066940.s index e4e679a1..e0587fbf 100644 --- a/asm/non_matchings/camera/func_80066940.s +++ b/asm/non_matchings/camera/func_80066940.s @@ -5,7 +5,7 @@ glabel func_80066940 /* 06754C 8006694C 00C08025 */ move $s0, $a2 /* 067550 80066950 AFA40020 */ sw $a0, 0x20($sp) /* 067554 80066954 AFA50024 */ sw $a1, 0x24($sp) -/* 067558 80066958 0C01E948 */ jal func_8007A520 +/* 067558 80066958 0C01E948 */ jal get_video_width_and_height_as_s32 /* 06755C 8006695C AFA7002C */ sw $a3, 0x2c($sp) /* 067560 80066960 8FA50024 */ lw $a1, 0x24($sp) /* 067564 80066964 8FA7002C */ lw $a3, 0x2c($sp) diff --git a/asm/non_matchings/camera/func_80066CDC.s b/asm/non_matchings/camera/func_80066CDC.s index a2e075a3..f86f8bcd 100644 --- a/asm/non_matchings/camera/func_80066CDC.s +++ b/asm/non_matchings/camera/func_80066CDC.s @@ -22,7 +22,7 @@ glabel func_80066CDC /* 06792C 80066D2C AFEF0000 */ sw $t7, ($ra) /* 067930 80066D30 00004825 */ move $t1, $zero .L80066D34: -/* 067934 80066D34 0C01E948 */ jal func_8007A520 +/* 067934 80066D34 0C01E948 */ jal get_video_width_and_height_as_s32 /* 067938 80066D38 AFA90030 */ sw $t1, 0x30($sp) /* 06793C 80066D3C 8FA90030 */ lw $t1, 0x30($sp) /* 067940 80066D40 240B0034 */ li $t3, 52 diff --git a/asm/non_matchings/camera/func_80067A3C.s b/asm/non_matchings/camera/func_80067A3C.s index 659b8ed2..593dd1e7 100644 --- a/asm/non_matchings/camera/func_80067A3C.s +++ b/asm/non_matchings/camera/func_80067A3C.s @@ -1,7 +1,7 @@ glabel func_80067A3C /* 06863C 80067A3C 27BDFFE8 */ addiu $sp, $sp, -0x18 /* 068640 80067A40 AFBF0014 */ sw $ra, 0x14($sp) -/* 068644 80067A44 0C01E948 */ jal func_8007A520 +/* 068644 80067A44 0C01E948 */ jal get_video_width_and_height_as_s32 /* 068648 80067A48 AFA40018 */ sw $a0, 0x18($sp) /* 06864C 80067A4C 3C038012 */ lui $v1, %hi(D_80120CE0) # $v1, 0x8012 /* 068650 80067A50 8C630CE0 */ lw $v1, %lo(D_80120CE0)($v1) diff --git a/asm/non_matchings/camera/func_80067F2C.s b/asm/non_matchings/camera/func_80067F2C.s index fc275d1a..2633ad27 100644 --- a/asm/non_matchings/camera/func_80067F2C.s +++ b/asm/non_matchings/camera/func_80067F2C.s @@ -3,7 +3,7 @@ glabel func_80067F2C /* 068B30 80067F30 AFBF001C */ sw $ra, 0x1c($sp) /* 068B34 80067F34 AFB00018 */ sw $s0, 0x18($sp) /* 068B38 80067F38 00A08025 */ move $s0, $a1 -/* 068B3C 80067F3C 0C01E948 */ jal func_8007A520 +/* 068B3C 80067F3C 0C01E948 */ jal get_video_width_and_height_as_s32 /* 068B40 80067F40 AFA40030 */ sw $a0, 0x30($sp) /* 068B44 80067F44 00027402 */ srl $t6, $v0, 0x10 /* 068B48 80067F48 304FFFFF */ andi $t7, $v0, 0xffff diff --git a/asm/non_matchings/camera/func_800682AC.s b/asm/non_matchings/camera/func_800682AC.s index a5e60cd9..ba135825 100644 --- a/asm/non_matchings/camera/func_800682AC.s +++ b/asm/non_matchings/camera/func_800682AC.s @@ -4,7 +4,7 @@ glabel func_800682AC /* 068EB4 800682B4 240E0004 */ li $t6, 4 /* 068EB8 800682B8 3C018012 */ lui $at, %hi(D_80120CE4) # $at, 0x8012 /* 068EBC 800682BC AC2E0CE4 */ sw $t6, %lo(D_80120CE4)($at) -/* 068EC0 800682C0 0C01E948 */ jal func_8007A520 +/* 068EC0 800682C0 0C01E948 */ jal get_video_width_and_height_as_s32 /* 068EC4 800682C4 AFA40020 */ sw $a0, 0x20($sp) /* 068EC8 800682C8 3C0F8012 */ lui $t7, %hi(D_80120CE4) # $t7, 0x8012 /* 068ECC 800682CC 8DEF0CE4 */ lw $t7, %lo(D_80120CE4)($t7) diff --git a/asm/non_matchings/camera/func_80068514.s b/asm/non_matchings/camera/func_80068514.s index 9607f8ad..8f9f28b8 100644 --- a/asm/non_matchings/camera/func_80068514.s +++ b/asm/non_matchings/camera/func_80068514.s @@ -282,7 +282,7 @@ glabel func_80068514 /* 069564 80068964 01896821 */ addu $t5, $t4, $t1 /* 069568 80068968 AC6D0004 */ sw $t5, 4($v1) /* 06956C 8006896C 8CCE0000 */ lw $t6, ($a2) -/* 069570 80068970 3C078012 */ lui $a3, %hi(D_80126174) # $a3, 0x8012 +/* 069570 80068970 3C078012 */ lui $a3, %hi(gVideoAspectRatio) # $a3, 0x8012 /* 069574 80068974 25D8000A */ addiu $t8, $t6, 0xa /* 069578 80068978 ACD80000 */ sw $t8, ($a2) /* 06957C 8006897C 81EF0D14 */ lb $t7, %lo(D_80120D14)($t7) @@ -322,7 +322,7 @@ glabel func_80068514 /* 0695FC 800689FC 000C7080 */ sll $t6, $t4, 2 /* 069600 80068A00 008E2021 */ addu $a0, $a0, $t6 /* 069604 80068A04 8C840D70 */ lw $a0, %lo(D_80120D70)($a0) -/* 069608 80068A08 8CE76174 */ lw $a3, %lo(D_80126174)($a3) +/* 069608 80068A08 8CE76174 */ lw $a3, %lo(gVideoAspectRatio)($a3) /* 06960C 80068A0C 8E060008 */ lw $a2, 8($s0) /* 069610 80068A10 8FA50034 */ lw $a1, 0x34($sp) /* 069614 80068A14 0C01C04C */ jal func_80070130 diff --git a/asm/non_matchings/camera/func_80068BF4.s b/asm/non_matchings/camera/func_80068BF4.s index 6ce0708b..77e117d5 100644 --- a/asm/non_matchings/camera/func_80068BF4.s +++ b/asm/non_matchings/camera/func_80068BF4.s @@ -102,9 +102,9 @@ glabel func_80068BF4 /* 069984 80068D84 44060000 */ mfc1 $a2, $f0 /* 069988 80068D88 0C01C18E */ jal func_80070638 /* 06998C 80068D8C 27A40050 */ addiu $a0, $sp, 0x50 -/* 069990 80068D90 3C078012 */ lui $a3, %hi(D_80126174) # $a3, 0x8012 +/* 069990 80068D90 3C078012 */ lui $a3, %hi(gVideoAspectRatio) # $a3, 0x8012 /* 069994 80068D94 27B00090 */ addiu $s0, $sp, 0x90 -/* 069998 80068D98 8CE76174 */ lw $a3, %lo(D_80126174)($a3) +/* 069998 80068D98 8CE76174 */ lw $a3, %lo(gVideoAspectRatio)($a3) /* 06999C 80068D9C 02002025 */ move $a0, $s0 /* 0699A0 80068DA0 00002825 */ move $a1, $zero /* 0699A4 80068DA4 0C01C04C */ jal func_80070130 diff --git a/asm/non_matchings/menu/func_80085B9C.s b/asm/non_matchings/menu/func_80085B9C.s index 5538b43d..5453afa8 100644 --- a/asm/non_matchings/menu/func_80085B9C.s +++ b/asm/non_matchings/menu/func_80085B9C.s @@ -11,7 +11,7 @@ glabel func_80085B9C /* 0867AC 80085BAC AFB20030 */ sw $s2, 0x30($sp) /* 0867B0 80085BB0 AFB1002C */ sw $s1, 0x2c($sp) /* 0867B4 80085BB4 AFB00028 */ sw $s0, 0x28($sp) -/* 0867B8 80085BB8 0C01E948 */ jal func_8007A520 +/* 0867B8 80085BB8 0C01E948 */ jal get_video_width_and_height_as_s32 /* 0867BC 80085BBC AFA40068 */ sw $a0, 0x68($sp) /* 0867C0 80085BC0 3C038012 */ lui $v1, %hi(D_801263E0) # $v1, 0x8012 /* 0867C4 80085BC4 8C6363E0 */ lw $v1, %lo(D_801263E0)($v1) diff --git a/asm/non_matchings/menu/func_80094688.s b/asm/non_matchings/menu/func_80094688.s index 3d3c4d40..d16b90b5 100644 --- a/asm/non_matchings/menu/func_80094688.s +++ b/asm/non_matchings/menu/func_80094688.s @@ -153,7 +153,7 @@ glabel func_80094688 /* 0954B8 800948B8 8FA40030 */ lw $a0, 0x30($sp) /* 0954BC 800948BC 0C01B638 */ jal func_8006D8E0 /* 0954C0 800948C0 00000000 */ nop -/* 0954C4 800948C4 0C01E948 */ jal func_8007A520 +/* 0954C4 800948C4 0C01E948 */ jal get_video_width_and_height_as_s32 /* 0954C8 800948C8 00000000 */ nop /* 0954CC 800948CC 3C058012 */ lui $a1, %hi(D_8012647C) # $a1, 0x8012 /* 0954D0 800948D0 24A5647C */ addiu $a1, %lo(D_8012647C) # addiu $a1, $a1, 0x647c diff --git a/asm/non_matchings/menu/menu_credits_loop.s b/asm/non_matchings/menu/menu_credits_loop.s index e6068df6..a68db2c2 100644 --- a/asm/non_matchings/menu/menu_credits_loop.s +++ b/asm/non_matchings/menu/menu_credits_loop.s @@ -85,7 +85,7 @@ glabel menu_credits_loop /* 09C050 8009B450 0014C080 */ sll $t8, $s4, 2 /* 09C054 8009B454 0314C021 */ addu $t8, $t8, $s4 /* 09C058 8009B458 8C750000 */ lw $s5, ($v1) -/* 09C05C 8009B45C 0C01E948 */ jal func_8007A520 +/* 09C05C 8009B45C 0C01E948 */ jal get_video_width_and_height_as_s32 /* 09C060 8009B460 27140048 */ addiu $s4, $t8, 0x48 /* 09C064 8009B464 00029443 */ sra $s2, $v0, 0x11 /* 09C068 8009B468 32597FFF */ andi $t9, $s2, 0x7fff diff --git a/asm/non_matchings/menu/menu_track_select_init.s b/asm/non_matchings/menu/menu_track_select_init.s index 03200d1a..92bb8eab 100644 --- a/asm/non_matchings/menu/menu_track_select_init.s +++ b/asm/non_matchings/menu/menu_track_select_init.s @@ -35,7 +35,7 @@ glabel menu_track_select_init /* 08F424 8008E824 AC200418 */ sw $zero, %lo(D_800E0418)($at) /* 08F428 8008E828 AC600000 */ sw $zero, ($v1) .L8008E82C: -/* 08F42C 8008E82C 0C01E948 */ jal func_8007A520 +/* 08F42C 8008E82C 0C01E948 */ jal get_video_width_and_height_as_s32 /* 08F430 8008E830 00000000 */ nop /* 08F434 8008E834 3C068012 */ lui $a2, %hi(D_8012647C) # $a2, 0x8012 /* 08F438 8008E838 24C6647C */ addiu $a2, %lo(D_8012647C) # addiu $a2, $a2, 0x647c diff --git a/asm/non_matchings/unknown_003260/audioNewThread.s b/asm/non_matchings/unknown_003260/audioNewThread.s index e2b8e834..3da085f4 100644 --- a/asm/non_matchings/unknown_003260/audioNewThread.s +++ b/asm/non_matchings/unknown_003260/audioNewThread.s @@ -20,9 +20,9 @@ glabel audioNewThread /* 0032A8 800026A8 24045622 */ li $a0, 22050 /* 0032AC 800026AC 44822000 */ mtc1 $v0, $f4 /* 0032B0 800026B0 AE620018 */ sw $v0, 0x18($s3) -/* 0032B4 800026B4 3C188012 */ lui $t8, %hi(D_80126170) # $t8, 0x8012 +/* 0032B4 800026B4 3C188012 */ lui $t8, %hi(gVideoRefreshRate) # $t8, 0x8012 /* 0032B8 800026B8 468021A0 */ cvt.s.w $f6, $f4 -/* 0032BC 800026BC 8F186170 */ lw $t8, %lo(D_80126170)($t8) +/* 0032BC 800026BC 8F186170 */ lw $t8, %lo(gVideoRefreshRate)($t8) /* 0032C0 800026C0 3C014000 */ li $at, 0x40000000 # 2.000000 /* 0032C4 800026C4 44814000 */ mtc1 $at, $f8 /* 0032C8 800026C8 44988000 */ mtc1 $t8, $f16 diff --git a/asm/non_matchings/unknown_00BC20/func_80018CE0.s b/asm/non_matchings/unknown_00BC20/func_80018CE0.s index da63689b..95d2a5dc 100644 --- a/asm/non_matchings/unknown_00BC20/func_80018CE0.s +++ b/asm/non_matchings/unknown_00BC20/func_80018CE0.s @@ -384,12 +384,12 @@ glabel func_80018CE0 /* 019E94 80019294 15C2008B */ bne $t6, $v0, .L800194C4 /* 019E98 80019298 24140003 */ li $s4, 3 /* 019E9C 8001929C 94790004 */ lhu $t9, 4($v1) -/* 019EA0 800192A0 3C0D8012 */ lui $t5, %hi(D_80126170) # $t5, 0x8012 +/* 019EA0 800192A0 3C0D8012 */ lui $t5, %hi(gVideoRefreshRate) # $t5, 0x8012 /* 019EA4 800192A4 03284821 */ addu $t1, $t9, $t0 /* 019EA8 800192A8 A4690004 */ sh $t1, 4($v1) /* 019EAC 800192AC 3C038012 */ lui $v1, %hi(D_8011AF60) # $v1, 0x8012 /* 019EB0 800192B0 8C63AF60 */ lw $v1, %lo(D_8011AF60)($v1) -/* 019EB4 800192B4 8DAD6170 */ lw $t5, %lo(D_80126170)($t5) +/* 019EB4 800192B4 8DAD6170 */ lw $t5, %lo(gVideoRefreshRate)($t5) /* 019EB8 800192B8 906A0002 */ lbu $t2, 2($v1) /* 019EBC 800192BC 94620004 */ lhu $v0, 4($v1) /* 019EC0 800192C0 014D0019 */ multu $t2, $t5 diff --git a/asm/non_matchings/unknown_043920/func_80059790.s b/asm/non_matchings/unknown_043920/func_80059790.s index 9cc85e8a..8fe8914b 100644 --- a/asm/non_matchings/unknown_043920/func_80059790.s +++ b/asm/non_matchings/unknown_043920/func_80059790.s @@ -4,8 +4,8 @@ glabel D_800E6928 .text glabel func_80059790 -/* 05A390 80059790 3C0E8012 */ lui $t6, %hi(D_80126170) # $t6, 0x8012 -/* 05A394 80059794 8DCE6170 */ lw $t6, %lo(D_80126170)($t6) +/* 05A390 80059790 3C0E8012 */ lui $t6, %hi(gVideoRefreshRate) # $t6, 0x8012 +/* 05A394 80059794 8DCE6170 */ lw $t6, %lo(gVideoRefreshRate)($t6) /* 05A398 80059798 24010032 */ li $at, 50 /* 05A39C 8005979C 15C10012 */ bne $t6, $at, .L800597E8 /* 05A3A0 800597A0 24080E10 */ li $t0, 3600 diff --git a/asm/non_matchings/unknown_06B2B0/func_8006C3E0.s b/asm/non_matchings/unknown_06B2B0/func_8006C3E0.s index 2e3c48aa..98008df9 100644 --- a/asm/non_matchings/unknown_06B2B0/func_8006C3E0.s +++ b/asm/non_matchings/unknown_06B2B0/func_8006C3E0.s @@ -54,7 +54,7 @@ glabel func_8006C3E0 /* 06D0A0 8006C4A0 A029D3A0 */ sb $t1, %lo(D_800DD3A0)($at) .L8006C4A4: /* 06D0A4 8006C4A4 3C058012 */ lui $a1, %hi(D_80121260) # $a1, 0x8012 -/* 06D0A8 8006C4A8 0C01E8C4 */ jal func_8007A310 +/* 06D0A8 8006C4A8 0C01E8C4 */ jal init_video /* 06D0AC 8006C4AC 24A51260 */ addiu $a1, %lo(D_80121260) # addiu $a1, $a1, 0x1260 /* 06D0B0 8006C4B0 0C01DAE8 */ jal func_80076BA0 /* 06D0B4 8006C4B4 00000000 */ nop diff --git a/asm/non_matchings/unknown_06B2B0/render.s b/asm/non_matchings/unknown_06B2B0/render.s index 2ad3fe60..6543ad4f 100644 --- a/asm/non_matchings/unknown_06B2B0/render.s +++ b/asm/non_matchings/unknown_06B2B0/render.s @@ -20,20 +20,20 @@ glabel render /* 06D254 8006C654 00003025 */ move $a2, $zero /* 06D258 8006C658 0C01E8B4 */ jal func_8007A2D0 /* 06D25C 8006C65C AC990000 */ sw $t9, ($a0) -/* 06D260 8006C660 3C068012 */ lui $a2, %hi(D_801262D4) # $a2, 0x8012 -/* 06D264 8006C664 8CC662D4 */ lw $a2, %lo(D_801262D4)($a2) +/* 06D260 8006C660 3C068012 */ lui $a2, %hi(gVideoCurrFramebuffer) # $a2, 0x8012 +/* 06D264 8006C664 8CC662D4 */ lw $a2, %lo(gVideoCurrFramebuffer)($a2) /* 06D268 8006C668 3C048012 */ lui $a0, %hi(D_801211F8) # $a0, 0x8012 /* 06D26C 8006C66C 248411F8 */ addiu $a0, %lo(D_801211F8) # addiu $a0, $a0, 0x11f8 /* 06D270 8006C670 0C01E8B4 */ jal func_8007A2D0 /* 06D274 8006C674 24050001 */ li $a1, 1 -/* 06D278 8006C678 3C068012 */ lui $a2, %hi(D_801262E0) # $a2, 0x8012 -/* 06D27C 8006C67C 8CC662E0 */ lw $a2, %lo(D_801262E0)($a2) +/* 06D278 8006C678 3C068012 */ lui $a2, %hi(gVideoLastDepthBuffer) # $a2, 0x8012 +/* 06D27C 8006C67C 8CC662E0 */ lw $a2, %lo(gVideoLastDepthBuffer)($a2) /* 06D280 8006C680 3C048012 */ lui $a0, %hi(D_801211F8) # $a0, 0x8012 /* 06D284 8006C684 248411F8 */ addiu $a0, %lo(D_801211F8) # addiu $a0, $a0, 0x11f8 /* 06D288 8006C688 0C01E8B4 */ jal func_8007A2D0 /* 06D28C 8006C68C 24050002 */ li $a1, 2 -/* 06D290 8006C690 3C068012 */ lui $a2, %hi(D_801262D4) # $a2, 0x8012 -/* 06D294 8006C694 8CC662D4 */ lw $a2, %lo(D_801262D4)($a2) +/* 06D290 8006C690 3C068012 */ lui $a2, %hi(gVideoCurrFramebuffer) # $a2, 0x8012 +/* 06D294 8006C694 8CC662D4 */ lw $a2, %lo(gVideoCurrFramebuffer)($a2) /* 06D298 8006C698 3C048012 */ lui $a0, %hi(D_801211F8) # $a0, 0x8012 /* 06D29C 8006C69C 248411F8 */ addiu $a0, %lo(D_801211F8) # addiu $a0, $a0, 0x11f8 /* 06D2A0 8006C6A0 24050004 */ li $a1, 4 @@ -98,20 +98,20 @@ glabel render /* 06D380 8006C780 00003025 */ move $a2, $zero /* 06D384 8006C784 0C01E8B4 */ jal func_8007A2D0 /* 06D388 8006C788 AC291228 */ sw $t1, %lo(D_80121228)($at) -/* 06D38C 8006C78C 3C068012 */ lui $a2, %hi(D_801262D8) # $a2, 0x8012 -/* 06D390 8006C790 8CC662D8 */ lw $a2, %lo(D_801262D8)($a2) +/* 06D38C 8006C78C 3C068012 */ lui $a2, %hi(gVideoLastFramebuffer) # $a2, 0x8012 +/* 06D390 8006C790 8CC662D8 */ lw $a2, %lo(gVideoLastFramebuffer)($a2) /* 06D394 8006C794 3C048012 */ lui $a0, %hi(D_801211F8) # $a0, 0x8012 /* 06D398 8006C798 248411F8 */ addiu $a0, %lo(D_801211F8) # addiu $a0, $a0, 0x11f8 /* 06D39C 8006C79C 0C01E8B4 */ jal func_8007A2D0 /* 06D3A0 8006C7A0 24050001 */ li $a1, 1 -/* 06D3A4 8006C7A4 3C068012 */ lui $a2, %hi(D_801262E0) # $a2, 0x8012 -/* 06D3A8 8006C7A8 8CC662E0 */ lw $a2, %lo(D_801262E0)($a2) +/* 06D3A4 8006C7A4 3C068012 */ lui $a2, %hi(gVideoLastDepthBuffer) # $a2, 0x8012 +/* 06D3A8 8006C7A8 8CC662E0 */ lw $a2, %lo(gVideoLastDepthBuffer)($a2) /* 06D3AC 8006C7AC 3C048012 */ lui $a0, %hi(D_801211F8) # $a0, 0x8012 /* 06D3B0 8006C7B0 248411F8 */ addiu $a0, %lo(D_801211F8) # addiu $a0, $a0, 0x11f8 /* 06D3B4 8006C7B4 0C01E8B4 */ jal func_8007A2D0 /* 06D3B8 8006C7B8 24050002 */ li $a1, 2 -/* 06D3BC 8006C7BC 3C068012 */ lui $a2, %hi(D_801262D8) # $a2, 0x8012 -/* 06D3C0 8006C7C0 8CC662D8 */ lw $a2, %lo(D_801262D8)($a2) +/* 06D3BC 8006C7BC 3C068012 */ lui $a2, %hi(gVideoLastFramebuffer) # $a2, 0x8012 +/* 06D3C0 8006C7C0 8CC662D8 */ lw $a2, %lo(gVideoLastFramebuffer)($a2) /* 06D3C4 8006C7C4 3C048012 */ lui $a0, %hi(D_801211F8) # $a0, 0x8012 /* 06D3C8 8006C7C8 248411F8 */ addiu $a0, %lo(D_801211F8) # addiu $a0, $a0, 0x11f8 /* 06D3CC 8006C7CC 24050004 */ li $a1, 4 @@ -305,10 +305,10 @@ glabel render /* 06D688 8006CA88 3C020002 */ lui $v0, (0x00029400 >> 16) # lui $v0, 2 /* 06D68C 8006CA8C 34429400 */ ori $v0, (0x00029400 & 0xFFFF) # ori $v0, $v0, 0x9400 .L8006CA90: -/* 06D690 8006CA90 3C058012 */ lui $a1, %hi(D_801262D4) # $a1, 0x8012 -/* 06D694 8006CA94 8CA562D4 */ lw $a1, %lo(D_801262D4)($a1) -/* 06D698 8006CA98 3C048012 */ lui $a0, %hi(D_801262D8) # $a0, 0x8012 -/* 06D69C 8006CA9C 8C8462D8 */ lw $a0, %lo(D_801262D8)($a0) +/* 06D690 8006CA90 3C058012 */ lui $a1, %hi(gVideoCurrFramebuffer) # $a1, 0x8012 +/* 06D694 8006CA94 8CA562D4 */ lw $a1, %lo(gVideoCurrFramebuffer)($a1) +/* 06D698 8006CA98 3C048012 */ lui $a0, %hi(gVideoLastFramebuffer) # $a0, 0x8012 +/* 06D69C 8006CA9C 8C8462D8 */ lw $a0, %lo(gVideoLastFramebuffer)($a0) /* 06D6A0 8006CAA0 0C01C2C1 */ jal func_80070B04 /* 06D6A4 8006CAA4 00A23021 */ addu $a2, $a1, $v0 .L8006CAA8: diff --git a/asm/non_matchings/unknown_077C50/func_80077050.s b/asm/non_matchings/unknown_077C50/func_80077050.s index ad18eb60..6a2f6c25 100644 --- a/asm/non_matchings/unknown_077C50/func_80077050.s +++ b/asm/non_matchings/unknown_077C50/func_80077050.s @@ -2,7 +2,7 @@ glabel func_80077050 /* 077C50 80077050 27BDFFC0 */ addiu $sp, $sp, -0x40 /* 077C54 80077054 AFBF001C */ sw $ra, 0x1c($sp) /* 077C58 80077058 AFB00018 */ sw $s0, 0x18($sp) -/* 077C5C 8007705C 0C01E948 */ jal func_8007A520 +/* 077C5C 8007705C 0C01E948 */ jal get_video_width_and_height_as_s32 /* 077C60 80077060 00808025 */ move $s0, $a0 /* 077C64 80077064 3045FFFF */ andi $a1, $v0, 0xffff /* 077C68 80077068 00057202 */ srl $t6, $a1, 8 diff --git a/asm/non_matchings/unknown_077C50/func_80077268.s b/asm/non_matchings/unknown_077C50/func_80077268.s index f6c48b3c..996dfddc 100644 --- a/asm/non_matchings/unknown_077C50/func_80077268.s +++ b/asm/non_matchings/unknown_077C50/func_80077268.s @@ -1,7 +1,7 @@ glabel func_80077268 /* 077E68 80077268 27BDFFD0 */ addiu $sp, $sp, -0x30 /* 077E6C 8007726C AFBF0014 */ sw $ra, 0x14($sp) -/* 077E70 80077270 0C01E948 */ jal func_8007A520 +/* 077E70 80077270 0C01E948 */ jal get_video_width_and_height_as_s32 /* 077E74 80077274 AFA40030 */ sw $a0, 0x30($sp) /* 077E78 80077278 8FA40030 */ lw $a0, 0x30($sp) /* 077E7C 8007727C 00022C02 */ srl $a1, $v0, 0x10 diff --git a/asm/non_matchings/unknown_078050/func_80077B9C.s b/asm/non_matchings/unknown_078050/func_80077B9C.s index 957e9f98..5c4004b3 100644 --- a/asm/non_matchings/unknown_078050/func_80077B9C.s +++ b/asm/non_matchings/unknown_078050/func_80077B9C.s @@ -4,7 +4,7 @@ glabel func_80077B9C /* 0787A4 80077BA4 AFB00020 */ sw $s0, 0x20($sp) /* 0787A8 80077BA8 00808025 */ move $s0, $a0 /* 0787AC 80077BAC AFA500A4 */ sw $a1, 0xa4($sp) -/* 0787B0 80077BB0 0C01E948 */ jal func_8007A520 +/* 0787B0 80077BB0 0C01E948 */ jal get_video_width_and_height_as_s32 /* 0787B4 80077BB4 AFA600A8 */ sw $a2, 0xa8($sp) /* 0787B8 80077BB8 304CFFFF */ andi $t4, $v0, 0xffff /* 0787BC 80077BBC 2589FFFF */ addiu $t1, $t4, -1 diff --git a/asm/non_matchings/unknown_078050/func_80078054.s b/asm/non_matchings/unknown_078050/func_80078054.s index fb5d20c4..5c48012d 100644 --- a/asm/non_matchings/unknown_078050/func_80078054.s +++ b/asm/non_matchings/unknown_078050/func_80078054.s @@ -1,7 +1,7 @@ glabel func_80078054 /* 078C54 80078054 27BDFFE8 */ addiu $sp, $sp, -0x18 /* 078C58 80078058 AFBF0014 */ sw $ra, 0x14($sp) -/* 078C5C 8007805C 0C01E948 */ jal func_8007A520 +/* 078C5C 8007805C 0C01E948 */ jal get_video_width_and_height_as_s32 /* 078C60 80078060 AFA40018 */ sw $a0, 0x18($sp) /* 078C64 80078064 8FA50018 */ lw $a1, 0x18($sp) /* 078C68 80078068 2458FFFF */ addiu $t8, $v0, -1 diff --git a/asm/non_matchings/unknown_078050/func_80078190.s b/asm/non_matchings/unknown_078050/func_80078190.s index d1907c02..e18fff4a 100644 --- a/asm/non_matchings/unknown_078050/func_80078190.s +++ b/asm/non_matchings/unknown_078050/func_80078190.s @@ -10,7 +10,7 @@ glabel func_80078190 /* 078DB0 800781B0 AFB20020 */ sw $s2, 0x20($sp) /* 078DB4 800781B4 AFB1001C */ sw $s1, 0x1c($sp) /* 078DB8 800781B8 AFB00018 */ sw $s0, 0x18($sp) -/* 078DBC 800781BC 0C01E948 */ jal func_8007A520 +/* 078DBC 800781BC 0C01E948 */ jal get_video_width_and_height_as_s32 /* 078DC0 800781C0 AFA40040 */ sw $a0, 0x40($sp) /* 078DC4 800781C4 8FA40040 */ lw $a0, 0x40($sp) /* 078DC8 800781C8 00024403 */ sra $t0, $v0, 0x10 diff --git a/asm/non_matchings/unknown_078050/func_800787FC.s b/asm/non_matchings/unknown_078050/func_800787FC.s index e2d7bc08..a68e152b 100644 --- a/asm/non_matchings/unknown_078050/func_800787FC.s +++ b/asm/non_matchings/unknown_078050/func_800787FC.s @@ -2,7 +2,7 @@ glabel func_800787FC /* 0793FC 800787FC 27BDFFB0 */ addiu $sp, $sp, -0x50 /* 079400 80078800 AFBF001C */ sw $ra, 0x1c($sp) /* 079404 80078804 AFB00018 */ sw $s0, 0x18($sp) -/* 079408 80078808 0C01E948 */ jal func_8007A520 +/* 079408 80078808 0C01E948 */ jal get_video_width_and_height_as_s32 /* 07940C 8007880C 00808025 */ move $s0, $a0 /* 079410 80078810 00027403 */ sra $t6, $v0, 0x10 /* 079414 80078814 31DFFFFF */ andi $ra, $t6, 0xffff diff --git a/asm/non_matchings/unknown_078050/func_80078D00.s b/asm/non_matchings/unknown_078050/func_80078D00.s index d83395b7..4f0d48f7 100644 --- a/asm/non_matchings/unknown_078050/func_80078D00.s +++ b/asm/non_matchings/unknown_078050/func_80078D00.s @@ -13,7 +13,7 @@ glabel func_80078D00 /* 07992C 80078D2C AFB30024 */ sw $s3, 0x24($sp) /* 079930 80078D30 AFB1001C */ sw $s1, 0x1c($sp) /* 079934 80078D34 AFA600B8 */ sw $a2, 0xb8($sp) -/* 079938 80078D38 0C01E948 */ jal func_8007A520 +/* 079938 80078D38 0C01E948 */ jal get_video_width_and_height_as_s32 /* 07993C 80078D3C AFA700BC */ sw $a3, 0xbc($sp) /* 079940 80078D40 8FA900C8 */ lw $t1, 0xc8($sp) /* 079944 80078D44 240100FF */ li $at, 255 diff --git a/asm/non_matchings/unknown_078050/setupOSTasks.s b/asm/non_matchings/unknown_078050/setupOSTasks.s index cc747c6d..83f5b85a 100644 --- a/asm/non_matchings/unknown_078050/setupOSTasks.s +++ b/asm/non_matchings/unknown_078050/setupOSTasks.s @@ -71,8 +71,8 @@ glabel setupOSTasks /* 078160 80077560 ACE00038 */ sw $zero, 0x38($a3) /* 078164 80077564 ACE0003C */ sw $zero, 0x3c($a3) /* 078168 80077568 ACE00000 */ sw $zero, ($a3) -/* 07816C 8007756C 3C188012 */ lui $t8, %hi(D_801262D4) # $t8, 0x8012 -/* 078170 80077570 8F1862D4 */ lw $t8, %lo(D_801262D4)($t8) +/* 07816C 8007756C 3C188012 */ lui $t8, %hi(gVideoCurrFramebuffer) # $t8, 0x8012 +/* 078170 80077570 8F1862D4 */ lw $t8, %lo(gVideoCurrFramebuffer)($t8) /* 078174 80077574 240200FF */ li $v0, 255 /* 078178 80077578 ACE20060 */ sw $v0, 0x60($a3) /* 07817C 8007757C ACE20064 */ sw $v0, 0x64($a3) @@ -153,8 +153,8 @@ glabel setupOSTasks /* 0782A0 800776A0 ACEC0008 */ sw $t4, 8($a3) /* 0782A4 800776A4 ACED0050 */ sw $t5, 0x50($a3) /* 0782A8 800776A8 ACEE0054 */ sw $t6, 0x54($a3) -/* 0782AC 800776AC 3C0F8012 */ lui $t7, %hi(D_801262D4) # $t7, 0x8012 -/* 0782B0 800776B0 8DEF62D4 */ lw $t7, %lo(D_801262D4)($t7) +/* 0782AC 800776AC 3C0F8012 */ lui $t7, %hi(gVideoCurrFramebuffer) # $t7, 0x8012 +/* 0782B0 800776B0 8DEF62D4 */ lw $t7, %lo(gVideoCurrFramebuffer)($t7) /* 0782B4 800776B4 3C02FF00 */ lui $v0, (0xFF0000FF >> 16) # lui $v0, 0xff00 /* 0782B8 800776B8 344200FF */ ori $v0, (0xFF0000FF & 0xFFFF) # ori $v0, $v0, 0xff /* 0782BC 800776BC 240300FF */ li $v1, 255 @@ -258,8 +258,8 @@ glabel setupOSTasks /* 078434 80077834 ACEE0008 */ sw $t6, 8($a3) /* 078438 80077838 ACEF0050 */ sw $t7, 0x50($a3) /* 07843C 8007783C ACF80054 */ sw $t8, 0x54($a3) -/* 078440 80077840 3C198012 */ lui $t9, %hi(D_801262D4) # $t9, 0x8012 -/* 078444 80077844 8F3962D4 */ lw $t9, %lo(D_801262D4)($t9) +/* 078440 80077840 3C198012 */ lui $t9, %hi(gVideoCurrFramebuffer) # $t9, 0x8012 +/* 078444 80077844 8F3962D4 */ lw $t9, %lo(gVideoCurrFramebuffer)($t9) /* 078448 80077848 3C02FF00 */ lui $v0, (0xFF0000FF >> 16) # lui $v0, 0xff00 /* 07844C 8007784C 344200FF */ ori $v0, (0xFF0000FF & 0xFFFF) # ori $v0, $v0, 0xff /* 078450 80077850 240300FF */ li $v1, 255 @@ -363,8 +363,8 @@ glabel setupOSTasks /* 0785C8 800779C8 ACEE0008 */ sw $t6, 8($a3) /* 0785CC 800779CC ACEF0050 */ sw $t7, 0x50($a3) /* 0785D0 800779D0 ACF80054 */ sw $t8, 0x54($a3) -/* 0785D4 800779D4 3C198012 */ lui $t9, %hi(D_801262D4) # $t9, 0x8012 -/* 0785D8 800779D8 8F3962D4 */ lw $t9, %lo(D_801262D4)($t9) +/* 0785D4 800779D4 3C198012 */ lui $t9, %hi(gVideoCurrFramebuffer) # $t9, 0x8012 +/* 0785D8 800779D8 8F3962D4 */ lw $t9, %lo(gVideoCurrFramebuffer)($t9) /* 0785DC 800779DC 3C02FF00 */ lui $v0, (0xFF0000FF >> 16) # lui $v0, 0xff00 /* 0785E0 800779E0 344200FF */ ori $v0, (0xFF0000FF & 0xFFFF) # ori $v0, $v0, 0xff /* 0785E4 800779E4 ACE20058 */ sw $v0, 0x58($a3) diff --git a/asm/non_matchings/unknown_07AF10/func_8007A310.s b/asm/non_matchings/unknown_07AF10/func_8007A310.s deleted file mode 100644 index da0544af..00000000 --- a/asm/non_matchings/unknown_07AF10/func_8007A310.s +++ /dev/null @@ -1,126 +0,0 @@ -.late_rodata -glabel D_800E7AFC -.float 1.21212125 -glabel D_800E7B00 -.float 1.1 -glabel D_800E7B04 -.float 1.33333333 -glabel D_800E7B08 -.float 1.33333333 - -.text -glabel func_8007A310 -/* 07AF10 8007A310 3C028000 */ lui $v0, %hi(osTvType) # $v0, 0x8000 -/* 07AF14 8007A314 8C420300 */ lw $v0, %lo(osTvType)($v0) -/* 07AF18 8007A318 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 07AF1C 8007A31C AFBF0014 */ sw $ra, 0x14($sp) -/* 07AF20 8007A320 AFA40018 */ sw $a0, 0x18($sp) -/* 07AF24 8007A324 1440000D */ bnez $v0, .L8007A35C -/* 07AF28 8007A328 AFA5001C */ sw $a1, 0x1c($sp) -/* 07AF2C 8007A32C 240E0032 */ li $t6, 50 -/* 07AF30 8007A330 3C018012 */ lui $at, %hi(D_80126170) # $at, 0x8012 -/* 07AF34 8007A334 AC2E6170 */ sw $t6, %lo(D_80126170)($at) -/* 07AF38 8007A338 3C01800E */ lui $at, %hi(D_800E7AFC) # $at, 0x800e -/* 07AF3C 8007A33C C4247AFC */ lwc1 $f4, %lo(D_800E7AFC)($at) -/* 07AF40 8007A340 3C018012 */ lui $at, %hi(D_80126174) # $at, 0x8012 -/* 07AF44 8007A344 E4246174 */ swc1 $f4, %lo(D_80126174)($at) -/* 07AF48 8007A348 3C01800E */ lui $at, %hi(D_800E7B00) # $at, 0x800e -/* 07AF4C 8007A34C C4267B00 */ lwc1 $f6, %lo(D_800E7B00)($at) -/* 07AF50 8007A350 3C018012 */ lui $at, %hi(D_80126178) # $at, 0x8012 -/* 07AF54 8007A354 1000001A */ b .L8007A3C0 -/* 07AF58 8007A358 E4266178 */ swc1 $f6, %lo(D_80126178)($at) -.L8007A35C: -/* 07AF5C 8007A35C 24010002 */ li $at, 2 -/* 07AF60 8007A360 1441000D */ bne $v0, $at, .L8007A398 -/* 07AF64 8007A364 2418003C */ li $t8, 60 -/* 07AF68 8007A368 240F003C */ li $t7, 60 -/* 07AF6C 8007A36C 3C018012 */ lui $at, %hi(D_80126170) # $at, 0x8012 -/* 07AF70 8007A370 AC2F6170 */ sw $t7, %lo(D_80126170)($at) -/* 07AF74 8007A374 3C01800E */ lui $at, %hi(D_800E7B04) # $at, 0x800e -/* 07AF78 8007A378 C4287B04 */ lwc1 $f8, %lo(D_800E7B04)($at) -/* 07AF7C 8007A37C 3C018012 */ lui $at, %hi(D_80126174) # $at, 0x8012 -/* 07AF80 8007A380 E4286174 */ swc1 $f8, %lo(D_80126174)($at) -/* 07AF84 8007A384 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 07AF88 8007A388 44815000 */ mtc1 $at, $f10 -/* 07AF8C 8007A38C 3C018012 */ lui $at, %hi(D_80126178) # $at, 0x8012 -/* 07AF90 8007A390 1000000B */ b .L8007A3C0 -/* 07AF94 8007A394 E42A6178 */ swc1 $f10, %lo(D_80126178)($at) -.L8007A398: -/* 07AF98 8007A398 3C018012 */ lui $at, %hi(D_80126170) # $at, 0x8012 -/* 07AF9C 8007A39C AC386170 */ sw $t8, %lo(D_80126170)($at) -/* 07AFA0 8007A3A0 3C01800E */ lui $at, %hi(D_800E7B08) # $at, 0x800e -/* 07AFA4 8007A3A4 C4307B08 */ lwc1 $f16, %lo(D_800E7B08)($at) -/* 07AFA8 8007A3A8 3C018012 */ lui $at, %hi(D_80126174) # $at, 0x8012 -/* 07AFAC 8007A3AC E4306174 */ swc1 $f16, %lo(D_80126174)($at) -/* 07AFB0 8007A3B0 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 07AFB4 8007A3B4 44819000 */ mtc1 $at, $f18 -/* 07AFB8 8007A3B8 3C018012 */ lui $at, %hi(D_80126178) # $at, 0x8012 -/* 07AFBC 8007A3BC E4326178 */ swc1 $f18, %lo(D_80126178)($at) -.L8007A3C0: -/* 07AFC0 8007A3C0 14400012 */ bnez $v0, .L8007A40C -/* 07AFC4 8007A3C4 3C03800E */ lui $v1, %hi(D_800DE7BC) # $v1, 0x800e -/* 07AFC8 8007A3C8 3C02800E */ lui $v0, %hi(D_800DE77C) # $v0, 0x800e -/* 07AFCC 8007A3CC 2442E77C */ addiu $v0, %lo(D_800DE77C) # addiu $v0, $v0, -0x1884 -/* 07AFD0 8007A3D0 2463E7BC */ addiu $v1, %lo(D_800DE7BC) # addiu $v1, $v1, -0x1844 -.L8007A3D4: -/* 07AFD4 8007A3D4 8C49000C */ lw $t1, 0xc($v0) -/* 07AFD8 8007A3D8 8C4B0014 */ lw $t3, 0x14($v0) -/* 07AFDC 8007A3DC 8C4D001C */ lw $t5, 0x1c($v0) -/* 07AFE0 8007A3E0 8C590004 */ lw $t9, 4($v0) -/* 07AFE4 8007A3E4 24420020 */ addiu $v0, $v0, 0x20 -/* 07AFE8 8007A3E8 252A0018 */ addiu $t2, $t1, 0x18 -/* 07AFEC 8007A3EC 256C0018 */ addiu $t4, $t3, 0x18 -/* 07AFF0 8007A3F0 25AE0018 */ addiu $t6, $t5, 0x18 -/* 07AFF4 8007A3F4 27280018 */ addiu $t0, $t9, 0x18 -/* 07AFF8 8007A3F8 AC4EFFFC */ sw $t6, -4($v0) -/* 07AFFC 8007A3FC AC4CFFF4 */ sw $t4, -0xc($v0) -/* 07B000 8007A400 AC4AFFEC */ sw $t2, -0x14($v0) -/* 07B004 8007A404 1443FFF3 */ bne $v0, $v1, .L8007A3D4 -/* 07B008 8007A408 AC48FFE4 */ sw $t0, -0x1c($v0) -.L8007A40C: -/* 07B00C 8007A40C 0C01EA5D */ jal func_8007A974 -/* 07B010 8007A410 00000000 */ nop -/* 07B014 8007A414 8FA40018 */ lw $a0, 0x18($sp) -/* 07B018 8007A418 0C01E930 */ jal func_8007A4C0 -/* 07B01C 8007A41C 00000000 */ nop -/* 07B020 8007A420 3C028012 */ lui $v0, %hi(D_801262C0) # $v0, 0x8012 -/* 07B024 8007A424 244262C0 */ addiu $v0, %lo(D_801262C0) # addiu $v0, $v0, 0x62c0 -/* 07B028 8007A428 AC400000 */ sw $zero, ($v0) -/* 07B02C 8007A42C AC400004 */ sw $zero, 4($v0) -/* 07B030 8007A430 0C01E9FA */ jal func_8007A7E8 -/* 07B034 8007A434 00002025 */ move $a0, $zero -/* 07B038 8007A438 0C01E9FA */ jal func_8007A7E8 -/* 07B03C 8007A43C 24040001 */ li $a0, 1 -/* 07B040 8007A440 240F0001 */ li $t7, 1 -/* 07B044 8007A444 3C018012 */ lui $at, %hi(D_801262C8) # $at, 0x8012 -/* 07B048 8007A448 0C01EAE7 */ jal func_8007AB9C -/* 07B04C 8007A44C AC2F62C8 */ sw $t7, %lo(D_801262C8)($at) -/* 07B050 8007A450 3C048012 */ lui $a0, %hi(D_801261A0) # $a0, 0x8012 -/* 07B054 8007A454 3C058012 */ lui $a1, %hi(D_80126180) # $a1, 0x8012 -/* 07B058 8007A458 24A56180 */ addiu $a1, %lo(D_80126180) # addiu $a1, $a1, 0x6180 -/* 07B05C 8007A45C 248461A0 */ addiu $a0, %lo(D_801261A0) # addiu $a0, $a0, 0x61a0 -/* 07B060 8007A460 0C032208 */ jal osCreateMesgQueue -/* 07B064 8007A464 24060008 */ li $a2, 8 -/* 07B068 8007A468 8FA4001C */ lw $a0, 0x1c($sp) -/* 07B06C 8007A46C 3C058012 */ lui $a1, %hi(D_80126310) # $a1, 0x8012 -/* 07B070 8007A470 3C068012 */ lui $a2, %hi(D_801261A0) # $a2, 0x8012 -/* 07B074 8007A474 24C661A0 */ addiu $a2, %lo(D_801261A0) # addiu $a2, $a2, 0x61a0 -/* 07B078 8007A478 24A56310 */ addiu $a1, %lo(D_80126310) # addiu $a1, $a1, 0x6310 -/* 07B07C 8007A47C 0C01E520 */ jal osScAddClient -/* 07B080 8007A480 24070002 */ li $a3, 2 -/* 07B084 8007A484 0C01E954 */ jal func_8007A550 -/* 07B088 8007A488 00000000 */ nop -/* 07B08C 8007A48C 2418000C */ li $t8, 12 -/* 07B090 8007A490 3C018012 */ lui $at, %hi(D_801262D0) # $at, 0x8012 -/* 07B094 8007A494 AC3862D0 */ sw $t8, %lo(D_801262D0)($at) -/* 07B098 8007A498 0C034744 */ jal osViBlack -/* 07B09C 8007A49C 24040001 */ li $a0, 1 -/* 07B0A0 8007A4A0 3C018012 */ lui $at, %hi(D_80126308) # $at, 0x8012 -/* 07B0A4 8007A4A4 8FBF0014 */ lw $ra, 0x14($sp) -/* 07B0A8 8007A4A8 A0206308 */ sb $zero, %lo(D_80126308)($at) -/* 07B0AC 8007A4AC 3C018012 */ lui $at, %hi(D_801262E4) # $at, 0x8012 -/* 07B0B0 8007A4B0 24190003 */ li $t9, 3 -/* 07B0B4 8007A4B4 A03962E4 */ sb $t9, %lo(D_801262E4)($at) -/* 07B0B8 8007A4B8 03E00008 */ jr $ra -/* 07B0BC 8007A4BC 27BD0018 */ addiu $sp, $sp, 0x18 - diff --git a/asm/non_matchings/unknown_07AF10/func_8007A550.s b/asm/non_matchings/unknown_07AF10/func_8007A550.s deleted file mode 100644 index c2013f85..00000000 --- a/asm/non_matchings/unknown_07AF10/func_8007A550.s +++ /dev/null @@ -1,191 +0,0 @@ -.late_rodata -glabel jpt_800E7B0C -.word L8007A5AC, L8007A5D0, L8007A658, L8007A6C0, L8007A728, L8007A750, L8007A778, L8007A7A0 - -.text -glabel func_8007A550 -/* 07B150 8007A550 3C028000 */ lui $v0, %hi(osTvType) # $v0, 0x8000 -/* 07B154 8007A554 8C420300 */ lw $v0, %lo(osTvType)($v0) -/* 07B158 8007A558 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 07B15C 8007A55C AFBF0014 */ sw $ra, 0x14($sp) -/* 07B160 8007A560 14400004 */ bnez $v0, .L8007A574 -/* 07B164 8007A564 00001825 */ move $v1, $zero -/* 07B168 8007A568 2403000E */ li $v1, 14 -/* 07B16C 8007A56C 10000005 */ b .L8007A584 -/* 07B170 8007A570 24050002 */ li $a1, 2 -.L8007A574: -/* 07B174 8007A574 24050002 */ li $a1, 2 -/* 07B178 8007A578 14A20002 */ bne $a1, $v0, .L8007A584 -/* 07B17C 8007A57C 00000000 */ nop -/* 07B180 8007A580 2403001C */ li $v1, 28 -.L8007A584: -/* 07B184 8007A584 3C0E8012 */ lui $t6, %hi(D_801262CC) # $t6, 0x8012 -/* 07B188 8007A588 8DCE62CC */ lw $t6, %lo(D_801262CC)($t6) -/* 07B18C 8007A58C 3C01800E */ lui $at, %hi(jpt_800E7B0C) # $at, 0x800e -/* 07B190 8007A590 31CF0007 */ andi $t7, $t6, 7 -/* 07B194 8007A594 000F7880 */ sll $t7, $t7, 2 -/* 07B198 8007A598 002F0821 */ addu $at, $at, $t7 -/* 07B19C 8007A59C 8C2F7B0C */ lw $t7, %lo(jpt_800E7B0C)($at) -/* 07B1A0 8007A5A0 00000000 */ nop -/* 07B1A4 8007A5A4 01E00008 */ jr $t7 -/* 07B1A8 8007A5A8 00000000 */ nop -glabel L8007A5AC -/* 07B1AC 8007A5AC 0003C080 */ sll $t8, $v1, 2 -/* 07B1B0 8007A5B0 0303C021 */ addu $t8, $t8, $v1 -/* 07B1B4 8007A5B4 3C19800E */ lui $t9, %hi(D_800E3900) # $t9, 0x800e -/* 07B1B8 8007A5B8 27393900 */ addiu $t9, %lo(D_800E3900) # addiu $t9, $t9, 0x3900 -/* 07B1BC 8007A5BC 0018C100 */ sll $t8, $t8, 4 -/* 07B1C0 8007A5C0 0C034728 */ jal osViSetMode -/* 07B1C4 8007A5C4 03192021 */ addu $a0, $t8, $t9 -/* 07B1C8 8007A5C8 1000007D */ b .L8007A7C0 -/* 07B1CC 8007A5CC 00000000 */ nop -glabel L8007A5D0 -/* 07B1D0 8007A5D0 3C04800E */ lui $a0, %hi(D_800E4620) # $a0, 0x800e -/* 07B1D4 8007A5D4 14400004 */ bnez $v0, .L8007A5E8 -/* 07B1D8 8007A5D8 24844620 */ addiu $a0, %lo(D_800E4620) # addiu $a0, $a0, 0x4620 -/* 07B1DC 8007A5DC 3C04800E */ lui $a0, %hi(D_800E4670) # $a0, 0x800e -/* 07B1E0 8007A5E0 10000005 */ b .L8007A5F8 -/* 07B1E4 8007A5E4 24844670 */ addiu $a0, %lo(D_800E4670) # addiu $a0, $a0, 0x4670 -.L8007A5E8: -/* 07B1E8 8007A5E8 14A20003 */ bne $a1, $v0, .L8007A5F8 -/* 07B1EC 8007A5EC 00000000 */ nop -/* 07B1F0 8007A5F0 3C04800E */ lui $a0, %hi(D_800E46C0) # $a0, 0x800e -/* 07B1F4 8007A5F4 248446C0 */ addiu $a0, %lo(D_800E46C0) # addiu $a0, $a0, 0x46c0 -.L8007A5F8: -/* 07B1F8 8007A5F8 3C058012 */ lui $a1, %hi(D_80126260) # $a1, 0x8012 -/* 07B1FC 8007A5FC 24A56260 */ addiu $a1, %lo(D_80126260) # addiu $a1, $a1, 0x6260 -/* 07B200 8007A600 0C01EAFF */ jal memory_copy -/* 07B204 8007A604 24060050 */ li $a2, 80 -/* 07B208 8007A608 3C088000 */ lui $t0, %hi(osTvType) # $t0, 0x8000 -/* 07B20C 8007A60C 8D080300 */ lw $t0, %lo(osTvType)($t0) -/* 07B210 8007A610 3C058012 */ lui $a1, %hi(D_80126260) # $a1, 0x8012 -/* 07B214 8007A614 1500000C */ bnez $t0, .L8007A648 -/* 07B218 8007A618 24A56260 */ addiu $a1, %lo(D_80126260) # addiu $a1, $a1, 0x6260 -/* 07B21C 8007A61C 8CA90030 */ lw $t1, 0x30($a1) -/* 07B220 8007A620 8CAB0044 */ lw $t3, 0x44($a1) -/* 07B224 8007A624 3C020018 */ lui $v0, 0x18 -/* 07B228 8007A628 01225023 */ subu $t2, $t1, $v0 -/* 07B22C 8007A62C 01626023 */ subu $t4, $t3, $v0 -/* 07B230 8007A630 ACAA0030 */ sw $t2, 0x30($a1) -/* 07B234 8007A634 ACAC0044 */ sw $t4, 0x44($a1) -/* 07B238 8007A638 254E0018 */ addiu $t6, $t2, 0x18 -/* 07B23C 8007A63C 25980018 */ addiu $t8, $t4, 0x18 -/* 07B240 8007A640 ACAE0030 */ sw $t6, 0x30($a1) -/* 07B244 8007A644 ACB80044 */ sw $t8, 0x44($a1) -.L8007A648: -/* 07B248 8007A648 0C034728 */ jal osViSetMode -/* 07B24C 8007A64C 00A02025 */ move $a0, $a1 -/* 07B250 8007A650 1000005B */ b .L8007A7C0 -/* 07B254 8007A654 00000000 */ nop -glabel L8007A658 -/* 07B258 8007A658 3C04800E */ lui $a0, %hi(D_800E4620) # $a0, 0x800e -/* 07B25C 8007A65C 14400004 */ bnez $v0, .L8007A670 -/* 07B260 8007A660 24844620 */ addiu $a0, %lo(D_800E4620) # addiu $a0, $a0, 0x4620 -/* 07B264 8007A664 3C04800E */ lui $a0, %hi(D_800E4670) # $a0, 0x800e -/* 07B268 8007A668 10000005 */ b .L8007A680 -/* 07B26C 8007A66C 24844670 */ addiu $a0, %lo(D_800E4670) # addiu $a0, $a0, 0x4670 -.L8007A670: -/* 07B270 8007A670 14A20003 */ bne $a1, $v0, .L8007A680 -/* 07B274 8007A674 00000000 */ nop -/* 07B278 8007A678 3C04800E */ lui $a0, %hi(D_800E46C0) # $a0, 0x800e -/* 07B27C 8007A67C 248446C0 */ addiu $a0, %lo(D_800E46C0) # addiu $a0, $a0, 0x46c0 -.L8007A680: -/* 07B280 8007A680 3C058012 */ lui $a1, %hi(D_80126260) # $a1, 0x8012 -/* 07B284 8007A684 24A56260 */ addiu $a1, %lo(D_80126260) # addiu $a1, $a1, 0x6260 -/* 07B288 8007A688 0C01EAFF */ jal memory_copy -/* 07B28C 8007A68C 24060050 */ li $a2, 80 -/* 07B290 8007A690 3C058012 */ lui $a1, %hi(D_80126260) # $a1, 0x8012 -/* 07B294 8007A694 24A46260 */ addiu $a0, $a1, %lo(D_80126260) -/* 07B298 8007A698 24020500 */ li $v0, 1280 -/* 07B29C 8007A69C 24190280 */ li $t9, 640 -/* 07B2A0 8007A6A0 24080400 */ li $t0, 1024 -/* 07B2A4 8007A6A4 AC990008 */ sw $t9, 8($a0) -/* 07B2A8 8007A6A8 AC880020 */ sw $t0, 0x20($a0) -/* 07B2AC 8007A6AC AC820028 */ sw $v0, 0x28($a0) -/* 07B2B0 8007A6B0 0C034728 */ jal osViSetMode -/* 07B2B4 8007A6B4 AC82003C */ sw $v0, 0x3c($a0) -/* 07B2B8 8007A6B8 10000041 */ b .L8007A7C0 -/* 07B2BC 8007A6BC 00000000 */ nop -glabel L8007A6C0 -/* 07B2C0 8007A6C0 3C04800E */ lui $a0, %hi(D_800E4710) # $a0, 0x800e -/* 07B2C4 8007A6C4 14400004 */ bnez $v0, .L8007A6D8 -/* 07B2C8 8007A6C8 24844710 */ addiu $a0, %lo(D_800E4710) # addiu $a0, $a0, 0x4710 -/* 07B2CC 8007A6CC 3C04800E */ lui $a0, %hi(D_800E4760) # $a0, 0x800e -/* 07B2D0 8007A6D0 10000005 */ b .L8007A6E8 -/* 07B2D4 8007A6D4 24844760 */ addiu $a0, %lo(D_800E4760) # addiu $a0, $a0, 0x4760 -.L8007A6D8: -/* 07B2D8 8007A6D8 14A20003 */ bne $a1, $v0, .L8007A6E8 -/* 07B2DC 8007A6DC 00000000 */ nop -/* 07B2E0 8007A6E0 3C04800E */ lui $a0, %hi(D_800E47B0) # $a0, 0x800e -/* 07B2E4 8007A6E4 248447B0 */ addiu $a0, %lo(D_800E47B0) # addiu $a0, $a0, 0x47b0 -.L8007A6E8: -/* 07B2E8 8007A6E8 3C058012 */ lui $a1, %hi(D_80126260) # $a1, 0x8012 -/* 07B2EC 8007A6EC 24A56260 */ addiu $a1, %lo(D_80126260) # addiu $a1, $a1, 0x6260 -/* 07B2F0 8007A6F0 0C01EAFF */ jal memory_copy -/* 07B2F4 8007A6F4 24060050 */ li $a2, 80 -/* 07B2F8 8007A6F8 3C058012 */ lui $a1, %hi(D_80126260) # $a1, 0x8012 -/* 07B2FC 8007A6FC 24A46260 */ addiu $a0, $a1, %lo(D_80126260) -/* 07B300 8007A700 24020500 */ li $v0, 1280 -/* 07B304 8007A704 24090280 */ li $t1, 640 -/* 07B308 8007A708 240A0400 */ li $t2, 1024 -/* 07B30C 8007A70C AC890008 */ sw $t1, 8($a0) -/* 07B310 8007A710 AC8A0020 */ sw $t2, 0x20($a0) -/* 07B314 8007A714 AC820028 */ sw $v0, 0x28($a0) -/* 07B318 8007A718 0C034728 */ jal osViSetMode -/* 07B31C 8007A71C AC82003C */ sw $v0, 0x3c($a0) -/* 07B320 8007A720 10000027 */ b .L8007A7C0 -/* 07B324 8007A724 00000000 */ nop -glabel L8007A728 -/* 07B328 8007A728 00035880 */ sll $t3, $v1, 2 -/* 07B32C 8007A72C 01635821 */ addu $t3, $t3, $v1 -/* 07B330 8007A730 000B5900 */ sll $t3, $t3, 4 -/* 07B334 8007A734 3C0D800E */ lui $t5, %hi(D_800E3900) # $t5, 0x800e -/* 07B338 8007A738 25AD3900 */ addiu $t5, %lo(D_800E3900) # addiu $t5, $t5, 0x3900 -/* 07B33C 8007A73C 256C0280 */ addiu $t4, $t3, 0x280 -/* 07B340 8007A740 0C034728 */ jal osViSetMode -/* 07B344 8007A744 018D2021 */ addu $a0, $t4, $t5 -/* 07B348 8007A748 1000001D */ b .L8007A7C0 -/* 07B34C 8007A74C 00000000 */ nop -glabel L8007A750 -/* 07B350 8007A750 00037080 */ sll $t6, $v1, 2 -/* 07B354 8007A754 01C37021 */ addu $t6, $t6, $v1 -/* 07B358 8007A758 000E7100 */ sll $t6, $t6, 4 -/* 07B35C 8007A75C 3C18800E */ lui $t8, %hi(D_800E3900) # $t8, 0x800e -/* 07B360 8007A760 27183900 */ addiu $t8, %lo(D_800E3900) # addiu $t8, $t8, 0x3900 -/* 07B364 8007A764 25CF0320 */ addiu $t7, $t6, 0x320 -/* 07B368 8007A768 0C034728 */ jal osViSetMode -/* 07B36C 8007A76C 01F82021 */ addu $a0, $t7, $t8 -/* 07B370 8007A770 10000013 */ b .L8007A7C0 -/* 07B374 8007A774 00000000 */ nop -glabel L8007A778 -/* 07B378 8007A778 0003C880 */ sll $t9, $v1, 2 -/* 07B37C 8007A77C 0323C821 */ addu $t9, $t9, $v1 -/* 07B380 8007A780 0019C900 */ sll $t9, $t9, 4 -/* 07B384 8007A784 3C09800E */ lui $t1, %hi(D_800E3900) # $t1, 0x800e -/* 07B388 8007A788 25293900 */ addiu $t1, %lo(D_800E3900) # addiu $t1, $t1, 0x3900 -/* 07B38C 8007A78C 272802D0 */ addiu $t0, $t9, 0x2d0 -/* 07B390 8007A790 0C034728 */ jal osViSetMode -/* 07B394 8007A794 01092021 */ addu $a0, $t0, $t1 -/* 07B398 8007A798 10000009 */ b .L8007A7C0 -/* 07B39C 8007A79C 00000000 */ nop -glabel L8007A7A0 -/* 07B3A0 8007A7A0 00035080 */ sll $t2, $v1, 2 -/* 07B3A4 8007A7A4 01435021 */ addu $t2, $t2, $v1 -/* 07B3A8 8007A7A8 000A5100 */ sll $t2, $t2, 4 -/* 07B3AC 8007A7AC 3C0C800E */ lui $t4, %hi(D_800E3900) # $t4, 0x800e -/* 07B3B0 8007A7B0 258C3900 */ addiu $t4, %lo(D_800E3900) # addiu $t4, $t4, 0x3900 -/* 07B3B4 8007A7B4 254B0370 */ addiu $t3, $t2, 0x370 -/* 07B3B8 8007A7B8 0C034728 */ jal osViSetMode -/* 07B3BC 8007A7BC 016C2021 */ addu $a0, $t3, $t4 -.L8007A7C0: -/* 07B3C0 8007A7C0 0C034898 */ jal osViSetSpecialFeatures -/* 07B3C4 8007A7C4 24040010 */ li $a0, 16 -/* 07B3C8 8007A7C8 0C034898 */ jal osViSetSpecialFeatures -/* 07B3CC 8007A7CC 24040040 */ li $a0, 64 -/* 07B3D0 8007A7D0 0C034898 */ jal osViSetSpecialFeatures -/* 07B3D4 8007A7D4 24040002 */ li $a0, 2 -/* 07B3D8 8007A7D8 8FBF0014 */ lw $ra, 0x14($sp) -/* 07B3DC 8007A7DC 27BD0018 */ addiu $sp, $sp, 0x18 -/* 07B3E0 8007A7E0 03E00008 */ jr $ra -/* 07B3E4 8007A7E4 00000000 */ nop - diff --git a/asm/non_matchings/unknown_07AF10/func_8007A7E8.s b/asm/non_matchings/unknown_07AF10/func_8007A7E8.s deleted file mode 100644 index aa00f8b4..00000000 --- a/asm/non_matchings/unknown_07AF10/func_8007A7E8.s +++ /dev/null @@ -1,104 +0,0 @@ -glabel func_8007A7E8 -/* 07B3E8 8007A7E8 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 07B3EC 8007A7EC 3C0E8012 */ lui $t6, %hi(D_801262C0) # $t6, 0x8012 -/* 07B3F0 8007A7F0 AFB00018 */ sw $s0, 0x18($sp) -/* 07B3F4 8007A7F4 25CE62C0 */ addiu $t6, %lo(D_801262C0) # addiu $t6, $t6, 0x62c0 -/* 07B3F8 8007A7F8 00042880 */ sll $a1, $a0, 2 -/* 07B3FC 8007A7FC 00AE8021 */ addu $s0, $a1, $t6 -/* 07B400 8007A800 8E060000 */ lw $a2, ($s0) -/* 07B404 8007A804 AFBF001C */ sw $ra, 0x1c($sp) -/* 07B408 8007A808 10C00008 */ beqz $a2, .L8007A82C -/* 07B40C 8007A80C 00C02025 */ move $a0, $a2 -/* 07B410 8007A810 0C01C54E */ jal func_80071538 -/* 07B414 8007A814 AFA5002C */ sw $a1, 0x2c($sp) -/* 07B418 8007A818 8E040000 */ lw $a0, ($s0) -/* 07B41C 8007A81C 0C01C450 */ jal free_from_memory_pool -/* 07B420 8007A820 00000000 */ nop -/* 07B424 8007A824 8FA5002C */ lw $a1, 0x2c($sp) -/* 07B428 8007A828 00000000 */ nop -.L8007A82C: -/* 07B42C 8007A82C 3C028012 */ lui $v0, %hi(D_801262CC) # $v0, 0x8012 -/* 07B430 8007A830 8C4262CC */ lw $v0, %lo(D_801262CC)($v0) -/* 07B434 8007A834 3C08800E */ lui $t0, %hi(D_800DE77C) # $t0, 0x800e -/* 07B438 8007A838 30580007 */ andi $t8, $v0, 7 -/* 07B43C 8007A83C 0018C8C0 */ sll $t9, $t8, 3 -/* 07B440 8007A840 2508E77C */ addiu $t0, %lo(D_800DE77C) # addiu $t0, $t0, -0x1884 -/* 07B444 8007A844 03281821 */ addu $v1, $t9, $t0 -/* 07B448 8007A848 3C0F8012 */ lui $t7, %hi(D_801262B0) # $t7, 0x8012 -/* 07B44C 8007A84C 3C0A8012 */ lui $t2, %hi(D_801262B8) # $t2, 0x8012 -/* 07B450 8007A850 8C690000 */ lw $t1, ($v1) -/* 07B454 8007A854 8C6B0004 */ lw $t3, 4($v1) -/* 07B458 8007A858 25EF62B0 */ addiu $t7, %lo(D_801262B0) # addiu $t7, $t7, 0x62b0 -/* 07B45C 8007A85C 254A62B8 */ addiu $t2, %lo(D_801262B8) # addiu $t2, $t2, 0x62b8 -/* 07B460 8007A860 00AF3021 */ addu $a2, $a1, $t7 -/* 07B464 8007A864 00AA3821 */ addu $a3, $a1, $t2 -/* 07B468 8007A868 28410002 */ slti $at, $v0, 2 -/* 07B46C 8007A86C ACC90000 */ sw $t1, ($a2) -/* 07B470 8007A870 14200019 */ bnez $at, .L8007A8D8 -/* 07B474 8007A874 ACEB0000 */ sw $t3, ($a3) -/* 07B478 8007A878 3C040009 */ lui $a0, (0x00096030 >> 16) # lui $a0, 9 -/* 07B47C 8007A87C 34846030 */ ori $a0, (0x00096030 & 0xFFFF) # ori $a0, $a0, 0x6030 -/* 07B480 8007A880 0C01C327 */ jal allocate_from_main_pool_safe -/* 07B484 8007A884 2405FFFF */ li $a1, -1 -/* 07B488 8007A888 3C03800E */ lui $v1, %hi(D_800DE770) # $v1, 0x800e -/* 07B48C 8007A88C 2463E770 */ addiu $v1, %lo(D_800DE770) # addiu $v1, $v1, -0x1890 -/* 07B490 8007A890 8C6E0000 */ lw $t6, ($v1) -/* 07B494 8007A894 244C003F */ addiu $t4, $v0, 0x3f -/* 07B498 8007A898 2401FFC0 */ li $at, -64 -/* 07B49C 8007A89C 01816824 */ and $t5, $t4, $at -/* 07B4A0 8007A8A0 15C00030 */ bnez $t6, .L8007A964 -/* 07B4A4 8007A8A4 AE0D0000 */ sw $t5, ($s0) -/* 07B4A8 8007A8A8 3C040009 */ lui $a0, (0x00096030 >> 16) # lui $a0, 9 -/* 07B4AC 8007A8AC 34846030 */ ori $a0, (0x00096030 & 0xFFFF) # ori $a0, $a0, 0x6030 -/* 07B4B0 8007A8B0 0C01C327 */ jal allocate_from_main_pool_safe -/* 07B4B4 8007A8B4 2405FFFF */ li $a1, -1 -/* 07B4B8 8007A8B8 3C03800E */ lui $v1, %hi(D_800DE770) # $v1, 0x800e -/* 07B4BC 8007A8BC 2463E770 */ addiu $v1, %lo(D_800DE770) # addiu $v1, $v1, -0x1890 -/* 07B4C0 8007A8C0 2458003F */ addiu $t8, $v0, 0x3f -/* 07B4C4 8007A8C4 2401FFC0 */ li $at, -64 -/* 07B4C8 8007A8C8 AC620000 */ sw $v0, ($v1) -/* 07B4CC 8007A8CC 0301C824 */ and $t9, $t8, $at -/* 07B4D0 8007A8D0 10000024 */ b .L8007A964 -/* 07B4D4 8007A8D4 AC790000 */ sw $t9, ($v1) -.L8007A8D8: -/* 07B4D8 8007A8D8 8CE80000 */ lw $t0, ($a3) -/* 07B4DC 8007A8DC 8CC90000 */ lw $t1, ($a2) -/* 07B4E0 8007A8E0 2405FFFF */ li $a1, -1 -/* 07B4E4 8007A8E4 01090019 */ multu $t0, $t1 -/* 07B4E8 8007A8E8 AFA60024 */ sw $a2, 0x24($sp) -/* 07B4EC 8007A8EC AFA70020 */ sw $a3, 0x20($sp) -/* 07B4F0 8007A8F0 00002012 */ mflo $a0 -/* 07B4F4 8007A8F4 00045040 */ sll $t2, $a0, 1 -/* 07B4F8 8007A8F8 0C01C327 */ jal allocate_from_main_pool_safe -/* 07B4FC 8007A8FC 25440030 */ addiu $a0, $t2, 0x30 -/* 07B500 8007A900 3C03800E */ lui $v1, %hi(D_800DE770) # $v1, 0x800e -/* 07B504 8007A904 2463E770 */ addiu $v1, %lo(D_800DE770) # addiu $v1, $v1, -0x1890 -/* 07B508 8007A908 8C6D0000 */ lw $t5, ($v1) -/* 07B50C 8007A90C 244B003F */ addiu $t3, $v0, 0x3f -/* 07B510 8007A910 2401FFC0 */ li $at, -64 -/* 07B514 8007A914 8FA60024 */ lw $a2, 0x24($sp) -/* 07B518 8007A918 8FA70020 */ lw $a3, 0x20($sp) -/* 07B51C 8007A91C 01616024 */ and $t4, $t3, $at -/* 07B520 8007A920 15A00010 */ bnez $t5, .L8007A964 -/* 07B524 8007A924 AE0C0000 */ sw $t4, ($s0) -/* 07B528 8007A928 8CEE0000 */ lw $t6, ($a3) -/* 07B52C 8007A92C 8CCF0000 */ lw $t7, ($a2) -/* 07B530 8007A930 2405FFFF */ li $a1, -1 -/* 07B534 8007A934 01CF0019 */ multu $t6, $t7 -/* 07B538 8007A938 00002012 */ mflo $a0 -/* 07B53C 8007A93C 0004C040 */ sll $t8, $a0, 1 -/* 07B540 8007A940 0C01C327 */ jal allocate_from_main_pool_safe -/* 07B544 8007A944 27040030 */ addiu $a0, $t8, 0x30 -/* 07B548 8007A948 3C03800E */ lui $v1, %hi(D_800DE770) # $v1, 0x800e -/* 07B54C 8007A94C 2463E770 */ addiu $v1, %lo(D_800DE770) # addiu $v1, $v1, -0x1890 -/* 07B550 8007A950 2448003F */ addiu $t0, $v0, 0x3f -/* 07B554 8007A954 2401FFC0 */ li $at, -64 -/* 07B558 8007A958 AC620000 */ sw $v0, ($v1) -/* 07B55C 8007A95C 01014824 */ and $t1, $t0, $at -/* 07B560 8007A960 AC690000 */ sw $t1, ($v1) -.L8007A964: -/* 07B564 8007A964 8FBF001C */ lw $ra, 0x1c($sp) -/* 07B568 8007A968 8FB00018 */ lw $s0, 0x18($sp) -/* 07B56C 8007A96C 03E00008 */ jr $ra -/* 07B570 8007A970 27BD0030 */ addiu $sp, $sp, 0x30 - diff --git a/asm/non_matchings/unknown_07AF10/func_8007AB9C.s b/asm/non_matchings/unknown_07AF10/func_8007AB9C.s deleted file mode 100644 index c3a8e562..00000000 --- a/asm/non_matchings/unknown_07AF10/func_8007AB9C.s +++ /dev/null @@ -1,26 +0,0 @@ -glabel func_8007AB9C -/* 07B79C 8007AB9C 3C058012 */ lui $a1, %hi(D_801262C8) # $a1, 0x8012 -/* 07B7A0 8007ABA0 24A562C8 */ addiu $a1, %lo(D_801262C8) # addiu $a1, $a1, 0x62c8 -/* 07B7A4 8007ABA4 8CA20000 */ lw $v0, ($a1) -/* 07B7A8 8007ABA8 3C048012 */ lui $a0, %hi(D_801262C0) # $a0, 0x8012 -/* 07B7AC 8007ABAC 248462C0 */ addiu $a0, %lo(D_801262C0) # addiu $a0, $a0, 0x62c0 -/* 07B7B0 8007ABB0 00027080 */ sll $t6, $v0, 2 -/* 07B7B4 8007ABB4 008E7821 */ addu $t7, $a0, $t6 -/* 07B7B8 8007ABB8 8DF80000 */ lw $t8, ($t7) -/* 07B7BC 8007ABBC 3C018012 */ lui $at, %hi(D_801262D8) # $at, 0x8012 -/* 07B7C0 8007ABC0 3C03800E */ lui $v1, %hi(D_800DE770) # $v1, 0x800e -/* 07B7C4 8007ABC4 8C63E770 */ lw $v1, %lo(D_800DE770)($v1) -/* 07B7C8 8007ABC8 AC3862D8 */ sw $t8, %lo(D_801262D8)($at) -/* 07B7CC 8007ABCC 3C018012 */ lui $at, %hi(D_801262E0) # $at, 0x8012 -/* 07B7D0 8007ABD0 38590001 */ xori $t9, $v0, 1 -/* 07B7D4 8007ABD4 00194880 */ sll $t1, $t9, 2 -/* 07B7D8 8007ABD8 AC2362E0 */ sw $v1, %lo(D_801262E0)($at) -/* 07B7DC 8007ABDC 00895021 */ addu $t2, $a0, $t1 -/* 07B7E0 8007ABE0 8D4B0000 */ lw $t3, ($t2) -/* 07B7E4 8007ABE4 ACB90000 */ sw $t9, ($a1) -/* 07B7E8 8007ABE8 3C018012 */ lui $at, %hi(D_801262D4) # $at, 0x8012 -/* 07B7EC 8007ABEC AC2B62D4 */ sw $t3, %lo(D_801262D4)($at) -/* 07B7F0 8007ABF0 3C018012 */ lui $at, %hi(D_801262DC) # $at, 0x8012 -/* 07B7F4 8007ABF4 03E00008 */ jr $ra -/* 07B7F8 8007ABF8 AC2362DC */ sw $v1, %lo(D_801262DC)($at) - diff --git a/asm/non_matchings/unknown_09F8F0/func_800ACA20.s b/asm/non_matchings/unknown_09F8F0/func_800ACA20.s index 6b27c6b1..6a3d762c 100644 --- a/asm/non_matchings/unknown_09F8F0/func_800ACA20.s +++ b/asm/non_matchings/unknown_09F8F0/func_800ACA20.s @@ -256,7 +256,7 @@ glabel func_800ACA20 /* 0AD9F4 800ACDF4 26520001 */ addiu $s2, $s2, 1 /* 0AD9F8 800ACDF8 1641FF7E */ bne $s2, $at, .L800ACBF4 /* 0AD9FC 800ACDFC 00000000 */ nop -/* 0ADA00 800ACE00 0C01E948 */ jal func_8007A520 +/* 0ADA00 800ACE00 0C01E948 */ jal get_video_width_and_height_as_s32 /* 0ADA04 800ACE04 00000000 */ nop /* 0ADA08 800ACE08 8E230000 */ lw $v1, ($s1) /* 0ADA0C 800ACE0C 8FAA0098 */ lw $t2, 0x98($sp) diff --git a/asm/non_matchings/unknown_0AEE70/func_800B5F78.s b/asm/non_matchings/unknown_0AEE70/func_800B5F78.s index cc92ae25..af53680a 100644 --- a/asm/non_matchings/unknown_0AEE70/func_800B5F78.s +++ b/asm/non_matchings/unknown_0AEE70/func_800B5F78.s @@ -8,7 +8,7 @@ glabel func_800B5F78 /* 0B6B90 800B5F90 AFB10024 */ sw $s1, 0x24($sp) /* 0B6B94 800B5F94 0C01E015 */ jal func_80078054 /* 0B6B98 800B5F98 AFB00020 */ sw $s0, 0x20($sp) -/* 0B6B9C 800B5F9C 0C01E948 */ jal func_8007A520 +/* 0B6B9C 800B5F9C 0C01E948 */ jal get_video_width_and_height_as_s32 /* 0B6BA0 800B5FA0 00000000 */ nop /* 0B6BA4 800B5FA4 3C048012 */ lui $a0, %hi(D_80127CD2) # $a0, 0x8012 /* 0B6BA8 800B5FA8 3C058012 */ lui $a1, %hi(D_80127CD0) # $a1, 0x8012 diff --git a/asm/non_matchings/unknown_0B8920/func_800C0A08.s b/asm/non_matchings/unknown_0B8920/func_800C0A08.s index 45db77f8..24f9861f 100644 --- a/asm/non_matchings/unknown_0B8920/func_800C0A08.s +++ b/asm/non_matchings/unknown_0B8920/func_800C0A08.s @@ -3,7 +3,7 @@ glabel func_800C0A08 /* 0C160C 800C0A0C AFBF0014 */ sw $ra, 0x14($sp) /* 0C1610 800C0A10 AFA5001C */ sw $a1, 0x1c($sp) /* 0C1614 800C0A14 AFA60020 */ sw $a2, 0x20($sp) -/* 0C1618 800C0A18 0C01E948 */ jal func_8007A520 +/* 0C1618 800C0A18 0C01E948 */ jal get_video_width_and_height_as_s32 /* 0C161C 800C0A1C AFA40018 */ sw $a0, 0x18($sp) /* 0C1620 800C0A20 8FA40018 */ lw $a0, 0x18($sp) /* 0C1624 800C0A24 3C18800E */ lui $t8, %hi(D_800E31D8) # $t8, 0x800e diff --git a/asm/non_matchings/unknown_0B8920/func_800C28E8.s b/asm/non_matchings/unknown_0B8920/func_800C28E8.s index 803a9bf5..05b021e1 100644 --- a/asm/non_matchings/unknown_0B8920/func_800C28E8.s +++ b/asm/non_matchings/unknown_0B8920/func_800C28E8.s @@ -3,7 +3,7 @@ glabel func_800C28E8 /* 0C34EC 800C28EC AFBF0014 */ sw $ra, 0x14($sp) /* 0C34F0 800C28F0 AFA5001C */ sw $a1, 0x1c($sp) /* 0C34F4 800C28F4 AFA60020 */ sw $a2, 0x20($sp) -/* 0C34F8 800C28F8 0C01E948 */ jal func_8007A520 +/* 0C34F8 800C28F8 0C01E948 */ jal get_video_width_and_height_as_s32 /* 0C34FC 800C28FC AFA40018 */ sw $a0, 0x18($sp) /* 0C3500 800C2900 8FA40018 */ lw $a0, 0x18($sp) /* 0C3504 800C2904 3C18800E */ lui $t8, %hi(D_800E31D8) # $t8, 0x800e diff --git a/asm/non_matchings/unknown_07AF10/func_8007A98C.s b/asm/non_matchings/video/func_8007A98C.s similarity index 96% rename from asm/non_matchings/unknown_07AF10/func_8007A98C.s rename to asm/non_matchings/video/func_8007A98C.s index 5942a874..07d9511d 100644 --- a/asm/non_matchings/unknown_07AF10/func_8007A98C.s +++ b/asm/non_matchings/video/func_8007A98C.s @@ -19,7 +19,7 @@ glabel func_8007A98C /* 07B5CC 8007A9CC 24010008 */ li $at, 8 /* 07B5D0 8007A9D0 12210003 */ beq $s1, $at, .L8007A9E0 /* 07B5D4 8007A9D4 00000000 */ nop -/* 07B5D8 8007A9D8 0C01EAE7 */ jal func_8007AB9C +/* 07B5D8 8007A9D8 0C01EAE7 */ jal swap_framebuffers /* 07B5DC 8007A9DC 00000000 */ nop .L8007A9E0: /* 07B5E0 8007A9E0 3C128012 */ lui $s2, %hi(D_801261A0) # $s2, 0x8012 @@ -96,8 +96,8 @@ glabel func_8007A98C /* 07B6E0 8007AAE0 1420FFF7 */ bnez $at, .L8007AAC0 /* 07B6E4 8007AAE4 00608025 */ move $s0, $v1 .L8007AAE8: -/* 07B6E8 8007AAE8 3C048012 */ lui $a0, %hi(D_801262D8) # $a0, 0x8012 -/* 07B6EC 8007AAEC 8C8462D8 */ lw $a0, %lo(D_801262D8)($a0) +/* 07B6E8 8007AAE8 3C048012 */ lui $a0, %hi(gVideoLastFramebuffer) # $a0, 0x8012 +/* 07B6EC 8007AAEC 8C8462D8 */ lw $a0, %lo(gVideoLastFramebuffer)($a0) /* 07B6F0 8007AAF0 0C034908 */ jal osViSwapBuffer /* 07B6F4 8007AAF4 AFA30028 */ sw $v1, 0x28($sp) /* 07B6F8 8007AAF8 02402025 */ move $a0, $s2 diff --git a/asm/non_matchings/unknown_07AF10/memory_copy.s b/asm/non_matchings/video/memory_copy.s similarity index 100% rename from asm/non_matchings/unknown_07AF10/memory_copy.s rename to asm/non_matchings/video/memory_copy.s diff --git a/include/PR/os_vi.h b/include/PR/os_vi.h index 9293ab08..a579248d 100644 --- a/include/PR/os_vi.h +++ b/include/PR/os_vi.h @@ -108,6 +108,21 @@ void osViSwapBuffer(void *vaddr); #define OS_VI_PAL_HPN2 26 #define OS_VI_PAL_HPF2 27 +#define OS_VI_MPAL_LPN1 28 /* MPAL - mainly Brazil */ +#define OS_VI_MPAL_LPF1 29 +#define OS_VI_MPAL_LAN1 30 +#define OS_VI_MPAL_LAF1 31 +#define OS_VI_MPAL_LPN2 32 +#define OS_VI_MPAL_LPF2 33 +#define OS_VI_MPAL_LAN2 34 +#define OS_VI_MPAL_LAF2 35 +#define OS_VI_MPAL_HPN1 36 +#define OS_VI_MPAL_HPF1 37 +#define OS_VI_MPAL_HAN1 38 +#define OS_VI_MPAL_HAF1 39 +#define OS_VI_MPAL_HPN2 40 +#define OS_VI_MPAL_HPF2 41 + extern OSViMode osViModeTable[]; /* Global VI mode table */ diff --git a/lib/src/vitbl.c b/lib/src/vitbl.c index cae312c5..29dcdfe4 100644 --- a/lib/src/vitbl.c +++ b/lib/src/vitbl.c @@ -82,8 +82,7 @@ #define OS_VI_BIT_NTSC 0x0400 #define OS_VI_BIT_PAL 0x0800 -// osViModeTable -OSViMode D_800E3900[42] = { +OSViMode osViModeTable[42] = { {OS_VI_NTSC_LPN1, //type { //comRegs diff --git a/src/camera.c b/src/camera.c index 62ad9aac..a7a30b11 100644 --- a/src/camera.c +++ b/src/camera.c @@ -541,7 +541,7 @@ void func_80066C2C(s32 arg0, s32 *arg1, s32 *arg2, s32 *arg3, s32 *arg4) { // Unused? void func_80066C80(s32 *arg0, s32 *arg1, s32 *arg2, s32 *arg3) { - u32 temp_v0 = func_8007A520(); + u32 temp_v0 = get_video_width_and_height_as_s32(); *arg0 = 0; *arg1 = 0; *arg2 = temp_v0 & 0xFFFF; diff --git a/src/unknown_003260.c b/src/unknown_003260.c index 34790106..23c54886 100644 --- a/src/unknown_003260.c +++ b/src/unknown_003260.c @@ -46,7 +46,7 @@ extern OSMesg D_80119B08[50]; extern unk800DC6BC D_80119BD0; extern u16 *D_80119C28; -extern f32 D_80126170; +extern f32 gVideoRefreshRate; /******************************/ @@ -107,7 +107,7 @@ void audioNewThread(ALSynConfig* c, OSPri p, s32 arg2){ D_80115F94 = c->heap; c->dmaproc = &func_80003008; c->outputRate = func_800C8600(22050); - D_8011962C = (((f32) c->outputRate)*2.0f)/D_80126170; + D_8011962C = (((f32) c->outputRate)*2.0f)/gVideoRefreshRate; if(D_8011962C < 0){ } diff --git a/src/unknown_06B2B0.c b/src/unknown_06B2B0.c index 2085cedb..9d99bd1c 100644 --- a/src/unknown_06B2B0.c +++ b/src/unknown_06B2B0.c @@ -177,9 +177,9 @@ s32 D_80123560[8]; /******************************/ -extern s32 D_801262D4; -extern s32 D_801262D8; -extern s32 D_801262E0; +extern s32 gVideoCurrFramebuffer; +extern s32 gVideoLastFramebuffer; +extern s32 gVideoLastDepthBuffer; extern s32 osTvType; void func_8006F43C(void); @@ -749,7 +749,7 @@ void func_8006C3E0(void) { if (func_8006EFB8() == 0) { D_800DD3A0 = 1; } - func_8007A310(1, &D_80121260); + init_video(1, &D_80121260); func_80076BA0(); func_80078100(&D_80121260); audio_init(&D_80121260); @@ -794,9 +794,9 @@ void render(void) { if (D_800DD380 == 8) { D_801211F8 = D_801211F0[D_801234E8]; func_8007A2D0(&D_801211F8, 0, 0); - func_8007A2D0(&D_801211F8, 1, D_801262D4); - func_8007A2D0(&D_801211F8, 2, D_801262E0); - func_8007A2D0(&D_801211F8, 4, D_801262D4 - 0x500); + func_8007A2D0(&D_801211F8, 1, gVideoCurrFramebuffer); + func_8007A2D0(&D_801211F8, 2, gVideoLastDepthBuffer); + func_8007A2D0(&D_801211F8, 4, gVideoCurrFramebuffer - 0x500); } if (D_800DD3F0 == 0) { setupOSTasks(D_801211F0[D_801234E8], D_801211F8, 0); @@ -813,9 +813,9 @@ void render(void) { D_80121228 = D_80121220[D_801234E8]; func_8007A2D0(&D_801211F8, 0, 0, &D_801234E8); - func_8007A2D0(&D_801211F8, 1, D_801262D8); - func_8007A2D0(&D_801211F8, 2, D_801262E0); - func_8007A2D0(&D_801211F8, 4, D_801262D8 - 0x500); + func_8007A2D0(&D_801211F8, 1, gVideoLastFramebuffer); + func_8007A2D0(&D_801211F8, 2, gVideoLastDepthBuffer); + func_8007A2D0(&D_801211F8, 4, gVideoLastFramebuffer - 0x500); func_800780DC(&D_801211F8); func_80078054(&D_801211F8); func_80077B9C(&D_801211F8, &D_80121208, 1); @@ -885,7 +885,7 @@ void render(void) { if (osTvType == 0) { phi_v0_2 = 168960; } - func_80070B04(D_801262D8, D_801262D4, D_801262D4 + phi_v0_2); + func_80070B04(gVideoLastFramebuffer, gVideoCurrFramebuffer, gVideoCurrFramebuffer + phi_v0_2); } D_800DD404 = func_8007A98C(D_800DD380); diff --git a/src/unknown_079F50.c b/src/unknown_079F50.c index aadd1fd2..6b95feee 100644 --- a/src/unknown_079F50.c +++ b/src/unknown_079F50.c @@ -109,7 +109,7 @@ const char D_800E7958[] = "\tdata_size\t\t= %u\n"; /*********************************/ -extern OSViMode D_800E3900[];//osViModeTable; +extern OSViMode osViModeTable[];//osViModeTable; /************ .bss ************/ @@ -144,7 +144,7 @@ void osCreateScheduler(OSSched *sc, void *stack, OSPri priority, u8 mode, u8 num * Set up video manager, listen for Video, RSP, and RDP interrupts */ osCreateViManager(OS_PRIORITY_VIMGR); - osViSetMode(&D_800E3900[mode]); + osViSetMode(&osViModeTable[mode]); osViBlack(TRUE); osCreateMesgQueue(&sc->interruptQ, sc->intBuf, OS_SC_MAX_MESGS); diff --git a/src/unknown_07AF10.c b/src/unknown_07AF10.c deleted file mode 100644 index 83dded1b..00000000 --- a/src/unknown_07AF10.c +++ /dev/null @@ -1,222 +0,0 @@ -/* The comment below is needed for this file to be picked up by generate_ld */ -/* RAM_POS: 0x8007A310 */ - -#include "unknown_07AF10.h" - -#include "types.h" -#include "macros.h" - -/************ .data ************/ - -s32 D_800DE770 = 0; -s32 D_800DE774 = 0; // Currently unknown, might be a different type. -s8 D_800DE778 = 2; - -// Video mode resolutions -unk800DE77C D_800DE77C[8] = { - { 320, 240 }, - { 320, 240 }, - { 640, 240 }, - { 640, 240 }, - { 640, 480 }, - { 640, 480 }, - { 640, 480 }, - { 640, 480 } -}; - -s32 D_800DE7BC = 0; // Currently unknown, might be a different type. - -/*******************************/ - -/************ .rodata ************/ - -const char D_800E7990[] = "320 by 240 Point sampled, Non interlaced.\n"; -const char D_800E79BC[] = "320 by 240 Anti-aliased, Non interlaced.\n"; -const char D_800E79EC[] = "640 by 240 Point sampled, Non interlaced.\n"; -const char D_800E7A10[] = "640 by 240 Anti-aliased, Non interlaced.\n"; -const char D_800E7A40[] = "640 by 480 Point sampled, Interlaced.\n"; -const char D_800E7A68[] = "640 by 480 Anti-aliased, Interlaced.\n"; -const char D_800E7A90[] = "640 by 480 Point sampled, Interlaced, De-flickered.\n"; -const char D_800E7AC8[] = "640 by 480 Anti-aliased, Interlaced, De-flickered.\n"; - -/*********************************/ - -/************ .bss ************/ - -s32 D_80126170; -s32 D_80126174; -s32 D_80126178[2]; -s32 D_80126180[8]; -s32 D_801261A0[48]; -s32 D_80126260[20]; -s32 D_801262B0[2]; -s32 D_801262B8[2]; -s32 D_801262C0[2]; -s32 D_801262C8; -s32 D_801262CC; -s32 D_801262D0; -s32 D_801262D4; -s32 D_801262D8; -s32 D_801262DC; -s32 D_801262E0; -s8 D_801262E4; -s32 D_801262E8[8]; -s8 D_80126308; -u8 D_80126309; -s32 D_8012630C; -s32 D_80126310; - -/******************************/ - -GLOBAL_ASM("asm/non_matchings/unknown_07AF10/func_8007A310.s") - -void func_8007A4C0(s32 arg0) { - D_801262CC = arg0; -} - -/* Unused? */ -s32 func_8007A4CC(void) { - return D_801262CC; -} - -/* Unused? */ -void func_8007A4DC(s32 arg0) { - D_801262B0[arg0] = D_800DE77C[D_801262CC & 0x07].width; - D_801262B8[arg0] = D_800DE77C[D_801262CC & 0x07].height; -} - -s32 func_8007A520(void) { - return (D_801262B8[D_801262C8] << 16) | D_801262B0[D_801262C8]; -} - -#if 0 -void func_8007A550(void) { - s32 temp_t2; - s32 temp_t4; - s32 phi_v1; - ? *phi_a0; - ? *phi_a0_2; - ? *phi_a0_3; - - if (osTvType == 0) { - phi_v1 = 0xE; - } else { - phi_v1 = 0; - if (osTvType == 2) { - phi_v1 = 0x1C; - } - } - switch(D_801262CC & 7) { - case 0: - osViSetMode((phi_v1 * 0x50) + &D_800E3900, 2); - break; - case 1: - if (osTvType == 0) { - phi_a0 = &D_800E4670; - } else { - phi_a0 = &D_800E4620; - if (2 == osTvType) { - phi_a0 = &D_800E46C0; - } - } - memory_copy(phi_a0, &D_80126260, 0x50); - if (osTvType == 0) { - temp_t2 = D_80126260.unk30 - 0x180000; - temp_t4 = D_80126260.unk44 - 0x180000; - D_80126260.unk30 = temp_t2; - D_80126260.unk44 = temp_t4; - D_80126260.unk30 = temp_t2 + 0x18; - D_80126260.unk44 = temp_t4 + 0x18; - } - osViSetMode(&D_80126260, &D_80126260); - break; - case 2: - if (osTvType == 0) { - phi_a0_2 = &D_800E4670; - } else { - phi_a0_2 = &D_800E4620; - if (2 == osTvType) { - phi_a0_2 = &D_800E46C0; - } - } - memory_copy(phi_a0_2, &D_80126260, 0x50); - D_80126260.unk8 = 0x280; - D_80126260.unk20 = 0x400; - D_80126260.unk28 = 0x500; - D_80126260.unk3C = 0x500; - osViSetMode(&D_80126260, &D_80126260); - break; - case 3: - if (osTvType == 0) { - phi_a0_3 = &D_800E4760; - } else { - phi_a0_3 = &D_800E4710; - if (2 == osTvType) { - phi_a0_3 = &D_800E47B0; - } - } - memory_copy(phi_a0_3, &D_80126260, 0x50); - D_80126260.unk8 = 0x280; - D_80126260.unk20 = 0x400; - D_80126260.unk28 = 0x500; - D_80126260.unk3C = 0x500; - osViSetMode(&D_80126260, &D_80126260); - break; - case 4: - osViSetMode((phi_v1 * 0x50) + 0x280 + &D_800E3900, 2); - break; - case 5: - osViSetMode((phi_v1 * 0x50) + 0x320 + &D_800E3900, 2); - break; - case 6: - osViSetMode((phi_v1 * 0x50) + 0x2D0 + &D_800E3900, 2); - break; - case 7: - osViSetMode((phi_v1 * 0x50) + 0x370 + &D_800E3900, 2); - break; - } - osViSetSpecialFeatures(0x10); - osViSetSpecialFeatures(0x40); - osViSetSpecialFeatures(2); -} - -#else -GLOBAL_ASM("asm/non_matchings/unknown_07AF10/func_8007A550.s") -#endif - - - -GLOBAL_ASM("asm/non_matchings/unknown_07AF10/func_8007A7E8.s") - -void func_8007A974(void) { - D_80126308 = 0; - D_80126309 = 2; -} - -GLOBAL_ASM("asm/non_matchings/unknown_07AF10/func_8007A98C.s") - -void func_8007AB24(s8 arg0) { - D_801262E4 = arg0; -} - -// Unused? -s32 func_8007AB34(void) { - return (s32)((f32)D_80126170 / (f32)D_80126309); -} - -GLOBAL_ASM("asm/non_matchings/unknown_07AF10/func_8007AB9C.s") - -#ifdef NON_MATCHING -// regalloc issues -// They made their own worse version of memcpy, despite the fact that they already had bcopy? -void memory_copy(u8 *src, u8 *dst, s32 numBytes) { - s32 i; - for(i = 0; i < numBytes; i++){ - dst[i] = src[i]; - } -} -#else -GLOBAL_ASM("asm/non_matchings/unknown_07AF10/memory_copy.s") -#endif - - diff --git a/src/unknown_07AF10.h b/src/unknown_07AF10.h deleted file mode 100644 index 3f8d3e56..00000000 --- a/src/unknown_07AF10.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef _UNKNOWN_07AF10_H_ -#define _UNKNOWN_07AF10_H_ - -#include "types.h" - -extern s32 D_800DE770; -extern s32 D_800DE774; -extern s8 D_800DE778; - -/* Size: 0x08 bytes */ -typedef struct unk800DE77C { - /* 0x00 */ s32 width; - /* 0x04 */ s32 height; -} unk800DE77C; - -extern unk800DE77C D_800DE77C[8]; - -extern s32 D_800DE7BC; - -#endif diff --git a/src/unknown_0C4800.c b/src/unknown_0C4800.c index b3d46816..28a6e28f 100644 --- a/src/unknown_0C4800.c +++ b/src/unknown_0C4800.c @@ -543,7 +543,7 @@ void func_800C580C(char** outString, s32 number) { //GLOBAL_ASM("asm/non_matchings/unknown_0B8920/func_800C5AA0.s") void func_800C5AA0(Gfx **dlist, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { - u32 temp_v0 = func_8007A520(); + u32 temp_v0 = get_video_width_and_height_as_s32(); if (arg3 >= 0 && arg1 < (temp_v0 & 0xFFFF) && arg4 >= 0 && arg2 < (temp_v0 >> 16)) { if (arg1 < 0) { arg1 = 0; diff --git a/src/video.c b/src/video.c new file mode 100644 index 00000000..4100d0f0 --- /dev/null +++ b/src/video.c @@ -0,0 +1,321 @@ +/* The comment below is needed for this file to be picked up by generate_ld */ +/* RAM_POS: 0x8007A310 */ + +#include "video.h" + +#include "types.h" +#include "macros.h" +#include "memory.h" +#include "PR/libultra.h" +#include "PR/os_message.h" +#include "PR/os_vi.h" + +/************ .data ************/ + +u16 *gVideoDepthBuffer = NULL; +s32 D_800DE774 = 0; // Currently unknown, might be a different type. +s8 D_800DE778 = 2; + +VideoModeResolution gVideoModeResolutions[8] = { + { 320, 240 }, + { 320, 240 }, + { 640, 240 }, + { 640, 240 }, + { 640, 480 }, + { 640, 480 }, + { 640, 480 }, + { 640, 480 } +}; + +s32 D_800DE7BC = 0; // Currently unknown, might be a different type. + +/*******************************/ + +/************ .bss ************/ + +s32 gVideoRefreshRate; +f32 gVideoAspectRatio; +f32 gVideoHeightRatio; +s32 D_8012617C; +OSMesg D_80126180[8]; +OSMesgQueue D_801261A0[8]; +OSViMode D_80126260; +s32 gVideoFbWidths[2]; +s32 gVideoFbHeights[2]; +u16 *gVideoFramebuffers[2]; +s32 gVideoCurrFbIndex; +s32 gVideoModeIndex; +s32 D_801262D0; +u16 *gVideoCurrFramebuffer; +u16 *gVideoLastFramebuffer; +u16 *gVideoCurrDepthBuffer; +u16 *gVideoLastDepthBuffer; +u8 D_801262E4; +s32 D_801262E8[8]; +u8 D_80126308; +u8 D_80126309; +s32 D_8012630C; +s32 D_80126310; + +/******************************/ + +extern OSViMode D_800E4620, D_800E4670, D_800E46C0, D_800E4760, D_800E4710, D_800E47B0; + +void set_video_mode_index(s32); +void init_vi_settings(void); +void init_framebuffer(s32); +void func_8007A974(void); +void swap_framebuffers(void); + +void init_video(s32 arg0, s32 arg1) { + if (osTvType == TV_TYPE_PAL) { + gVideoRefreshRate = REFRESH_50HZ; + gVideoAspectRatio = ASPECT_RATIO_PAL; + gVideoHeightRatio = HEIGHT_RATIO_PAL; + } else if (osTvType == TV_TYPE_MPAL) { + gVideoRefreshRate = REFRESH_60HZ; + gVideoAspectRatio = ASPECT_RATIO_MPAL; + gVideoHeightRatio = HEIGHT_RATIO_MPAL; + } else { + gVideoRefreshRate = REFRESH_60HZ; + gVideoAspectRatio = ASPECT_RATIO_NTSC; + gVideoHeightRatio = HEIGHT_RATIO_NTSC; + } + + if (osTvType == TV_TYPE_PAL) { + s32 i; + for(i = 0; i < 8; i++) { + gVideoModeResolutions[i].height += PAL_HEIGHT_DIFFERENCE; + } + } + + func_8007A974(); + set_video_mode_index(arg0); + gVideoFramebuffers[0] = 0; + gVideoFramebuffers[1] = 0; + init_framebuffer(0); + init_framebuffer(1); + gVideoCurrFbIndex = 1; + swap_framebuffers(); + osCreateMesgQueue(&D_801261A0, &D_80126180, 8); + osScAddClient(arg1, &D_80126310, &D_801261A0, 2); + init_vi_settings(); + D_801262D0 = 12; + osViBlack(1); + D_80126308 = 0; + D_801262E4 = 3; +} + +void set_video_mode_index(s32 arg0) { + gVideoModeIndex = arg0; +} + +/* Unused? */ +s32 get_video_mode_index(void) { + return gVideoModeIndex; +} + +/* Unused? */ +void set_video_width_and_height_from_index(s32 arg0) { + gVideoFbWidths[arg0] = gVideoModeResolutions[gVideoModeIndex & 0x07].width; + gVideoFbHeights[arg0] = gVideoModeResolutions[gVideoModeIndex & 0x07].height; +} + +s32 get_video_width_and_height_as_s32(void) { + return (gVideoFbHeights[gVideoCurrFbIndex] << 16) | gVideoFbWidths[gVideoCurrFbIndex]; +} + +void init_vi_settings(void) { + s32 viModeTableIndex; + OSViMode *tvViMode; + + viModeTableIndex = OS_VI_NTSC_LPN1; + if (osTvType == TV_TYPE_PAL) { + viModeTableIndex = OS_VI_PAL_LPN1; + } else if (osTvType == TV_TYPE_MPAL) { + viModeTableIndex = OS_VI_MPAL_LPN1; + } + + switch(gVideoModeIndex & 7) { + case 0: + stubbed_printf("320 by 240 Point sampled, Non interlaced.\n"); + osViSetMode(&osViModeTable[viModeTableIndex]); + break; + case 1: + stubbed_printf("320 by 240 Anti-aliased, Non interlaced.\n"); + tvViMode = &D_800E4620; + if (osTvType == TV_TYPE_PAL) { + tvViMode = &D_800E4670; + } else if (osTvType == TV_TYPE_MPAL) { + tvViMode = &D_800E46C0; + } + memory_copy(tvViMode, &D_80126260, sizeof(OSViMode)); + if (osTvType == TV_TYPE_PAL) { + D_80126260.fldRegs[0].vStart -= 0x180000; + D_80126260.fldRegs[1].vStart -= 0x180000; + D_80126260.fldRegs[0].vStart += 24; + D_80126260.fldRegs[1].vStart += 24; + } + osViSetMode(&D_80126260); + break; + case 2: + stubbed_printf("640 by 240 Point sampled, Non interlaced.\n"); + tvViMode = &D_800E4620; + if (osTvType == TV_TYPE_PAL) { + tvViMode = &D_800E4670; + } else if (osTvType == TV_TYPE_MPAL) { + tvViMode = &D_800E46C0; + } + + memory_copy(tvViMode, &D_80126260, sizeof(OSViMode)); + D_80126260.comRegs.width = 0x280; + D_80126260.comRegs.xScale = 0x400; + D_80126260.fldRegs[0].origin = 0x500; + D_80126260.fldRegs[1].origin = 0x500; + osViSetMode(&D_80126260); + break; + case 3: + stubbed_printf("640 by 240 Anti-aliased, Non interlaced.\n"); + tvViMode = &D_800E4710; + if (osTvType == TV_TYPE_PAL) { + tvViMode = &D_800E4760; + } else if (osTvType == TV_TYPE_MPAL) { + tvViMode = &D_800E47B0; + } + memory_copy(tvViMode, &D_80126260, sizeof(OSViMode)); + D_80126260.comRegs.width = 0x280; + D_80126260.comRegs.xScale = 0x400; + D_80126260.fldRegs[0].origin = 0x500; + D_80126260.fldRegs[1].origin = 0x500; + osViSetMode(&D_80126260); + break; + case 4: + stubbed_printf("640 by 480 Point sampled, Interlaced.\n"); + osViSetMode(&osViModeTable[viModeTableIndex + 8]); + break; + case 5: + stubbed_printf("640 by 480 Anti-aliased, Interlaced.\n"); + osViSetMode(&osViModeTable[viModeTableIndex + 10]); + break; + case 6: + stubbed_printf("640 by 480 Point sampled, Interlaced, De-flickered.\n"); + osViSetMode(&osViModeTable[viModeTableIndex + 9]); + break; + case 7: + stubbed_printf("640 by 480 Anti-aliased, Interlaced, De-flickered.\n"); + osViSetMode(&osViModeTable[viModeTableIndex + 11]); + break; + } + osViSetSpecialFeatures(OS_VI_DIVOT_ON); + osViSetSpecialFeatures(OS_VI_DITHER_FILTER_ON); + osViSetSpecialFeatures(OS_VI_GAMMA_OFF); +} + +void init_framebuffer(s32 arg0) { + if (gVideoFramebuffers[arg0] != 0) { + func_80071538(gVideoFramebuffers[arg0]); + free_from_memory_pool(gVideoFramebuffers[arg0]); + } + gVideoFbWidths[arg0] = gVideoModeResolutions[gVideoModeIndex & 7].width; + gVideoFbHeights[arg0] = gVideoModeResolutions[gVideoModeIndex & 7].height; + if (gVideoModeIndex >= 2) { + gVideoFramebuffers[arg0] = allocate_from_main_pool_safe((640 * 480 * 2) + 0x30, COLOR_TAG_WHITE); + gVideoFramebuffers[arg0] = ((s32)gVideoFramebuffers[arg0] + 0x3F) & ~0x3F; + if (gVideoDepthBuffer == NULL) { + gVideoDepthBuffer = allocate_from_main_pool_safe((640 * 480 * 2) + 0x30, COLOR_TAG_WHITE); + gVideoDepthBuffer = ((s32)gVideoDepthBuffer + 0x3F) & ~0x3F; + } + } else { + gVideoFramebuffers[arg0] = allocate_from_main_pool_safe((gVideoFbWidths[arg0] * gVideoFbHeights[arg0] * 2) + 0x30, COLOR_TAG_WHITE); + gVideoFramebuffers[arg0] = ((s32)gVideoFramebuffers[arg0] + 0x3F) & ~0x3F; + if (gVideoDepthBuffer == NULL) { + gVideoDepthBuffer = allocate_from_main_pool_safe((gVideoFbWidths[arg0] * gVideoFbHeights[arg0] * 2) + 0x30, COLOR_TAG_WHITE); + gVideoDepthBuffer = ((s32)gVideoDepthBuffer + 0x3F) & ~0x3F; + } + } + +} + +void func_8007A974(void) { + D_80126308 = 0; + D_80126309 = 2; +} + +#ifdef NON_MATCHING +// regalloc & stack issues +s32 func_8007A98C(s32 arg0) { + s32 s0; + + s0 = 1; + if (D_801262D0 != 0) { + D_801262D0--; + if (D_801262D0 == 0) { + osViBlack(0); + } + } + if (arg0 != 8) { + swap_framebuffers(); + } + while (osRecvMesg(&D_801261A0, NULL, 0) != -1) { + s0 += 1; + s0 &= 0xFF; + } + + if (s0 < D_80126309) { + if (D_80126308 < 0x14) { + D_80126308++; + } + if (D_80126308 == 0x14) { + D_80126309 = s0; + D_80126308 = 0; + } + } else { + D_80126308 = 0; + if ((D_80126309 >= s0) || (D_801262E4 > s0)) { + D_80126309 = s0; + } + } + while (s0 < D_80126309) { + osRecvMesg(&D_801261A0, NULL, 1); + s0 += 1; + s0 &= 0xFF; + } + osViSwapBuffer(gVideoLastFramebuffer); + osRecvMesg(&D_801261A0, NULL, 1); + return s0; +} +#else +GLOBAL_ASM("asm/non_matchings/video/func_8007A98C.s") +#endif + +void func_8007AB24(s8 arg0) { + D_801262E4 = arg0; +} + +// Unused? +s32 func_8007AB34(void) { + return (s32)((f32)gVideoRefreshRate / (f32)D_80126309); +} + +void swap_framebuffers(void) { + gVideoLastFramebuffer = gVideoFramebuffers[gVideoCurrFbIndex]; + gVideoLastDepthBuffer = gVideoDepthBuffer; + gVideoCurrFbIndex ^= 1; + gVideoCurrFramebuffer = gVideoFramebuffers[gVideoCurrFbIndex]; + gVideoCurrDepthBuffer = gVideoDepthBuffer; +} + +#ifdef NON_MATCHING +// regalloc issues +// They made their own (worse) version of memcpy, despite the fact that they already had bcopy? +void memory_copy(u8 *src, u8 *dst, s32 numBytes) { + s32 i; + for(i = 0; i < numBytes; i++){ + dst[i] = src[i]; + } +} +#else +GLOBAL_ASM("asm/non_matchings/video/memory_copy.s") +#endif + + diff --git a/src/video.h b/src/video.h new file mode 100644 index 00000000..62e4b445 --- /dev/null +++ b/src/video.h @@ -0,0 +1,38 @@ +#ifndef _UNKNOWN_07AF10_H_ +#define _UNKNOWN_07AF10_H_ + +#include "types.h" + +#define REFRESH_50HZ 50 +#define REFRESH_60HZ 60 + +#define LOW_RES_WIDTH 320.0f +#define LOW_RES_PAL_HEIGHT 264.0f +#define LOW_RES_NTSC_HEIGHT 240.0f +#define LOW_RES_MPAL_HEIGHT LOW_RES_NTSC_HEIGHT + +#define PAL_HEIGHT_DIFFERENCE 24 + +#define ASPECT_RATIO_PAL (LOW_RES_WIDTH / LOW_RES_PAL_HEIGHT) +#define ASPECT_RATIO_NTSC (LOW_RES_WIDTH / LOW_RES_NTSC_HEIGHT) +#define ASPECT_RATIO_MPAL (LOW_RES_WIDTH / LOW_RES_MPAL_HEIGHT) + +#define HEIGHT_RATIO_PAL (LOW_RES_PAL_HEIGHT / LOW_RES_NTSC_HEIGHT) +#define HEIGHT_RATIO_NTSC (LOW_RES_NTSC_HEIGHT / LOW_RES_NTSC_HEIGHT) +#define HEIGHT_RATIO_MPAL (LOW_RES_MPAL_HEIGHT / LOW_RES_NTSC_HEIGHT) + +extern u16 *gVideoDepthBuffer; +extern s32 D_800DE774; +extern s8 D_800DE778; + +/* Size: 0x08 bytes */ +typedef struct VideoModeResolution { + /* 0x00 */ s32 width; + /* 0x04 */ s32 height; +} VideoModeResolution; + +extern VideoModeResolution gVideoModeResolutions[8]; + +extern s32 D_800DE7BC; + +#endif