Decompile lvGetSlowMotionType
This commit is contained in:
parent
0bb8ceeba1
commit
8903bdb02a
203
src/game/lv.c
203
src/game/lv.c
|
|
@ -6455,13 +6455,16 @@ void lvUpdateSoloHandicaps(void)
|
|||
}
|
||||
|
||||
#if PIRACYCHECKS
|
||||
|
||||
#if VERSION >= VERSION_PAL_FINAL
|
||||
#define SUBAMOUNT 6661
|
||||
#else
|
||||
#define SUBAMOUNT 54321
|
||||
#endif
|
||||
|
||||
s32 sub54321(s32 value)
|
||||
{
|
||||
#if PAL
|
||||
return value - 6661;
|
||||
#else
|
||||
return value - 54321;
|
||||
#endif
|
||||
return value - SUBAMOUNT;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
@ -6475,189 +6478,28 @@ void lvUpdateCutsceneTime(void)
|
|||
g_CutsceneTime240_60 = 0;
|
||||
}
|
||||
|
||||
#if VERSION >= VERSION_PAL_FINAL
|
||||
GLOBAL_ASM(
|
||||
glabel lvGetSlowMotionType
|
||||
/* f16b854: 27bdffd0 */ addiu $sp,$sp,-48
|
||||
/* f16b858: afbf0014 */ sw $ra,0x14($sp)
|
||||
/* f16b85c: 3c04b000 */ lui $a0,0xb000
|
||||
/* f16b860: 0fc5ae00 */ jal sub54321
|
||||
/* f16b864: 3484de8d */ ori $a0,$a0,0x1d45
|
||||
/* f16b868: 3c041741 */ lui $a0,0x330
|
||||
/* f16b86c: afa2002c */ sw $v0,0x2c($sp)
|
||||
/* f16b870: 0fc5ae00 */ jal sub54321
|
||||
/* f16b874: 3484d42a */ ori $a0,$a0,0xe225
|
||||
/* f16b878: afa20024 */ sw $v0,0x24($sp)
|
||||
/* f16b87c: 8fa4002c */ lw $a0,0x2c($sp)
|
||||
/* f16b880: 0c013994 */ jal osPiReadIo
|
||||
/* f16b884: 27a50028 */ addiu $a1,$sp,0x28
|
||||
/* f16b888: 8fae0028 */ lw $t6,0x28($sp)
|
||||
/* f16b88c: 8faf0024 */ lw $t7,0x24($sp)
|
||||
/* f16b890: 3c058006 */ lui $a1,%hi(rspbootTextStart)
|
||||
/* f16b894: 24a29fe0 */ addiu $v0,$a1,%lo(rspbootTextStart)
|
||||
/* f16b898: 11cf000d */ beq $t6,$t7,.L0f16b8d0
|
||||
/* f16b89c: 3c09800a */ lui $t1,%hi(g_Vars+0x318)
|
||||
/* f16b8a0: 3c188006 */ lui $t8,%hi(rspbootTextStart+0x1)
|
||||
/* f16b8a4: 24431000 */ addiu $v1,$v0,0x1000
|
||||
/* f16b8a8: 27189fe1 */ addiu $t8,$t8,%lo(rspbootTextStart+0x1)
|
||||
/* f16b8ac: 0078082b */ sltu $at,$v1,$t8
|
||||
/* f16b8b0: 14200007 */ bnez $at,.L0f16b8d0
|
||||
/* f16b8b4: 00000000 */ nop
|
||||
.L0f16b8b8:
|
||||
/* f16b8b8: 8c590000 */ lw $t9,0x0($v0)
|
||||
/* f16b8bc: 24420004 */ addiu $v0,$v0,0x4
|
||||
/* f16b8c0: 0043082b */ sltu $at,$v0,$v1
|
||||
/* f16b8c4: 27280008 */ addiu $t0,$t9,0x8
|
||||
/* f16b8c8: 1420fffb */ bnez $at,.L0f16b8b8
|
||||
/* f16b8cc: ac48fffc */ sw $t0,-0x4($v0)
|
||||
.L0f16b8d0:
|
||||
/* f16b8d0: 8d29a2d8 */ lw $t1,%lo(g_Vars+0x318)($t1)
|
||||
/* f16b8d4: 3c02800b */ lui $v0,%hi(g_MpSetup+0xc)
|
||||
/* f16b8d8: 1120000b */ beqz $t1,.L0f16b908
|
||||
/* f16b8dc: 00000000 */ nop
|
||||
/* f16b8e0: 8c42cb94 */ lw $v0,%lo(g_MpSetup+0xc)($v0)
|
||||
/* f16b8e4: 304a0040 */ andi $t2,$v0,0x40
|
||||
/* f16b8e8: 11400003 */ beqz $t2,.L0f16b8f8
|
||||
/* f16b8ec: 304b0080 */ andi $t3,$v0,0x80
|
||||
/* f16b8f0: 1000001a */ b .L0f16b95c
|
||||
/* f16b8f4: 24020001 */ addiu $v0,$zero,0x1
|
||||
.L0f16b8f8:
|
||||
/* f16b8f8: 51600018 */ beqzl $t3,.L0f16b95c
|
||||
/* f16b8fc: 00001025 */ or $v0,$zero,$zero
|
||||
/* f16b900: 10000016 */ b .L0f16b95c
|
||||
/* f16b904: 24020002 */ addiu $v0,$zero,0x2
|
||||
.L0f16b908:
|
||||
/* f16b908: 0fc41b99 */ jal cheatIsActive
|
||||
/* f16b90c: 24040006 */ addiu $a0,$zero,0x6
|
||||
/* f16b910: 10400003 */ beqz $v0,.L0f16b920
|
||||
/* f16b914: 00000000 */ nop
|
||||
/* f16b918: 10000010 */ b .L0f16b95c
|
||||
/* f16b91c: 24020001 */ addiu $v0,$zero,0x1
|
||||
.L0f16b920:
|
||||
/* f16b920: 0fc47b9c */ jal debugGetSlowMotion
|
||||
/* f16b924: 00000000 */ nop
|
||||
/* f16b928: 24010001 */ addiu $at,$zero,0x1
|
||||
/* f16b92c: 14410003 */ bne $v0,$at,.L0f16b93c
|
||||
/* f16b930: 00000000 */ nop
|
||||
/* f16b934: 10000009 */ b .L0f16b95c
|
||||
/* f16b938: 24020001 */ addiu $v0,$zero,0x1
|
||||
.L0f16b93c:
|
||||
/* f16b93c: 0fc47b9c */ jal debugGetSlowMotion
|
||||
/* f16b940: 00000000 */ nop
|
||||
/* f16b944: 24010002 */ addiu $at,$zero,0x2
|
||||
/* f16b948: 54410004 */ bnel $v0,$at,.L0f16b95c
|
||||
/* f16b94c: 00001025 */ or $v0,$zero,$zero
|
||||
/* f16b950: 10000002 */ b .L0f16b95c
|
||||
/* f16b954: 24020002 */ addiu $v0,$zero,0x2
|
||||
/* f16b958: 00001025 */ or $v0,$zero,$zero
|
||||
.L0f16b95c:
|
||||
/* f16b95c: 8fbf0014 */ lw $ra,0x14($sp)
|
||||
/* f16b960: 27bd0030 */ addiu $sp,$sp,0x30
|
||||
/* f16b964: 03e00008 */ jr $ra
|
||||
/* f16b968: 00000000 */ nop
|
||||
);
|
||||
#elif VERSION >= VERSION_NTSC_1_0
|
||||
GLOBAL_ASM(
|
||||
glabel lvGetSlowMotionType
|
||||
/* f16b854: 27bdffd0 */ addiu $sp,$sp,-48
|
||||
/* f16b858: afbf0014 */ sw $ra,0x14($sp)
|
||||
/* f16b85c: 3c04b000 */ lui $a0,0xb000
|
||||
/* f16b860: 0fc5ae00 */ jal sub54321
|
||||
/* f16b864: 3484de8d */ ori $a0,$a0,0xde8d
|
||||
/* f16b868: 3c041741 */ lui $a0,0x1741
|
||||
/* f16b86c: afa2002c */ sw $v0,0x2c($sp)
|
||||
/* f16b870: 0fc5ae00 */ jal sub54321
|
||||
/* f16b874: 3484d42a */ ori $a0,$a0,0xd42a
|
||||
/* f16b878: afa20024 */ sw $v0,0x24($sp)
|
||||
/* f16b87c: 8fa4002c */ lw $a0,0x2c($sp)
|
||||
/* f16b880: 0c013994 */ jal osPiReadIo
|
||||
/* f16b884: 27a50028 */ addiu $a1,$sp,0x28
|
||||
/* f16b888: 8fae0028 */ lw $t6,0x28($sp)
|
||||
/* f16b88c: 8faf0024 */ lw $t7,0x24($sp)
|
||||
/* f16b890: 3c058006 */ lui $a1,%hi(rspbootTextStart)
|
||||
/* f16b894: 24a29fe0 */ addiu $v0,$a1,%lo(rspbootTextStart)
|
||||
/* f16b898: 11cf000d */ beq $t6,$t7,.L0f16b8d0
|
||||
/* f16b89c: 3c09800a */ lui $t1,%hi(g_Vars+0x318)
|
||||
/* f16b8a0: 3c188006 */ lui $t8,%hi(rspbootTextStart+0x1)
|
||||
/* f16b8a4: 24431000 */ addiu $v1,$v0,0x1000
|
||||
/* f16b8a8: 27189fe1 */ addiu $t8,$t8,%lo(rspbootTextStart+0x1)
|
||||
/* f16b8ac: 0078082b */ sltu $at,$v1,$t8
|
||||
/* f16b8b0: 14200007 */ bnez $at,.L0f16b8d0
|
||||
/* f16b8b4: 00000000 */ nop
|
||||
.L0f16b8b8:
|
||||
/* f16b8b8: 8c590000 */ lw $t9,0x0($v0)
|
||||
/* f16b8bc: 24420004 */ addiu $v0,$v0,0x4
|
||||
/* f16b8c0: 0043082b */ sltu $at,$v0,$v1
|
||||
/* f16b8c4: 27280008 */ addiu $t0,$t9,0x8
|
||||
/* f16b8c8: 1420fffb */ bnez $at,.L0f16b8b8
|
||||
/* f16b8cc: ac48fffc */ sw $t0,-0x4($v0)
|
||||
.L0f16b8d0:
|
||||
/* f16b8d0: 8d29a2d8 */ lw $t1,%lo(g_Vars+0x318)($t1)
|
||||
/* f16b8d4: 3c02800b */ lui $v0,%hi(g_MpSetup+0xc)
|
||||
/* f16b8d8: 1120000b */ beqz $t1,.L0f16b908
|
||||
/* f16b8dc: 00000000 */ nop
|
||||
/* f16b8e0: 8c42cb94 */ lw $v0,%lo(g_MpSetup+0xc)($v0)
|
||||
/* f16b8e4: 304a0040 */ andi $t2,$v0,0x40
|
||||
/* f16b8e8: 11400003 */ beqz $t2,.L0f16b8f8
|
||||
/* f16b8ec: 304b0080 */ andi $t3,$v0,0x80
|
||||
/* f16b8f0: 1000001a */ b .L0f16b95c
|
||||
/* f16b8f4: 24020001 */ addiu $v0,$zero,0x1
|
||||
.L0f16b8f8:
|
||||
/* f16b8f8: 51600018 */ beqzl $t3,.L0f16b95c
|
||||
/* f16b8fc: 00001025 */ or $v0,$zero,$zero
|
||||
/* f16b900: 10000016 */ b .L0f16b95c
|
||||
/* f16b904: 24020002 */ addiu $v0,$zero,0x2
|
||||
.L0f16b908:
|
||||
/* f16b908: 0fc41b99 */ jal cheatIsActive
|
||||
/* f16b90c: 24040006 */ addiu $a0,$zero,0x6
|
||||
/* f16b910: 10400003 */ beqz $v0,.L0f16b920
|
||||
/* f16b914: 00000000 */ nop
|
||||
/* f16b918: 10000010 */ b .L0f16b95c
|
||||
/* f16b91c: 24020001 */ addiu $v0,$zero,0x1
|
||||
.L0f16b920:
|
||||
/* f16b920: 0fc47b9c */ jal debugGetSlowMotion
|
||||
/* f16b924: 00000000 */ nop
|
||||
/* f16b928: 24010001 */ addiu $at,$zero,0x1
|
||||
/* f16b92c: 14410003 */ bne $v0,$at,.L0f16b93c
|
||||
/* f16b930: 00000000 */ nop
|
||||
/* f16b934: 10000009 */ b .L0f16b95c
|
||||
/* f16b938: 24020001 */ addiu $v0,$zero,0x1
|
||||
.L0f16b93c:
|
||||
/* f16b93c: 0fc47b9c */ jal debugGetSlowMotion
|
||||
/* f16b940: 00000000 */ nop
|
||||
/* f16b944: 24010002 */ addiu $at,$zero,0x2
|
||||
/* f16b948: 54410004 */ bnel $v0,$at,.L0f16b95c
|
||||
/* f16b94c: 00001025 */ or $v0,$zero,$zero
|
||||
/* f16b950: 10000002 */ b .L0f16b95c
|
||||
/* f16b954: 24020002 */ addiu $v0,$zero,0x2
|
||||
/* f16b958: 00001025 */ or $v0,$zero,$zero
|
||||
.L0f16b95c:
|
||||
/* f16b95c: 8fbf0014 */ lw $ra,0x14($sp)
|
||||
/* f16b960: 27bd0030 */ addiu $sp,$sp,0x30
|
||||
/* f16b964: 03e00008 */ jr $ra
|
||||
/* f16b968: 00000000 */ nop
|
||||
);
|
||||
#else
|
||||
// Can't match the antipiracy part (used in ntsc-1.0 and above)
|
||||
s32 lvGetSlowMotionType(void)
|
||||
{
|
||||
#if PIRACYCHECKS
|
||||
u32 addr = sub54321(0xb0000a5c + 54321);
|
||||
#if VERSION >= VERSION_PAL_FINAL
|
||||
u32 addr = sub54321(0xb0000340 + SUBAMOUNT);
|
||||
u32 actual;
|
||||
u32 expected = sub54321(0x1740fff9);
|
||||
u32 expected = sub54321(0x0330c820 + SUBAMOUNT);
|
||||
#else
|
||||
u32 addr = sub54321(0xb0000a5c + SUBAMOUNT);
|
||||
u32 actual;
|
||||
u32 expected = sub54321(0x1740fff9 + SUBAMOUNT);
|
||||
#endif
|
||||
|
||||
osPiReadIo(addr, &actual);
|
||||
|
||||
if (actual != expected) {
|
||||
extern u32 rspbootTextStart;
|
||||
extern u32 rspbootStartPlusOne;
|
||||
u32 *ptr = &rspbootStart;
|
||||
u32 *end = &ptr[1024];
|
||||
u32 *ptr = (u32 *)&rspbootTextStart;
|
||||
u32 *end = (u32 *)(u32)ptr + 1024;
|
||||
|
||||
if (!(end < &rspbootStartPlusOne)) {
|
||||
do {
|
||||
*ptr += 8;
|
||||
ptr++;
|
||||
} while (ptr < end);
|
||||
while (ptr < end) {
|
||||
*ptr += 8;
|
||||
ptr++;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
|
@ -6683,7 +6525,6 @@ s32 lvGetSlowMotionType(void)
|
|||
|
||||
return SLOWMOTION_OFF;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if VERSION >= VERSION_PAL_FINAL
|
||||
GLOBAL_ASM(
|
||||
|
|
|
|||
Loading…
Reference in New Issue