diff --git a/src/include/lib/lib_13900.h b/src/include/lib/lib_13900.h index be7223e41..d1bfd4ae3 100644 --- a/src/include/lib/lib_13900.h +++ b/src/include/lib/lib_13900.h @@ -18,9 +18,9 @@ void func00013dd4(void); void func00013dfc(void); void func00013e84(void); u32 contGetConnectedControllers(void); -u32 func00014058(void); +void func00014058(struct contdata *contdata); void func00014238(void); -void func000142f0(void); +void contDebugJoy(void); s32 contStartReadData(OSMesgQueue *mq); void contReadData(void); void contPoll(void); diff --git a/src/lib/lib_13900.c b/src/lib/lib_13900.c index 36b0397fb..470a82075 100644 --- a/src/lib/lib_13900.c +++ b/src/lib/lib_13900.c @@ -17,23 +17,6 @@ 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[0]; bool g_ContBusy = false; @@ -48,8 +31,8 @@ bool var8005eeb4 = false; u32 var8005eeb8 = 0x00000001; u32 var8005eebc = 0x00000000; u32 var8005eec0 = 0x00000001; -u32 var8005eec4 = 0x00000000; -u32 var8005eec8 = 0x00000000; +s32 (*var8005eec4)(struct contsample *samples, s32 samplenum) = NULL; +void (*var8005eec8)(struct contsample *samples, s32 samplenum, s32 samplenum2) = NULL; s32 var8005eecc = 0; u32 var8005eed0 = 0x00000000; u32 var8005eed4 = 0x00000000; @@ -272,8 +255,8 @@ void contSystemInit(void) osSetEventMesg(OS_EVENT_SI, &var80099e78, NULL); var8005eeb0 = 1; - var8005eec4 = 0; - var8005eec8 = 0; + var8005eec4 = NULL; + var8005eec8 = NULL; for (i = 0; i < 2; i++) { var80099a60[i].newestindex = 0; @@ -596,7 +579,7 @@ void func00014238(void) } } - if (var8005eec4 == 0) { + if (var8005eec4 == NULL) { func0001561c(); } @@ -604,151 +587,50 @@ void func00014238(void) } } -u32 var8005ef08 = 0x00000000; +u32 var8005ef08 = 0; + +void contDebugJoy(void) +{ + func0000db30("debugjoy", &var8005ef08); + + if (g_Vars.unk0004d0) { + func00013ab8(1); + } + + if (var8005eec4) { + var80099a60[1].unk1e8 = var8005eec4(var80099a60[1].samples, var80099a60[1].newestindex); + func00014058(&var80099a60[1]); + } + + func00014058(&var80099a60[0]); + + if (var8005eec8) { + var8005eec8(var80099a60[0].samples, var80099a60[0].oldestindex, var80099a60[0].newestindex); + } + + if (func000150c4() && var8005eec0 && contGetNumSamples() <= 0) { + func000150e8(); #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(var80099a60+0x204) -/* 14330: 24849c64 */ addiu $a0,$a0,%lo(var80099a60+0x204) -/* 14334: 10400008 */ beqz $v0,.L00014358 -/* 14338: 3c05800a */ lui $a1,%hi(var80099a60+0x3e4) -/* 1433c: 0040f809 */ jalr $v0 -/* 14340: 8ca59e44 */ lw $a1,%lo(var80099a60+0x3e4)($a1) -/* 14344: 3c01800a */ lui $at,%hi(var80099a60+0x3ec) -/* 14348: 3c04800a */ lui $a0,%hi(var80099a60+0x204) -/* 1434c: ac229e4c */ sw $v0,%lo(var80099a60+0x3ec)($at) -/* 14350: 0c005016 */ jal func00014058 -/* 14354: 24849c64 */ addiu $a0,$a0,%lo(var80099a60+0x204) -.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 -); + func00014238(); + func00015144(); + func00014058(&var80099a60[0]); #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(var80099a60+0x204) -/* 14330: 24849c64 */ addiu $a0,$a0,%lo(var80099a60+0x204) -/* 14334: 10400008 */ beqz $v0,.L00014358 -/* 14338: 3c05800a */ lui $a1,%hi(var80099a60+0x3e4) -/* 1433c: 0040f809 */ jalr $v0 -/* 14340: 8ca59e44 */ lw $a1,%lo(var80099a60+0x3e4)($a1) -/* 14344: 3c01800a */ lui $at,%hi(var80099a60+0x3ec) -/* 14348: 3c04800a */ lui $a0,%hi(var80099a60+0x204) -/* 1434c: ac229e4c */ sw $v0,%lo(var80099a60+0x3ec)($at) -/* 14350: 0c005016 */ jal func00014058 -/* 14354: 24849c64 */ addiu $a0,$a0,%lo(var80099a60+0x204) -.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 -); + func00015144(); + func00014058(&var80099a60[0]); + func00014238(); #endif + } +} + +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"; s32 contStartReadData(OSMesgQueue *mq) { @@ -1398,6 +1280,22 @@ s32 func000155f4(s8 index) GLOBAL_ASM( glabel func0001561c +.late_rodata +glabel var700541e4 +.word 0x700156a4 +glabel var700541e8 +.word 0x700156d8 +glabel var700541ec +.word 0x700157a8 +glabel var700541f0 +.word 0x700157d8 +glabel var700541f4 +.word 0x7001581c +glabel var700541f8 +.word 0x7001580c +glabel var700541fc +.word 0x00000000 +.text /* 1561c: 27bdffd0 */ addiu $sp,$sp,-48 /* 15620: afb30020 */ sw $s3,0x20($sp) /* 15624: afb00014 */ sw $s0,0x14($sp) diff --git a/src/lib/main.c b/src/lib/main.c index 8030ed8bd..0b159d578 100644 --- a/src/lib/main.c +++ b/src/lib/main.c @@ -257,7 +257,7 @@ glabel mainInit .L0000d5f4: /* d5f4: 54200004 */ bnezl $at,.L0000d608 /* d5f8: 26100001 */ addiu $s0,$s0,0x1 -/* d5fc: 0c0050bc */ jal func000142f0 +/* d5fc: 0c0050bc */ jal contDebugJoy /* d600: 00000000 */ nop /* d604: 26100001 */ addiu $s0,$s0,0x1 .L0000d608: @@ -639,7 +639,7 @@ const char var70053aa0[] = " -ml0 -me0 -mgfx100 -mvtx50 -mt700 -ma400"; // if (i == 1) { // func00013dfc(); // } else if (i >= 2) { -// func000142f0(); +// contDebugJoy(); // } // } // @@ -1092,7 +1092,7 @@ void mainTick(void) func00009a90(); func00009aa0(0x20000); func000034d8(); - func000142f0(); + contDebugJoy(); func00001b28(0); if (var8005d9c8) {