#include #include "constants.h" #include "game/data/data_000000.h" #include "game/data/data_0083d0.h" #include "game/data/data_00e460.h" #include "game/data/data_0160b0.h" #include "game/data/data_01a3a0.h" #include "game/data/data_020df0.h" #include "game/data/data_02da90.h" #include "game/pak/pak.h" #include "gvars/gvars.h" #include "lib/lib_04a80.h" #include "lib/main.h" #include "lib/lib_13900.h" #include "lib/lib_4f5e0.h" #include "types.h" const char var70054080[] = "joyReset\n"; const char var7005408c[] = "joyReset: doing nothing\n"; const char var700540a8[] = "debugjoy"; const char var700540b4[] = "JOY : g_EnableCyclicPolling=%d"; const char var700540d4[] = "JOY : g_JoyReCheckInterval=%d"; const char var700540f4[] = "JOY : g_JoyReCheckEventIn=%d"; const char var70054114[] = "JOY : g_JoyRecheckDone=%d"; const char var70054130[] = "osContStartReadData -> Failed - CONT_NO_RESPONSE_ERROR\n"; const char var70054168[] = "osContStartReadData -> Failed - CONT_OVERRUN_ERROR\n"; const char var7005419c[] = "joyTickRetrace:joy%derrno%d->%d\n"; const char var700541c0[] = "joyTickRetrace:joy%derrno%d->%d\n"; const u32 var700541e4[] = {0x700156a4}; const u32 var700541e8[] = {0x700156d8}; const u32 var700541ec[] = {0x700157a8}; const u32 var700541f0[] = {0x700157d8}; const u32 var700541f4[] = {0x7001581c}; const u32 var700541f8[] = {0x7001580c}; const u32 var700541fc[] = {0x00000000}; struct contdata *var8005ee60 = &var80099a60; bool g_ContBusy = false; u32 var8005ee68 = 0x00000000; u32 var8005ee6c[4] = {0}; u32 var8005ee7c[4] = {0}; u32 var8005ee8c[4] = {0}; u32 var8005ee9c[4] = {0}; u8 g_ConnectedControllers = 0; u32 var8005eeb0 = 0x00000000; bool var8005eeb4 = false; u32 var8005eeb8 = 0x00000001; u32 var8005eebc = 0x00000000; u32 var8005eec0 = 0x00000001; u32 var8005eec4 = 0x00000000; u32 var8005eec8 = 0x00000000; u32 var8005eecc = 0x00000000; u32 var8005eed0 = 0x00000000; u32 var8005eed4 = 0x00000000; u32 var8005eed8 = 0x00000000; u32 var8005eedc = 0x00000001; u32 var8005eee0 = 0x00000000; u32 var8005eee4 = 0xffffffff; u32 var8005eee8 = 0x00000000; u32 var8005eeec = 0x00000000; u32 var8005eef0 = 0x00000001; u32 var8005eef4 = 0x00000000; u32 var8005eef8 = 0x00000000; u32 var8005eefc = 0x00000000; u32 var8005ef00 = 0xff000000; u32 var8005ef04 = 0x00000000; u32 var8005ef08 = 0x00000000; GLOBAL_ASM( glabel func00013900 /* 13900: 3c0e8006 */ lui $t6,%hi(var8005eef0) /* 13904: 8dceeef0 */ lw $t6,%lo(var8005eef0)($t6) /* 13908: 27bdffe8 */ addiu $sp,$sp,-24 /* 1390c: afbf0014 */ sw $ra,0x14($sp) /* 13910: 51c00006 */ beqzl $t6,.L0001392c /* 13914: 8fbf0014 */ lw $ra,0x14($sp) /* 13918: 0c00543a */ jal func000150e8 /* 1391c: 00000000 */ nop /* 13920: 3c018006 */ lui $at,%hi(var8005eef0) /* 13924: ac20eef0 */ sw $zero,%lo(var8005eef0)($at) /* 13928: 8fbf0014 */ lw $ra,0x14($sp) .L0001392c: /* 1392c: 27bd0018 */ addiu $sp,$sp,0x18 /* 13930: 03e00008 */ jr $ra /* 13934: 00000000 */ nop ); GLOBAL_ASM( glabel func00013938 /* 13938: 3c0e8006 */ lui $t6,%hi(var8005eef0) /* 1393c: 8dceeef0 */ lw $t6,%lo(var8005eef0)($t6) /* 13940: 27bdffe8 */ addiu $sp,$sp,-24 /* 13944: afbf0014 */ sw $ra,0x14($sp) /* 13948: 55c00007 */ bnezl $t6,.L00013968 /* 1394c: 8fbf0014 */ lw $ra,0x14($sp) /* 13950: 0c005451 */ jal func00015144 /* 13954: 00000000 */ nop /* 13958: 240f0001 */ addiu $t7,$zero,0x1 /* 1395c: 3c018006 */ lui $at,%hi(var8005eef0) /* 13960: ac2feef0 */ sw $t7,%lo(var8005eef0)($at) /* 13964: 8fbf0014 */ lw $ra,0x14($sp) .L00013968: /* 13968: 27bd0018 */ addiu $sp,$sp,0x18 /* 1396c: 03e00008 */ jr $ra /* 13970: 00000000 */ nop ); GLOBAL_ASM( glabel func00013974 /* 13974: 3c018006 */ lui $at,%hi(var8005eeec) /* 13978: 03e00008 */ jr $ra /* 1397c: ac24eeec */ sw $a0,%lo(var8005eeec)($at) ); GLOBAL_ASM( glabel func00013980 /* 13980: 3c028006 */ lui $v0,%hi(var8005eeec) /* 13984: 03e00008 */ jr $ra /* 13988: 8c42eeec */ lw $v0,%lo(var8005eeec)($v0) ); GLOBAL_ASM( glabel func0001398c /* 1398c: 00047080 */ sll $t6,$a0,0x2 /* 13990: 01c47023 */ subu $t6,$t6,$a0 /* 13994: 000e7080 */ sll $t6,$t6,0x2 /* 13998: 01c47023 */ subu $t6,$t6,$a0 /* 1399c: 000e7080 */ sll $t6,$t6,0x2 /* 139a0: 01c47023 */ subu $t6,$t6,$a0 /* 139a4: 000e7140 */ sll $t6,$t6,0x5 /* 139a8: 3c028006 */ lui $v0,%hi(var8005eee0) /* 139ac: 01c47023 */ subu $t6,$t6,$a0 /* 139b0: 2442eee0 */ addiu $v0,$v0,%lo(var8005eee0) /* 139b4: 000e70c0 */ sll $t6,$t6,0x3 /* 139b8: ac4e0000 */ sw $t6,0x0($v0) /* 139bc: 3c018006 */ lui $at,%hi(var8005eee4) /* 139c0: 03e00008 */ jr $ra /* 139c4: ac2eeee4 */ sw $t6,%lo(var8005eee4)($at) ); GLOBAL_ASM( glabel func000139c8 /* 139c8: 27bdffe8 */ addiu $sp,$sp,-24 /* 139cc: afbf0014 */ sw $ra,0x14($sp) /* 139d0: 0c004e63 */ jal func0001398c /* 139d4: 2404000a */ addiu $a0,$zero,0xa /* 139d8: 8fbf0014 */ lw $ra,0x14($sp) /* 139dc: 27bd0018 */ addiu $sp,$sp,0x18 /* 139e0: 03e00008 */ jr $ra /* 139e4: 00000000 */ nop ); GLOBAL_ASM( glabel func000139e8 /* 139e8: 3c068006 */ lui $a2,%hi(var8005eecc) /* 139ec: 24c6eecc */ addiu $a2,$a2,%lo(var8005eecc) /* 139f0: 8cc20000 */ lw $v0,0x0($a2) /* 139f4: 00001825 */ or $v1,$zero,$zero /* 139f8: 1040000f */ beqz $v0,.L00013a38 /* 139fc: 28410002 */ slti $at,$v0,0x2 /* 13a00: 3c03800a */ lui $v1,%hi(var80099f48) /* 13a04: 1420000c */ bnez $at,.L00013a38 /* 13a08: 90639f48 */ lbu $v1,%lo(var80099f48)($v1) /* 13a0c: 18400009 */ blez $v0,.L00013a34 /* 13a10: 2458ffff */ addiu $t8,$v0,-1 /* 13a14: 3c0e800a */ lui $t6,%hi(var80099f48) /* 13a18: 25c49f48 */ addiu $a0,$t6,%lo(var80099f48) /* 13a1c: 00442821 */ addu $a1,$v0,$a0 .L00013a20: /* 13a20: 908f0001 */ lbu $t7,0x1($a0) /* 13a24: 24840001 */ addiu $a0,$a0,0x1 /* 13a28: 0085082b */ sltu $at,$a0,$a1 /* 13a2c: 1420fffc */ bnez $at,.L00013a20 /* 13a30: a08fffff */ sb $t7,-0x1($a0) .L00013a34: /* 13a34: acd80000 */ sw $t8,0x0($a2) .L00013a38: /* 13a38: 03e00008 */ jr $ra /* 13a3c: 00601025 */ or $v0,$v1,$zero ); GLOBAL_ASM( glabel func00013a40 /* 13a40: 3c028006 */ lui $v0,%hi(var8005eecc) /* 13a44: 8c42eecc */ lw $v0,%lo(var8005eecc)($v0) /* 13a48: 27bdffe8 */ addiu $sp,$sp,-24 /* 13a4c: afa40018 */ sw $a0,0x18($sp) /* 13a50: 244f0001 */ addiu $t7,$v0,0x1 /* 13a54: 308e00ff */ andi $t6,$a0,0xff /* 13a58: 29e10064 */ slti $at,$t7,0x64 /* 13a5c: 01c02025 */ or $a0,$t6,$zero /* 13a60: 14200006 */ bnez $at,.L00013a7c /* 13a64: afbf0014 */ sw $ra,0x14($sp) /* 13a68: 0c004e7a */ jal func000139e8 /* 13a6c: a3ae001b */ sb $t6,0x1b($sp) /* 13a70: 3c028006 */ lui $v0,%hi(var8005eecc) /* 13a74: 8c42eecc */ lw $v0,%lo(var8005eecc)($v0) /* 13a78: 93a4001b */ lbu $a0,0x1b($sp) .L00013a7c: /* 13a7c: 10400004 */ beqz $v0,.L00013a90 /* 13a80: 3c18800a */ lui $t8,%hi(var80099f44+0x3) /* 13a84: 0302c021 */ addu $t8,$t8,$v0 /* 13a88: 93189f47 */ lbu $t8,%lo(var80099f44+0x3)($t8) /* 13a8c: 10980006 */ beq $a0,$t8,.L00013aa8 .L00013a90: /* 13a90: 3c01800a */ lui $at,%hi(var80099f48) /* 13a94: 00220821 */ addu $at,$at,$v0 /* 13a98: a0249f48 */ sb $a0,%lo(var80099f48)($at) /* 13a9c: 3c018006 */ lui $at,%hi(var8005eecc) /* 13aa0: 24590001 */ addiu $t9,$v0,0x1 /* 13aa4: ac39eecc */ sw $t9,%lo(var8005eecc)($at) .L00013aa8: /* 13aa8: 8fbf0014 */ lw $ra,0x14($sp) /* 13aac: 27bd0018 */ addiu $sp,$sp,0x18 /* 13ab0: 03e00008 */ jr $ra /* 13ab4: 00000000 */ nop ); GLOBAL_ASM( glabel func00013ab8 /* 13ab8: 3c0e8006 */ lui $t6,%hi(var8005eedc) /* 13abc: 8dceeedc */ lw $t6,%lo(var8005eedc)($t6) /* 13ac0: 27bdffd0 */ addiu $sp,$sp,-48 /* 13ac4: afbf0014 */ sw $ra,0x14($sp) /* 13ac8: 11c0005c */ beqz $t6,.L00013c3c /* 13acc: 00803825 */ or $a3,$a0,$zero /* 13ad0: 24010002 */ addiu $at,$zero,0x2 /* 13ad4: 10810010 */ beq $a0,$at,.L00013b18 /* 13ad8: 3c0f8006 */ lui $t7,%hi(var8005eee0) /* 13adc: 8defeee0 */ lw $t7,%lo(var8005eee0)($t7) /* 13ae0: 51e00057 */ beqzl $t7,.L00013c40 /* 13ae4: 8fbf0014 */ lw $ra,0x14($sp) /* 13ae8: 1480000b */ bnez $a0,.L00013b18 /* 13aec: 3c188006 */ lui $t8,%hi(var8005eebc) /* 13af0: 8f18eebc */ lw $t8,%lo(var8005eebc)($t8) /* 13af4: 3c198006 */ lui $t9,%hi(var8005eef0) /* 13af8: 3c088006 */ lui $t0,%hi(var8005eeec) /* 13afc: 13000004 */ beqz $t8,.L00013b10 /* 13b00: 00000000 */ nop /* 13b04: 8f39eef0 */ lw $t9,%lo(var8005eef0)($t9) /* 13b08: 5720004d */ bnezl $t9,.L00013c40 /* 13b0c: 8fbf0014 */ lw $ra,0x14($sp) .L00013b10: /* 13b10: 8d08eeec */ lw $t0,%lo(var8005eeec)($t0) /* 13b14: 11000049 */ beqz $t0,.L00013c3c .L00013b18: /* 13b18: 3c098006 */ lui $t1,%hi(var8005eefc) /* 13b1c: 8d29eefc */ lw $t1,%lo(var8005eefc)($t1) /* 13b20: 240a0001 */ addiu $t2,$zero,0x1 /* 13b24: 3c018006 */ lui $at,%hi(var8005eefc) /* 13b28: 15200044 */ bnez $t1,.L00013c3c /* 13b2c: 3c0b8006 */ lui $t3,%hi(var8005eef4) /* 13b30: 8d6beef4 */ lw $t3,%lo(var8005eef4)($t3) /* 13b34: ac2aeefc */ sw $t2,%lo(var8005eefc)($at) /* 13b38: 3c018006 */ lui $at,%hi(var8005eef8) /* 13b3c: afa70030 */ sw $a3,0x30($sp) /* 13b40: 0c012144 */ jal osGetCount /* 13b44: ac2beef8 */ sw $t3,%lo(var8005eef8)($at) /* 13b48: 3c0c8006 */ lui $t4,%hi(var8005eef8) /* 13b4c: 8d8ceef8 */ lw $t4,%lo(var8005eef8)($t4) /* 13b50: 3c068006 */ lui $a2,%hi(var8005eee0) /* 13b54: 8cc6eee0 */ lw $a2,%lo(var8005eee0)($a2) /* 13b58: 3c018006 */ lui $at,%hi(var8005eef4) /* 13b5c: 004c1823 */ subu $v1,$v0,$t4 /* 13b60: ac22eef4 */ sw $v0,%lo(var8005eef4)($at) /* 13b64: 00032202 */ srl $a0,$v1,0x8 /* 13b68: 00062840 */ sll $a1,$a2,0x1 /* 13b6c: 00a4082b */ sltu $at,$a1,$a0 /* 13b70: 10200002 */ beqz $at,.L00013b7c /* 13b74: 8fa70030 */ lw $a3,0x30($sp) /* 13b78: 00a02025 */ or $a0,$a1,$zero .L00013b7c: /* 13b7c: 3c038006 */ lui $v1,%hi(var8005eee4) /* 13b80: 2463eee4 */ addiu $v1,$v1,%lo(var8005eee4) /* 13b84: 8c6e0000 */ lw $t6,0x0($v1) /* 13b88: 24010002 */ addiu $at,$zero,0x2 /* 13b8c: 3c028006 */ lui $v0,%hi(var8005eee8) /* 13b90: 01c47823 */ subu $t7,$t6,$a0 /* 13b94: 05e00009 */ bltz $t7,.L00013bbc /* 13b98: ac6f0000 */ sw $t7,0x0($v1) /* 13b9c: 10e10007 */ beq $a3,$at,.L00013bbc /* 13ba0: 24010001 */ addiu $at,$zero,0x1 /* 13ba4: 14e10023 */ bne $a3,$at,.L00013c34 /* 13ba8: 00000000 */ nop /* 13bac: 05e10021 */ bgez $t7,.L00013c34 /* 13bb0: 000fc023 */ negu $t8,$t7 /* 13bb4: 00d8082a */ slt $at,$a2,$t8 /* 13bb8: 1020001e */ beqz $at,.L00013c34 .L00013bbc: /* 13bbc: 2442eee8 */ addiu $v0,$v0,%lo(var8005eee8) /* 13bc0: 8c590000 */ lw $t9,0x0($v0) /* 13bc4: a3a00027 */ sb $zero,0x27($sp) /* 13bc8: 27280001 */ addiu $t0,$t9,0x1 /* 13bcc: 10e00004 */ beqz $a3,.L00013be0 /* 13bd0: ac480000 */ sw $t0,0x0($v0) /* 13bd4: 0c00543a */ jal func000150e8 /* 13bd8: afa70030 */ sw $a3,0x30($sp) /* 13bdc: 8fa70030 */ lw $a3,0x30($sp) .L00013be0: /* 13be0: 3c04800a */ lui $a0,%hi(var80099e78) /* 13be4: 24849e78 */ addiu $a0,$a0,%lo(var80099e78) /* 13be8: 27a50027 */ addiu $a1,$sp,0x27 /* 13bec: 0c0015dc */ jal osPfsIsPlug /* 13bf0: afa70030 */ sw $a3,0x30($sp) /* 13bf4: 8fa70030 */ lw $a3,0x30($sp) /* 13bf8: 50e00005 */ beqzl $a3,.L00013c10 /* 13bfc: 93a40027 */ lbu $a0,0x27($sp) /* 13c00: 0c005451 */ jal func00015144 /* 13c04: afa70030 */ sw $a3,0x30($sp) /* 13c08: 8fa70030 */ lw $a3,0x30($sp) /* 13c0c: 93a40027 */ lbu $a0,0x27($sp) .L00013c10: /* 13c10: afa70030 */ sw $a3,0x30($sp) /* 13c14: 34890010 */ ori $t1,$a0,0x10 /* 13c18: 312400ff */ andi $a0,$t1,0xff /* 13c1c: 0c004e90 */ jal func00013a40 /* 13c20: a3a40027 */ sb $a0,0x27($sp) /* 13c24: 3c0b8006 */ lui $t3,%hi(var8005eee0) /* 13c28: 8d6beee0 */ lw $t3,%lo(var8005eee0)($t3) /* 13c2c: 3c018006 */ lui $at,%hi(var8005eee4) /* 13c30: ac2beee4 */ sw $t3,%lo(var8005eee4)($at) .L00013c34: /* 13c34: 3c018006 */ lui $at,%hi(var8005eefc) /* 13c38: ac20eefc */ sw $zero,%lo(var8005eefc)($at) .L00013c3c: /* 13c3c: 8fbf0014 */ lw $ra,0x14($sp) .L00013c40: /* 13c40: 27bd0030 */ addiu $sp,$sp,0x30 /* 13c44: 03e00008 */ jr $ra /* 13c48: 00000000 */ nop ); GLOBAL_ASM( glabel func00013c4c /* 13c4c: 00042e00 */ sll $a1,$a0,0x18 /* 13c50: 3c0f8006 */ lui $t7,%hi(var8005eed8) /* 13c54: 91efeed8 */ lbu $t7,%lo(var8005eed8)($t7) /* 13c58: 00057603 */ sra $t6,$a1,0x18 /* 13c5c: 24180001 */ addiu $t8,$zero,0x1 /* 13c60: 27bdffe8 */ addiu $sp,$sp,-24 /* 13c64: 01d8c804 */ sllv $t9,$t8,$t6 /* 13c68: afa40018 */ sw $a0,0x18($sp) /* 13c6c: 03204027 */ nor $t0,$t9,$zero /* 13c70: 01e82024 */ and $a0,$t7,$t0 /* 13c74: afbf0014 */ sw $ra,0x14($sp) /* 13c78: 308900ff */ andi $t1,$a0,0xff /* 13c7c: 0c004e90 */ jal func00013a40 /* 13c80: 01202025 */ or $a0,$t1,$zero /* 13c84: 8fbf0014 */ lw $ra,0x14($sp) /* 13c88: 27bd0018 */ addiu $sp,$sp,0x18 /* 13c8c: 03e00008 */ jr $ra /* 13c90: 00000000 */ nop ); GLOBAL_ASM( glabel func00013c94 /* 13c94: 27bdffe8 */ addiu $sp,$sp,-24 /* 13c98: afbf0014 */ sw $ra,0x14($sp) /* 13c9c: 3c04800a */ lui $a0,%hi(var80099ec0) /* 13ca0: 3c05800a */ lui $a1,%hi(var80099eb8) /* 13ca4: 24a59eb8 */ addiu $a1,$a1,%lo(var80099eb8) /* 13ca8: 24849ec0 */ addiu $a0,$a0,%lo(var80099ec0) /* 13cac: 0c0120d0 */ jal osCreateMesgQueue /* 13cb0: 24060001 */ addiu $a2,$zero,0x1 /* 13cb4: 3c04800a */ lui $a0,%hi(var80099ee0) /* 13cb8: 3c05800a */ lui $a1,%hi(var80099ed8) /* 13cbc: 24a59ed8 */ addiu $a1,$a1,%lo(var80099ed8) /* 13cc0: 24849ee0 */ addiu $a0,$a0,%lo(var80099ee0) /* 13cc4: 0c0120d0 */ jal osCreateMesgQueue /* 13cc8: 24060001 */ addiu $a2,$zero,0x1 /* 13ccc: 3c04800a */ lui $a0,%hi(var80099f00) /* 13cd0: 3c05800a */ lui $a1,%hi(var80099ef8) /* 13cd4: 24a59ef8 */ addiu $a1,$a1,%lo(var80099ef8) /* 13cd8: 24849f00 */ addiu $a0,$a0,%lo(var80099f00) /* 13cdc: 0c0120d0 */ jal osCreateMesgQueue /* 13ce0: 24060001 */ addiu $a2,$zero,0x1 /* 13ce4: 3c04800a */ lui $a0,%hi(var80099f20) /* 13ce8: 3c05800a */ lui $a1,%hi(var80099f18) /* 13cec: 24a59f18 */ addiu $a1,$a1,%lo(var80099f18) /* 13cf0: 24849f20 */ addiu $a0,$a0,%lo(var80099f20) /* 13cf4: 0c0120d0 */ jal osCreateMesgQueue /* 13cf8: 24060001 */ addiu $a2,$zero,0x1 /* 13cfc: 3c04800a */ lui $a0,%hi(var80099e78) /* 13d00: 3c05800a */ lui $a1,%hi(var80099e90) /* 13d04: 24a59e90 */ addiu $a1,$a1,%lo(var80099e90) /* 13d08: 24849e78 */ addiu $a0,$a0,%lo(var80099e78) /* 13d0c: 0c0120d0 */ jal osCreateMesgQueue /* 13d10: 2406000a */ addiu $a2,$zero,0xa /* 13d14: 3c05800a */ lui $a1,%hi(var80099e78) /* 13d18: 24a59e78 */ addiu $a1,$a1,%lo(var80099e78) /* 13d1c: 24040005 */ addiu $a0,$zero,0x5 /* 13d20: 0c012148 */ jal osSetEventMesg /* 13d24: 00003025 */ or $a2,$zero,$zero /* 13d28: 240e0001 */ addiu $t6,$zero,0x1 /* 13d2c: 3c018006 */ lui $at,%hi(var8005eeb0) /* 13d30: ac2eeeb0 */ sw $t6,%lo(var8005eeb0)($at) /* 13d34: 3c018006 */ lui $at,%hi(var8005eec4) /* 13d38: ac20eec4 */ sw $zero,%lo(var8005eec4)($at) /* 13d3c: 3c0f800a */ lui $t7,%hi(var80099a60) /* 13d40: 3c018006 */ lui $at,%hi(var8005eec8) /* 13d44: 25e69a60 */ addiu $a2,$t7,%lo(var80099a60) /* 13d48: 3c08800a */ lui $t0,%hi(var80099e68) /* 13d4c: ac20eec8 */ sw $zero,%lo(var8005eec8)($at) /* 13d50: 25089e68 */ addiu $t0,$t0,%lo(var80099e68) /* 13d54: 00c02825 */ or $a1,$a2,$zero /* 13d58: 2407ffff */ addiu $a3,$zero,-1 /* 13d5c: 24040004 */ addiu $a0,$zero,0x4 .L00013d60: /* 13d60: aca001e0 */ sw $zero,0x1e0($a1) /* 13d64: aca001e4 */ sw $zero,0x1e4($a1) /* 13d68: aca001e8 */ sw $zero,0x1e8($a1) /* 13d6c: aca001ec */ sw $zero,0x1ec($a1) /* 13d70: aca70200 */ sw $a3,0x200($a1) /* 13d74: 00001825 */ or $v1,$zero,$zero /* 13d78: 00c01025 */ or $v0,$a2,$zero .L00013d7c: /* 13d7c: 24630001 */ addiu $v1,$v1,0x1 /* 13d80: 24420006 */ addiu $v0,$v0,0x6 /* 13d84: a440fffa */ sh $zero,-0x6($v0) /* 13d88: a040fffc */ sb $zero,-0x4($v0) /* 13d8c: a040fffd */ sb $zero,-0x3($v0) /* 13d90: 1464fffa */ bne $v1,$a0,.L00013d7c /* 13d94: a040fffe */ sb $zero,-0x2($v0) /* 13d98: 24c60204 */ addiu $a2,$a2,0x204 /* 13d9c: 00c8082b */ sltu $at,$a2,$t0 /* 13da0: 1420ffef */ bnez $at,.L00013d60 /* 13da4: 24a50204 */ addiu $a1,$a1,0x204 /* 13da8: 3c02800a */ lui $v0,%hi(var80099e68) /* 13dac: 3c03800a */ lui $v1,%hi(var80099e78) /* 13db0: 24639e78 */ addiu $v1,$v1,%lo(var80099e78) /* 13db4: 24429e68 */ addiu $v0,$v0,%lo(var80099e68) .L00013db8: /* 13db8: 24420004 */ addiu $v0,$v0,0x4 /* 13dbc: 1443fffe */ bne $v0,$v1,.L00013db8 /* 13dc0: ac40fffc */ sw $zero,-0x4($v0) /* 13dc4: 8fbf0014 */ lw $ra,0x14($sp) /* 13dc8: 27bd0018 */ addiu $sp,$sp,0x18 /* 13dcc: 03e00008 */ jr $ra /* 13dd0: 00000000 */ nop ); GLOBAL_ASM( glabel func00013dd4 /* 13dd4: 3c03800a */ lui $v1,%hi(var80099e68) /* 13dd8: 3c04800a */ lui $a0,%hi(var80099e78) /* 13ddc: 24849e78 */ addiu $a0,$a0,%lo(var80099e78) /* 13de0: 24639e68 */ addiu $v1,$v1,%lo(var80099e68) /* 13de4: 2402003c */ addiu $v0,$zero,0x3c .L00013de8: /* 13de8: 24630004 */ addiu $v1,$v1,0x4 /* 13dec: 1464fffe */ bne $v1,$a0,.L00013de8 /* 13df0: ac62fffc */ sw $v0,-0x4($v1) /* 13df4: 03e00008 */ jr $ra /* 13df8: 00000000 */ nop ); GLOBAL_ASM( glabel func00013dfc /* 13dfc: 3c0e8006 */ lui $t6,%hi(var8005eeb0) /* 13e00: 8dceeeb0 */ lw $t6,%lo(var8005eeb0)($t6) /* 13e04: 27bdffe0 */ addiu $sp,$sp,-32 /* 13e08: afbf0014 */ sw $ra,0x14($sp) /* 13e0c: 11c00019 */ beqz $t6,.L00013e74 /* 13e10: 3c04800a */ lui $a0,%hi(var80099ec0) /* 13e14: 24849ec0 */ addiu $a0,$a0,%lo(var80099ec0) /* 13e18: 27a5001c */ addiu $a1,$sp,0x1c /* 13e1c: 0c012238 */ jal osSendMesg /* 13e20: 00003025 */ or $a2,$zero,$zero /* 13e24: 3c04800a */ lui $a0,%hi(var80099ee0) /* 13e28: 24849ee0 */ addiu $a0,$a0,%lo(var80099ee0) /* 13e2c: 27a5001c */ addiu $a1,$sp,0x1c /* 13e30: 0c0121bc */ jal osRecvMesg /* 13e34: 24060001 */ addiu $a2,$zero,0x1 /* 13e38: 0c004fa1 */ jal func00013e84 /* 13e3c: 00000000 */ nop /* 13e40: 3c04800a */ lui $a0,%hi(var80099f00) /* 13e44: 24849f00 */ addiu $a0,$a0,%lo(var80099f00) /* 13e48: 27a5001c */ addiu $a1,$sp,0x1c /* 13e4c: 0c012238 */ jal osSendMesg /* 13e50: 00003025 */ or $a2,$zero,$zero /* 13e54: 3c04800a */ lui $a0,%hi(var80099f20) /* 13e58: 24849f20 */ addiu $a0,$a0,%lo(var80099f20) /* 13e5c: 27a5001c */ addiu $a1,$sp,0x1c /* 13e60: 0c0121bc */ jal osRecvMesg /* 13e64: 24060001 */ addiu $a2,$zero,0x1 /* 13e68: 240f0001 */ addiu $t7,$zero,0x1 /* 13e6c: 3c018006 */ lui $at,%hi(var8005eec0) /* 13e70: ac2feec0 */ sw $t7,%lo(var8005eec0)($at) .L00013e74: /* 13e74: 8fbf0014 */ lw $ra,0x14($sp) /* 13e78: 27bd0020 */ addiu $sp,$sp,0x20 /* 13e7c: 03e00008 */ jr $ra /* 13e80: 00000000 */ nop ); GLOBAL_ASM( glabel func00013e84 /* 13e84: 3c028006 */ lui $v0,%hi(var8005eeb8) /* 13e88: 2442eeb8 */ addiu $v0,$v0,%lo(var8005eeb8) /* 13e8c: 8c4e0000 */ lw $t6,0x0($v0) /* 13e90: 27bdffe0 */ addiu $sp,$sp,-32 /* 13e94: afbf001c */ sw $ra,0x1c($sp) /* 13e98: afb10018 */ sw $s1,0x18($sp) /* 13e9c: 11c00018 */ beqz $t6,.L00013f00 /* 13ea0: afb00014 */ sw $s0,0x14($sp) /* 13ea4: 3c11800a */ lui $s1,%hi(var80099e78) /* 13ea8: 3c058006 */ lui $a1,%hi(g_ConnectedControllers) /* 13eac: 3c06800a */ lui $a2,%hi(var80099f38) /* 13eb0: 26249e78 */ addiu $a0,$s1,%lo(var80099e78) /* 13eb4: ac400000 */ sw $zero,0x0($v0) /* 13eb8: 24c69f38 */ addiu $a2,$a2,%lo(var80099f38) /* 13ebc: 0c012a60 */ jal osContInit /* 13ec0: 24a5eeac */ addiu $a1,$a1,%lo(g_ConnectedControllers) /* 13ec4: 240f0001 */ addiu $t7,$zero,0x1 /* 13ec8: 3c018006 */ lui $at,%hi(var8005eeb4) /* 13ecc: ac2feeb4 */ sw $t7,%lo(var8005eeb4)($at) /* 13ed0: 00008025 */ or $s0,$zero,$zero /* 13ed4: 24110004 */ addiu $s1,$zero,0x4 /* 13ed8: 00102600 */ sll $a0,$s0,0x18 .L00013edc: /* 13edc: 0004c603 */ sra $t8,$a0,0x18 /* 13ee0: 03002025 */ or $a0,$t8,$zero /* 13ee4: 0c0054f1 */ jal func000153c4 /* 13ee8: 00002825 */ or $a1,$zero,$zero /* 13eec: 26100001 */ addiu $s0,$s0,0x1 /* 13ef0: 5611fffa */ bnel $s0,$s1,.L00013edc /* 13ef4: 00102600 */ sll $a0,$s0,0x18 /* 13ef8: 1000001d */ b .L00013f70 /* 13efc: 00000000 */ nop .L00013f00: /* 13f00: 3c11800a */ lui $s1,%hi(var80099e78) /* 13f04: 26319e78 */ addiu $s1,$s1,%lo(var80099e78) /* 13f08: 2410000f */ addiu $s0,$zero,0xf /* 13f0c: 0c013cd4 */ jal osContStartQuery /* 13f10: 02202025 */ or $a0,$s1,$zero /* 13f14: 02202025 */ or $a0,$s1,$zero /* 13f18: 00002825 */ or $a1,$zero,$zero /* 13f1c: 0c0121bc */ jal osRecvMesg /* 13f20: 24060001 */ addiu $a2,$zero,0x1 /* 13f24: 3c04800a */ lui $a0,%hi(var80099f38) /* 13f28: 0c013cf5 */ jal osContGetQuery /* 13f2c: 24849f38 */ addiu $a0,$a0,%lo(var80099f38) /* 13f30: 3c03800a */ lui $v1,%hi(var80099f38) /* 13f34: 24639f38 */ addiu $v1,$v1,%lo(var80099f38) /* 13f38: 00001025 */ or $v0,$zero,$zero /* 13f3c: 24110004 */ addiu $s1,$zero,0x4 .L00013f40: /* 13f40: 90790003 */ lbu $t9,0x3($v1) /* 13f44: 24090001 */ addiu $t1,$zero,0x1 /* 13f48: 00495004 */ sllv $t2,$t1,$v0 /* 13f4c: 33280008 */ andi $t0,$t9,0x8 /* 13f50: 51000003 */ beqzl $t0,.L00013f60 /* 13f54: 24420001 */ addiu $v0,$v0,0x1 /* 13f58: 020a8023 */ subu $s0,$s0,$t2 /* 13f5c: 24420001 */ addiu $v0,$v0,0x1 .L00013f60: /* 13f60: 1451fff7 */ bne $v0,$s1,.L00013f40 /* 13f64: 24630004 */ addiu $v1,$v1,0x4 /* 13f68: 3c018006 */ lui $at,%hi(g_ConnectedControllers) /* 13f6c: a030eeac */ sb $s0,%lo(g_ConnectedControllers)($at) .L00013f70: /* 13f70: 3c068006 */ lui $a2,%hi(g_ConnectedControllers) /* 13f74: 3c0b8006 */ lui $t3,%hi(var8005ef00) /* 13f78: 916bef00 */ lbu $t3,%lo(var8005ef00)($t3) /* 13f7c: 90c6eeac */ lbu $a2,%lo(g_ConnectedControllers)($a2) /* 13f80: 00001025 */ or $v0,$zero,$zero /* 13f84: 00001825 */ or $v1,$zero,$zero /* 13f88: 10cb000f */ beq $a2,$t3,.L00013fc8 /* 13f8c: 00c02025 */ or $a0,$a2,$zero /* 13f90: 3c05800a */ lui $a1,%hi(g_Vars) /* 13f94: 24a59fc0 */ addiu $a1,$a1,%lo(g_Vars) /* 13f98: 240c0001 */ addiu $t4,$zero,0x1 .L00013f9c: /* 13f9c: 004c6804 */ sllv $t5,$t4,$v0 /* 13fa0: 008d7024 */ and $t6,$a0,$t5 /* 13fa4: 11c00003 */ beqz $t6,.L00013fb4 /* 13fa8: 00a37821 */ addu $t7,$a1,$v1 /* 13fac: a1e204dc */ sb $v0,0x4dc($t7) /* 13fb0: 24630001 */ addiu $v1,$v1,0x1 .L00013fb4: /* 13fb4: 24420001 */ addiu $v0,$v0,0x1 /* 13fb8: 5451fff8 */ bnel $v0,$s1,.L00013f9c /* 13fbc: 240c0001 */ addiu $t4,$zero,0x1 /* 13fc0: 3c018006 */ lui $at,%hi(var8005ef00) /* 13fc4: a026ef00 */ sb $a2,%lo(var8005ef00)($at) .L00013fc8: /* 13fc8: 8fbf001c */ lw $ra,0x1c($sp) /* 13fcc: 8fb00014 */ lw $s0,0x14($sp) /* 13fd0: 8fb10018 */ lw $s1,0x18($sp) /* 13fd4: 03e00008 */ jr $ra /* 13fd8: 27bd0020 */ addiu $sp,$sp,0x20 ); s8 contGetFreeSlot(void) { s32 i; if (var8005ee60->unk200 >= 0) { return var8005ee60->unk200; } for (i = 0; i < 4; i++) { if ((g_ConnectedControllers & (1 << i)) == 0) { return i; } } return 4; } u32 contGetConnectedControllers(void) { return g_ConnectedControllers; } GLOBAL_ASM( glabel func00014058 /* 14058: 27bdfff8 */ addiu $sp,$sp,-8 /* 1405c: afb00004 */ sw $s0,0x4($sp) /* 14060: 8c8e01e0 */ lw $t6,0x1e0($a0) /* 14064: 8c8f01e8 */ lw $t7,0x1e8($a0) /* 14068: 24100014 */ addiu $s0,$zero,0x14 /* 1406c: 00001025 */ or $v0,$zero,$zero /* 14070: ac8e01e4 */ sw $t6,0x1e4($a0) /* 14074: ac8f01e0 */ sw $t7,0x1e0($a0) /* 14078: 0002c040 */ sll $t8,$v0,0x1 .L0001407c: /* 1407c: 00981821 */ addu $v1,$a0,$t8 /* 14080: a46001f0 */ sh $zero,0x1f0($v1) /* 14084: a46001f8 */ sh $zero,0x1f8($v1) /* 14088: 8c9901e0 */ lw $t9,0x1e0($a0) /* 1408c: 8c8501e4 */ lw $a1,0x1e4($a0) /* 14090: 3c18800a */ lui $t8,%hi(var80099e68) /* 14094: 27189e68 */ addiu $t8,$t8,%lo(var80099e68) /* 14098: 10b9005e */ beq $a1,$t9,.L00014214 /* 1409c: 24ae0001 */ addiu $t6,$a1,0x1 /* 140a0: 01d0001a */ div $zero,$t6,$s0 /* 140a4: 00023880 */ sll $a3,$v0,0x2 /* 140a8: 00003010 */ mfhi $a2 /* 140ac: 00e23823 */ subu $a3,$a3,$v0 /* 140b0: 00027880 */ sll $t7,$v0,0x2 /* 140b4: 01f86021 */ addu $t4,$t7,$t8 /* 140b8: 00073840 */ sll $a3,$a3,0x1 /* 140bc: 16000002 */ bnez $s0,.L000140c8 /* 140c0: 00000000 */ nop /* 140c4: 0007000d */ break 0x7 .L000140c8: /* 140c8: 2401ffff */ addiu $at,$zero,-1 /* 140cc: 16010004 */ bne $s0,$at,.L000140e0 /* 140d0: 3c018000 */ lui $at,0x8000 /* 140d4: 15c10002 */ bne $t6,$at,.L000140e0 /* 140d8: 00000000 */ nop /* 140dc: 0006000d */ break 0x6 .L000140e0: /* 140e0: 24cf0013 */ addiu $t7,$a2,0x13 .L000140e4: /* 140e4: 01f0001a */ div $zero,$t7,$s0 /* 140e8: 0006c880 */ sll $t9,$a2,0x2 /* 140ec: 0326c823 */ subu $t9,$t9,$a2 /* 140f0: 0019c8c0 */ sll $t9,$t9,0x3 /* 140f4: 00997021 */ addu $t6,$a0,$t9 /* 140f8: 0000c010 */ mfhi $t8 /* 140fc: 0018c880 */ sll $t9,$t8,0x2 /* 14100: 0338c823 */ subu $t9,$t9,$t8 /* 14104: 01c74021 */ addu $t0,$t6,$a3 /* 14108: 0019c8c0 */ sll $t9,$t9,0x3 /* 1410c: 00997021 */ addu $t6,$a0,$t9 /* 14110: 95050000 */ lhu $a1,0x0($t0) /* 14114: 16000002 */ bnez $s0,.L00014120 /* 14118: 00000000 */ nop /* 1411c: 0007000d */ break 0x7 .L00014120: /* 14120: 2401ffff */ addiu $at,$zero,-1 /* 14124: 16010004 */ bne $s0,$at,.L00014138 /* 14128: 3c018000 */ lui $at,0x8000 /* 1412c: 15e10002 */ bne $t7,$at,.L00014138 /* 14130: 00000000 */ nop /* 14134: 0006000d */ break 0x6 .L00014138: /* 14138: 01c77821 */ addu $t7,$t6,$a3 /* 1413c: 95e90000 */ lhu $t1,0x0($t7) /* 14140: 947801f0 */ lhu $t8,0x1f0($v1) /* 14144: 00a05025 */ or $t2,$a1,$zero /* 14148: 0120c827 */ nor $t9,$t1,$zero /* 1414c: 00b97024 */ and $t6,$a1,$t9 /* 14150: 030e7825 */ or $t7,$t8,$t6 /* 14154: 947901f8 */ lhu $t9,0x1f8($v1) /* 14158: 00a0c027 */ nor $t8,$a1,$zero /* 1415c: a46f01f0 */ sh $t7,0x1f0($v1) /* 14160: 03097024 */ and $t6,$t8,$t1 /* 14164: 032e7825 */ or $t7,$t9,$t6 /* 14168: a46f01f8 */ sh $t7,0x1f8($v1) /* 1416c: 8d8d0000 */ lw $t5,0x0($t4) /* 14170: 01205825 */ or $t3,$t1,$zero /* 14174: 59a00017 */ blezl $t5,.L000141d4 /* 14178: 8c8e01e0 */ lw $t6,0x1e0($a0) /* 1417c: 95180000 */ lhu $t8,0x0($t0) /* 14180: 57000012 */ bnezl $t8,.L000141cc /* 14184: 25b9ffff */ addiu $t9,$t5,-1 /* 14188: 81050002 */ lb $a1,0x2($t0) /* 1418c: 28a1000f */ slti $at,$a1,0xf /* 14190: 5020000e */ beqzl $at,.L000141cc /* 14194: 25b9ffff */ addiu $t9,$t5,-1 /* 14198: 28a1fff2 */ slti $at,$a1,-14 /* 1419c: 5420000b */ bnezl $at,.L000141cc /* 141a0: 25b9ffff */ addiu $t9,$t5,-1 /* 141a4: 81050003 */ lb $a1,0x3($t0) /* 141a8: 28a1000f */ slti $at,$a1,0xf /* 141ac: 50200007 */ beqzl $at,.L000141cc /* 141b0: 25b9ffff */ addiu $t9,$t5,-1 /* 141b4: 28a1fff2 */ slti $at,$a1,-14 /* 141b8: 54200004 */ bnezl $at,.L000141cc /* 141bc: 25b9ffff */ addiu $t9,$t5,-1 /* 141c0: 10000003 */ b .L000141d0 /* 141c4: ad800000 */ sw $zero,0x0($t4) /* 141c8: 25b9ffff */ addiu $t9,$t5,-1 .L000141cc: /* 141cc: ad990000 */ sw $t9,0x0($t4) .L000141d0: /* 141d0: 8c8e01e0 */ lw $t6,0x1e0($a0) .L000141d4: /* 141d4: 50ce0010 */ beql $a2,$t6,.L00014218 /* 141d8: 24420001 */ addiu $v0,$v0,0x1 /* 141dc: 24cf0001 */ addiu $t7,$a2,0x1 /* 141e0: 01f0001a */ div $zero,$t7,$s0 /* 141e4: 00003010 */ mfhi $a2 /* 141e8: 16000002 */ bnez $s0,.L000141f4 /* 141ec: 00000000 */ nop /* 141f0: 0007000d */ break 0x7 .L000141f4: /* 141f4: 2401ffff */ addiu $at,$zero,-1 /* 141f8: 16010004 */ bne $s0,$at,.L0001420c /* 141fc: 3c018000 */ lui $at,0x8000 /* 14200: 15e10002 */ bne $t7,$at,.L0001420c /* 14204: 00000000 */ nop /* 14208: 0006000d */ break 0x6 .L0001420c: /* 1420c: 1000ffb5 */ b .L000140e4 /* 14210: 24cf0013 */ addiu $t7,$a2,0x13 .L00014214: /* 14214: 24420001 */ addiu $v0,$v0,0x1 .L00014218: /* 14218: 0002c600 */ sll $t8,$v0,0x18 /* 1421c: 00181603 */ sra $v0,$t8,0x18 /* 14220: 28410004 */ slti $at,$v0,0x4 /* 14224: 5420ff95 */ bnezl $at,.L0001407c /* 14228: 0002c040 */ sll $t8,$v0,0x1 /* 1422c: 8fb00004 */ lw $s0,0x4($sp) /* 14230: 03e00008 */ jr $ra /* 14234: 27bd0008 */ addiu $sp,$sp,0x8 ); GLOBAL_ASM( glabel func00014238 /* 14238: 27bdffd8 */ addiu $sp,$sp,-40 /* 1423c: 3c0e8006 */ lui $t6,%hi(var8005ef04) /* 14240: 8dceef04 */ lw $t6,%lo(var8005ef04)($t6) /* 14244: afbf0024 */ sw $ra,0x24($sp) /* 14248: afb30020 */ sw $s3,0x20($sp) /* 1424c: afb2001c */ sw $s2,0x1c($sp) /* 14250: afb10018 */ sw $s1,0x18($sp) /* 14254: 15c0001f */ bnez $t6,.L000142d4 /* 14258: afb00014 */ sw $s0,0x14($sp) /* 1425c: 240f0001 */ addiu $t7,$zero,0x1 /* 14260: 3c018006 */ lui $at,%hi(var8005ef04) /* 14264: ac2fef04 */ sw $t7,%lo(var8005ef04)($at) /* 14268: 00008825 */ or $s1,$zero,$zero /* 1426c: 24130004 */ addiu $s3,$zero,0x4 /* 14270: 2412000d */ addiu $s2,$zero,0xd /* 14274: 00118600 */ sll $s0,$s1,0x18 .L00014278: /* 14278: 0010c603 */ sra $t8,$s0,0x18 /* 1427c: 00182600 */ sll $a0,$t8,0x18 /* 14280: 0004ce03 */ sra $t9,$a0,0x18 /* 14284: 03202025 */ or $a0,$t9,$zero /* 14288: 0c00557d */ jal func000155f4 /* 1428c: 03008025 */ or $s0,$t8,$zero /* 14290: 14520005 */ bne $v0,$s2,.L000142a8 /* 14294: 00102600 */ sll $a0,$s0,0x18 /* 14298: 00044603 */ sra $t0,$a0,0x18 /* 1429c: 01002025 */ or $a0,$t0,$zero /* 142a0: 0fc45b6c */ jal func0f116db0 /* 142a4: 2405000b */ addiu $a1,$zero,0xb .L000142a8: /* 142a8: 26310001 */ addiu $s1,$s1,0x1 /* 142ac: 5633fff2 */ bnel $s1,$s3,.L00014278 /* 142b0: 00118600 */ sll $s0,$s1,0x18 /* 142b4: 3c098006 */ lui $t1,%hi(var8005eec4) /* 142b8: 8d29eec4 */ lw $t1,%lo(var8005eec4)($t1) /* 142bc: 15200003 */ bnez $t1,.L000142cc /* 142c0: 00000000 */ nop /* 142c4: 0c005587 */ jal func0001561c /* 142c8: 00000000 */ nop .L000142cc: /* 142cc: 3c018006 */ lui $at,%hi(var8005ef04) /* 142d0: ac20ef04 */ sw $zero,%lo(var8005ef04)($at) .L000142d4: /* 142d4: 8fbf0024 */ lw $ra,0x24($sp) /* 142d8: 8fb00014 */ lw $s0,0x14($sp) /* 142dc: 8fb10018 */ lw $s1,0x18($sp) /* 142e0: 8fb2001c */ lw $s2,0x1c($sp) /* 142e4: 8fb30020 */ lw $s3,0x20($sp) /* 142e8: 03e00008 */ jr $ra /* 142ec: 27bd0028 */ addiu $sp,$sp,0x28 ); #if VERSION >= VERSION_NTSC_FINAL GLOBAL_ASM( glabel func000142f0 /* 142f0: 27bdffe8 */ addiu $sp,$sp,-24 /* 142f4: afbf0014 */ sw $ra,0x14($sp) /* 142f8: 3c047005 */ lui $a0,%hi(var700540a8) /* 142fc: 3c058006 */ lui $a1,%hi(var8005ef08) /* 14300: 24a5ef08 */ addiu $a1,$a1,%lo(var8005ef08) /* 14304: 0c0036cc */ jal func0000db30 /* 14308: 248440a8 */ addiu $a0,$a0,%lo(var700540a8) /* 1430c: 3c0e800a */ lui $t6,%hi(g_Vars+0x4d0) /* 14310: 91cea490 */ lbu $t6,%lo(g_Vars+0x4d0)($t6) /* 14314: 11c00003 */ beqz $t6,.L00014324 /* 14318: 00000000 */ nop /* 1431c: 0c004eae */ jal func00013ab8 /* 14320: 24040001 */ addiu $a0,$zero,0x1 .L00014324: /* 14324: 3c028006 */ lui $v0,%hi(var8005eec4) /* 14328: 8c42eec4 */ lw $v0,%lo(var8005eec4)($v0) /* 1432c: 3c04800a */ lui $a0,%hi(var80099c64) /* 14330: 24849c64 */ addiu $a0,$a0,%lo(var80099c64) /* 14334: 10400008 */ beqz $v0,.L00014358 /* 14338: 3c05800a */ lui $a1,%hi(var80099e44) /* 1433c: 0040f809 */ jalr $v0 /* 14340: 8ca59e44 */ lw $a1,%lo(var80099e44)($a1) /* 14344: 3c01800a */ lui $at,%hi(var80099e4c) /* 14348: 3c04800a */ lui $a0,%hi(var80099c64) /* 1434c: ac229e4c */ sw $v0,%lo(var80099e4c)($at) /* 14350: 0c005016 */ jal func00014058 /* 14354: 24849c64 */ addiu $a0,$a0,%lo(var80099c64) .L00014358: /* 14358: 3c04800a */ lui $a0,%hi(var80099a60) /* 1435c: 0c005016 */ jal func00014058 /* 14360: 24849a60 */ addiu $a0,$a0,%lo(var80099a60) /* 14364: 3c028006 */ lui $v0,%hi(var8005eec8) /* 14368: 8c42eec8 */ lw $v0,%lo(var8005eec8)($v0) /* 1436c: 3c04800a */ lui $a0,%hi(var80099a60) /* 14370: 24849a60 */ addiu $a0,$a0,%lo(var80099a60) /* 14374: 10400004 */ beqz $v0,.L00014388 /* 14378: 00000000 */ nop /* 1437c: 8c8501e4 */ lw $a1,0x1e4($a0) /* 14380: 0040f809 */ jalr $v0 /* 14384: 8c8601e0 */ lw $a2,0x1e0($a0) .L00014388: /* 14388: 0c005431 */ jal func000150c4 /* 1438c: 00000000 */ nop /* 14390: 10400011 */ beqz $v0,.L000143d8 /* 14394: 3c0f8006 */ lui $t7,%hi(var8005eec0) /* 14398: 8defeec0 */ lw $t7,%lo(var8005eec0)($t7) /* 1439c: 51e0000f */ beqzl $t7,.L000143dc /* 143a0: 8fbf0014 */ lw $ra,0x14($sp) /* 143a4: 0c005207 */ jal contGetNumSamples /* 143a8: 00000000 */ nop /* 143ac: 5c40000b */ bgtzl $v0,.L000143dc /* 143b0: 8fbf0014 */ lw $ra,0x14($sp) /* 143b4: 0c00543a */ jal func000150e8 /* 143b8: 00000000 */ nop /* 143bc: 0c00508e */ jal func00014238 /* 143c0: 00000000 */ nop /* 143c4: 0c005451 */ jal func00015144 /* 143c8: 00000000 */ nop /* 143cc: 3c04800a */ lui $a0,%hi(var80099a60) /* 143d0: 0c005016 */ jal func00014058 /* 143d4: 24849a60 */ addiu $a0,$a0,%lo(var80099a60) .L000143d8: /* 143d8: 8fbf0014 */ lw $ra,0x14($sp) .L000143dc: /* 143dc: 27bd0018 */ addiu $sp,$sp,0x18 /* 143e0: 03e00008 */ jr $ra /* 143e4: 00000000 */ nop ); #else GLOBAL_ASM( glabel func000142f0 /* 142f0: 27bdffe8 */ addiu $sp,$sp,-24 /* 142f4: afbf0014 */ sw $ra,0x14($sp) /* 142f8: 3c047005 */ lui $a0,%hi(var700540a8) /* 142fc: 3c058006 */ lui $a1,%hi(var8005ef08) /* 14300: 24a5ef08 */ addiu $a1,$a1,%lo(var8005ef08) /* 14304: 0c0036cc */ jal func0000db30 /* 14308: 248440a8 */ addiu $a0,$a0,%lo(var700540a8) /* 1430c: 3c0e800a */ lui $t6,%hi(g_Vars+0x4d0) /* 14310: 91cea490 */ lbu $t6,%lo(g_Vars+0x4d0)($t6) /* 14314: 11c00003 */ beqz $t6,.L00014324 /* 14318: 00000000 */ nop /* 1431c: 0c004eae */ jal func00013ab8 /* 14320: 24040001 */ addiu $a0,$zero,0x1 .L00014324: /* 14324: 3c028006 */ lui $v0,%hi(var8005eec4) /* 14328: 8c42eec4 */ lw $v0,%lo(var8005eec4)($v0) /* 1432c: 3c04800a */ lui $a0,%hi(var80099c64) /* 14330: 24849c64 */ addiu $a0,$a0,%lo(var80099c64) /* 14334: 10400008 */ beqz $v0,.L00014358 /* 14338: 3c05800a */ lui $a1,%hi(var80099e44) /* 1433c: 0040f809 */ jalr $v0 /* 14340: 8ca59e44 */ lw $a1,%lo(var80099e44)($a1) /* 14344: 3c01800a */ lui $at,%hi(var80099e4c) /* 14348: 3c04800a */ lui $a0,%hi(var80099c64) /* 1434c: ac229e4c */ sw $v0,%lo(var80099e4c)($at) /* 14350: 0c005016 */ jal func00014058 /* 14354: 24849c64 */ addiu $a0,$a0,%lo(var80099c64) .L00014358: /* 14358: 3c04800a */ lui $a0,%hi(var80099a60) /* 1435c: 0c005016 */ jal func00014058 /* 14360: 24849a60 */ addiu $a0,$a0,%lo(var80099a60) /* 14364: 3c028006 */ lui $v0,%hi(var8005eec8) /* 14368: 8c42eec8 */ lw $v0,%lo(var8005eec8)($v0) /* 1436c: 3c04800a */ lui $a0,%hi(var80099a60) /* 14370: 24849a60 */ addiu $a0,$a0,%lo(var80099a60) /* 14374: 10400004 */ beqz $v0,.L00014388 /* 14378: 00000000 */ nop /* 1437c: 8c8501e4 */ lw $a1,0x1e4($a0) /* 14380: 0040f809 */ jalr $v0 /* 14384: 8c8601e0 */ lw $a2,0x1e0($a0) .L00014388: /* 14388: 0c005431 */ jal func000150c4 /* 1438c: 00000000 */ nop /* 14390: 10400011 */ beqz $v0,.L000143d8 /* 14394: 3c0f8006 */ lui $t7,%hi(var8005eec0) /* 14398: 8defeec0 */ lw $t7,%lo(var8005eec0)($t7) /* 1439c: 51e0000f */ beqzl $t7,.L000143dc /* 143a0: 8fbf0014 */ lw $ra,0x14($sp) /* 143a4: 0c005207 */ jal contGetNumSamples /* 143a8: 00000000 */ nop /* 143ac: 5c40000b */ bgtzl $v0,.L000143dc /* 143b0: 8fbf0014 */ lw $ra,0x14($sp) /* 143b4: 0c00543a */ jal func000150e8 /* 143b8: 00000000 */ nop /* 143bc: 0c005451 */ jal func00015144 /* 143c0: 00000000 */ nop /* 143c4: 3c04800a */ lui $a0,%hi(var80099a60) /* 143c8: 0c005016 */ jal func00014058 /* 143cc: 24849a60 */ addiu $a0,$a0,%lo(var80099a60) /* 143d0: 0c00508e */ jal func00014238 /* 143d4: 00000000 */ nop .L000143d8: /* 143d8: 8fbf0014 */ lw $ra,0x14($sp) .L000143dc: /* 143dc: 27bd0018 */ addiu $sp,$sp,0x18 /* 143e0: 03e00008 */ jr $ra /* 143e4: 00000000 */ nop ); #endif s32 contStartReadData(OSMesgQueue *mq) { return osContStartReadData(mq); } void contReadData(void) { s32 index = (var80099a60.unk1e8 + 1) % 20; if (index == var80099a60.oldestindex) { // If the sample queue is full, don't overwrite the oldest sample. // Instead, overwrite the most recent. index = var80099a60.unk1e8; } osContGetReadData(var80099a60.samples[index].pads); var80099a60.unk1e8 = index; var80099a60.unk1ec = (var80099a60.unk1e8 + 19) % 20; } void contPoll(void) { OSMesg msg; s8 i; if (osRecvMesg(&var80099ec0, &msg, OS_MESG_NOBLOCK) == 0) { if (g_ContBusy) { osRecvMesg(&var80099e78, &msg, OS_MESG_BLOCK); g_ContBusy = false; contReadData(); // Check if error state has changed for any controller for (i = 0; i < 4; i++) { if ((var80099a60.samples[var80099a60.unk1e8].pads[i].errno == 0 && var80099a60.samples[var80099a60.unk1ec].pads[i].errno != 0) || (var80099a60.samples[var80099a60.unk1e8].pads[i].errno != 0 && var80099a60.samples[var80099a60.unk1ec].pads[i].errno == 0)) { func00013e84(); break; } } } osSendMesg(&var80099ee0, &msg, OS_MESG_NOBLOCK); var8005ee68++; func00013ab8(0); return; } if (osRecvMesg(&var80099f00, &msg, OS_MESG_NOBLOCK) == 0) { var8005ee68--; if (var8005ee68 == 0) { contStartReadData(&var80099e78); g_ContBusy = true; } osSendMesg(&var80099f20, &msg, OS_MESG_NOBLOCK); return; } if (var8005eeb4) { if (var8005ee68) { func00013ab8(0); return; } if (osRecvMesg(&var80099e78, &msg, OS_MESG_NOBLOCK) == 0) { static s32 count = 0; g_ContBusy = false; contReadData(); // Check if error state has changed for any controller for (i = 0; i < 4; i++) { if ((var80099a60.samples[var80099a60.unk1e8].pads[i].errno == 0 && var80099a60.samples[var80099a60.unk1ec].pads[i].errno != 0) || (var80099a60.samples[var80099a60.unk1e8].pads[i].errno != 0 && var80099a60.samples[var80099a60.unk1ec].pads[i].errno == 0)) { func00013e84(); break; } } func00014238(); func00013ab8(0); contStartReadData(&var80099e78); g_ContBusy = true; count++; if (count >= 60) { s32 i; for (i = 0; i < 4; i++) { if (var8005ee6c[i] || var8005ee7c[i] || var8005ee8c[i] || var8005ee9c[i]) { var8005ee6c[i] = 0; var8005ee7c[i] = 0; var8005ee8c[i] = 0; var8005ee9c[i] = 0; } } count = 0; } } } } GLOBAL_ASM( glabel func00014810 /* 14810: 3c018006 */ lui $at,%hi(var8005eec0) /* 14814: 03e00008 */ jr $ra /* 14818: ac24eec0 */ sw $a0,%lo(var8005eec0)($at) ); s32 contGetNumSamples(void) { return (var8005ee60->newestindex - var8005ee60->oldestindex + 20) % 20; } s32 func00014848(s32 samplenum, s8 contpadnum) { if (var8005ee60->unk200 < 0 && (g_ConnectedControllers >> contpadnum & 1) == 0) { var8005ee6c[contpadnum]++; return 0; } if (var80099e68[contpadnum] > 0) { return 0; } return var8005ee60->samples[(var8005ee60->oldestindex + samplenum + 1) % 20].pads[contpadnum].stick_x; } s32 func00014904(s32 samplenum, s8 contpadnum) { if (var8005ee60->unk200 < 0 && (g_ConnectedControllers >> contpadnum & 1) == 0) { var8005ee7c[contpadnum]++; return 0; } if (var80099e68[contpadnum] > 0) { return 0; } return var8005ee60->samples[(var8005ee60->oldestindex + samplenum + 1) % 20].pads[contpadnum].stick_y; } s32 func000149c0(s32 samplenum, s8 contpadnum) { if (var8005ee60->unk200 < 0 && (g_ConnectedControllers >> contpadnum & 1) == 0) { var8005ee7c[contpadnum]++; return 0; } if (var80099e68[contpadnum] > 0) { return 0; } return var8005ee60->samples[(var8005ee60->oldestindex + samplenum) % 20].pads[contpadnum].stick_y; } u16 func00014a78(s32 samplenum, s8 contpadnum, u16 mask) { u16 button; if (var8005ee60->unk200 < 0 && (g_ConnectedControllers >> contpadnum & 1) == 0) { var8005ee8c[contpadnum]++; return 0; } if (var80099e68[contpadnum] > 0) { return 0; } button = var8005ee60->samples[(var8005ee60->oldestindex + samplenum + 1) % 20].pads[contpadnum].button; return button & mask; } u16 func00014b50(s32 samplenum, s8 contpadnum, u16 mask) { u16 button1; u16 button2; if (var8005ee60->unk200 < 0 && (g_ConnectedControllers >> contpadnum & 1) == 0) { var8005ee9c[contpadnum]++; return 0; } if (var80099e68[contpadnum] > 0) { return 0; } button1 = var8005ee60->samples[(var8005ee60->oldestindex + samplenum + 1) % 20].pads[contpadnum].button; button2 = var8005ee60->samples[(var8005ee60->oldestindex + samplenum) % 20].pads[contpadnum].button; return (button1 & ~button2) & mask; } s32 func00014c98(u32 *arg0, s8 contpadnum, u16 mask) { s32 count = 0; s32 index = 0; s32 i; u16 button; if (var8005ee60->unk200 < 0 && (g_ConnectedControllers >> contpadnum & 1) == 0) { var8005ee8c[contpadnum]++; return 0; } if (var80099e68[contpadnum] > 0) { return 0; } i = (var8005ee60->oldestindex + 1) % 20; while (true) { if (arg0 == NULL || arg0[index]) { button = var8005ee60->samples[i].pads[contpadnum].button; if (button & mask) { count++; } } if (i == var8005ee60->newestindex) { break; } i = (i + 1) % 20; index++; } return count; } s8 contGetStickX(s8 contpadnum) { if (var8005ee60->unk200 < 0 && (g_ConnectedControllers >> contpadnum & 1) == 0) { var8005ee6c[contpadnum]++; return 0; } if (var80099e68[contpadnum] > 0) { return 0; } return var8005ee60->samples[var8005ee60->newestindex].pads[contpadnum].stick_x; } s8 contGetStickY(s8 contpadnum) { if (var8005ee60->unk200 < 0 && (g_ConnectedControllers >> contpadnum & 1) == 0) { var8005ee7c[contpadnum]++; return 0; } if (var80099e68[contpadnum] > 0) { return 0; } return var8005ee60->samples[var8005ee60->newestindex].pads[contpadnum].stick_y; } u16 contGetButtons(s8 contpadnum, u16 mask) { if (var8005ee60->unk200 < 0 && (g_ConnectedControllers >> contpadnum & 1) == 0) { var8005ee8c[contpadnum]++; return 0; } if (var80099e68[contpadnum] > 0) { return 0; } return var8005ee60->samples[var8005ee60->newestindex].pads[contpadnum].button & mask; } u16 func00015020(s8 contpadnum, u16 mask) { if (var8005ee60->unk200 < 0 && (g_ConnectedControllers >> contpadnum & 1) == 0) { var8005ee9c[contpadnum]++; return 0; } if (var80099e68[contpadnum] > 0) { return 0; } return var8005ee60->unk1f0[contpadnum] & mask; } GLOBAL_ASM( glabel func000150c4 /* 150c4: 3c0e8006 */ lui $t6,%hi(var8005eebc) /* 150c8: 8dceeebc */ lw $t6,%lo(var8005eebc)($t6) /* 150cc: 24030001 */ addiu $v1,$zero,0x1 /* 150d0: 11c00003 */ beqz $t6,.L000150e0 /* 150d4: 00000000 */ nop /* 150d8: 03e00008 */ jr $ra /* 150dc: 00001025 */ or $v0,$zero,$zero .L000150e0: /* 150e0: 03e00008 */ jr $ra /* 150e4: 00601025 */ or $v0,$v1,$zero ); void func000150e8(void) { OSMesg msg; if (var8005eebc == 0) { osSendMesg(&var80099ec0, &msg, OS_MESG_NOBLOCK); osRecvMesg(&var80099ee0, &msg, OS_MESG_BLOCK); } var8005eebc++; } void func00015144(void) { OSMesg msg; var8005eebc--; if (var8005eebc == 0) { osSendMesg(&var80099f00, &msg, OS_MESG_NOBLOCK); osRecvMesg(&var80099f20, &msg, OS_MESG_BLOCK); } } GLOBAL_ASM( glabel func0001519c /* 1519c: 27bdffd0 */ addiu $sp,$sp,-48 /* 151a0: afb40028 */ sw $s4,0x28($sp) /* 151a4: 3c14800a */ lui $s4,%hi(var80099e78) /* 151a8: 26949e78 */ addiu $s4,$s4,%lo(var80099e78) /* 151ac: afbf002c */ sw $ra,0x2c($sp) /* 151b0: 3c05800a */ lui $a1,%hi(var80099e90) /* 151b4: afb30024 */ sw $s3,0x24($sp) /* 151b8: afb20020 */ sw $s2,0x20($sp) /* 151bc: afb1001c */ sw $s1,0x1c($sp) /* 151c0: afb00018 */ sw $s0,0x18($sp) /* 151c4: 24a59e90 */ addiu $a1,$a1,%lo(var80099e90) /* 151c8: 02802025 */ or $a0,$s4,$zero /* 151cc: 0c0120d0 */ jal osCreateMesgQueue /* 151d0: 2406000a */ addiu $a2,$zero,0xa /* 151d4: 24040005 */ addiu $a0,$zero,0x5 /* 151d8: 02802825 */ or $a1,$s4,$zero /* 151dc: 0c012148 */ jal osSetEventMesg /* 151e0: 00003025 */ or $a2,$zero,$zero /* 151e4: 3c12800a */ lui $s2,%hi(var800a3180) /* 151e8: 26523180 */ addiu $s2,$s2,%lo(var800a3180) /* 151ec: 00008025 */ or $s0,$zero,$zero /* 151f0: 24130068 */ addiu $s3,$zero,0x68 /* 151f4: 24110004 */ addiu $s1,$zero,0x4 .L000151f8: /* 151f8: 16110003 */ bne $s0,$s1,.L00015208 /* 151fc: 02802025 */ or $a0,$s4,$zero /* 15200: 10000005 */ b .L00015218 /* 15204: 00003825 */ or $a3,$zero,$zero .L00015208: /* 15208: 02130019 */ multu $s0,$s3 /* 1520c: 00007012 */ mflo $t6 /* 15210: 024e3821 */ addu $a3,$s2,$t6 /* 15214: 00000000 */ nop .L00015218: /* 15218: 00e02825 */ or $a1,$a3,$zero /* 1521c: 0c013e15 */ jal func0004f854 /* 15220: 02003025 */ or $a2,$s0,$zero /* 15224: 1440001f */ bnez $v0,.L000152a4 /* 15228: 00002825 */ or $a1,$zero,$zero /* 1522c: 16110003 */ bne $s0,$s1,.L0001523c /* 15230: 00000000 */ nop /* 15234: 10000005 */ b .L0001524c /* 15238: 00003825 */ or $a3,$zero,$zero .L0001523c: /* 1523c: 02130019 */ multu $s0,$s3 /* 15240: 00007812 */ mflo $t7 /* 15244: 024f3821 */ addu $a3,$s2,$t7 /* 15248: 00000000 */ nop .L0001524c: /* 1524c: 0c013d78 */ jal func0004f5e0 /* 15250: 00e02025 */ or $a0,$a3,$zero /* 15254: 16110003 */ bne $s0,$s1,.L00015264 /* 15258: 00002825 */ or $a1,$zero,$zero /* 1525c: 10000005 */ b .L00015274 /* 15260: 00003825 */ or $a3,$zero,$zero .L00015264: /* 15264: 02130019 */ multu $s0,$s3 /* 15268: 0000c012 */ mflo $t8 /* 1526c: 02583821 */ addu $a3,$s2,$t8 /* 15270: 00000000 */ nop .L00015274: /* 15274: 0c013d78 */ jal func0004f5e0 /* 15278: 00e02025 */ or $a0,$a3,$zero /* 1527c: 16110003 */ bne $s0,$s1,.L0001528c /* 15280: 00002825 */ or $a1,$zero,$zero /* 15284: 10000005 */ b .L0001529c /* 15288: 00003825 */ or $a3,$zero,$zero .L0001528c: /* 1528c: 02130019 */ multu $s0,$s3 /* 15290: 0000c812 */ mflo $t9 /* 15294: 02593821 */ addu $a3,$s2,$t9 /* 15298: 00000000 */ nop .L0001529c: /* 1529c: 0c013d78 */ jal func0004f5e0 /* 152a0: 00e02025 */ or $a0,$a3,$zero .L000152a4: /* 152a4: 26100001 */ addiu $s0,$s0,0x1 /* 152a8: 1611ffd3 */ bne $s0,$s1,.L000151f8 /* 152ac: 00000000 */ nop /* 152b0: 8fbf002c */ lw $ra,0x2c($sp) /* 152b4: 8fb00018 */ lw $s0,0x18($sp) /* 152b8: 8fb1001c */ lw $s1,0x1c($sp) /* 152bc: 8fb20020 */ lw $s2,0x20($sp) /* 152c0: 8fb30024 */ lw $s3,0x24($sp) /* 152c4: 8fb40028 */ lw $s4,0x28($sp) /* 152c8: 03e00008 */ jr $ra /* 152cc: 27bd0030 */ addiu $sp,$sp,0x30 ); GLOBAL_ASM( glabel func000152d0 /* 152d0: 3c07800a */ lui $a3,%hi(g_Vars) /* 152d4: 24e79fc0 */ addiu $a3,$a3,%lo(g_Vars) /* 152d8: 8cf80318 */ lw $t8,0x318($a3) /* 152dc: 00047600 */ sll $t6,$a0,0x18 /* 152e0: 000e7e03 */ sra $t7,$t6,0x18 /* 152e4: afa40000 */ sw $a0,0x0($sp) /* 152e8: 13000008 */ beqz $t8,.L0001530c /* 152ec: 01e02025 */ or $a0,$t7,$zero /* 152f0: 000fc9c0 */ sll $t9,$t7,0x7 /* 152f4: 00f94021 */ addu $t0,$a3,$t9 /* 152f8: 8d0900e4 */ lw $t1,0xe4($t0) /* 152fc: 240affff */ addiu $t2,$zero,-1 /* 15300: aca90000 */ sw $t1,0x0($a1) /* 15304: 03e00008 */ jr $ra /* 15308: acca0000 */ sw $t2,0x0($a2) .L0001530c: /* 1530c: 000459c0 */ sll $t3,$a0,0x7 /* 15310: aca40000 */ sw $a0,0x0($a1) /* 15314: 00eb6021 */ addu $t4,$a3,$t3 /* 15318: 8d8d00e4 */ lw $t5,0xe4($t4) /* 1531c: 3c0f800b */ lui $t7,%hi(g_MpPlayers+0x44) /* 15320: 000d7080 */ sll $t6,$t5,0x2 /* 15324: 01cd7021 */ addu $t6,$t6,$t5 /* 15328: 000e7140 */ sll $t6,$t6,0x5 /* 1532c: 01ee7821 */ addu $t7,$t7,$t6 /* 15330: 91efc7fc */ lbu $t7,%lo(g_MpPlayers+0x44)($t7) /* 15334: 240effff */ addiu $t6,$zero,-1 /* 15338: 29e10004 */ slti $at,$t7,0x4 /* 1533c: 5420001f */ bnezl $at,.L000153bc /* 15340: acce0000 */ sw $t6,0x0($a2) /* 15344: 8cf8006c */ lw $t8,0x6c($a3) /* 15348: 00001025 */ or $v0,$zero,$zero /* 1534c: 00001825 */ or $v1,$zero,$zero /* 15350: 13000003 */ beqz $t8,.L00015360 /* 15354: 00002825 */ or $a1,$zero,$zero /* 15358: 10000001 */ b .L00015360 /* 1535c: 24020001 */ addiu $v0,$zero,0x1 .L00015360: /* 15360: 8cf90068 */ lw $t9,0x68($a3) /* 15364: 13200003 */ beqz $t9,.L00015374 /* 15368: 00000000 */ nop /* 1536c: 10000001 */ b .L00015374 /* 15370: 24030001 */ addiu $v1,$zero,0x1 .L00015374: /* 15374: 8ce80064 */ lw $t0,0x64($a3) /* 15378: 11000003 */ beqz $t0,.L00015388 /* 1537c: 00000000 */ nop /* 15380: 10000001 */ b .L00015388 /* 15384: 24050001 */ addiu $a1,$zero,0x1 .L00015388: /* 15388: 8ce90070 */ lw $t1,0x70($a3) /* 1538c: 00003825 */ or $a3,$zero,$zero /* 15390: 11200003 */ beqz $t1,.L000153a0 /* 15394: 00000000 */ nop /* 15398: 10000001 */ b .L000153a0 /* 1539c: 24070001 */ addiu $a3,$zero,0x1 .L000153a0: /* 153a0: 00e55021 */ addu $t2,$a3,$a1 /* 153a4: 01435821 */ addu $t3,$t2,$v1 /* 153a8: 01626021 */ addu $t4,$t3,$v0 /* 153ac: 01846821 */ addu $t5,$t4,$a0 /* 153b0: 03e00008 */ jr $ra /* 153b4: accd0000 */ sw $t5,0x0($a2) /* 153b8: acce0000 */ sw $t6,0x0($a2) .L000153bc: /* 153bc: 03e00008 */ jr $ra /* 153c0: 00000000 */ nop ); GLOBAL_ASM( glabel func000153c4 /* 153c4: 27bdffd8 */ addiu $sp,$sp,-40 /* 153c8: 00043600 */ sll $a2,$a0,0x18 /* 153cc: 00067603 */ sra $t6,$a2,0x18 /* 153d0: 24010004 */ addiu $at,$zero,0x4 /* 153d4: 01c03025 */ or $a2,$t6,$zero /* 153d8: afbf0014 */ sw $ra,0x14($sp) /* 153dc: afa40028 */ sw $a0,0x28($sp) /* 153e0: 11c10070 */ beq $t6,$at,.L000155a4 /* 153e4: afa5002c */ sw $a1,0x2c($sp) /* 153e8: 000e7880 */ sll $t7,$t6,0x2 /* 153ec: 01ee7823 */ subu $t7,$t7,$t6 /* 153f0: 000f7880 */ sll $t7,$t7,0x2 /* 153f4: 01ee7823 */ subu $t7,$t7,$t6 /* 153f8: 000f7880 */ sll $t7,$t7,0x2 /* 153fc: 01ee7821 */ addu $t7,$t7,$t6 /* 15400: 000f7880 */ sll $t7,$t7,0x2 /* 15404: 01ee7823 */ subu $t7,$t7,$t6 /* 15408: 3c18800a */ lui $t8,%hi(var800a2380) /* 1540c: 27182380 */ addiu $t8,$t8,%lo(var800a2380) /* 15410: 000f7880 */ sll $t7,$t7,0x2 /* 15414: 01f8c821 */ addu $t9,$t7,$t8 /* 15418: afb9001c */ sw $t9,0x1c($sp) /* 1541c: 8f220000 */ lw $v0,0x0($t9) /* 15420: 24010002 */ addiu $at,$zero,0x2 /* 15424: 1041005f */ beq $v0,$at,.L000155a4 /* 15428: 24010003 */ addiu $at,$zero,0x3 /* 1542c: 5041005e */ beql $v0,$at,.L000155a8 /* 15430: 8fbf0014 */ lw $ra,0x14($sp) /* 15434: 50a00005 */ beqzl $a1,.L0001544c /* 15438: 24010004 */ addiu $at,$zero,0x4 /* 1543c: 0c00543a */ jal func000150e8 /* 15440: a3ae002b */ sb $t6,0x2b($sp) /* 15444: 83a6002b */ lb $a2,0x2b($sp) /* 15448: 24010004 */ addiu $at,$zero,0x4 .L0001544c: /* 1544c: 14c10003 */ bne $a2,$at,.L0001545c /* 15450: 3c04800a */ lui $a0,%hi(var80099e78) /* 15454: 10000009 */ b .L0001547c /* 15458: 00003825 */ or $a3,$zero,$zero .L0001545c: /* 1545c: 00064880 */ sll $t1,$a2,0x2 /* 15460: 01264823 */ subu $t1,$t1,$a2 /* 15464: 00094880 */ sll $t1,$t1,0x2 /* 15468: 01264821 */ addu $t1,$t1,$a2 /* 1546c: 3c0a800a */ lui $t2,%hi(var800a3180) /* 15470: 254a3180 */ addiu $t2,$t2,%lo(var800a3180) /* 15474: 000948c0 */ sll $t1,$t1,0x3 /* 15478: 012a3821 */ addu $a3,$t1,$t2 .L0001547c: /* 1547c: 24849e78 */ addiu $a0,$a0,%lo(var80099e78) /* 15480: 00e02825 */ or $a1,$a3,$zero /* 15484: 0c013e15 */ jal func0004f854 /* 15488: a3a6002b */ sb $a2,0x2b($sp) /* 1548c: 14400034 */ bnez $v0,.L00015560 /* 15490: 83a6002b */ lb $a2,0x2b($sp) /* 15494: 24010004 */ addiu $at,$zero,0x4 /* 15498: 14c10003 */ bne $a2,$at,.L000154a8 /* 1549c: 00002825 */ or $a1,$zero,$zero /* 154a0: 10000009 */ b .L000154c8 /* 154a4: 00003825 */ or $a3,$zero,$zero .L000154a8: /* 154a8: 00065880 */ sll $t3,$a2,0x2 /* 154ac: 01665823 */ subu $t3,$t3,$a2 /* 154b0: 000b5880 */ sll $t3,$t3,0x2 /* 154b4: 01665821 */ addu $t3,$t3,$a2 /* 154b8: 3c0c800a */ lui $t4,%hi(var800a3180) /* 154bc: 258c3180 */ addiu $t4,$t4,%lo(var800a3180) /* 154c0: 000b58c0 */ sll $t3,$t3,0x3 /* 154c4: 016c3821 */ addu $a3,$t3,$t4 .L000154c8: /* 154c8: 00e02025 */ or $a0,$a3,$zero /* 154cc: 0c013d78 */ jal func0004f5e0 /* 154d0: a3a6002b */ sb $a2,0x2b($sp) /* 154d4: 83a6002b */ lb $a2,0x2b($sp) /* 154d8: 24010004 */ addiu $at,$zero,0x4 /* 154dc: 00002825 */ or $a1,$zero,$zero /* 154e0: 14c10003 */ bne $a2,$at,.L000154f0 /* 154e4: 00066880 */ sll $t5,$a2,0x2 /* 154e8: 10000008 */ b .L0001550c /* 154ec: 00003825 */ or $a3,$zero,$zero .L000154f0: /* 154f0: 01a66823 */ subu $t5,$t5,$a2 /* 154f4: 000d6880 */ sll $t5,$t5,0x2 /* 154f8: 01a66821 */ addu $t5,$t5,$a2 /* 154fc: 3c0e800a */ lui $t6,%hi(var800a3180) /* 15500: 25ce3180 */ addiu $t6,$t6,%lo(var800a3180) /* 15504: 000d68c0 */ sll $t5,$t5,0x3 /* 15508: 01ae3821 */ addu $a3,$t5,$t6 .L0001550c: /* 1550c: 00e02025 */ or $a0,$a3,$zero /* 15510: 0c013d78 */ jal func0004f5e0 /* 15514: a3a6002b */ sb $a2,0x2b($sp) /* 15518: 83a6002b */ lb $a2,0x2b($sp) /* 1551c: 24010004 */ addiu $at,$zero,0x4 /* 15520: 00002825 */ or $a1,$zero,$zero /* 15524: 14c10003 */ bne $a2,$at,.L00015534 /* 15528: 00067880 */ sll $t7,$a2,0x2 /* 1552c: 10000008 */ b .L00015550 /* 15530: 00003825 */ or $a3,$zero,$zero .L00015534: /* 15534: 01e67823 */ subu $t7,$t7,$a2 /* 15538: 000f7880 */ sll $t7,$t7,0x2 /* 1553c: 01e67821 */ addu $t7,$t7,$a2 /* 15540: 3c18800a */ lui $t8,%hi(var800a3180) /* 15544: 27183180 */ addiu $t8,$t8,%lo(var800a3180) /* 15548: 000f78c0 */ sll $t7,$t7,0x3 /* 1554c: 01f83821 */ addu $a3,$t7,$t8 .L00015550: /* 15550: 00e02025 */ or $a0,$a3,$zero /* 15554: 0c013d78 */ jal func0004f5e0 /* 15558: a3a6002b */ sb $a2,0x2b($sp) /* 1555c: 83a6002b */ lb $a2,0x2b($sp) .L00015560: /* 15560: 8fb9002c */ lw $t9,0x2c($sp) /* 15564: 53200004 */ beqzl $t9,.L00015578 /* 15568: 8fa3001c */ lw $v1,0x1c($sp) /* 1556c: 0c005451 */ jal func00015144 /* 15570: a3a6002b */ sb $a2,0x2b($sp) /* 15574: 8fa3001c */ lw $v1,0x1c($sp) .L00015578: /* 15578: 24010006 */ addiu $at,$zero,0x6 /* 1557c: 8c620004 */ lw $v0,0x4($v1) /* 15580: 10410004 */ beq $v0,$at,.L00015594 /* 15584: 24010007 */ addiu $at,$zero,0x7 /* 15588: 10410002 */ beq $v0,$at,.L00015594 /* 1558c: 24080005 */ addiu $t0,$zero,0x5 /* 15590: ac680004 */ sw $t0,0x4($v1) .L00015594: /* 15594: 3c01bf80 */ lui $at,0xbf80 /* 15598: 44812000 */ mtc1 $at,$f4 /* 1559c: 00000000 */ nop /* 155a0: e46402b4 */ swc1 $f4,0x2b4($v1) .L000155a4: /* 155a4: 8fbf0014 */ lw $ra,0x14($sp) .L000155a8: /* 155a8: 27bd0028 */ addiu $sp,$sp,0x28 /* 155ac: 03e00008 */ jr $ra /* 155b0: 00000000 */ nop ); bool func000155b4(s8 index) { return var800a2380[index].unk010; } GLOBAL_ASM( glabel func000155f4 /* 155f4: 27bdffe8 */ addiu $sp,$sp,-24 /* 155f8: afbf0014 */ sw $ra,0x14($sp) /* 155fc: afa40018 */ sw $a0,0x18($sp) /* 15600: 00047600 */ sll $t6,$a0,0x18 /* 15604: 0c00556d */ jal func000155b4 /* 15608: 000e2603 */ sra $a0,$t6,0x18 /* 1560c: 8fbf0014 */ lw $ra,0x14($sp) /* 15610: 27bd0018 */ addiu $sp,$sp,0x18 /* 15614: 03e00008 */ jr $ra /* 15618: 00000000 */ nop ); GLOBAL_ASM( glabel func0001561c /* 1561c: 27bdffd0 */ addiu $sp,$sp,-48 /* 15620: afb30020 */ sw $s3,0x20($sp) /* 15624: afb00014 */ sw $s0,0x14($sp) /* 15628: afb50028 */ sw $s5,0x28($sp) /* 1562c: afb40024 */ sw $s4,0x24($sp) /* 15630: afb2001c */ sw $s2,0x1c($sp) /* 15634: afb10018 */ sw $s1,0x18($sp) /* 15638: 3c10800a */ lui $s0,%hi(var800a2380) /* 1563c: 3c13800a */ lui $s3,%hi(var800a3180) /* 15640: afbf002c */ sw $ra,0x2c($sp) /* 15644: 26733180 */ addiu $s3,$s3,%lo(var800a3180) /* 15648: 26102380 */ addiu $s0,$s0,%lo(var800a2380) /* 1564c: 00008825 */ or $s1,$zero,$zero /* 15650: 24120004 */ addiu $s2,$zero,0x4 /* 15654: 24140068 */ addiu $s4,$zero,0x68 /* 15658: 24150002 */ addiu $s5,$zero,0x2 .L0001565c: /* 1565c: 8e0e0010 */ lw $t6,0x10($s0) /* 15660: 2401000b */ addiu $at,$zero,0xb /* 15664: 55c1006e */ bnel $t6,$at,.L00015820 /* 15668: 26310001 */ addiu $s1,$s1,0x1 /* 1566c: 8e0f0000 */ lw $t7,0x0($s0) /* 15670: 24010001 */ addiu $at,$zero,0x1 /* 15674: 55e1006a */ bnel $t7,$at,.L00015820 /* 15678: 26310001 */ addiu $s1,$s1,0x1 /* 1567c: 8e180004 */ lw $t8,0x4($s0) /* 15680: 2719fffd */ addiu $t9,$t8,-3 /* 15684: 2f210006 */ sltiu $at,$t9,0x6 /* 15688: 10200064 */ beqz $at,.L0001581c /* 1568c: 0019c880 */ sll $t9,$t9,0x2 /* 15690: 3c017005 */ lui $at,%hi(var700541e4) /* 15694: 00390821 */ addu $at,$at,$t9 /* 15698: 8c3941e4 */ lw $t9,%lo(var700541e4)($at) /* 1569c: 03200008 */ jr $t9 /* 156a0: 00000000 */ nop /* 156a4: 24080004 */ addiu $t0,$zero,0x4 /* 156a8: 16320003 */ bne $s1,$s2,.L000156b8 /* 156ac: ae080004 */ sw $t0,0x4($s0) /* 156b0: 10000005 */ b .L000156c8 /* 156b4: 00002025 */ or $a0,$zero,$zero .L000156b8: /* 156b8: 02340019 */ multu $s1,$s4 /* 156bc: 00004812 */ mflo $t1 /* 156c0: 02692021 */ addu $a0,$s3,$t1 /* 156c4: 00000000 */ nop .L000156c8: /* 156c8: 0c013d78 */ jal func0004f5e0 /* 156cc: 24050001 */ addiu $a1,$zero,0x1 /* 156d0: 10000053 */ b .L00015820 /* 156d4: 26310001 */ addiu $s1,$s1,0x1 /* 156d8: 8e030284 */ lw $v1,0x284($s0) /* 156dc: 2401ffff */ addiu $at,$zero,-1 /* 156e0: 50610024 */ beql $v1,$at,.L00015774 /* 156e4: 3c013f80 */ lui $at,0x3f80 /* 156e8: 8e02028c */ lw $v0,0x28c($s0) /* 156ec: 1440000d */ bnez $v0,.L00015724 /* 156f0: 00000000 */ nop /* 156f4: 16320003 */ bne $s1,$s2,.L00015704 /* 156f8: 00000000 */ nop /* 156fc: 10000005 */ b .L00015714 /* 15700: 00002025 */ or $a0,$zero,$zero .L00015704: /* 15704: 02340019 */ multu $s1,$s4 /* 15708: 00005012 */ mflo $t2 /* 1570c: 026a2021 */ addu $a0,$s3,$t2 /* 15710: 00000000 */ nop .L00015714: /* 15714: 0c013d78 */ jal func0004f5e0 /* 15718: 24050001 */ addiu $a1,$zero,0x1 /* 1571c: 1000000e */ b .L00015758 /* 15720: 8e02028c */ lw $v0,0x28c($s0) .L00015724: /* 15724: 5462000d */ bnel $v1,$v0,.L0001575c /* 15728: 8e0d0288 */ lw $t5,0x288($s0) /* 1572c: 16320003 */ bne $s1,$s2,.L0001573c /* 15730: 00000000 */ nop /* 15734: 10000005 */ b .L0001574c /* 15738: 00002025 */ or $a0,$zero,$zero .L0001573c: /* 1573c: 02340019 */ multu $s1,$s4 /* 15740: 00005812 */ mflo $t3 /* 15744: 026b2021 */ addu $a0,$s3,$t3 /* 15748: 00000000 */ nop .L0001574c: /* 1574c: 0c013d78 */ jal func0004f5e0 /* 15750: 00002825 */ or $a1,$zero,$zero /* 15754: 8e02028c */ lw $v0,0x28c($s0) .L00015758: /* 15758: 8e0d0288 */ lw $t5,0x288($s0) .L0001575c: /* 1575c: 244c0001 */ addiu $t4,$v0,0x1 /* 15760: ae0c028c */ sw $t4,0x28c($s0) /* 15764: 55ac0003 */ bnel $t5,$t4,.L00015774 /* 15768: 3c013f80 */ lui $at,0x3f80 /* 1576c: ae00028c */ sw $zero,0x28c($s0) /* 15770: 3c013f80 */ lui $at,0x3f80 .L00015774: /* 15774: 44813000 */ mtc1 $at,$f6 /* 15778: c60402b4 */ lwc1 $f4,0x2b4($s0) /* 1577c: 44808000 */ mtc1 $zero,$f16 /* 15780: 240f0005 */ addiu $t7,$zero,0x5 /* 15784: 46062201 */ sub.s $f8,$f4,$f6 /* 15788: e60802b4 */ swc1 $f8,0x2b4($s0) /* 1578c: c60a02b4 */ lwc1 $f10,0x2b4($s0) /* 15790: 4610503c */ c.lt.s $f10,$f16 /* 15794: 00000000 */ nop /* 15798: 45020021 */ bc1fl .L00015820 /* 1579c: 26310001 */ addiu $s1,$s1,0x1 /* 157a0: 1000001e */ b .L0001581c /* 157a4: ae0f0004 */ sw $t7,0x4($s0) /* 157a8: 16320003 */ bne $s1,$s2,.L000157b8 /* 157ac: ae150004 */ sw $s5,0x4($s0) /* 157b0: 10000005 */ b .L000157c8 /* 157b4: 00002025 */ or $a0,$zero,$zero .L000157b8: /* 157b8: 02340019 */ multu $s1,$s4 /* 157bc: 0000c012 */ mflo $t8 /* 157c0: 02782021 */ addu $a0,$s3,$t8 /* 157c4: 00000000 */ nop .L000157c8: /* 157c8: 0c013d78 */ jal func0004f5e0 /* 157cc: 00002825 */ or $a1,$zero,$zero /* 157d0: 10000013 */ b .L00015820 /* 157d4: 26310001 */ addiu $s1,$s1,0x1 /* 157d8: 16320003 */ bne $s1,$s2,.L000157e8 /* 157dc: 00000000 */ nop /* 157e0: 10000005 */ b .L000157f8 /* 157e4: 00002025 */ or $a0,$zero,$zero .L000157e8: /* 157e8: 02340019 */ multu $s1,$s4 /* 157ec: 0000c812 */ mflo $t9 /* 157f0: 02792021 */ addu $a0,$s3,$t9 /* 157f4: 00000000 */ nop .L000157f8: /* 157f8: 0c013d78 */ jal func0004f5e0 /* 157fc: 00002825 */ or $a1,$zero,$zero /* 15800: 24080007 */ addiu $t0,$zero,0x7 /* 15804: 10000005 */ b .L0001581c /* 15808: ae080004 */ sw $t0,0x4($s0) /* 1580c: 3c01bf80 */ lui $at,0xbf80 /* 15810: 44819000 */ mtc1 $at,$f18 /* 15814: ae150004 */ sw $s5,0x4($s0) /* 15818: e61202b4 */ swc1 $f18,0x2b4($s0) .L0001581c: /* 1581c: 26310001 */ addiu $s1,$s1,0x1 .L00015820: /* 15820: 1632ff8e */ bne $s1,$s2,.L0001565c /* 15824: 261002cc */ addiu $s0,$s0,0x2cc /* 15828: 8fbf002c */ lw $ra,0x2c($sp) /* 1582c: 8fb00014 */ lw $s0,0x14($sp) /* 15830: 8fb10018 */ lw $s1,0x18($sp) /* 15834: 8fb2001c */ lw $s2,0x1c($sp) /* 15838: 8fb30020 */ lw $s3,0x20($sp) /* 1583c: 8fb40024 */ lw $s4,0x24($sp) /* 15840: 8fb50028 */ lw $s5,0x28($sp) /* 15844: 03e00008 */ jr $ra /* 15848: 27bd0030 */ addiu $sp,$sp,0x30 /* 1584c: 00000000 */ nop /* 15850: 03e00008 */ jr $ra /* 15854: 00000000 */ nop /* 15858: 00000000 */ nop /* 1585c: 00000000 */ nop );