mirror of
https://gitlab.com/ryandwyer/perfect-dark
synced 2026-07-31 23:58:38 -04:00
Decompile ciGetChrBioByBodynum
This commit is contained in:
+11
-11
@@ -12858,18 +12858,18 @@ u32 var8008889c = 0x00000001;
|
||||
u32 var800888a0 = 0x00000000;
|
||||
|
||||
// 2e8c4
|
||||
u32 character_bios[] = {
|
||||
struct chrbio g_ChrBios[10] = {
|
||||
// name, race, age, profile
|
||||
/*0x00*/ 0x58db, 0x58dc, 0x58dd, 0x58de,
|
||||
/*0x01*/ 0x58df, 0x58e0, 0x58e1, 0x58e2,
|
||||
/*0x02*/ 0x58e3, 0x58e4, 0x58e5, 0x58e6,
|
||||
/*0x03*/ 0x58e7, 0x58e8, 0x58e9, 0x58ea,
|
||||
/*0x04*/ 0x58eb, 0x58ec, 0x58ed, 0x58ee,
|
||||
/*0x05*/ 0x58ef, 0x58f0, 0x58f1, 0x58f2,
|
||||
/*0x06*/ 0x58f3, 0x58f4, 0x58f5, 0x58f6,
|
||||
/*0x07*/ 0x58f7, 0x58f8, 0x58f9, 0x58fa,
|
||||
/*0x08*/ 0x58fb, 0x58fc, 0x58fd, 0x58fe,
|
||||
/*0x09*/ 0x58ff, 0x5900, 0x5901, 0x5902,
|
||||
/*0x00*/ { 0x58db, 0x58dc, 0x58dd, 0x58de }, // Joanna Dark
|
||||
/*0x01*/ { 0x58df, 0x58e0, 0x58e1, 0x58e2 }, // Jonathan
|
||||
/*0x02*/ { 0x58e3, 0x58e4, 0x58e5, 0x58e6 }, // Daniel Carrington
|
||||
/*0x03*/ { 0x58e7, 0x58e8, 0x58e9, 0x58ea }, // Cassandra De Vries
|
||||
/*0x04*/ { 0x58eb, 0x58ec, 0x58ed, 0x58ee }, // Trent Easton
|
||||
/*0x05*/ { 0x58ef, 0x58f0, 0x58f1, 0x58f2 }, // Dr. Caroll
|
||||
/*0x06*/ { 0x58f3, 0x58f4, 0x58f5, 0x58f6 }, // Elvis
|
||||
/*0x07*/ { 0x58f7, 0x58f8, 0x58f9, 0x58fa }, // Mr. Blonde
|
||||
/*0x08*/ { 0x58fb, 0x58fc, 0x58fd, 0x58fe }, // Mr. Blonde (repeat)
|
||||
/*0x09*/ { 0x58ff, 0x5900, 0x5901, 0x5902 }, // The U.S. President
|
||||
};
|
||||
|
||||
// 2e964
|
||||
|
||||
+79
-147
@@ -308,89 +308,6 @@ const u32 var7f1b95cc[] = {0x7f1a1090};
|
||||
const u32 var7f1b95d0[] = {0x7f1a1090};
|
||||
const u32 var7f1b95d4[] = {0x7f1a1090};
|
||||
const u32 var7f1b95d8[] = {0x7f1a1060};
|
||||
const u32 var7f1b95dc[] = {0x7f1a1110};
|
||||
const u32 var7f1b95e0[] = {0x7f1a1170};
|
||||
const u32 var7f1b95e4[] = {0x7f1a1170};
|
||||
const u32 var7f1b95e8[] = {0x7f1a1170};
|
||||
const u32 var7f1b95ec[] = {0x7f1a1120};
|
||||
const u32 var7f1b95f0[] = {0x7f1a1148};
|
||||
const u32 var7f1b95f4[] = {0x7f1a1170};
|
||||
const u32 var7f1b95f8[] = {0x7f1a1130};
|
||||
const u32 var7f1b95fc[] = {0x7f1a1170};
|
||||
const u32 var7f1b9600[] = {0x7f1a1170};
|
||||
const u32 var7f1b9604[] = {0x7f1a1170};
|
||||
const u32 var7f1b9608[] = {0x7f1a1170};
|
||||
const u32 var7f1b960c[] = {0x7f1a1170};
|
||||
const u32 var7f1b9610[] = {0x7f1a1170};
|
||||
const u32 var7f1b9614[] = {0x7f1a1170};
|
||||
const u32 var7f1b9618[] = {0x7f1a1170};
|
||||
const u32 var7f1b961c[] = {0x7f1a1128};
|
||||
const u32 var7f1b9620[] = {0x7f1a1140};
|
||||
const u32 var7f1b9624[] = {0x7f1a1170};
|
||||
const u32 var7f1b9628[] = {0x7f1a1170};
|
||||
const u32 var7f1b962c[] = {0x7f1a1170};
|
||||
const u32 var7f1b9630[] = {0x7f1a1138};
|
||||
const u32 var7f1b9634[] = {0x7f1a1170};
|
||||
const u32 var7f1b9638[] = {0x7f1a1170};
|
||||
const u32 var7f1b963c[] = {0x7f1a1170};
|
||||
const u32 var7f1b9640[] = {0x7f1a1170};
|
||||
const u32 var7f1b9644[] = {0x7f1a1170};
|
||||
const u32 var7f1b9648[] = {0x7f1a1170};
|
||||
const u32 var7f1b964c[] = {0x7f1a1170};
|
||||
const u32 var7f1b9650[] = {0x7f1a1170};
|
||||
const u32 var7f1b9654[] = {0x7f1a1170};
|
||||
const u32 var7f1b9658[] = {0x7f1a1170};
|
||||
const u32 var7f1b965c[] = {0x7f1a1170};
|
||||
const u32 var7f1b9660[] = {0x7f1a1170};
|
||||
const u32 var7f1b9664[] = {0x7f1a1170};
|
||||
const u32 var7f1b9668[] = {0x7f1a1168};
|
||||
const u32 var7f1b966c[] = {0x7f1a1170};
|
||||
const u32 var7f1b9670[] = {0x7f1a1170};
|
||||
const u32 var7f1b9674[] = {0x7f1a1170};
|
||||
const u32 var7f1b9678[] = {0x7f1a1170};
|
||||
const u32 var7f1b967c[] = {0x7f1a1170};
|
||||
const u32 var7f1b9680[] = {0x7f1a1170};
|
||||
const u32 var7f1b9684[] = {0x7f1a1170};
|
||||
const u32 var7f1b9688[] = {0x7f1a1170};
|
||||
const u32 var7f1b968c[] = {0x7f1a1170};
|
||||
const u32 var7f1b9690[] = {0x7f1a1170};
|
||||
const u32 var7f1b9694[] = {0x7f1a1170};
|
||||
const u32 var7f1b9698[] = {0x7f1a1170};
|
||||
const u32 var7f1b969c[] = {0x7f1a1170};
|
||||
const u32 var7f1b96a0[] = {0x7f1a1170};
|
||||
const u32 var7f1b96a4[] = {0x7f1a1170};
|
||||
const u32 var7f1b96a8[] = {0x7f1a1170};
|
||||
const u32 var7f1b96ac[] = {0x7f1a1170};
|
||||
const u32 var7f1b96b0[] = {0x7f1a1170};
|
||||
const u32 var7f1b96b4[] = {0x7f1a1170};
|
||||
const u32 var7f1b96b8[] = {0x7f1a1170};
|
||||
const u32 var7f1b96bc[] = {0x7f1a1170};
|
||||
const u32 var7f1b96c0[] = {0x7f1a1170};
|
||||
const u32 var7f1b96c4[] = {0x7f1a1170};
|
||||
const u32 var7f1b96c8[] = {0x7f1a1118};
|
||||
const u32 var7f1b96cc[] = {0x7f1a1524};
|
||||
const u32 var7f1b96d0[] = {0x7f1a152c};
|
||||
const u32 var7f1b96d4[] = {0x7f1a1534};
|
||||
const u32 var7f1b96d8[] = {0x7f1a153c};
|
||||
const u32 var7f1b96dc[] = {0x7f1a1544};
|
||||
const u32 var7f1b96e0[] = {0x7f1a154c};
|
||||
const u32 var7f1b96e4[] = {0x7f1a1554};
|
||||
const u32 var7f1b96e8[] = {0x7f1a155c};
|
||||
const u32 var7f1b96ec[] = {0x7f1a1564};
|
||||
const u32 var7f1b96f0[] = {0x7f1a156c};
|
||||
const u32 var7f1b96f4[] = {0x7f1a1574};
|
||||
const u32 var7f1b96f8[] = {0x7f1a157c};
|
||||
const u32 var7f1b96fc[] = {0x7f1a1584};
|
||||
const u32 var7f1b9700[] = {0x7f1a158c};
|
||||
const u32 var7f1b9704[] = {0x7f1a1594};
|
||||
const u32 var7f1b9708[] = {0x7f1a159c};
|
||||
const u32 var7f1b970c[] = {0x7f1a15a4};
|
||||
const u32 var7f1b9710[] = {0x7f1a15ac};
|
||||
const u32 var7f1b9714[] = {0x7f1a15b4};
|
||||
const u32 var7f1b9718[] = {0x7f1a15bc};
|
||||
const u32 var7f1b971c[] = {0x7f1a15c4};
|
||||
const u32 var7f1b9720[] = {0x7f1a15cc};
|
||||
const u32 var7f1b9724[] = {0x7f1a15d4};
|
||||
|
||||
bool ciIsTourDone(void)
|
||||
{
|
||||
@@ -5460,69 +5377,36 @@ glabel func0f1a0fec
|
||||
/* f1a10a0: 00000000 */ sll $zero,$zero,0x0
|
||||
);
|
||||
|
||||
GLOBAL_ASM(
|
||||
glabel func0f1a10a4
|
||||
/* f1a10a4: 27bdff48 */ addiu $sp,$sp,-184
|
||||
/* f1a10a8: 3c0e8009 */ lui $t6,%hi(character_bios)
|
||||
/* f1a10ac: 27a30018 */ addiu $v1,$sp,0x18
|
||||
/* f1a10b0: 25ce88a4 */ addiu $t6,$t6,%lo(character_bios)
|
||||
/* f1a10b4: afbf0014 */ sw $ra,0x14($sp)
|
||||
/* f1a10b8: 25d9009c */ addiu $t9,$t6,0x9c
|
||||
/* f1a10bc: 00604025 */ or $t0,$v1,$zero
|
||||
.L0f1a10c0:
|
||||
/* f1a10c0: 8dc10000 */ lw $at,0x0($t6)
|
||||
/* f1a10c4: 25ce000c */ addiu $t6,$t6,0xc
|
||||
/* f1a10c8: 2508000c */ addiu $t0,$t0,0xc
|
||||
/* f1a10cc: ad01fff4 */ sw $at,-0xc($t0)
|
||||
/* f1a10d0: 8dc1fff8 */ lw $at,-0x8($t6)
|
||||
/* f1a10d4: ad01fff8 */ sw $at,-0x8($t0)
|
||||
/* f1a10d8: 8dc1fffc */ lw $at,-0x4($t6)
|
||||
/* f1a10dc: 15d9fff8 */ bne $t6,$t9,.L0f1a10c0
|
||||
/* f1a10e0: ad01fffc */ sw $at,-0x4($t0)
|
||||
/* f1a10e4: 8dc10000 */ lw $at,0x0($t6)
|
||||
/* f1a10e8: 2489ffaa */ addiu $t1,$a0,-86
|
||||
/* f1a10ec: ad010000 */ sw $at,0x0($t0)
|
||||
/* f1a10f0: 2d21003c */ sltiu $at,$t1,0x3c
|
||||
/* f1a10f4: 1020001e */ beqz $at,.L0f1a1170
|
||||
/* f1a10f8: 00094880 */ sll $t1,$t1,0x2
|
||||
/* f1a10fc: 3c017f1c */ lui $at,%hi(var7f1b95dc)
|
||||
/* f1a1100: 00290821 */ addu $at,$at,$t1
|
||||
/* f1a1104: 8c2995dc */ lw $t1,%lo(var7f1b95dc)($at)
|
||||
/* f1a1108: 01200008 */ jr $t1
|
||||
/* f1a110c: 00000000 */ sll $zero,$zero,0x0
|
||||
/* f1a1110: 10000018 */ beqz $zero,.L0f1a1174
|
||||
/* f1a1114: 00601025 */ or $v0,$v1,$zero
|
||||
/* f1a1118: 10000016 */ beqz $zero,.L0f1a1174
|
||||
/* f1a111c: 27a20028 */ addiu $v0,$sp,0x28
|
||||
/* f1a1120: 10000014 */ beqz $zero,.L0f1a1174
|
||||
/* f1a1124: 27a20038 */ addiu $v0,$sp,0x38
|
||||
/* f1a1128: 10000012 */ beqz $zero,.L0f1a1174
|
||||
/* f1a112c: 27a20048 */ addiu $v0,$sp,0x48
|
||||
/* f1a1130: 10000010 */ beqz $zero,.L0f1a1174
|
||||
/* f1a1134: 27a20058 */ addiu $v0,$sp,0x58
|
||||
/* f1a1138: 1000000e */ beqz $zero,.L0f1a1174
|
||||
/* f1a113c: 27a20068 */ addiu $v0,$sp,0x68
|
||||
/* f1a1140: 1000000c */ beqz $zero,.L0f1a1174
|
||||
/* f1a1144: 27a20078 */ addiu $v0,$sp,0x78
|
||||
/* f1a1148: 0fc672e0 */ jal stageIsComplete
|
||||
/* f1a114c: 2404000b */ addiu $a0,$zero,0xb
|
||||
/* f1a1150: 10400003 */ beqz $v0,.L0f1a1160
|
||||
/* f1a1154: 00000000 */ sll $zero,$zero,0x0
|
||||
/* f1a1158: 10000006 */ beqz $zero,.L0f1a1174
|
||||
/* f1a115c: 27a20098 */ addiu $v0,$sp,0x98
|
||||
.L0f1a1160:
|
||||
/* f1a1160: 10000004 */ beqz $zero,.L0f1a1174
|
||||
/* f1a1164: 27a20088 */ addiu $v0,$sp,0x88
|
||||
/* f1a1168: 10000002 */ beqz $zero,.L0f1a1174
|
||||
/* f1a116c: 27a200a8 */ addiu $v0,$sp,0xa8
|
||||
.L0f1a1170:
|
||||
/* f1a1170: 00001025 */ or $v0,$zero,$zero
|
||||
.L0f1a1174:
|
||||
/* f1a1174: 8fbf0014 */ lw $ra,0x14($sp)
|
||||
/* f1a1178: 27bd00b8 */ addiu $sp,$sp,0xb8
|
||||
/* f1a117c: 03e00008 */ jr $ra
|
||||
/* f1a1180: 00000000 */ sll $zero,$zero,0x0
|
||||
);
|
||||
struct chrbio *ciGetChrBioByBodynum(u32 bodynum)
|
||||
{
|
||||
struct chrbio bios[10] = g_ChrBios;
|
||||
|
||||
switch (bodynum) {
|
||||
case BODY_DARK_COMBAT:
|
||||
return &bios[0];
|
||||
case BODY_JONATHAN:
|
||||
return &bios[1];
|
||||
case BODY_CARRINGTON:
|
||||
return &bios[2];
|
||||
case BODY_CASSANDRA:
|
||||
return &bios[3];
|
||||
case BODY_TRENT:
|
||||
return &bios[4];
|
||||
case BODY_DRCAROLL:
|
||||
return &bios[5];
|
||||
case BODY_THEKING:
|
||||
return &bios[6];
|
||||
case BODY_MRBLONDE:
|
||||
if (stageIsComplete(SOLOSTAGEINDEX_CRASHSITE)) {
|
||||
return &bios[8];
|
||||
}
|
||||
return &bios[7];
|
||||
case BODY_PRESIDENT:
|
||||
return &bios[9];
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
GLOBAL_ASM(
|
||||
glabel func0f1a1184
|
||||
@@ -5531,7 +5415,7 @@ glabel func0f1a1184
|
||||
/* f1a118c: 3c048009 */ lui $a0,%hi(var800888a0)
|
||||
/* f1a1190: 0fc68484 */ jal func0f1a1210
|
||||
/* f1a1194: 908488a0 */ lbu $a0,%lo(var800888a0)($a0)
|
||||
/* f1a1198: 0fc68429 */ jal func0f1a10a4
|
||||
/* f1a1198: 0fc68429 */ jal ciGetChrBioByBodynum
|
||||
/* f1a119c: 00402025 */ or $a0,$v0,$zero
|
||||
/* f1a11a0: 0fc5b9f1 */ jal langGet
|
||||
/* f1a11a4: 8c44000c */ lw $a0,0xc($v0)
|
||||
@@ -5788,6 +5672,54 @@ glabel func0f1a14a8
|
||||
|
||||
GLOBAL_ASM(
|
||||
glabel func0f1a14b4
|
||||
.late_rodata
|
||||
glabel var7f1b96cc
|
||||
.word 0x7f1a1524
|
||||
glabel var7f1b96d0
|
||||
.word 0x7f1a152c
|
||||
glabel var7f1b96d4
|
||||
.word 0x7f1a1534
|
||||
glabel var7f1b96d8
|
||||
.word 0x7f1a153c
|
||||
glabel var7f1b96dc
|
||||
.word 0x7f1a1544
|
||||
glabel var7f1b96e0
|
||||
.word 0x7f1a154c
|
||||
glabel var7f1b96e4
|
||||
.word 0x7f1a1554
|
||||
glabel var7f1b96e8
|
||||
.word 0x7f1a155c
|
||||
glabel var7f1b96ec
|
||||
.word 0x7f1a1564
|
||||
glabel var7f1b96f0
|
||||
.word 0x7f1a156c
|
||||
glabel var7f1b96f4
|
||||
.word 0x7f1a1574
|
||||
glabel var7f1b96f8
|
||||
.word 0x7f1a157c
|
||||
glabel var7f1b96fc
|
||||
.word 0x7f1a1584
|
||||
glabel var7f1b9700
|
||||
.word 0x7f1a158c
|
||||
glabel var7f1b9704
|
||||
.word 0x7f1a1594
|
||||
glabel var7f1b9708
|
||||
.word 0x7f1a159c
|
||||
glabel var7f1b970c
|
||||
.word 0x7f1a15a4
|
||||
glabel var7f1b9710
|
||||
.word 0x7f1a15ac
|
||||
glabel var7f1b9714
|
||||
.word 0x7f1a15b4
|
||||
glabel var7f1b9718
|
||||
.word 0x7f1a15bc
|
||||
glabel var7f1b971c
|
||||
.word 0x7f1a15c4
|
||||
glabel var7f1b9720
|
||||
.word 0x7f1a15cc
|
||||
glabel var7f1b9724
|
||||
.word 0x7f1a15d4
|
||||
.text
|
||||
/* f1a14b4: 27bdfe90 */ addiu $sp,$sp,-368
|
||||
/* f1a14b8: 3c0e8009 */ lui $t6,%hi(place_bios)
|
||||
/* f1a14bc: 27a30000 */ addiu $v1,$sp,0x0
|
||||
|
||||
@@ -3081,7 +3081,7 @@ glabel var7f1b9960
|
||||
/* f1a5e58: 00000000 */ sll $zero,$zero,0x0
|
||||
/* f1a5e5c: 0fc68484 */ jal func0f1a1210
|
||||
/* f1a5e60: 00402025 */ or $a0,$v0,$zero
|
||||
/* f1a5e64: 0fc68429 */ jal func0f1a10a4
|
||||
/* f1a5e64: 0fc68429 */ jal ciGetChrBioByBodynum
|
||||
/* f1a5e68: 00402025 */ or $a0,$v0,$zero
|
||||
/* f1a5e6c: 0fc5b9f1 */ jal langGet
|
||||
/* f1a5e70: 8c440000 */ lw $a0,0x0($v0)
|
||||
@@ -3393,7 +3393,7 @@ glabel func0f1a628c
|
||||
/* f1a6298: 3c048009 */ lui $a0,%hi(var800888a0)
|
||||
/* f1a629c: 0fc68484 */ jal func0f1a1210
|
||||
/* f1a62a0: 908488a0 */ lbu $a0,%lo(var800888a0)($a0)
|
||||
/* f1a62a4: 0fc68429 */ jal func0f1a10a4
|
||||
/* f1a62a4: 0fc68429 */ jal ciGetChrBioByBodynum
|
||||
/* f1a62a8: 00402025 */ or $a0,$v0,$zero
|
||||
/* f1a62ac: 0fc5b9f1 */ jal langGet
|
||||
/* f1a62b0: 8c440000 */ lw $a0,0x0($v0)
|
||||
@@ -3418,7 +3418,7 @@ glabel func0f1a62e0
|
||||
/* f1a62ec: 3c048009 */ lui $a0,%hi(var800888a0)
|
||||
/* f1a62f0: 0fc68484 */ jal func0f1a1210
|
||||
/* f1a62f4: 908488a0 */ lbu $a0,%lo(var800888a0)($a0)
|
||||
/* f1a62f8: 0fc68429 */ jal func0f1a10a4
|
||||
/* f1a62f8: 0fc68429 */ jal ciGetChrBioByBodynum
|
||||
/* f1a62fc: 00402025 */ or $a0,$v0,$zero
|
||||
/* f1a6300: 0fc5b9f1 */ jal langGet
|
||||
/* f1a6304: 8c440008 */ lw $a0,0x8($v0)
|
||||
@@ -3443,7 +3443,7 @@ glabel func0f1a6334
|
||||
/* f1a6340: 3c048009 */ lui $a0,%hi(var800888a0)
|
||||
/* f1a6344: 0fc68484 */ jal func0f1a1210
|
||||
/* f1a6348: 908488a0 */ lbu $a0,%lo(var800888a0)($a0)
|
||||
/* f1a634c: 0fc68429 */ jal func0f1a10a4
|
||||
/* f1a634c: 0fc68429 */ jal ciGetChrBioByBodynum
|
||||
/* f1a6350: 00402025 */ or $a0,$v0,$zero
|
||||
/* f1a6354: 0fc5b9f1 */ jal langGet
|
||||
/* f1a6358: 8c440004 */ lw $a0,0x4($v0)
|
||||
|
||||
@@ -329,7 +329,7 @@ extern u32 var8008880c;
|
||||
extern u32 var80088810;
|
||||
extern u32 var80088854;
|
||||
extern u32 var800888a0;
|
||||
extern u32 character_bios[];
|
||||
extern struct chrbio g_ChrBios[10];
|
||||
extern u32 misc_bios[];
|
||||
extern u32 var80088964;
|
||||
extern u32 place_bios[];
|
||||
|
||||
@@ -58,7 +58,7 @@ u32 func0f1a0c30(void);
|
||||
u32 func0f1a0cc0(void);
|
||||
u32 func0f1a0fc8(void);
|
||||
u32 func0f1a0fec(void);
|
||||
u32 func0f1a10a4(void);
|
||||
struct chrbio *ciGetChrBioByBodynum(u32 bodynum);
|
||||
u32 func0f1a1184(void);
|
||||
u32 func0f1a11b8(void);
|
||||
u32 func0f1a1210(void);
|
||||
|
||||
@@ -5243,4 +5243,11 @@ struct var800705c0 {
|
||||
u32 unk28;
|
||||
};
|
||||
|
||||
struct chrbio {
|
||||
u32 name;
|
||||
u32 race;
|
||||
u32 age;
|
||||
u32 profile;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user