Decompile dtTick

This commit is contained in:
Ryan Dwyer 2020-04-10 19:57:27 +10:00
parent b67ed7c291
commit eb8ff4d80d
8 changed files with 53 additions and 104 deletions

View File

@ -708,7 +708,7 @@ u32 place_bios[] = {
};
u8 var80088ad8 = 0x00000000;
u32 var80088adc = 0x00000000;
u8 var80088adc = 0;
u32 var80088ae0 = 0x39383736;
u32 var80088ae4 = 0x35343332;
u32 var80088ae8 = 0x31300000;

View File

@ -5470,7 +5470,7 @@ glabel func0f16b96c
/* f16cac4: 8e8f0034 */ lw $t7,0x34($s4)
/* f16cac8: 51e00006 */ beqzl $t7,.L0f16cae4
/* f16cacc: 8fbf0044 */ lw $ra,0x44($sp)
/* f16cad0: 0fc68666 */ jal func0f1a1998
/* f16cad0: 0fc68666 */ jal dtTick
/* f16cad4: 00000000 */ sll $zero,$zero,0x0
/* f16cad8: 0fc6881c */ jal func0f1a2070
/* f16cadc: 00000000 */ sll $zero,$zero,0x0
@ -5845,7 +5845,7 @@ glabel func0f16b96c
// func0f19f994();
//
// if (g_Vars.lvupdate240 != 0) {
// func0f1a1998();
// dtTick();
// func0f1a2070();
// }
// }

View File

@ -5846,96 +5846,43 @@ void dtPushEndscreen(void)
func0f0f85e0(&g_DeviceTrainingStatsFailedMenuDialog, MENUROOT_TRAINING);
}
g_DeviceTrainingData.unk01 = 0;
g_DeviceTrainingData.timeleft = 0;
g_DeviceTrainingData.completed = false;
g_DeviceTrainingData.failed = false;
g_DeviceTrainingData.finished = false;
g_DeviceTrainingData.holographedpc = false;
}
GLOBAL_ASM(
glabel func0f1a1998
/* f1a1998: 3c0e8009 */ lui $t6,%hi(var80088adc)
/* f1a199c: 91ce8adc */ lbu $t6,%lo(var80088adc)($t6)
/* f1a19a0: 27bdffe8 */ addiu $sp,$sp,-24
/* f1a19a4: afbf0014 */ sw $ra,0x14($sp)
/* f1a19a8: 11c00041 */ beqz $t6,.L0f1a1ab0
/* f1a19ac: 3c03800b */ lui $v1,%hi(g_DeviceTrainingData)
/* f1a19b0: 2463d1a0 */ addiu $v1,$v1,%lo(g_DeviceTrainingData)
/* f1a19b4: 8c620000 */ lw $v0,0x0($v1)
/* f1a19b8: 3c04800a */ lui $a0,%hi(g_Vars)
/* f1a19bc: 24849fc0 */ addiu $a0,$a0,%lo(g_Vars)
/* f1a19c0: 00027fc2 */ srl $t7,$v0,0x1f
/* f1a19c4: 11e0002c */ beqz $t7,.L0f1a1a78
/* f1a19c8: 0002c0c0 */ sll $t8,$v0,0x3
/* f1a19cc: 8c780004 */ lw $t8,0x4($v1)
/* f1a19d0: 8c990038 */ lw $t9,0x38($a0)
/* f1a19d4: 8c890284 */ lw $t1,0x284($a0)
/* f1a19d8: 03194021 */ addu $t0,$t8,$t9
/* f1a19dc: ac680004 */ sw $t0,0x4($v1)
/* f1a19e0: 8d2a00d8 */ lw $t2,0xd8($t1)
/* f1a19e4: 51400004 */ beqzl $t2,.L0f1a19f8
/* f1a19e8: 00002025 */ or $a0,$zero,$zero
/* f1a19ec: 0fc686fb */ jal func0f1a1bec
/* f1a19f0: 00000000 */ sll $zero,$zero,0x0
/* f1a19f4: 00002025 */ or $a0,$zero,$zero
.L0f1a19f8:
/* f1a19f8: 0fc127da */ jal chrHasStageFlag
/* f1a19fc: 24050010 */ addiu $a1,$zero,0x10
/* f1a1a00: 1040000d */ beqz $v0,.L0f1a1a38
/* f1a1a04: 00002025 */ or $a0,$zero,$zero
/* f1a1a08: 0fc686fb */ jal func0f1a1bec
/* f1a1a0c: 00000000 */ sll $zero,$zero,0x0
/* f1a1a10: 3c03800b */ lui $v1,%hi(g_DeviceTrainingData)
/* f1a1a14: 2463d1a0 */ addiu $v1,$v1,%lo(g_DeviceTrainingData)
/* f1a1a18: 906c0000 */ lbu $t4,0x0($v1)
/* f1a1a1c: 240e0001 */ addiu $t6,$zero,0x1
/* f1a1a20: a06e0001 */ sb $t6,0x1($v1)
/* f1a1a24: 35980040 */ ori $t8,$t4,0x40
/* f1a1a28: a0780000 */ sb $t8,0x0($v1)
/* f1a1a2c: 37190010 */ ori $t9,$t8,0x10
/* f1a1a30: 1000001f */ beqz $zero,.L0f1a1ab0
/* f1a1a34: a0790000 */ sb $t9,0x0($v1)
.L0f1a1a38:
/* f1a1a38: 0fc127da */ jal chrHasStageFlag
/* f1a1a3c: 24050008 */ addiu $a1,$zero,0x8
/* f1a1a40: 5040001c */ beqzl $v0,.L0f1a1ab4
/* f1a1a44: 8fbf0014 */ lw $ra,0x14($sp)
/* f1a1a48: 0fc686fb */ jal func0f1a1bec
/* f1a1a4c: 00000000 */ sll $zero,$zero,0x0
/* f1a1a50: 3c03800b */ lui $v1,%hi(g_DeviceTrainingData)
/* f1a1a54: 2463d1a0 */ addiu $v1,$v1,%lo(g_DeviceTrainingData)
/* f1a1a58: 90690000 */ lbu $t1,0x0($v1)
/* f1a1a5c: 240b0001 */ addiu $t3,$zero,0x1
/* f1a1a60: a06b0001 */ sb $t3,0x1($v1)
/* f1a1a64: 352d0020 */ ori $t5,$t1,0x20
/* f1a1a68: a06d0000 */ sb $t5,0x0($v1)
/* f1a1a6c: 35ae0010 */ ori $t6,$t5,0x10
/* f1a1a70: 1000000f */ beqz $zero,.L0f1a1ab0
/* f1a1a74: a06e0000 */ sb $t6,0x0($v1)
.L0f1a1a78:
/* f1a1a78: 0703000e */ bgezl $t8,.L0f1a1ab4
/* f1a1a7c: 8fbf0014 */ lw $ra,0x14($sp)
/* f1a1a80: 80620001 */ lb $v0,0x1($v1)
/* f1a1a84: 3c04800a */ lui $a0,%hi(g_Vars)
/* f1a1a88: 24849fc0 */ addiu $a0,$a0,%lo(g_Vars)
/* f1a1a8c: 5c400006 */ bgtzl $v0,.L0f1a1aa8
/* f1a1a90: 8c990038 */ lw $t9,0x38($a0)
/* f1a1a94: 0fc68643 */ jal dtPushEndscreen
/* f1a1a98: 00000000 */ sll $zero,$zero,0x0
/* f1a1a9c: 10000005 */ beqz $zero,.L0f1a1ab4
/* f1a1aa0: 8fbf0014 */ lw $ra,0x14($sp)
/* f1a1aa4: 8c990038 */ lw $t9,0x38($a0)
.L0f1a1aa8:
/* f1a1aa8: 00594023 */ subu $t0,$v0,$t9
/* f1a1aac: a0680001 */ sb $t0,0x1($v1)
.L0f1a1ab0:
/* f1a1ab0: 8fbf0014 */ lw $ra,0x14($sp)
.L0f1a1ab4:
/* f1a1ab4: 27bd0018 */ addiu $sp,$sp,0x18
/* f1a1ab8: 03e00008 */ jr $ra
/* f1a1abc: 00000000 */ sll $zero,$zero,0x0
);
void dtTick(void)
{
if (var80088adc) {
if (g_DeviceTrainingData.intraining) {
g_DeviceTrainingData.timetaken += g_Vars.lvupdate240_60;
if (g_Vars.currentplayer->isdead) {
dtEnd();
}
if (chrHasStageFlag(NULL, STAGEFLAG_CI_TRIGGER_DEVICE_FAILURE)) {
dtEnd();
g_DeviceTrainingData.failed = true;
g_DeviceTrainingData.timeleft = 1;
g_DeviceTrainingData.finished = true;
} else if (chrHasStageFlag(NULL, STAGEFLAG_CI_TRIGGER_DEVICE_SUCCESS)) {
dtEnd();
g_DeviceTrainingData.completed = true;
g_DeviceTrainingData.timeleft = 1;
g_DeviceTrainingData.finished = true;
}
} else if (g_DeviceTrainingData.finished) {
if (g_DeviceTrainingData.timeleft <= 0) {
dtPushEndscreen();
} else {
g_DeviceTrainingData.timeleft -= g_Vars.lvupdate240_60;
}
}
}
}
GLOBAL_ASM(
glabel func0f1a1ac0
@ -5993,7 +5940,7 @@ void dtBegin(void)
}
GLOBAL_ASM(
glabel func0f1a1bec
glabel dtEnd
/* f1a1bec: 3c02800b */ lui $v0,%hi(g_DeviceTrainingData)
/* f1a1bf0: 2442d1a0 */ addiu $v0,$v0,%lo(g_DeviceTrainingData)
/* f1a1bf4: 904e0000 */ lbu $t6,0x0($v0)
@ -6288,7 +6235,7 @@ void htPushEndscreen(void)
func0f0f85e0(&g_HoloTrainingStatsFailedMenuDialog, MENUROOT_TRAINING);
}
g_HoloTrainingData.unk01 = 0;
g_HoloTrainingData.timeleft = 0;
g_HoloTrainingData.completed = false;
g_HoloTrainingData.failed = false;
g_HoloTrainingData.finished = false;

View File

@ -3169,7 +3169,7 @@ s32 menuhandlerDtOkOrResume(u32 operation, struct menu_item *item, s32 *value)
s32 menuhandler001a6514(u32 operation, struct menu_item *item, s32 *value)
{
if (operation == MENUOP_SET) {
func0f1a1bec();
dtEnd();
}
return 0;

View File

@ -2111,16 +2111,18 @@
#define STAGE_CREDITS 0x5c
#define STAGE_4MBMENU 0x5d
#define STAGEFLAG_CI_TRIGGER_UPLINK 0x00000100
#define STAGEFLAG_CI_TRIGGER_ECMMINE 0x00000200
#define STAGEFLAG_CI_TRIGGER_CAMSPY 0x00000400
#define STAGEFLAG_CI_TRIGGER_NIGHTVISION 0x00000800
#define STAGEFLAG_CI_TRIGGER_DOORDECODER 0x00001000
#define STAGEFLAG_CI_TRIGGER_RTRACKER 0x00002000
#define STAGEFLAG_CI_TRIGGER_IR 0x00004000
#define STAGEFLAG_CI_TRIGGER_XRAY 0x00008000
#define STAGEFLAG_CI_TRIGGER_DISGUISE 0x00010000
#define STAGEFLAG_CI_TRIGGER_CLOAK 0x00020000
#define STAGEFLAG_CI_TRIGGER_DEVICE_SUCCESS 0x00000008
#define STAGEFLAG_CI_TRIGGER_DEVICE_FAILURE 0x00000010
#define STAGEFLAG_CI_TRIGGER_UPLINK 0x00000100
#define STAGEFLAG_CI_TRIGGER_ECMMINE 0x00000200
#define STAGEFLAG_CI_TRIGGER_CAMSPY 0x00000400
#define STAGEFLAG_CI_TRIGGER_NIGHTVISION 0x00000800
#define STAGEFLAG_CI_TRIGGER_DOORDECODER 0x00001000
#define STAGEFLAG_CI_TRIGGER_RTRACKER 0x00002000
#define STAGEFLAG_CI_TRIGGER_IR 0x00004000
#define STAGEFLAG_CI_TRIGGER_XRAY 0x00008000
#define STAGEFLAG_CI_TRIGGER_DISGUISE 0x00010000
#define STAGEFLAG_CI_TRIGGER_CLOAK 0x00020000
#define STAGEINDEX_MAIANSOS 0x00
#define STAGEINDEX_TEST_SILO 0x01

View File

@ -32,7 +32,7 @@ extern u32 misc_bios[];
extern u32 var80088964;
extern u32 place_bios[];
extern u8 var80088ad8;
extern u32 var80088adc;
extern u8 var80088adc;
extern u32 var80088ae0;
extern u32 var80088aec;
extern u32 g_CiDeviceStageFlags[10];

View File

@ -77,10 +77,10 @@ u32 func0f1a17e4(void);
struct trainingdata *getDeviceTrainingData(void);
void dtSetUpPlayer(void);
void dtPushEndscreen(void);
void func0f1a1998(void);
void dtTick(void);
u32 func0f1a1ac0(void);
void dtBegin(void);
u32 func0f1a1bec(void);
void dtEnd(void);
u32 func0f1a1c98(void);
u32 func0f1a1d10(void);
u32 func0f1a1d68(u32 arg0);

View File

@ -4100,7 +4100,7 @@ struct trainingdata {
u8 completed : 1;
u8 finished : 1;
u8 holographedpc : 1;
u8 unk01;
s8 timeleft;
s32 timetaken;
struct defaultobj *obj;
u32 unk0c;