mirror of
https://gitlab.com/ryandwyer/perfect-dark
synced 2026-07-09 13:35:22 -04:00
Decompile ammotypeGetPickupName
This commit is contained in:
+51
-256
@@ -63,6 +63,7 @@
|
||||
#include "lib/dma.h"
|
||||
#include "lib/main.h"
|
||||
#include "lib/snd.h"
|
||||
#include "lib/str.h"
|
||||
#include "lib/memp.h"
|
||||
#include "lib/model.h"
|
||||
#include "lib/rng.h"
|
||||
@@ -33383,263 +33384,57 @@ void ammotypeGetDeterminer(char *dst, s32 ammotype, s32 qty)
|
||||
#endif
|
||||
|
||||
#if VERSION < VERSION_PAL_BETA
|
||||
GLOBAL_ASM(
|
||||
glabel ammotypeGetPickupName
|
||||
.late_rodata
|
||||
glabel var7f1aabd4
|
||||
.word ammotypeGetPickupName+0xd8 # f0879f4
|
||||
glabel var7f1aabd8
|
||||
.word ammotypeGetPickupName+0x184 # f087aa0
|
||||
glabel var7f1aabdc
|
||||
.word ammotypeGetPickupName+0xe0 # f0879fc
|
||||
glabel var7f1aabe0
|
||||
.word ammotypeGetPickupName+0xe8 # f087a04
|
||||
glabel var7f1aabe4
|
||||
.word ammotypeGetPickupName+0xf0 # f087a0c
|
||||
glabel var7f1aabe8
|
||||
.word ammotypeGetPickupName+0xf8 # f087a14
|
||||
glabel var7f1aabec
|
||||
.word ammotypeGetPickupName+0x184 # f087aa0
|
||||
glabel var7f1aabf0
|
||||
.word ammotypeGetPickupName+0x100 # f087a1c
|
||||
glabel var7f1aabf4
|
||||
.word ammotypeGetPickupName+0x108 # f087a24
|
||||
glabel var7f1aabf8
|
||||
.word ammotypeGetPickupName+0x110 # f087a2c
|
||||
glabel var7f1aabfc
|
||||
.word ammotypeGetPickupName+0x118 # f087a34
|
||||
glabel var7f1aac00
|
||||
.word ammotypeGetPickupName+0x120 # f087a3c
|
||||
glabel var7f1aac04
|
||||
.word ammotypeGetPickupName+0x128 # f087a44
|
||||
glabel var7f1aac08
|
||||
.word ammotypeGetPickupName+0x130 # f087a4c
|
||||
glabel var7f1aac0c
|
||||
.word ammotypeGetPickupName+0x138 # f087a54
|
||||
glabel var7f1aac10
|
||||
.word ammotypeGetPickupName+0x140 # f087a5c
|
||||
glabel var7f1aac14
|
||||
.word ammotypeGetPickupName+0x148 # f087a64
|
||||
glabel var7f1aac18
|
||||
.word ammotypeGetPickupName+0x178 # f087a94
|
||||
glabel var7f1aac1c
|
||||
.word ammotypeGetPickupName+0x180 # f087a9c
|
||||
glabel var7f1aac20
|
||||
.word ammotypeGetPickupName+0x150 # f087a6c
|
||||
glabel var7f1aac24
|
||||
.word ammotypeGetPickupName+0x184 # f087aa0
|
||||
glabel var7f1aac28
|
||||
.word ammotypeGetPickupName+0x158 # f087a74
|
||||
glabel var7f1aac2c
|
||||
.word ammotypeGetPickupName+0x160 # f087a7c
|
||||
glabel var7f1aac30
|
||||
.word ammotypeGetPickupName+0x170 # f087a8c
|
||||
glabel var7f1aac34
|
||||
.word ammotypeGetPickupName+0x184 # f087aa0
|
||||
glabel var7f1aac38
|
||||
.word ammotypeGetPickupName+0x184 # f087aa0
|
||||
glabel var7f1aac3c
|
||||
.word ammotypeGetPickupName+0x184 # f087aa0
|
||||
glabel var7f1aac40
|
||||
.word ammotypeGetPickupName+0x168 # f087a84
|
||||
.text
|
||||
/* f08791c: 27bdffe8 */ addiu $sp,$sp,-24
|
||||
/* f087920: 24010001 */ addiu $at,$zero,0x1
|
||||
/* f087924: afbf0014 */ sw $ra,0x14($sp)
|
||||
/* f087928: afa40018 */ sw $a0,0x18($sp)
|
||||
/* f08792c: afa60020 */ sw $a2,0x20($sp)
|
||||
/* f087930: 10a10006 */ beq $a1,$at,.L0f08794c
|
||||
/* f087934: 00a03825 */ or $a3,$a1,$zero
|
||||
/* f087938: 24010002 */ addiu $at,$zero,0x2
|
||||
/* f08793c: 10a10003 */ beq $a1,$at,.L0f08794c
|
||||
/* f087940: 24010004 */ addiu $at,$zero,0x4
|
||||
/* f087944: 54a10009 */ bnel $a1,$at,.L0f08796c
|
||||
/* f087948: 24010009 */ addiu $at,$zero,0x9
|
||||
.L0f08794c:
|
||||
/* f08794c: 0fc5b9f1 */ jal langGet
|
||||
/* f087950: 2404520a */ addiu $a0,$zero,0x520a
|
||||
/* f087954: 8fa40018 */ lw $a0,0x18($sp)
|
||||
/* f087958: 0c004c89 */ jal strcat
|
||||
/* f08795c: 00402825 */ or $a1,$v0,$zero
|
||||
/* f087960: 10000067 */ b .L0f087b00
|
||||
/* f087964: 8fbf0014 */ lw $ra,0x14($sp)
|
||||
/* f087968: 24010009 */ addiu $at,$zero,0x9
|
||||
.L0f08796c:
|
||||
/* f08796c: 14e10018 */ bne $a3,$at,.L0f0879d0
|
||||
/* f087970: 24effffd */ addiu $t7,$a3,-3
|
||||
/* f087974: 0fc5b9f1 */ jal langGet
|
||||
/* f087978: 24045215 */ addiu $a0,$zero,0x5215
|
||||
/* f08797c: 8fa40018 */ lw $a0,0x18($sp)
|
||||
/* f087980: 0c004c89 */ jal strcat
|
||||
/* f087984: 00402825 */ or $a1,$v0,$zero
|
||||
/* f087988: 8fae0020 */ lw $t6,0x20($sp)
|
||||
/* f08798c: 24010001 */ addiu $at,$zero,0x1
|
||||
/* f087990: 15c10008 */ bne $t6,$at,.L0f0879b4
|
||||
/* f087994: 00000000 */ nop
|
||||
/* f087998: 0fc5b9f1 */ jal langGet
|
||||
/* f08799c: 24045216 */ addiu $a0,$zero,0x5216
|
||||
/* f0879a0: 8fa40018 */ lw $a0,0x18($sp)
|
||||
/* f0879a4: 0c004c89 */ jal strcat
|
||||
/* f0879a8: 00402825 */ or $a1,$v0,$zero
|
||||
/* f0879ac: 10000054 */ b .L0f087b00
|
||||
/* f0879b0: 8fbf0014 */ lw $ra,0x14($sp)
|
||||
.L0f0879b4:
|
||||
/* f0879b4: 0fc5b9f1 */ jal langGet
|
||||
/* f0879b8: 24045217 */ addiu $a0,$zero,0x5217
|
||||
/* f0879bc: 8fa40018 */ lw $a0,0x18($sp)
|
||||
/* f0879c0: 0c004c89 */ jal strcat
|
||||
/* f0879c4: 00402825 */ or $a1,$v0,$zero
|
||||
/* f0879c8: 1000004d */ b .L0f087b00
|
||||
/* f0879cc: 8fbf0014 */ lw $ra,0x14($sp)
|
||||
.L0f0879d0:
|
||||
/* f0879d0: 2de1001c */ sltiu $at,$t7,0x1c
|
||||
/* f0879d4: 10200032 */ beqz $at,.L0f087aa0
|
||||
/* f0879d8: 2404ffff */ addiu $a0,$zero,-1
|
||||
/* f0879dc: 000f7880 */ sll $t7,$t7,0x2
|
||||
/* f0879e0: 3c017f1b */ lui $at,%hi(var7f1aabd4)
|
||||
/* f0879e4: 002f0821 */ addu $at,$at,$t7
|
||||
/* f0879e8: 8c2fabd4 */ lw $t7,%lo(var7f1aabd4)($at)
|
||||
/* f0879ec: 01e00008 */ jr $t7
|
||||
/* f0879f0: 00000000 */ nop
|
||||
/* f0879f4: 1000002a */ b .L0f087aa0
|
||||
/* f0879f8: 2404522d */ addiu $a0,$zero,0x522d
|
||||
/* f0879fc: 10000028 */ b .L0f087aa0
|
||||
/* f087a00: 2404520b */ addiu $a0,$zero,0x520b
|
||||
/* f087a04: 10000026 */ b .L0f087aa0
|
||||
/* f087a08: 2404522e */ addiu $a0,$zero,0x522e
|
||||
/* f087a0c: 10000024 */ b .L0f087aa0
|
||||
/* f087a10: 2404520e */ addiu $a0,$zero,0x520e
|
||||
/* f087a14: 10000022 */ b .L0f087aa0
|
||||
/* f087a18: 24045210 */ addiu $a0,$zero,0x5210
|
||||
/* f087a1c: 10000020 */ b .L0f087aa0
|
||||
/* f087a20: 2404520c */ addiu $a0,$zero,0x520c
|
||||
/* f087a24: 1000001e */ b .L0f087aa0
|
||||
/* f087a28: 2404520f */ addiu $a0,$zero,0x520f
|
||||
/* f087a2c: 1000001c */ b .L0f087aa0
|
||||
/* f087a30: 24045212 */ addiu $a0,$zero,0x5212
|
||||
/* f087a34: 1000001a */ b .L0f087aa0
|
||||
/* f087a38: 24045213 */ addiu $a0,$zero,0x5213
|
||||
/* f087a3c: 10000018 */ b .L0f087aa0
|
||||
/* f087a40: 24045214 */ addiu $a0,$zero,0x5214
|
||||
/* f087a44: 10000016 */ b .L0f087aa0
|
||||
/* f087a48: 2404522f */ addiu $a0,$zero,0x522f
|
||||
/* f087a4c: 10000014 */ b .L0f087aa0
|
||||
/* f087a50: 24045211 */ addiu $a0,$zero,0x5211
|
||||
/* f087a54: 10000012 */ b .L0f087aa0
|
||||
/* f087a58: 24045219 */ addiu $a0,$zero,0x5219
|
||||
/* f087a5c: 10000010 */ b .L0f087aa0
|
||||
/* f087a60: 2404521a */ addiu $a0,$zero,0x521a
|
||||
/* f087a64: 1000000e */ b .L0f087aa0
|
||||
/* f087a68: 2404521b */ addiu $a0,$zero,0x521b
|
||||
/* f087a6c: 1000000c */ b .L0f087aa0
|
||||
/* f087a70: 2404521b */ addiu $a0,$zero,0x521b
|
||||
/* f087a74: 1000000a */ b .L0f087aa0
|
||||
/* f087a78: 24045223 */ addiu $a0,$zero,0x5223
|
||||
/* f087a7c: 10000008 */ b .L0f087aa0
|
||||
/* f087a80: 24045224 */ addiu $a0,$zero,0x5224
|
||||
/* f087a84: 10000006 */ b .L0f087aa0
|
||||
/* f087a88: 24045226 */ addiu $a0,$zero,0x5226
|
||||
/* f087a8c: 10000004 */ b .L0f087aa0
|
||||
/* f087a90: 24045227 */ addiu $a0,$zero,0x5227
|
||||
/* f087a94: 10000002 */ b .L0f087aa0
|
||||
/* f087a98: 24045230 */ addiu $a0,$zero,0x5230
|
||||
/* f087a9c: 24045231 */ addiu $a0,$zero,0x5231
|
||||
.L0f087aa0:
|
||||
/* f087aa0: 04820008 */ bltzl $a0,.L0f087ac4
|
||||
/* f087aa4: 8fb80020 */ lw $t8,0x20($sp)
|
||||
/* f087aa8: 0fc5b9f1 */ jal langGet
|
||||
/* f087aac: afa7001c */ sw $a3,0x1c($sp)
|
||||
/* f087ab0: 8fa40018 */ lw $a0,0x18($sp)
|
||||
/* f087ab4: 0c004c89 */ jal strcat
|
||||
/* f087ab8: 00402825 */ or $a1,$v0,$zero
|
||||
/* f087abc: 8fa7001c */ lw $a3,0x1c($sp)
|
||||
/* f087ac0: 8fb80020 */ lw $t8,0x20($sp)
|
||||
.L0f087ac4:
|
||||
/* f087ac4: 2b010002 */ slti $at,$t8,0x2
|
||||
/* f087ac8: 1420000c */ bnez $at,.L0f087afc
|
||||
/* f087acc: 2401000f */ addiu $at,$zero,0xf
|
||||
/* f087ad0: 10e1000a */ beq $a3,$at,.L0f087afc
|
||||
/* f087ad4: 24010013 */ addiu $at,$zero,0x13
|
||||
/* f087ad8: 10e10008 */ beq $a3,$at,.L0f087afc
|
||||
/* f087adc: 24010014 */ addiu $at,$zero,0x14
|
||||
/* f087ae0: 50e10007 */ beql $a3,$at,.L0f087b00
|
||||
/* f087ae4: 8fbf0014 */ lw $ra,0x14($sp)
|
||||
/* f087ae8: 0fc5b9f1 */ jal langGet
|
||||
/* f087aec: 24045218 */ addiu $a0,$zero,0x5218
|
||||
/* f087af0: 8fa40018 */ lw $a0,0x18($sp)
|
||||
/* f087af4: 0c004c89 */ jal strcat
|
||||
/* f087af8: 00402825 */ or $a1,$v0,$zero
|
||||
.L0f087afc:
|
||||
/* f087afc: 8fbf0014 */ lw $ra,0x14($sp)
|
||||
.L0f087b00:
|
||||
/* f087b00: 27bd0018 */ addiu $sp,$sp,0x18
|
||||
/* f087b04: 03e00008 */ jr $ra
|
||||
/* f087b08: 00000000 */ nop
|
||||
);
|
||||
void ammotypeGetPickupName(char *dst, s32 ammotype2, s32 qty)
|
||||
{
|
||||
s32 ammotype = ammotype2;
|
||||
|
||||
// Mismatch because goal stores text_id in a0 while the below uses stack.
|
||||
//void ammotypeGetPickupName(char *dst, s32 ammotype, s32 qty)
|
||||
//{
|
||||
// s32 text_id;
|
||||
//
|
||||
// switch (ammotype) {
|
||||
// case AMMOTYPE_PISTOL:
|
||||
// case AMMOTYPE_SMG:
|
||||
// case AMMOTYPE_RIFLE:
|
||||
// strcat(dst, langGet(L_PROPOBJ_010)); // "ammo"
|
||||
// return;
|
||||
// }
|
||||
//
|
||||
// if (ammotype == AMMOTYPE_KNIFE) {
|
||||
// strcat(dst, langGet(L_PROPOBJ_021)); // "combat"
|
||||
//
|
||||
// if (qty == 1) {
|
||||
// strcat(dst, langGet(L_PROPOBJ_022)); // "knife"
|
||||
// } else {
|
||||
// strcat(dst, langGet(L_PROPOBJ_023)); // "knives"
|
||||
// }
|
||||
//
|
||||
// return;
|
||||
// }
|
||||
//
|
||||
// text_id = -1;
|
||||
//
|
||||
// switch (ammotype) {
|
||||
// case AMMOTYPE_CROSSBOW: text_id = L_PROPOBJ_045; break; // "bolt"
|
||||
// case AMMOTYPE_SHOTGUN: text_id = L_PROPOBJ_011; break; // "cartridge"
|
||||
// case AMMOTYPE_FARSIGHT: text_id = L_PROPOBJ_046; break; // "orb"
|
||||
// case AMMOTYPE_GRENADE: text_id = L_PROPOBJ_014; break; // "grenade"
|
||||
// case AMMOTYPE_ROCKET: text_id = L_PROPOBJ_016; break; // "rocket"
|
||||
// case AMMOTYPE_MAGNUM: text_id = L_PROPOBJ_012; break; // "magnum bullet"
|
||||
// case AMMOTYPE_DEVASTATOR: text_id = L_PROPOBJ_015; break; // "grenade round"
|
||||
// case AMMOTYPE_REMOTE_MINE: text_id = L_PROPOBJ_018; break; // "remote mine"
|
||||
// case AMMOTYPE_PROXY_MINE: text_id = L_PROPOBJ_019; break; // "proximity mine"
|
||||
// case AMMOTYPE_TIMED_MINE: text_id = L_PROPOBJ_020; break; // "timed mine"
|
||||
// case AMMOTYPE_REAPER: text_id = L_PROPOBJ_047; break; // "Reaper ammo"
|
||||
// case AMMOTYPE_HOMINGROCKET: text_id = L_PROPOBJ_017; break; // "homing rocket"
|
||||
// case AMMOTYPE_DART: text_id = L_PROPOBJ_025; break; // "dart"
|
||||
// case AMMOTYPE_NBOMB: text_id = L_PROPOBJ_026; break; // "N-Bomb"
|
||||
// case AMMOTYPE_SEDATIVE: text_id = L_PROPOBJ_027; break; // "sedatives"
|
||||
// case AMMOTYPE_PSYCHOSIS: text_id = L_PROPOBJ_027; break; // "sedatives"
|
||||
// case AMMOTYPE_BUG: text_id = L_PROPOBJ_035; break; // "bug"
|
||||
// case AMMOTYPE_MICROCAMERA: text_id = L_PROPOBJ_036; break; // "micro camera"
|
||||
// case AMMOTYPE_TOKEN: text_id = L_PROPOBJ_038; break; // "token"
|
||||
// case AMMOTYPE_PLASTIQUE: text_id = L_PROPOBJ_039; break; // "plastique"
|
||||
// case AMMOTYPE_CLOAK: text_id = L_PROPOBJ_048; break; // "cloaking device"
|
||||
// case AMMOTYPE_BOOST: text_id = L_PROPOBJ_049; break; // "boost pill"
|
||||
// }
|
||||
//
|
||||
// if (text_id >= 0) {
|
||||
// strcat(dst, langGet(text_id));
|
||||
// }
|
||||
//
|
||||
// if (qty >= 2
|
||||
// && ammotype != AMMOTYPE_REAPER
|
||||
// && ammotype != AMMOTYPE_SEDATIVE
|
||||
// && ammotype != AMMOTYPE_CLOAK) {
|
||||
// strcat(dst, langGet(L_PROPOBJ_024)); // "s"
|
||||
// }
|
||||
//}
|
||||
if (ammotype == AMMOTYPE_PISTOL || ammotype == AMMOTYPE_SMG || ammotype == AMMOTYPE_RIFLE) {
|
||||
strcat(dst, langGet(L_PROPOBJ_010)); // "ammo"
|
||||
} else if (ammotype == AMMOTYPE_KNIFE) {
|
||||
strcat(dst, langGet(L_PROPOBJ_021)); // "combat"
|
||||
|
||||
if (qty == 1) {
|
||||
strcat(dst, langGet(L_PROPOBJ_022)); // "knife"
|
||||
} else {
|
||||
strcat(dst, langGet(L_PROPOBJ_023)); // "knives"
|
||||
}
|
||||
} else {
|
||||
s32 textnum = -1;
|
||||
|
||||
switch (ammotype) {
|
||||
case AMMOTYPE_CROSSBOW: textnum = L_PROPOBJ_045; break; // "bolt"
|
||||
case AMMOTYPE_SHOTGUN: textnum = L_PROPOBJ_011; break; // "cartridge"
|
||||
case AMMOTYPE_FARSIGHT: textnum = L_PROPOBJ_046; break; // "orb"
|
||||
case AMMOTYPE_GRENADE: textnum = L_PROPOBJ_014; break; // "grenade"
|
||||
case AMMOTYPE_ROCKET: textnum = L_PROPOBJ_016; break; // "rocket"
|
||||
case AMMOTYPE_MAGNUM: textnum = L_PROPOBJ_012; break; // "magnum bullet"
|
||||
case AMMOTYPE_DEVASTATOR: textnum = L_PROPOBJ_015; break; // "grenade round"
|
||||
case AMMOTYPE_REMOTE_MINE: textnum = L_PROPOBJ_018; break; // "remote mine"
|
||||
case AMMOTYPE_PROXY_MINE: textnum = L_PROPOBJ_019; break; // "proximity mine"
|
||||
case AMMOTYPE_TIMED_MINE: textnum = L_PROPOBJ_020; break; // "timed mine"
|
||||
case AMMOTYPE_REAPER: textnum = L_PROPOBJ_047; break; // "Reaper ammo"
|
||||
case AMMOTYPE_HOMINGROCKET: textnum = L_PROPOBJ_017; break; // "homing rocket"
|
||||
case AMMOTYPE_DART: textnum = L_PROPOBJ_025; break; // "dart"
|
||||
case AMMOTYPE_NBOMB: textnum = L_PROPOBJ_026; break; // "N-Bomb"
|
||||
case AMMOTYPE_SEDATIVE: textnum = L_PROPOBJ_027; break; // "sedatives"
|
||||
case AMMOTYPE_PSYCHOSIS: textnum = L_PROPOBJ_027; break; // "sedatives"
|
||||
case AMMOTYPE_BUG: textnum = L_PROPOBJ_035; break; // "bug"
|
||||
case AMMOTYPE_MICROCAMERA: textnum = L_PROPOBJ_036; break; // "micro camera"
|
||||
case AMMOTYPE_TOKEN: textnum = L_PROPOBJ_038; break; // "token"
|
||||
case AMMOTYPE_PLASTIQUE: textnum = L_PROPOBJ_039; break; // "plastique"
|
||||
case AMMOTYPE_CLOAK: textnum = L_PROPOBJ_048; break; // "cloaking device"
|
||||
case AMMOTYPE_BOOST: textnum = L_PROPOBJ_049; break; // "boost pill"
|
||||
}
|
||||
|
||||
if (textnum >= 0) {
|
||||
strcat(dst, langGet(textnum));
|
||||
}
|
||||
|
||||
if (qty >= 2 && ammotype != AMMOTYPE_REAPER && ammotype != AMMOTYPE_SEDATIVE && ammotype != AMMOTYPE_CLOAK) {
|
||||
strcat(dst, langGet(L_PROPOBJ_024)); // "s"
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void ammotypePlayPickupSound(u32 ammotype)
|
||||
|
||||
Reference in New Issue
Block a user