Decompile shotCalculateHits

This commit is contained in:
Ryan Dwyer 2021-06-07 12:19:24 +10:00
parent 5ea9349d70
commit 11b7ae7cb1
20 changed files with 676 additions and 1314 deletions

View File

@ -1840,7 +1840,7 @@ u8 func040e_outro[] = {
set_chr_shooting_in_cutscene(CHR_JONATHAN, FALSE)
wait_until(296, 0x79)
play_sound(SFX_8076, CHANNEL_10)
play_sound(SFX_HIT_CHR, CHANNEL_10)
wait_until(310, 0x7a)
play_sound(SFX_ARGH_MALE_0090, CHANNEL_10)

View File

@ -12360,12 +12360,12 @@ void chrEmitSparks(struct chrdata *chr, struct prop *prop, s32 hitpart, struct c
s32 race;
if (chrIsUsingPaintball(chr2)) {
sparksCreate(chrprop->rooms[0], chrprop, coord, coord2, 0, 25);
sparksCreate(chrprop->rooms[0], chrprop, coord, coord2, 0, SPARKTYPE_19);
return;
}
if (chrGetShield(chr) > 0.0f) {
sparksCreate(chrprop->rooms[0], chrprop, coord, coord2, 0, 0);
sparksCreate(chrprop->rooms[0], chrprop, coord, coord2, 0, SPARKTYPE_00);
return;
}
@ -12374,14 +12374,14 @@ void chrEmitSparks(struct chrdata *chr, struct prop *prop, s32 hitpart, struct c
|| prop->type == PROPTYPE_DOOR
|| hitpart == HITPART_GUN
|| hitpart == HITPART_HAT) {
sparksCreate(chrprop->rooms[0], chrprop, coord, coord2, 0, 0);
sparksCreate(chrprop->rooms[0], chrprop, coord, coord2, 0, SPARKTYPE_00);
return;
}
race = CHRRACE(chr);
if (race == RACE_DRCAROLL || race == RACE_ROBOT || race == RACE_EYESPY) {
sparksCreate(chrprop->rooms[0], chrprop, coord, coord2, 0, 1);
sparksCreate(chrprop->rooms[0], chrprop, coord, coord2, 0, SPARKTYPE_01);
return;
}
@ -12395,11 +12395,11 @@ void chrEmitSparks(struct chrdata *chr, struct prop *prop, s32 hitpart, struct c
coord3.y = coord2->y * 42.0f + coord->y;
coord3.z = coord2->z * 42.0f + coord->z;
sparksCreate(chrprop->rooms[0], chrprop, &coord3, coord2, 0, 4);
sparksCreate(chrprop->rooms[0], chrprop, &coord3, coord2, 0, SPARKTYPE_04);
}
sparksCreate(chrprop->rooms[0], chrprop, coord, coord2, 0, 2);
sparksCreate(chrprop->rooms[0], chrprop, coord, coord2, 0, 3);
sparksCreate(chrprop->rooms[0], chrprop, coord, coord2, 0, SPARKTYPE_02);
sparksCreate(chrprop->rooms[0], chrprop, coord, coord2, 0, SPARKTYPE_03);
}
GLOBAL_ASM(
@ -14710,9 +14710,9 @@ glabel func0f027e1c
/* f028190: 2861000f */ slti $at,$v1,0xf
/* f028194: 10200029 */ beqz $at,.L0f02823c
/* f028198: 00036080 */ sll $t4,$v1,0x2
/* f02819c: 3c088008 */ lui $t0,%hi(somethings)
/* f02819c: 3c088008 */ lui $t0,%hi(g_SurfaceTypes)
/* f0281a0: 010c4021 */ addu $t0,$t0,$t4
/* f0281a4: 8d084458 */ lw $t0,%lo(somethings)($t0)
/* f0281a4: 8d084458 */ lw $t0,%lo(g_SurfaceTypes)($t0)
/* f0281a8: 850a000a */ lh $t2,0xa($t0)
/* f0281ac: 59400024 */ blezl $t2,.L0f028240
/* f0281b0: 8d2f02d4 */ lw $t7,0x2d4($t1)
@ -14777,22 +14777,22 @@ glabel func0f027e1c
/* f02828c: 15c10035 */ bne $t6,$at,.L0f028364
/* f028290: 00000000 */ nop
/* f028294: 8622003a */ lh $v0,0x3a($s1)
/* f028298: 3c038008 */ lui $v1,%hi(somethings)
/* f028298: 3c038008 */ lui $v1,%hi(g_SurfaceTypes)
/* f02829c: 3c0f800b */ lui $t7,%hi(g_Textures)
/* f0282a0: 04410003 */ bgez $v0,.L0f0282b0
/* f0282a4: 00000000 */ nop
/* f0282a8: 1000000a */ b .L0f0282d4
/* f0282ac: 8c634458 */ lw $v1,%lo(somethings)($v1)
/* f0282ac: 8c634458 */ lw $v1,%lo(g_SurfaceTypes)($v1)
.L0f0282b0:
/* f0282b0: 8defabc0 */ lw $t7,%lo(g_Textures)($t7)
/* f0282b4: 0002c0c0 */ sll $t8,$v0,0x3
/* f0282b8: 3c038008 */ lui $v1,%hi(somethings)
/* f0282b8: 3c038008 */ lui $v1,%hi(g_SurfaceTypes)
/* f0282bc: 01f8c821 */ addu $t9,$t7,$t8
/* f0282c0: 932b0000 */ lbu $t3,0x0($t9)
/* f0282c4: 316a000f */ andi $t2,$t3,0xf
/* f0282c8: 000a6880 */ sll $t5,$t2,0x2
/* f0282cc: 006d1821 */ addu $v1,$v1,$t5
/* f0282d0: 8c634458 */ lw $v1,%lo(somethings)($v1)
/* f0282d0: 8c634458 */ lw $v1,%lo(g_SurfaceTypes)($v1)
.L0f0282d4:
/* f0282d4: 0c004b70 */ jal random
/* f0282d8: afa30070 */ sw $v1,0x70($sp)

View File

@ -4618,7 +4618,7 @@ void chrDamage(struct chrdata *chr, f32 damage, struct coord *vector, struct gse
chr->hidden |= CHRHFLAG_00000001;
} else {
// Metal helmets don't fall off and make a metallic chink noise when shot
u16 sounds[] = { SFX_HATHIT_807B, SFX_HATHIT_8079, SFX_HATHIT_807C };
u16 sounds[] = { SFX_HIT_METAL_807B, SFX_HIT_METAL_8079, SFX_HATHIT_807C };
damage = 0;
func0f0939f8(NULL, chr->prop, sounds[random() % 3], -1,
@ -9650,7 +9650,7 @@ void chrTickDie(struct chrdata *chr)
var80068080 -= 5;
func0f0939f8(NULL, prop, SFX_SHIELD_DAMAGE, -1,
-1, 1024, 0, 0, 0, -1, 0, -1, -1, -1, -1);
sparksCreate(prop->rooms[0], prop, &prop->pos, NULL, 0, 1);
sparksCreate(prop->rooms[0], prop, &prop->pos, NULL, 0, SPARKTYPE_01);
}
return;
@ -28677,6 +28677,6 @@ void chrDrCarollEmitSparks(struct chrdata *chr)
{
if (chr && chr->prop) {
func0f0939f8(0, chr->prop, SFX_SHIELD_DAMAGE, -1, -1, 0, 0, 0, 0, -1, 0, -1, -1, -1, -1);
sparksCreate(chr->prop->rooms[0], chr->prop, &chr->prop->pos, NULL, 0, 1);
sparksCreate(chr->prop->rooms[0], chr->prop, &chr->prop->pos, NULL, 0, SPARKTYPE_01);
}
}

View File

@ -7935,7 +7935,7 @@ s32 handTickIncAttackEmpty(struct handweaponinfo *info, s32 handnum, struct hand
struct audiohandle *handle;
#endif
handle = sndStart(var80095200, SFX_FIREEMPTY_MAIAN, NULL, -1, -1, -1, -1, -1);
handle = sndStart(var80095200, SFX_HIT_WATER, NULL, -1, -1, -1, -1, -1);
if (handle) {
func00033e50(handle, 16, *(s32 *)&speed);
@ -27667,13 +27667,13 @@ glabel var7f1aca94
/* f0a7ddc: 3c0f800b */ lui $t7,%hi(g_Textures)
/* f0a7de0: 8defabc0 */ lw $t7,%lo(g_Textures)($t7)
/* f0a7de4: 0003c0c0 */ sll $t8,$v1,0x3
/* f0a7de8: 3c0b8008 */ lui $t3,%hi(somethings)
/* f0a7de8: 3c0b8008 */ lui $t3,%hi(g_SurfaceTypes)
/* f0a7dec: 01f8c821 */ addu $t9,$t7,$t8
/* f0a7df0: 8f280000 */ lw $t0,0x0($t9)
/* f0a7df4: 00084f02 */ srl $t1,$t0,0x1c
/* f0a7df8: 00095080 */ sll $t2,$t1,0x2
/* f0a7dfc: 016a5821 */ addu $t3,$t3,$t2
/* f0a7e00: 8d6b4458 */ lw $t3,%lo(somethings)($t3)
/* f0a7e00: 8d6b4458 */ lw $t3,%lo(g_SurfaceTypes)($t3)
/* f0a7e04: 856c0008 */ lh $t4,0x8($t3)
/* f0a7e08: 5180017b */ beqzl $t4,.L0f0a83f8
/* f0a7e0c: 8fbf0044 */ lw $ra,0x44($sp)
@ -27999,14 +27999,14 @@ glabel var7f1aca94
/* f0a82ac: 3c0d800b */ lui $t5,%hi(g_Textures)
/* f0a82b0: 8dadabc0 */ lw $t5,%lo(g_Textures)($t5)
/* f0a82b4: 000218c0 */ sll $v1,$v0,0x3
/* f0a82b8: 3c0a8008 */ lui $t2,%hi(somethings)
/* f0a82b8: 3c0a8008 */ lui $t2,%hi(g_SurfaceTypes)
/* f0a82bc: 01a3c821 */ addu $t9,$t5,$v1
/* f0a82c0: 8f2c0000 */ lw $t4,0x0($t9)
/* f0a82c4: 240bffff */ addiu $t3,$zero,-1
/* f0a82c8: 000c4702 */ srl $t0,$t4,0x1c
/* f0a82cc: 00084880 */ sll $t1,$t0,0x2
/* f0a82d0: 01495021 */ addu $t2,$t2,$t1
/* f0a82d4: 8d4a4458 */ lw $t2,%lo(somethings)($t2)
/* f0a82d4: 8d4a4458 */ lw $t2,%lo(g_SurfaceTypes)($t2)
/* f0a82d8: 51400047 */ beqzl $t2,.L0f0a83f8
/* f0a82dc: 8fbf0044 */ lw $ra,0x44($sp)
/* f0a82e0: a7ab005e */ sh $t3,0x5e($sp)
@ -28017,14 +28017,14 @@ glabel var7f1aca94
/* f0a82f4: afa200bc */ sw $v0,0xbc($sp)
/* f0a82f8: 3c0e800b */ lui $t6,%hi(g_Textures)
/* f0a82fc: 8dceabc0 */ lw $t6,%lo(g_Textures)($t6)
/* f0a8300: 3c048008 */ lui $a0,%hi(somethings)
/* f0a8300: 3c048008 */ lui $a0,%hi(g_SurfaceTypes)
/* f0a8304: 8fac00c0 */ lw $t4,0xc0($sp)
/* f0a8308: 01c3c021 */ addu $t8,$t6,$v1
/* f0a830c: 8f0f0000 */ lw $t7,0x0($t8)
/* f0a8310: 000f6f02 */ srl $t5,$t7,0x1c
/* f0a8314: 000dc880 */ sll $t9,$t5,0x2
/* f0a8318: 00992021 */ addu $a0,$a0,$t9
/* f0a831c: 8c844458 */ lw $a0,%lo(somethings)($a0)
/* f0a831c: 8c844458 */ lw $a0,%lo(g_SurfaceTypes)($a0)
/* f0a8320: 84850008 */ lh $a1,0x8($a0)
/* f0a8324: 58a0001e */ blezl $a1,.L0f0a83a0
/* f0a8328: 8fb900bc */ lw $t9,0xbc($sp)
@ -28588,10 +28588,10 @@ void func0f0a8404(struct coord *pos, s16 *rooms, s32 arg2)
struct audiohandle **handle = func0f0a7d5c();
if (handle) {
sndStart(var80095200, SFX_PUNCH_GLASS, handle, -1, -1, -1, -1, -1);
sndStart(var80095200, SFX_HIT_GLASS, handle, -1, -1, -1, -1, -1);
if (*handle) {
func0f09505c(*handle, pos, 400, 2500, 3000, rooms, SFX_PUNCH_GLASS, 0x7fff, 0);
func0f09505c(*handle, pos, 400, 2500, 3000, rooms, SFX_HIT_GLASS, 0x7fff, 0);
}
}
}
@ -28627,13 +28627,13 @@ glabel var7f1acaa0
/* f0a8510: 3c0f800b */ lui $t7,%hi(g_Textures)
/* f0a8514: 8defabc0 */ lw $t7,%lo(g_Textures)($t7)
/* f0a8518: 0002c0c0 */ sll $t8,$v0,0x3
/* f0a851c: 3c0c8008 */ lui $t4,%hi(somethings)
/* f0a851c: 3c0c8008 */ lui $t4,%hi(g_SurfaceTypes)
/* f0a8520: 01f8c821 */ addu $t9,$t7,$t8
/* f0a8524: 8f290000 */ lw $t1,0x0($t9)
/* f0a8528: 00095702 */ srl $t2,$t1,0x1c
/* f0a852c: 000a5880 */ sll $t3,$t2,0x2
/* f0a8530: 018b6021 */ addu $t4,$t4,$t3
/* f0a8534: 8d8c4458 */ lw $t4,%lo(somethings)($t4)
/* f0a8534: 8d8c4458 */ lw $t4,%lo(g_SurfaceTypes)($t4)
/* f0a8538: 858d0008 */ lh $t5,0x8($t4)
/* f0a853c: 11a000f0 */ beqz $t5,.L0f0a8900
.L0f0a8540:
@ -28831,14 +28831,14 @@ glabel var7f1acaa0
/* f0a8810: 3c0f800b */ lui $t7,%hi(g_Textures)
/* f0a8814: 8defabc0 */ lw $t7,%lo(g_Textures)($t7)
/* f0a8818: 000370c0 */ sll $t6,$v1,0x3
/* f0a881c: 3c028008 */ lui $v0,%hi(somethings)
/* f0a881c: 3c028008 */ lui $v0,%hi(g_SurfaceTypes)
/* f0a8820: 01eec021 */ addu $t8,$t7,$t6
/* f0a8824: 8f0b0000 */ lw $t3,0x0($t8)
/* f0a8828: 240affff */ addiu $t2,$zero,-1
/* f0a882c: 000bcf02 */ srl $t9,$t3,0x1c
/* f0a8830: 00194880 */ sll $t1,$t9,0x2
/* f0a8834: 00491021 */ addu $v0,$v0,$t1
/* f0a8838: 8c424458 */ lw $v0,%lo(somethings)($v0)
/* f0a8838: 8c424458 */ lw $v0,%lo(g_SurfaceTypes)($v0)
/* f0a883c: 84480008 */ lh $t0,0x8($v0)
/* f0a8840: 59000030 */ blezl $t0,.L0f0a8904
/* f0a8844: 8fbf002c */ lw $ra,0x2c($sp)

View File

@ -12,125 +12,139 @@ u32 var800ab5b4;
struct var800ab5b8 var800ab5b8[8];
struct var800ab718 var800ab718[8];
u32 var80084330 = 0x80878088;
u32 var80084334 = 0x06000000;
// Default
u16 g_SurfaceTypeDefaultSounds[] = { SFX_HIT_STONE_8087, SFX_HIT_STONE_8088 };
u8 var80084334[] = { 6 };
struct something something_2a358 = {
&var80084330, &var80084334, 0x00020001,
struct surfacetype g_SurfaceTypeDefault = {
g_SurfaceTypeDefaultSounds, var80084334, 2, 1,
};
u32 var80084344 = 0x80878088;
u32 var80084348 = 0x01000000;
// Stone
u16 var80084344[] = { SFX_HIT_STONE_8087, SFX_HIT_STONE_8088 };
u8 var80084348[] = { 1 };
struct something something_2a36c = {
&var80084344, &var80084348, 0x00020001,
struct surfacetype g_SurfaceTypeStone = {
var80084344, var80084348, 2, 1,
};
u32 var80084358 = 0x807e807f;
u32 var8008435c = 0x10000000;
// Wood
u16 g_SurfaceTypeWoodSounds[] = { SFX_HIT_WOOD_807E, SFX_HIT_WOOD_807F };
u8 var8008435c[] = { 0x10 };
struct something something_2a380 = {
&var80084358, &var8008435c, 0x00020001,
struct surfacetype g_SurfaceTypeWood = {
g_SurfaceTypeWoodSounds, var8008435c, 2, 1,
};
u32 var8008436c = 0x8079807b;
u32 var80084370 = 0x11000000;
// Metal
u16 g_SurfaceTypeMetalSounds[] = { SFX_HIT_METAL_8079, SFX_HIT_METAL_807B };
u8 var80084370[] = { 0x11 };
struct something something_2a394 = {
&var8008436c, &var80084370, 0x00020001,
struct surfacetype g_SurfaceTypeMetal = {
g_SurfaceTypeMetalSounds, var80084370, 2, 1,
};
u32 var80084380 = 0x80770000;
u32 var80084384 = 0x03040500;
// Glass
u16 g_SurfaceTypeGlassSounds[] = { SFX_HIT_GLASS };
u8 var80084384[] = { 3, 4, 5 };
struct something something_2a3a8 = {
&var80084380, &var80084384, 0x00010003,
struct surfacetype g_SurfaceTypeGlass = {
g_SurfaceTypeGlassSounds, var80084384, 1, 3,
};
u32 var80084394 = 0x807d0000;
u32 var80084398 = 0x01000000;
// Snow
u16 g_SurfaceTypeSnowSounds[] = { SFX_HIT_SNOW };
u8 var80084398[] = { 1 };
struct something something_2a3bc = {
&var80084394, &var80084398, 0x00010001,
struct surfacetype g_SurfaceTypeSnow = {
g_SurfaceTypeSnowSounds, var80084398, 1, 1,
};
u32 var800843a8 = 0x80848085;
u32 var800843ac = 0x02000000;
// Dirt
u16 g_SurfaceTypeDirtSounds[] = { SFX_HIT_DIRT_8084, SFX_HIT_DIRT_8085 };
u8 var800843ac[] = { 2 };
struct something something_2a3d0 = {
&var800843a8, &var800843ac, 0x00020001,
struct surfacetype g_SurfaceTypeDirt = {
g_SurfaceTypeDirtSounds, var800843ac, 2, 1,
};
u32 var800843bc = 0x80818082;
u32 var800843c0 = 0x80830000;
u32 var800843c4 = 0x02000000;
// Mud
u16 g_SurfaceTypeMudSounds[] = { SFX_HIT_MUD_8081, SFX_HIT_MUD_8082, SFX_HIT_MUD_8083 };
u8 var800843c4[] = { 2 };
struct something something_2a3e8 = {
&var800843bc, &var800843c4, 0x00030001,
struct surfacetype g_SurfaceTypeMud = {
g_SurfaceTypeMudSounds, var800843c4, 3, 1,
};
u32 var800843d4 = 0x80860000;
u32 var800843d8 = 0x01000000;
// Tile
u16 g_SurfaceTypeTileSounds[] = { SFX_HIT_TILE };
u8 var800843d8[] = { 1 };
struct something something_2a3fc = {
&var800843d4, &var800843d8, 0x00010001,
struct surfacetype g_SurfaceTypeTile = {
g_SurfaceTypeTileSounds, var800843d8, 1, 1,
};
u32 var800843e8 = 0x8089808a;
u32 var800843ec = 0x01060000;
// Metal obj
u16 g_SurfaceTypeMetalObjSounds[] = { SFX_HIT_METALOBJ_8089, SFX_HIT_METALOBJ_808A };
u8 var800843ec[] = { 1, 6 };
struct something something_2a410 = {
&var800843e8, &var800843ec, 0x00020002,
struct surfacetype g_SurfaceTypeMetalObj = {
g_SurfaceTypeMetalObjSounds, var800843ec, 2, 2,
};
u32 var800843fc = 0x80760000;
u32 var80084400 = 0x02000000;
// Chr
u16 g_SurfaceTypeChrSounds[] = { SFX_HIT_CHR };
u8 var80084400[] = { 2 };
struct something something_2a424 = {
&var800843fc, &var80084400, 0x00010001,
struct surfacetype g_SurfaceTypeChr = {
g_SurfaceTypeChrSounds, var80084400, 1, 1,
};
u32 var80084410 = 0x80770000;
u32 var80084414 = 0x03040500;
// Glass XLU
u16 g_SurfaceTypeGlassXluSounds[] = { SFX_HIT_GLASS };
u8 var80084414[] = { 3, 4, 5 };
struct something something_2a438 = {
&var80084410, &var80084414, 0x00010003,
struct surfacetype g_SurfaceTypeGlassXlu = {
g_SurfaceTypeGlassXluSounds, var80084414, 1, 3,
};
struct something something_2a444 = {
NULL, NULL, 0x00000000,
// None
struct surfacetype g_SurfaceTypeNone = {
NULL, NULL, 0, 0,
};
u32 var80084430 = 0x80800000;
u32 var80084434 = 0x00000000;
// Shallow water
u16 g_SurfaceTypeShallowWaterSounds[] = { SFX_HIT_WATER };
u8 var80084434[] = { 0 };
struct something something_2a458 = {
&var80084430, &var80084434, 0x00010001,
struct surfacetype g_SurfaceTypeShallowWater = {
g_SurfaceTypeShallowWaterSounds, var80084434, 1, 1,
};
u32 var80084444 = 0x80800000;
u32 var80084448 = 0x00000000;
// Deep water
u16 g_SurfaceTypeDeepWaterSounds[] = { SFX_HIT_WATER };
u8 var80084448[] = { 0 };
struct something something_2a46c = {
&var80084444, &var80084448, 0x00010001,
struct surfacetype g_SurfaceTypeDeepWater = {
g_SurfaceTypeDeepWaterSounds, var80084448, 1, 1,
};
struct something *somethings[] = {
/* 0*/ &something_2a358,
/* 1*/ &something_2a36c,
/* 2*/ &something_2a380,
/* 3*/ &something_2a394,
/* 4*/ &something_2a3a8,
/* 5*/ &something_2a458,
/* 6*/ &something_2a3bc,
/* 7*/ &something_2a3d0,
/* 8*/ &something_2a3e8,
/* 9*/ &something_2a3fc,
/*10*/ &something_2a410,
/*11*/ &something_2a424,
/*12*/ &something_2a438,
/*13*/ &something_2a444,
/*14*/ &something_2a46c,
struct surfacetype *g_SurfaceTypes[] = {
/* 0*/ &g_SurfaceTypeDefault,
/* 1*/ &g_SurfaceTypeStone,
/* 2*/ &g_SurfaceTypeWood,
/* 3*/ &g_SurfaceTypeMetal,
/* 4*/ &g_SurfaceTypeGlass,
/* 5*/ &g_SurfaceTypeShallowWater,
/* 6*/ &g_SurfaceTypeSnow,
/* 7*/ &g_SurfaceTypeDirt,
/* 8*/ &g_SurfaceTypeMud,
/* 9*/ &g_SurfaceTypeTile,
/*10*/ &g_SurfaceTypeMetalObj,
/*11*/ &g_SurfaceTypeChr,
/*12*/ &g_SurfaceTypeGlassXlu,
/*13*/ &g_SurfaceTypeNone,
/*14*/ &g_SurfaceTypeDeepWater,
};
char *var80084494[] = {

File diff suppressed because it is too large Load Diff

View File

@ -45652,7 +45652,7 @@ glabel var7f1aa6e0
// -1, 1024, 0, 0, 0, -1, 0, -1, -1, -1, -1);
//
// // Create sparks
// sparksCreate(prop->rooms[0], prop, &prop->pos, NULL, 0, 0);
// sparksCreate(prop->rooms[0], prop, &prop->pos, NULL, 0, SPARKTYPE_00);
// }
// } else {
// // 3e8
@ -58359,25 +58359,25 @@ glabel func0f085eac
/* f0863f8: 14200004 */ bnez $at,.L0f08640c
/* f0863fc: 3c0f800b */ lui $t7,%hi(g_Textures)
.L0f086400:
/* f086400: 3c068008 */ lui $a2,%hi(somethings)
/* f086400: 3c068008 */ lui $a2,%hi(g_SurfaceTypes)
/* f086404: 1000000f */ b .L0f086444
/* f086408: 8cc64458 */ lw $a2,%lo(somethings)($a2)
/* f086408: 8cc64458 */ lw $a2,%lo(g_SurfaceTypes)($a2)
.L0f08640c:
/* f08640c: 8defabc0 */ lw $t7,%lo(g_Textures)($t7)
/* f086410: 0003c8c0 */ sll $t9,$v1,0x3
/* f086414: 3c068008 */ lui $a2,%hi(somethings)
/* f086414: 3c068008 */ lui $a2,%hi(g_SurfaceTypes)
/* f086418: 01f95821 */ addu $t3,$t7,$t9
/* f08641c: 91620000 */ lbu $v0,0x0($t3)
/* f086420: 3058000f */ andi $t8,$v0,0xf
/* f086424: 2f01000f */ sltiu $at,$t8,0xf
/* f086428: 10200005 */ beqz $at,.L0f086440
/* f08642c: 00186080 */ sll $t4,$t8,0x2
/* f086430: 3c068008 */ lui $a2,%hi(somethings)
/* f086430: 3c068008 */ lui $a2,%hi(g_SurfaceTypes)
/* f086434: 00cc3021 */ addu $a2,$a2,$t4
/* f086438: 10000002 */ b .L0f086444
/* f08643c: 8cc64458 */ lw $a2,%lo(somethings)($a2)
/* f08643c: 8cc64458 */ lw $a2,%lo(g_SurfaceTypes)($a2)
.L0f086440:
/* f086440: 8cc64458 */ lw $a2,%lo(somethings)($a2)
/* f086440: 8cc64458 */ lw $a2,%lo(g_SurfaceTypes)($a2)
.L0f086444:
/* f086444: 84cd000a */ lh $t5,0xa($a2)
/* f086448: 19a0005f */ blez $t5,.L0f0865c8

View File

@ -506,8 +506,8 @@ glabel var7f1b6030
/* f1496dc: 8c640000 */ lw $a0,0x0($v1)
.L0f1496e0:
/* f1496e0: 3c06800b */ lui $a2,%hi(g_Textures)
/* f1496e4: 3c058008 */ lui $a1,%hi(somethings)
/* f1496e8: 24a54458 */ addiu $a1,$a1,%lo(somethings)
/* f1496e4: 3c058008 */ lui $a1,%hi(g_SurfaceTypes)
/* f1496e8: 24a54458 */ addiu $a1,$a1,%lo(g_SurfaceTypes)
/* f1496ec: 24c6abc0 */ addiu $a2,$a2,%lo(g_Textures)
/* f1496f0: 27a200a0 */ addiu $v0,$sp,0xa0
/* f1496f4: 27a704b0 */ addiu $a3,$sp,0x4b0

View File

@ -779,6 +779,7 @@
#define DROPREASON_6 6
#define EXPLOSIONTYPE_0 0
#define EXPLOSIONTYPE_1 1
#define EXPLOSIONTYPE_2 2
#define EXPLOSIONTYPE_3 3
#define EXPLOSIONTYPE_5 5
@ -788,6 +789,7 @@
#define EXPLOSIONTYPE_13 13
#define EXPLOSIONTYPE_14 14
#define EXPLOSIONTYPE_18 18
#define EXPLOSIONTYPE_22 22
#define EXPLOSIONTYPE_23 23
#define EXPLOSIONTYPE_25 25
@ -3469,6 +3471,20 @@
#define SOUNDMODE_HEADPHONE 2
#define SOUNDMODE_SURROUND 3
#define SPARKTYPE_00 0x00
#define SPARKTYPE_01 0x01
#define SPARKTYPE_02 0x02
#define SPARKTYPE_03 0x03
#define SPARKTYPE_04 0x04
#define SPARKTYPE_09 0x09
#define SPARKTYPE_0A 0x0a
#define SPARKTYPE_0B 0x0b
#define SPARKTYPE_0F 0x0f
#define SPARKTYPE_16 0x16
#define SPARKTYPE_17 0x17
#define SPARKTYPE_18 0x18
#define SPARKTYPE_19 0x19
#define SPAWNFLAG_FORCESUNGLASSES 0x00000001 // 100% chance of wearing sunglasses if head model supports it
#define SPAWNFLAG_MAYBESUNGLASSES 0x00000002 // 50% chance of wearing sunglasses if head model supports it
#define SPAWNFLAG_INVINCIBLE 0x00000008
@ -3677,6 +3693,22 @@
#define STAGEINDEX_TEST_MP19 0x3b
#define STAGEINDEX_TEST_MP20 0x3c
#define SURFACETYPE_DEFAULT 0
#define SURFACETYPE_STONE 1
#define SURFACETYPE_WOOD 2
#define SURFACETYPE_METAL 3
#define SURFACETYPE_GLASS 4
#define SURFACETYPE_SHALLOWWATER 5
#define SURFACETYPE_SNOW 6
#define SURFACETYPE_DIRT 7
#define SURFACETYPE_MUD 8
#define SURFACETYPE_TILE 9
#define SURFACETYPE_METALOBJ 10
#define SURFACETYPE_CHR 11
#define SURFACETYPE_GLASSXLU 12
#define SURFACETYPE_NONE 13
#define SURFACETYPE_DEEPWATER 14
#define TEAM_00 0x00
#define TEAM_01 0x01
#define TEAM_ENEMY 0x02

View File

@ -487,7 +487,7 @@ extern bool g_Jpn;
#if VERSION >= VERSION_PAL_FINAL
extern s32 g_LanguageId;
#endif
extern struct something *somethings[];
extern struct surfacetype *g_SurfaceTypes[15];
extern void *var800844f0;
extern f32 var800845d4;
extern u32 var800845dc;

View File

@ -70,7 +70,7 @@ u32 func0f15f560(void);
u32 func0f15ffdc(void);
u32 func0f160a38(void);
u32 func0f1612e4(void);
u32 func0f161520(void);
bool func0f161520(struct coord *arg0, struct coord *arg1, s16 room, struct coord *arg3);
s32 func0f161ab4(s32 room);
bool roomContainsCoord(struct coord *pos, s16 roomnum);
bool func0f161c08(struct coord *arg0, s16 roomnum);

View File

@ -41,8 +41,8 @@ u32 func0f0260c4(void);
u32 func0f0268bc(void);
u32 func0f0270f4(void);
f32 func0f0278a4(struct chrdata *chr);
u32 func0f027994(void);
u32 func0f027e1c(void);
void func0f027994(struct prop *prop, struct shotdata *shotdata, bool arg2, bool arg3);
void func0f027e1c(struct shotdata *shotdata, struct hit *hit);
void func0f028498(bool value);
void func0f028590(f32 arg0);
bool func0f028a50(struct prop *prop, struct coord *arg1, f32 *arg2, f32 *arg3);

View File

@ -22,7 +22,7 @@ void roomSetDefaults(struct room *room);
Gfx *func0f001138(Gfx *gdl, s16 roomnum);
Gfx *func0f001300(Gfx *gdl);
void roomInitLights(s32 roomnum);
u32 func0f001734(void);
s32 func0f001734(struct coord *arg0, struct coord *arg1, s32 roomnum);
void roomSetLightsFaulty(s32 roomnum, s32 chance);
void roomSetLightBroken(s32 roomnum, s32 lightnum);
void func0f001bdc(void);

View File

@ -139,7 +139,7 @@ void func0f0a7138(Gfx **gdl);
struct audiohandle **func0f0a7d5c(void);
void gsetPlayPropHitSound(struct gset *gset, struct prop *prop, s32 arg2);
void func0f0a8404(struct coord *pos, s16 *rooms, s32 arg2);
u32 func0f0a84c8(void);
void func0f0a84c8(struct gset *gset, struct coord *arg1, s16 arg2, s16 *arg3);
void handSetTriggerOn(s32 handnum, bool on);
s32 currentPlayerConsiderToggleGunFunction(s32 usedowntime, bool firing, s32 arg2);
void func0f0a8c50(void);

View File

@ -19,8 +19,8 @@ void propDetach(struct prop *prop);
Gfx *propRender(Gfx *gdl, struct prop *prop, bool withalpha);
Gfx *propsRender(Gfx *gdl, s16 arg1, s32 arg2, s16 *arg3);
void weaponPlayWhooshSound(s32 weaponnum, struct prop *prop);
void func0f060bac(s32 arg0, struct prop *prop);
void func0f060db8(s32 handnum, bool arg1, struct coord *arg2, struct coord *arg3, struct coord *arg4, struct coord *arg5, u32 arg6, f32 arg7, bool arg8);
void func0f060bac(s32 weaponnum, struct prop *prop);
struct prop *shotCalculateHits(s32 handnum, bool arg1, struct coord *arg2, struct coord *arg3, struct coord *gunpos, struct coord *dir, u32 arg6, f32 arg7, bool arg8);
struct prop *func0f061d54(s32 handnum, u32 arg1, u32 arg2);
void handCreateBulletRaycast(s32 handnum, bool arg1, bool dorandom, s32 arg3, bool arg4);
u32 func0f061fa8(void);

View File

@ -236,8 +236,8 @@ bool func0f0851ec(struct defaultobj *obj);
void objTakeGunfire(struct defaultobj *obj, f32 damage, struct coord *pos, s32 weaponnum, s32 playernum);
void objDamage(struct defaultobj *obj, f32 damage, struct coord *pos, s32 weaponnum, s32 playernum);
u32 func0f0859a0(void);
u32 func0f085e00(void);
u32 func0f085eac(void);
void func0f085e00(struct prop *prop, struct shotdata *shotdata);
void func0f085eac(struct shotdata *shotdata, struct hit *hit);
u32 propobjGetCiTagId(struct prop *prop);
bool objIsHealthy(struct defaultobj *obj);
bool objTestForInteract(struct prop *prop);

View File

@ -6,7 +6,7 @@
u32 func0f12f6c0(void);
void sparkgroupEnsureFreeSparkSlot(struct sparkgroup *group);
void sparksCreate(s32 room, struct prop *prop, struct coord *pos, struct coord *arg3, struct coord *dir, s32 arg5);
void sparksCreate(s32 room, struct prop *prop, struct coord *pos, struct coord *arg3, struct coord *dir, s32 type);
Gfx *sparksRender(Gfx *gdl);
#endif

View File

@ -13,7 +13,7 @@ void func0f13e640(struct var800a41b0 *thing, u32 arg1);
u32 func0f13e744(void);
u32 func0f13e994(void);
void func0f13eb44(void);
u32 func0f13f3f4(void);
void func0f13f3f4(struct coord *arg0, struct coord *arg1, struct coord *arg2, u32 arg3, u32 arg4, u32 arg5, s32 room, u32 arg7, s32 arg8, u32 arg9, struct chrdata *chr, bool arg11);
u32 func0f13f504(void);
s32 func0f140750(struct coord *coord);
u32 func0f1408a8(void);

View File

@ -1667,27 +1667,27 @@ enum sfx {
SFX_8073,
SFX_8074,
SFX_8075,
SFX_8076,
SFX_PUNCH_GLASS,
SFX_HIT_CHR,
SFX_HIT_GLASS,
SFX_GLASS_SHATTER,
SFX_HATHIT_8079,
SFX_HIT_METAL_8079,
SFX_807A,
SFX_HATHIT_807B,
SFX_HIT_METAL_807B,
SFX_HATHIT_807C,
SFX_807D,
SFX_807E,
SFX_807F,
SFX_FIREEMPTY_MAIAN,
SFX_8081,
SFX_8082,
SFX_8083,
SFX_8084,
SFX_8085,
SFX_8086,
SFX_8087,
SFX_8088,
SFX_8089,
SFX_808A,
SFX_HIT_SNOW,
SFX_HIT_WOOD_807E,
SFX_HIT_WOOD_807F,
SFX_HIT_WATER,
SFX_HIT_MUD_8081,
SFX_HIT_MUD_8082,
SFX_HIT_MUD_8083,
SFX_HIT_DIRT_8084,
SFX_HIT_DIRT_8085,
SFX_HIT_TILE,
SFX_HIT_STONE_8087,
SFX_HIT_STONE_8088,
SFX_HIT_METALOBJ_8089,
SFX_HIT_METALOBJ_808A,
SFX_808B,
SFX_808C,
SFX_THUD_808D,

View File

@ -3500,10 +3500,11 @@ struct twowords {
u32 unk04;
};
struct something {
u32 *unk00;
u32 *unk04;
u32 unk08;
struct surfacetype {
u16 *sounds;
u8 *unk04;
s16 numsounds;
s16 num04;
};
union soundnumhack {
@ -5788,10 +5789,11 @@ struct weatherparticledata {
};
struct texture {
u8 unk00;
u8 unk00_00 : 4;
u8 surfacetype : 4;
u8 unk01;
u16 dataoffset;
u32 unk08;
u32 unk04;
};
struct var800aabb8 {
@ -7039,4 +7041,54 @@ struct var8009ddec {
/*0x18*/ s32 pad;
};
struct hitthing {
struct coord unk00;
struct coord unk0c;
u32 unk18;
u32 unk1c;
u32 unk20;
u32 unk24;
s16 unk28;
s16 unk2a;
s16 unk2c;
s16 unk2e;
};
struct hit {
/*0x00*/ f32 distance;
/*0x04*/ struct prop *prop;
/*0x08*/ u32 unk08;
/*0x0c*/ u32 unk0c;
/*0x10*/ u32 unk10;
/*0x14*/ u32 unk14;
/*0x18*/ u32 unk18;
/*0x1c*/ u32 unk1c;
/*0x20*/ u32 unk20;
/*0x24*/ u32 unk24;
/*0x28*/ u32 unk28;
/*0x2c*/ u32 unk2c;
/*0x30*/ u32 unk30;
/*0x34*/ u32 unk34;
/*0x38*/ u32 unk38;
/*0x3c*/ u32 unk3c;
/*0x40*/ u32 unk40;
/*0x44*/ u32 unk44;
/*0x48*/ u32 unk48;
/*0x4c*/ s8 unk4c;
/*0x4d*/ s8 unk4d;
/*0x50*/ struct coord pos;
/*0x5c*/ struct coord dir;
};
struct shotdata {
/*0x00*/ struct coord unk00;
/*0x0c*/ struct coord unk0c;
/*0x18*/ struct gset gset;
/*0x1c*/ struct coord gunpos;
/*0x28*/ struct coord dir;
/*0x34*/ f32 unk34;
/*0x38*/ s32 unk38;
/*0x3c*/ struct hit hits[10];
};
#endif