From 450e6222c3f0d912d3b7d3f4aff23f84470c598b Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Thu, 3 Sep 2020 23:12:02 +1000 Subject: [PATCH] Decompile func0f000920 --- src/game/data/data_000000.c | 2 +- src/game/dlights.c | 46 ++++++++++------------------- src/include/game/data/data_000000.h | 2 +- src/include/game/dlights.h | 2 +- 4 files changed, 19 insertions(+), 33 deletions(-) diff --git a/src/game/data/data_000000.c b/src/game/data/data_000000.c index f5e76aa8f..6baa5809a 100644 --- a/src/game/data/data_000000.c +++ b/src/game/data/data_000000.c @@ -6943,7 +6943,7 @@ struct var80061420 *var80061420 = NULL; u32 var80061424 = 0x00000000; u32 var80061428 = 0x00000000; u32 var8006142c = 0x00000000; -u32 var80061430 = 0x00000000; +u16 **var80061430 = NULL; u32 var80061434 = 0x00000000; u32 var80061438 = 0x00000000; u32 var8006143c = 0x42480000; diff --git a/src/game/dlights.c b/src/game/dlights.c index ab6d9a3a4..613a9f1a4 100644 --- a/src/game/dlights.c +++ b/src/game/dlights.c @@ -75,36 +75,22 @@ const char var7f1a7d10[] = "L2 -> Allocated %uK for the compressed acoustic shad const char var7f1a7d50[] = "L2(%d) -> "; const char var7f1a7d5c[] = "L2 -> Finished building portal range table\n"; -GLOBAL_ASM( -glabel func0f000920 -/* f000920: 10850014 */ beq $a0,$a1,.L0f000974 -/* f000924: 00001025 */ or $v0,$zero,$zero -/* f000928: 00a4082a */ slt $at,$a1,$a0 -/* f00092c: 10200003 */ beqz $at,.L0f00093c -/* f000930: 3c0e8006 */ lui $t6,%hi(var80061430) -/* f000934: 10000002 */ b .L0f000940 -/* f000938: 00801825 */ or $v1,$a0,$zero -.L0f00093c: -/* f00093c: 00a01825 */ or $v1,$a1,$zero -.L0f000940: -/* f000940: 0085082a */ slt $at,$a0,$a1 -/* f000944: 10200003 */ beqz $at,.L0f000954 -/* f000948: 00a03025 */ or $a2,$a1,$zero -/* f00094c: 10000001 */ b .L0f000954 -/* f000950: 00803025 */ or $a2,$a0,$zero -.L0f000954: -/* f000954: 8dce1430 */ lw $t6,%lo(var80061430)($t6) -/* f000958: 00037880 */ sll $t7,$v1,0x2 -/* f00095c: 00064040 */ sll $t0,$a2,0x1 -/* f000960: 01cfc021 */ addu $t8,$t6,$t7 -/* f000964: 8f190000 */ lw $t9,0x0($t8) -/* f000968: 03284821 */ addu $t1,$t9,$t0 -/* f00096c: 03e00008 */ jr $ra -/* f000970: 95220000 */ lhu $v0,0x0($t1) -.L0f000974: -/* f000974: 03e00008 */ jr $ra -/* f000978: 00000000 */ nop -); +/** + * These numbers are suspected to be portal indexes, based on the size of the + * array and the number of portals in CI Training. No idea what the returned + * values are though. + */ +s32 func0f000920(s32 num1, s32 num2) +{ + if (num1 != num2) { + s32 upper = (num1 > num2) ? num1 : num2; + s32 lower = (num1 < num2) ? num1 : num2; + + return var80061430[upper][lower]; + } + + return 0; +} struct light *roomGetLight(s32 roomnum, s32 lightnum) { diff --git a/src/include/game/data/data_000000.h b/src/include/game/data/data_000000.h index 91984d3a0..192d86db1 100644 --- a/src/include/game/data/data_000000.h +++ b/src/include/game/data/data_000000.h @@ -188,7 +188,7 @@ extern u32 var800613a0; extern struct var80061420 *var80061420; extern u32 var80061424; extern u32 var8006142c; -extern u32 var80061430; +extern u16 **var80061430; extern u32 var80061434; extern u32 var80061438; extern u32 var80061440; diff --git a/src/include/game/dlights.h b/src/include/game/dlights.h index 2c6e2eb74..2575b52d2 100644 --- a/src/include/game/dlights.h +++ b/src/include/game/dlights.h @@ -3,7 +3,7 @@ #include #include "types.h" -u32 func0f000920(void); +s32 func0f000920(s32 num1, s32 num2); struct light *roomGetLight(s32 roomnum, s32 lightnum); u8 func0f0009c0(s32 roomnum); u8 func0f000a10(s32 roomnum);