Decompile roomGetProps and rename functions/symbols relating to room registration

This commit is contained in:
Ryan Dwyer
2021-06-02 23:37:57 +10:00
parent 124bf97b76
commit d6b4e4b23f
20 changed files with 251 additions and 232 deletions
+3 -3
View File
@@ -1139,7 +1139,7 @@ s32 bbikeCalculateNewPosition(struct coord *vel, f32 angledelta)
g_Vars.currentplayer->hoverbike->pos.x = dstpos.x;
g_Vars.currentplayer->hoverbike->pos.z = dstpos.z;
func0f065c44(g_Vars.currentplayer->hoverbike);
propDeregisterRooms(g_Vars.currentplayer->hoverbike);
roomsCopy(dstrooms, g_Vars.currentplayer->hoverbike->rooms);
bike->hov = hov;
@@ -1234,7 +1234,7 @@ void bbikeUpdateVertical(struct coord *arg0)
#endif
bmove0f0cb79c(g_Vars.currentplayer, arg0, newrooms);
func0f065c44(g_Vars.currentplayer->prop);
propDeregisterRooms(g_Vars.currentplayer->prop);
roomsCopy(newrooms, g_Vars.currentplayer->prop->rooms);
g_Vars.currentplayer->vv_theta = (M_BADTAU - angle) * 360.0f / M_BADTAU;
@@ -1670,7 +1670,7 @@ void bbikeTick(void)
#if VERSION >= VERSION_NTSC_1_0
for (i = 0; prop->rooms[i] != -1; i++) {
if (prop->rooms[i] == g_Vars.currentplayer->floorroom) {
func0f065c44(prop);
propDeregisterRooms(prop);
g_Vars.currentplayer->prop->rooms[0] = g_Vars.currentplayer->floorroom;
g_Vars.currentplayer->prop->rooms[1] = -1;
break;
+3 -3
View File
@@ -103,7 +103,7 @@ s32 eyespyTryMoveUpwards(f32 yvel)
if (result == CDRESULT_NOCOLLISION) {
prop->pos.y = dstpos.y;
func0f065c44(prop);
propDeregisterRooms(prop);
roomsCopy(dstrooms, prop->rooms);
}
@@ -203,7 +203,7 @@ s32 eyespyCalculateNewPosition(struct coord *vel)
eyespyprop->pos.y = dstpos.y;
eyespyprop->pos.z = dstpos.z;
func0f065c44(eyespyprop);
propDeregisterRooms(eyespyprop);
roomsCopy(dstrooms, eyespyprop->rooms);
}
@@ -668,7 +668,7 @@ bool eyespyTryLaunch(void)
}
currentPlayerSetPerimEnabled(g_Vars.currentplayer->prop, true);
func0f065c44(g_Vars.currentplayer->eyespy->prop);
propDeregisterRooms(g_Vars.currentplayer->eyespy->prop);
func0f065e74(&g_Vars.currentplayer->prop->pos, g_Vars.currentplayer->prop->rooms,
&g_Vars.currentplayer->eyespy->prop->pos, g_Vars.currentplayer->eyespy->prop->rooms);
+5 -5
View File
@@ -512,7 +512,7 @@ bool bgrabTryMoveUpwards(f32 y)
if (result == CDRESULT_NOCOLLISION) {
g_Vars.currentplayer->prop->pos.y = newpos.y;
func0f065c44(g_Vars.currentplayer->prop);
propDeregisterRooms(g_Vars.currentplayer->prop);
roomsCopy(rooms, g_Vars.currentplayer->prop->rooms);
}
@@ -1033,7 +1033,7 @@ glabel var7f1ad9c4
/* f0cd8c4: 5160000a */ beqzl $t3,.L0f0cd8f0
/* f0cd8c8: 8e080284 */ lw $t0,0x284($s0)
/* f0cd8cc: 8e0c0284 */ lw $t4,0x284($s0)
/* f0cd8d0: 0fc19711 */ jal func0f065c44
/* f0cd8d0: 0fc19711 */ jal propDeregisterRooms
/* f0cd8d4: 8d8400bc */ lw $a0,0xbc($t4)
/* f0cd8d8: 8e0d0284 */ lw $t5,0x284($s0)
/* f0cd8dc: 27a400cc */ addiu $a0,$sp,0xcc
@@ -1591,7 +1591,7 @@ glabel var7f1ad9c4
/* f0cd8c4: 5160000a */ beqzl $t3,.L0f0cd8f0
/* f0cd8c8: 8e080284 */ lw $t0,0x284($s0)
/* f0cd8cc: 8e0c0284 */ lw $t4,0x284($s0)
/* f0cd8d0: 0fc19711 */ jal func0f065c44
/* f0cd8d0: 0fc19711 */ jal propDeregisterRooms
/* f0cd8d4: 8d8400bc */ lw $a0,0xbc($t4)
/* f0cd8d8: 8e0d0284 */ lw $t5,0x284($s0)
/* f0cd8dc: 27a400cc */ addiu $a0,$sp,0xcc
@@ -2169,7 +2169,7 @@ glabel var7f1ad9c4
/* f0cb138: 51e0000a */ beqzl $t7,.NB0f0cb164
/* f0cb13c: 8e080284 */ lw $t0,0x284($s0)
/* f0cb140: 8e180284 */ lw $t8,0x284($s0)
/* f0cb144: 0fc193ab */ jal func0f065c44
/* f0cb144: 0fc193ab */ jal propDeregisterRooms
/* f0cb148: 8f0400bc */ lw $a0,0xbc($t8)
/* f0cb14c: 8e190284 */ lw $t9,0x284($s0)
/* f0cb150: 27a400c4 */ addiu $a0,$sp,0xc4
@@ -3629,7 +3629,7 @@ void bgrabTick(void)
#if VERSION >= VERSION_NTSC_1_0
for (i = 0; g_Vars.currentplayer->prop->rooms[i] != -1; i++) {
if (g_Vars.currentplayer->prop->rooms[i] == g_Vars.currentplayer->floorroom) {
func0f065c44(g_Vars.currentplayer->prop);
propDeregisterRooms(g_Vars.currentplayer->prop);
g_Vars.currentplayer->prop->rooms[0] = g_Vars.currentplayer->floorroom;
g_Vars.currentplayer->prop->rooms[1] = -1;
break;
+2 -2
View File
@@ -11890,9 +11890,9 @@ void bmove0f0cb89c(struct player *player, s16 *rooms)
void bmove0f0cb8c4(struct player *player)
{
func0f065c44(player->prop);
propDeregisterRooms(player->prop);
bmove0f0cb89c(player, player->prop->rooms);
func0f065cb0(player->prop);
propRegisterRooms(player->prop);
}
void bmove0f0cb904(struct coord *arg0)
+9 -9
View File
@@ -412,7 +412,7 @@ s32 bwalkTryMoveUpwards(f32 amount)
if (result == CDRESULT_NOCOLLISION) {
g_Vars.currentplayer->prop->pos.y = newpos.y;
func0f065c44(g_Vars.currentplayer->prop);
propDeregisterRooms(g_Vars.currentplayer->prop);
roomsCopy(rooms, g_Vars.currentplayer->prop->rooms);
}
@@ -522,7 +522,7 @@ bool bwalkCalculateNewPosition(struct coord *vel, f32 rotateamount, bool apply,
g_Vars.currentplayer->prop->pos.z = dstpos.z;
if (copyrooms) {
func0f065c44(g_Vars.currentplayer->prop);
propDeregisterRooms(g_Vars.currentplayer->prop);
roomsCopy(dstrooms, g_Vars.currentplayer->prop->rooms);
}
}
@@ -828,7 +828,7 @@ glabel var7f1a7ad8nb
/* f0c1e08: 8fbf0034 */ lw $ra,0x34($sp)
/* f0c1e0c: 8e0a0284 */ lw $t2,0x284($s0)
/* f0c1e10: 8d4400bc */ lw $a0,0xbc($t2)
/* f0c1e14: 0fc193ab */ jal func0f065c44
/* f0c1e14: 0fc193ab */ jal propDeregisterRooms
/* f0c1e18: afa300b4 */ sw $v1,0xb4($sp)
/* f0c1e1c: 8e0b0284 */ lw $t3,0x284($s0)
/* f0c1e20: 27a40094 */ addiu $a0,$sp,0x94
@@ -1072,7 +1072,7 @@ glabel bwalkCalculateNewPositionWithPush
/* f0c4594: c7a4006c */ lwc1 $f4,0x6c($sp)
/* f0c4598: e484000c */ swc1 $f4,0xc($a0)
/* f0c459c: c7a60070 */ lwc1 $f6,0x70($sp)
/* f0c45a0: 0fc19711 */ jal func0f065c44
/* f0c45a0: 0fc19711 */ jal propDeregisterRooms
/* f0c45a4: e4860010 */ swc1 $f6,0x10($a0)
/* f0c45a8: 8fa500a0 */ lw $a1,0xa0($sp)
/* f0c45ac: 27a40058 */ addiu $a0,$sp,0x58
@@ -1415,7 +1415,7 @@ glabel bwalkCalculateNewPositionWithPush
/* f0c4594: c7a4006c */ lwc1 $f4,0x6c($sp)
/* f0c4598: e484000c */ swc1 $f4,0xc($a0)
/* f0c459c: c7a60070 */ lwc1 $f6,0x70($sp)
/* f0c45a0: 0fc19711 */ jal func0f065c44
/* f0c45a0: 0fc19711 */ jal propDeregisterRooms
/* f0c45a4: e4860010 */ swc1 $f6,0x10($a0)
/* f0c45a8: 8fa500a0 */ lw $a1,0xa0($sp)
/* f0c45ac: 27a40058 */ addiu $a0,$sp,0x58
@@ -1622,7 +1622,7 @@ glabel bwalkCalculateNewPositionWithPush
// obstacle->pos.y = newpos.y;
// obstacle->pos.z = newpos.z;
//
// func0f065c44(obstacle);
// propDeregisterRooms(obstacle);
// roomsCopy(newrooms, obstacle->rooms);
// func0f0220ac(chr);
// modelSetRootPosition(chr->model, &newpos);
@@ -2287,7 +2287,7 @@ void bwalkUpdateVertical(void)
g_Vars.currentplayer->prop->pos.y = newpos.y;
g_Vars.currentplayer->prop->pos.z = newpos.z;
func0f065c44(g_Vars.currentplayer->prop);
propDeregisterRooms(g_Vars.currentplayer->prop);
roomsCopy(newrooms, g_Vars.currentplayer->prop->rooms);
}
}
@@ -3230,7 +3230,7 @@ glabel var7f1a7b20nb
/* f0c3910: 8dcd00bc */ lw $t5,0xbc($t6)
/* f0c3914: e5aa0010 */ swc1 $f10,0x10($t5)
/* f0c3918: 8e0f0284 */ lw $t7,0x284($s0)
/* f0c391c: 0fc193ab */ jal func0f065c44
/* f0c391c: 0fc193ab */ jal propDeregisterRooms
/* f0c3920: 8de400bc */ lw $a0,0xbc($t7)
/* f0c3924: 8e180284 */ lw $t8,0x284($s0)
/* f0c3928: 27a40098 */ addiu $a0,$sp,0x98
@@ -6606,7 +6606,7 @@ void bwalkTick(void)
#if VERSION >= VERSION_NTSC_1_0
for (i = 0; g_Vars.currentplayer->prop->rooms[i] != -1; i++) {
if (g_Vars.currentplayer->floorroom == g_Vars.currentplayer->prop->rooms[i]) {
func0f065c44(g_Vars.currentplayer->prop);
propDeregisterRooms(g_Vars.currentplayer->prop);
g_Vars.currentplayer->prop->rooms[0] = g_Vars.currentplayer->floorroom;
g_Vars.currentplayer->prop->rooms[1] = -1;
break;
+9 -9
View File
@@ -1807,7 +1807,7 @@ glabel var7f1a992cpf
/* f020590: 8fa9012c */ lw $t1,0x12c($sp)
/* f020594: e5200000 */ swc1 $f0,0x0($t1)
.PF0f020598:
/* f020598: 0fc197b5 */ jal func0f065c44
/* f020598: 0fc197b5 */ jal propDeregisterRooms
/* f02059c: 00000000 */ nop
/* f0205a0: 27a400fc */ addiu $a0,$sp,0xfc
/* f0205a4: 0fc1968d */ jal roomsCopy
@@ -1827,7 +1827,7 @@ glabel var7f1a992cpf
.PF0f0205dc:
/* f0205dc: 5483000a */ bnel $a0,$v1,.PF0f020608
/* f0205e0: 8443002a */ lh $v1,0x2a($v0)
/* f0205e4: 0fc197b5 */ jal func0f065c44
/* f0205e4: 0fc197b5 */ jal propDeregisterRooms
/* f0205e8: 00c02025 */ move $a0,$a2
/* f0205ec: 8fac0118 */ lw $t4,0x118($sp)
/* f0205f0: 860d02b2 */ lh $t5,0x2b2($s0)
@@ -3083,7 +3083,7 @@ glabel var7f1a8720
/* f020484: 8fa9012c */ lw $t1,0x12c($sp)
/* f020488: e5200000 */ swc1 $f0,0x0($t1)
.L0f02048c:
/* f02048c: 0fc19711 */ jal func0f065c44
/* f02048c: 0fc19711 */ jal propDeregisterRooms
/* f020490: 00000000 */ nop
/* f020494: 27a400fc */ addiu $a0,$sp,0xfc
/* f020498: 0fc195e9 */ jal roomsCopy
@@ -3103,7 +3103,7 @@ glabel var7f1a8720
.L0f0204d0:
/* f0204d0: 5483000a */ bnel $a0,$v1,.L0f0204fc
/* f0204d4: 8443002a */ lh $v1,0x2a($v0)
/* f0204d8: 0fc19711 */ jal func0f065c44
/* f0204d8: 0fc19711 */ jal propDeregisterRooms
/* f0204dc: 00c02025 */ or $a0,$a2,$zero
/* f0204e0: 8fac0118 */ lw $t4,0x118($sp)
/* f0204e4: 860d02b2 */ lh $t5,0x2b2($s0)
@@ -4209,7 +4209,7 @@ glabel var7f1a8720
/* f020030: 8fae00fc */ lw $t6,0xfc($sp)
/* f020034: e5c00000 */ swc1 $f0,0x0($t6)
.NB0f020038:
/* f020038: 0fc193ab */ jal func0f065c44
/* f020038: 0fc193ab */ jal propDeregisterRooms
/* f02003c: 8fa400e8 */ lw $a0,0xe8($sp)
/* f020040: 27a400cc */ addiu $a0,$sp,0xcc
/* f020044: 0fc19283 */ jal roomsCopy
@@ -4536,7 +4536,7 @@ struct prop *func0f020b14(struct prop *prop, struct model *model,
prop->pos.y = ground + 100;
prop->pos.z = testpos.z;
func0f065c44(prop);
propDeregisterRooms(prop);
roomsCopy(rooms, prop->rooms);
func0f0220ac(chr);
modelSetRootPosition(model, &prop->pos);
@@ -4596,7 +4596,7 @@ void func0f020d44(struct prop *prop, bool removechr)
func0f0926bc(prop, 1, 0xffff);
func0f0292bc(prop);
func0f089a94(0, model);
func0f065c44(prop);
propDeregisterRooms(prop);
if (g_Vars.stagenum == STAGE_CITRAINING) {
eyespyobj = objFindByTagId(0x26);
@@ -6404,9 +6404,9 @@ void func0f022084(struct chrdata *chr, s16 *room)
void func0f0220ac(struct chrdata *chr)
{
func0f065c44(chr->prop);
propDeregisterRooms(chr->prop);
func0f022084(chr, chr->prop->rooms);
func0f065cb0(chr->prop);
propRegisterRooms(chr->prop);
}
void func0f0220ec(struct chrdata *chr, s32 arg1, s32 arg2)
+3 -3
View File
@@ -6110,9 +6110,9 @@ void chrGoPosTickMagic(struct chrdata *chr, struct waydata *waydata, f32 speed,
chr->floortype = floortype;
chr->floorroom = floorroom;
func0f065c44(prop);
propDeregisterRooms(prop);
roomsCopy(sp118, prop->rooms);
func0f065cb0(prop);
propRegisterRooms(prop);
modelSetRootPosition(chr->model, &prop->pos);
@@ -26344,7 +26344,7 @@ bool chrMoveToPos(struct chrdata *chr, struct coord *pos, s16 *rooms, f32 angle,
chr->prop->pos.y = pos2.y;
chr->prop->pos.z = pos2.z;
func0f065c44(chr->prop);
propDeregisterRooms(chr->prop);
roomsCopy(rooms2, chr->prop->rooms);
func0f0220ac(chr);
modelSetRootPosition(chr->model, &pos2);
+6 -6
View File
@@ -2380,7 +2380,7 @@ bool aiGiveObjectToChr(void)
if (obj->prop->parent) {
objDetach(obj->prop);
} else {
func0f065c44(obj->prop);
propDeregisterRooms(obj->prop);
propDelist(obj->prop);
propDisable(obj->prop);
}
@@ -5454,7 +5454,7 @@ bool aiDisableChr(void)
struct chrdata *chr = chrFindById(g_Vars.chrdata, cmd[2]);
if (chr && chr->prop && chr->model) {
func0f065c44(chr->prop);
propDeregisterRooms(chr->prop);
propDelist(chr->prop);
propDisable(chr->prop);
}
@@ -5508,7 +5508,7 @@ bool aiDisableObj(void)
if (obj->prop->parent) {
objDetach(obj->prop);
} else {
func0f065c44(obj->prop);
propDeregisterRooms(obj->prop);
propDelist(obj->prop);
propDisable(obj->prop);
}
@@ -5517,7 +5517,7 @@ bool aiDisableObj(void)
if (obj->prop->parent) {
objDetach(obj->prop);
} else {
func0f065c44(obj->prop);
propDeregisterRooms(obj->prop);
propDelist(obj->prop);
propDisable(obj->prop);
}
@@ -10849,7 +10849,7 @@ glabel ai0172
/* f05cad0: 24010004 */ addiu $at,$zero,0x4
/* f05cad4: 5521000b */ bnel $t1,$at,.L0f05cb04
/* f05cad8: 8faa0024 */ lw $t2,0x24($sp)
/* f05cadc: 0fc19711 */ jal func0f065c44
/* f05cadc: 0fc19711 */ jal propDeregisterRooms
/* f05cae0: 02002025 */ or $a0,$s0,$zero
/* f05cae4: 0fc18171 */ jal propDelist
/* f05cae8: 02002025 */ or $a0,$s0,$zero
@@ -10881,7 +10881,7 @@ glabel ai0172
// g_Vars.chrdata->gunprop = NULL;
//
// if (prop && prop->obj && prop->parent == NULL && prop->type == PROPTYPE_WEAPON) {
// func0f065c44(prop);
// propDeregisterRooms(prop);
// propDelist(prop);
// propDisable(prop);
// chrEquipWeapon(prop->obj, g_Vars.chrdata);
+8 -8
View File
@@ -29,7 +29,7 @@ void gvarsInitProps(void)
g_Vars.props[i].next = &g_Vars.props[i + 1];
}
func0f00c390();
gvarsInitRoomProps();
if (g_Vars.normmplayerisrunning) {
g_Vars.numpropstates = 4;
@@ -53,23 +53,23 @@ void gvarsInitProps(void)
}
}
void func0f00c390(void)
void gvarsInitRoomProps(void)
{
s32 i;
s32 j;
var8009cda0 = malloc(ALIGN16(g_Vars.roomcount * 2), MEMPOOL_STAGE);
var8009cda4 = malloc(256 * sizeof(struct var8009cda4), MEMPOOL_STAGE);
g_RoomPropListChunkIndexes = malloc(ALIGN16(g_Vars.roomcount * sizeof(s16)), MEMPOOL_STAGE);
g_RoomPropListChunks = malloc(256 * sizeof(struct roomproplistchunk), MEMPOOL_STAGE);
for (i = 0; i < g_Vars.roomcount; i++) {
var8009cda0[i] = -1;
g_RoomPropListChunkIndexes[i] = -1;
}
for (i = 0; i < 256; i++) {
var8009cda4[i].propnums[0] = -2;
g_RoomPropListChunks[i].propnums[0] = -2;
for (j = 1; j < ARRAYCOUNT(var8009cda4[i].propnums); j++) {
var8009cda4[i].propnums[j] = -1;
for (j = 1; j < ARRAYCOUNT(g_RoomPropListChunks[i].propnums); j++) {
g_RoomPropListChunks[i].propnums[j] = -1;
}
}
}
-1
View File
@@ -3670,4 +3670,3 @@ void setupParseObjects(s32 stagenum)
stageAllocateBgChrs();
}
//#endif
+4 -4
View File
@@ -1153,7 +1153,7 @@ glabel var7f1a827c
/* f012294: 8d4e00bc */ lw $t6,0xbc($t2)
/* f012298: e5c20010 */ swc1 $f2,0x10($t6)
/* f01229c: 8e2b0284 */ lw $t3,0x284($s1)
/* f0122a0: 0fc197b5 */ jal func0f065c44
/* f0122a0: 0fc197b5 */ jal propDeregisterRooms
/* f0122a4: 8d6400bc */ lw $a0,0xbc($t3)
/* f0122a8: 8e2d0284 */ lw $t5,0x284($s1)
/* f0122ac: 87a9008c */ lh $t1,0x8c($sp)
@@ -1974,7 +1974,7 @@ glabel var7f1a827c
/* f012270: 8d4e00bc */ lw $t6,0xbc($t2)
/* f012274: e5c20010 */ swc1 $f2,0x10($t6)
/* f012278: 8e2b0284 */ lw $t3,0x284($s1)
/* f01227c: 0fc19711 */ jal func0f065c44
/* f01227c: 0fc19711 */ jal propDeregisterRooms
/* f012280: 8d6400bc */ lw $a0,0xbc($t3)
/* f012284: 8e2d0284 */ lw $t5,0x284($s1)
/* f012288: 87a9008c */ lh $t1,0x8c($sp)
@@ -2787,7 +2787,7 @@ glabel var7f1a827c
/* f011f94: 8d4e00bc */ lw $t6,0xbc($t2)
/* f011f98: e5c20010 */ swc1 $f2,0x10($t6)
/* f011f9c: 8e2b0284 */ lw $t3,0x284($s1)
/* f011fa0: 0fc193ab */ jal func0f065c44
/* f011fa0: 0fc193ab */ jal propDeregisterRooms
/* f011fa4: 8d6400bc */ lw $a0,0xbc($t3)
/* f011fa8: 8e2d0284 */ lw $t5,0x284($s1)
/* f011fac: 87a9008c */ lh $t1,0x8c($sp)
@@ -3227,7 +3227,7 @@ glabel var7f1a827c
// g_Vars.currentplayer->bondprevpos.z = (tmp = pos.z);
// g_Vars.currentplayer->prop->pos.z = tmp;
//
// func0f065c44(g_Vars.currentplayer->prop);
// propDeregisterRooms(g_Vars.currentplayer->prop);
//
// g_Vars.currentplayer->prop->rooms[0] = rooms[0];
// g_Vars.currentplayer->prop->rooms[1] = -1;
+2 -2
View File
@@ -302,9 +302,9 @@ void func0f09233c(struct defaultobj *obj, struct coord *pos, f32 *realrot, s16 *
void func0f0923d4(struct defaultobj *obj)
{
func0f065c44(obj->prop);
propDeregisterRooms(obj->prop);
func0f09233c(obj, &obj->prop->pos, obj->realrot, obj->prop->rooms);
func0f065cb0(obj->prop);
propRegisterRooms(obj->prop);
}
struct defaultobj *setupCommandGetObject(u32 cmdindex)
+1 -1
View File
@@ -12359,7 +12359,7 @@ void func0f09f848(s32 handnum)
func00015f04(obj->model->scale, &mtx);
func0f06a580(obj, &hand->muzzlepos, &mtx, playerprop->rooms);
func0f065c44(objprop);
propDeregisterRooms(objprop);
}
model->matrices = gfxAllocate(model->filedata->nummatrices * sizeof(Mtxf));
+3 -3
View File
@@ -735,7 +735,7 @@ glabel var7f1ad568
/* f0b74ec: 8d2a00bc */ lw $t2,0xbc($t1)
/* f0b74f0: e5420010 */ swc1 $f2,0x10($t2)
/* f0b74f4: 8e4b0284 */ lw $t3,0x284($s2)
/* f0b74f8: 0fc19711 */ jal func0f065c44
/* f0b74f8: 0fc19711 */ jal propDeregisterRooms
/* f0b74fc: 8d6400bc */ lw $a0,0xbc($t3)
/* f0b7500: 8e4d0284 */ lw $t5,0x284($s2)
/* f0b7504: 87ac00fc */ lh $t4,0xfc($sp)
@@ -1008,7 +1008,7 @@ glabel var7f1ad568
// g_Vars.currentplayer->bondprevpos.z = pos.z;
// g_Vars.currentplayer->prop->pos.z = pos.z;
//
// func0f065c44(g_Vars.currentplayer->prop);
// propDeregisterRooms(g_Vars.currentplayer->prop);
//
// g_Vars.currentplayer->prop->rooms[0] = rooms[0];
// g_Vars.currentplayer->prop->rooms[1] = -1;
@@ -1366,7 +1366,7 @@ bool currentPlayerAssumeChrForAnti(struct chrdata *hostchr, bool force)
g_Vars.currentplayer->bond2.width = hostchr->chrwidth;
func0f020d44(hostprop, true);
func0f065c44(hostprop);
propDeregisterRooms(hostprop);
propDelist(hostprop);
propDisable(hostprop);
propFree(hostprop);
+119 -107
View File
@@ -38,8 +38,8 @@
#include "data.h"
#include "types.h"
s16 *var8009cda0;
struct var8009cda4 *var8009cda4;
s16 *g_RoomPropListChunkIndexes;
struct roomproplistchunk *g_RoomPropListChunks;
struct prop *var8009cda8;
u32 var8009cdac;
u32 var8009cdb0;
@@ -2542,24 +2542,24 @@ void propExecuteTickOperation(struct prop *prop, s32 op)
obj->hidden &= ~OBJHFLAG_REAPABLE;
obj->hidden2 &= ~OBJH2FLAG_40;
func0f065c44(prop);
propDeregisterRooms(prop);
propDisable(prop);
if (!prop->active) {
propUnpause(prop);
}
} else {
func0f065c44(prop);
propDeregisterRooms(prop);
propDelist(prop);
propDisable(prop);
propFree(prop);
}
} else if (op == TICKOP_DISABLE) {
func0f065c44(prop);
propDeregisterRooms(prop);
propDelist(prop);
propDisable(prop);
} else if (op == TICKOP_GIVETOPLAYER) {
func0f065c44(prop);
propDeregisterRooms(prop);
propDelist(prop);
propDisable(prop);
objDetach(prop);
@@ -7329,13 +7329,13 @@ glabel arrayIntersects
/* f0658e4: 00000000 */ nop
);
bool func0f0658e8(s16 propnum, s32 arg1)
bool propTryAddToChunk(s16 propnum, s32 chunkindex)
{
s32 i;
for (i = 0; i < 7; i++) {
if (var8009cda4[arg1].propnums[i] < 0) {
var8009cda4[arg1].propnums[i] = propnum;
if (g_RoomPropListChunks[chunkindex].propnums[i] < 0) {
g_RoomPropListChunks[chunkindex].propnums[i] = propnum;
return true;
}
}
@@ -7343,21 +7343,21 @@ bool func0f0658e8(s16 propnum, s32 arg1)
return false;
}
s32 func0f06593c(s32 room, s32 arg1)
s32 roomAllocatePropListChunk(s32 room, s32 prevchunkindex)
{
s32 i;
s32 j;
for (i = 0; i < 256; i++) {
if (var8009cda4[i].propnums[0] == -2) {
if (g_RoomPropListChunks[i].propnums[0] == -2) {
for (j = 0; j < 8; j++) {
var8009cda4[i].propnums[j] = -1;
g_RoomPropListChunks[i].propnums[j] = -1;
}
if (arg1 >= 0) {
var8009cda4[arg1].propnums[7] = i;
if (prevchunkindex >= 0) {
g_RoomPropListChunks[prevchunkindex].propnums[7] = i;
} else {
var8009cda0[room] = i;
g_RoomPropListChunkIndexes[room] = i;
}
return i;
@@ -7367,94 +7367,110 @@ s32 func0f06593c(s32 room, s32 arg1)
return -1;
}
void func0f0659e4(struct prop *prop, s16 room)
void propRegisterRoom(struct prop *prop, s16 room)
{
s32 prev = -1;
s32 i;
if (room >= 0 && room < g_Vars.roomcount) {
s32 value = var8009cda0[room];
// Find which chunk to start at
s32 chunkindex = g_RoomPropListChunkIndexes[room];
s16 propnum = prop - g_Vars.props;
for (i = 0; value >= 0; i++) {
if (func0f0658e8(propnum, value)) {
for (i = 0; chunkindex >= 0; i++) {
if (propTryAddToChunk(propnum, chunkindex)) {
return;
}
prev = value;
value = var8009cda4[value].propnums[7];
prev = chunkindex;
chunkindex = g_RoomPropListChunks[chunkindex].propnums[7];
}
value = func0f06593c(room, prev);
// Allocate a new chunk
chunkindex = roomAllocatePropListChunk(room, prev);
if (value >= 0) {
func0f0658e8(propnum, value);
if (chunkindex >= 0) {
propTryAddToChunk(propnum, chunkindex);
}
}
}
void func0f065ae0(struct prop *prop, s16 room)
void propDeregisterRoom(struct prop *prop, s16 room)
{
bool removed = false;
s32 prev = -1;
if (room >= 0 && room < g_Vars.roomcount) {
s32 value = var8009cda0[room];
// Find which chunk to start at
s32 chunkindex = g_RoomPropListChunkIndexes[room];
s16 propnum = prop - g_Vars.props;
while (value >= 0) {
while (chunkindex >= 0) {
bool populated = false;
s32 j;
// Iterate propnums in this chunk
for (j = 0; j < 7; j++) {
if (var8009cda4[value].propnums[j] == propnum) {
var8009cda4[value].propnums[j] = -1;
if (g_RoomPropListChunks[chunkindex].propnums[j] == propnum) {
g_RoomPropListChunks[chunkindex].propnums[j] = -1;
removed = true;
} else if (!populated && var8009cda4[value].propnums[j] >= 0) {
} else if (!populated && g_RoomPropListChunks[chunkindex].propnums[j] >= 0) {
populated = true;
}
}
if (!populated) {
var8009cda4[value].propnums[0] = -2;
// This chunk is empty, so it can be marked as available
g_RoomPropListChunks[chunkindex].propnums[0] = -2;
if (prev >= 0) {
var8009cda4[prev].propnums[7] = var8009cda4[value].propnums[7];
g_RoomPropListChunks[prev].propnums[7] = g_RoomPropListChunks[chunkindex].propnums[7];
} else {
var8009cda0[room] = var8009cda4[value].propnums[7];
g_RoomPropListChunkIndexes[room] = g_RoomPropListChunks[chunkindex].propnums[7];
}
} else {
prev = value;
prev = chunkindex;
}
if (removed) {
return;
}
value = var8009cda4[value].propnums[7];
chunkindex = g_RoomPropListChunks[chunkindex].propnums[7];
}
}
}
void func0f065c44(struct prop *prop)
/**
* Remove a prop from the room registration system.
* The prop's rooms list is unchanged.
*
* Room registration is used to look up props by room number.
*/
void propDeregisterRooms(struct prop *prop)
{
s16 *rooms = prop->rooms;
s16 room = *rooms;
while (room != -1) {
func0f065ae0(prop, room);
propDeregisterRoom(prop, room);
rooms++;
room = *rooms;
}
}
void func0f065cb0(struct prop *prop)
/**
* Add a prop to the room registration system based on its rooms list.
*
* Room registration is used to look up props by room number.
*/
void propRegisterRooms(struct prop *prop)
{
s16 *rooms = prop->rooms;
s16 room = *rooms;
while (room != -1) {
func0f0659e4(prop, room);
propRegisterRoom(prop, room);
rooms++;
room = *rooms;
}
@@ -7537,70 +7553,66 @@ void func0f065e98(struct coord *pos, s16 *rooms, struct coord *pos2, s16 *rooms2
}
}
GLOBAL_ASM(
glabel roomGetProps
/* f065f80: afa60008 */ sw $a2,0x8($sp)
/* f065f84: 84830000 */ lh $v1,0x0($a0)
/* f065f88: 240affff */ addiu $t2,$zero,-1
/* f065f8c: 00a01025 */ or $v0,$a1,$zero
/* f065f90: 106a002e */ beq $v1,$t2,.L0f06604c
/* f065f94: 240c000e */ addiu $t4,$zero,0xe
/* f065f98: 3c0b800a */ lui $t3,%hi(var8009cda0)
/* f065f9c: 256bcda0 */ addiu $t3,$t3,%lo(var8009cda0)
/* f065fa0: 8d6e0000 */ lw $t6,0x0($t3)
.L0f065fa4:
/* f065fa4: 00037840 */ sll $t7,$v1,0x1
/* f065fa8: 3c07800a */ lui $a3,%hi(var8009cda4)
/* f065fac: 01cfc021 */ addu $t8,$t6,$t7
/* f065fb0: 87060000 */ lh $a2,0x0($t8)
/* f065fb4: 04c20022 */ bltzl $a2,.L0f066040
/* f065fb8: 84830002 */ lh $v1,0x2($a0)
/* f065fbc: 8ce7cda4 */ lw $a3,%lo(var8009cda4)($a3)
/* f065fc0: 00004025 */ or $t0,$zero,$zero
.L0f065fc4:
/* f065fc4: 0006c900 */ sll $t9,$a2,0x4
.L0f065fc8:
/* f065fc8: 00f96821 */ addu $t5,$a3,$t9
/* f065fcc: 01a87021 */ addu $t6,$t5,$t0
/* f065fd0: 85c30000 */ lh $v1,0x0($t6)
/* f065fd4: 25080002 */ addiu $t0,$t0,0x2
/* f065fd8: 00a2082b */ sltu $at,$a1,$v0
/* f065fdc: 04600010 */ bltz $v1,.L0f066020
/* f065fe0: 00000000 */ nop
/* f065fe4: 10200008 */ beqz $at,.L0f066008
/* f065fe8: 00a04825 */ or $t1,$a1,$zero
/* f065fec: 852f0000 */ lh $t7,0x0($t1)
.L0f065ff0:
/* f065ff0: 106f0005 */ beq $v1,$t7,.L0f066008
/* f065ff4: 00000000 */ nop
/* f065ff8: 25290002 */ addiu $t1,$t1,0x2
/* f065ffc: 0122082b */ sltu $at,$t1,$v0
/* f066000: 5420fffb */ bnezl $at,.L0f065ff0
/* f066004: 852f0000 */ lh $t7,0x0($t1)
.L0f066008:
/* f066008: 15220005 */ bne $t1,$v0,.L0f066020
/* f06600c: 00000000 */ nop
/* f066010: a4430000 */ sh $v1,0x0($v0)
/* f066014: 3c07800a */ lui $a3,%hi(var8009cda4)
/* f066018: 24420002 */ addiu $v0,$v0,0x2
/* f06601c: 8ce7cda4 */ lw $a3,%lo(var8009cda4)($a3)
.L0f066020:
/* f066020: 550cffe9 */ bnel $t0,$t4,.L0f065fc8
/* f066024: 0006c900 */ sll $t9,$a2,0x4
/* f066028: 0006c100 */ sll $t8,$a2,0x4
/* f06602c: 00f8c821 */ addu $t9,$a3,$t8
/* f066030: 8726000e */ lh $a2,0xe($t9)
/* f066034: 04c3ffe3 */ bgezl $a2,.L0f065fc4
/* f066038: 00004025 */ or $t0,$zero,$zero
/* f06603c: 84830002 */ lh $v1,0x2($a0)
.L0f066040:
/* f066040: 24840002 */ addiu $a0,$a0,0x2
/* f066044: 546affd7 */ bnel $v1,$t2,.L0f065fa4
/* f066048: 8d6e0000 */ lw $t6,0x0($t3)
.L0f06604c:
/* f06604c: 03e00008 */ jr $ra
/* f066050: a44a0000 */ sh $t2,0x0($v0)
);
/**
* Given a list of rooms (terminated by -1), and a pointer to an empty
* allocation of propnums, populate the propnums list based on which props are
* in any of those rooms.
*
* @dangerous: The len argument is ignored, so array overflow will occur if
* there are too many props in a small area. In most (if not all) invocations,
* the caller uses an array that can hold 256 propnums, so if you can find a way
* to get 256 props in a small space without exhausing the memory of the
* console, you could potentially achieve arbitrary code execution.
*/
void roomGetProps(s16 *rooms, s16 *propnums, s32 len)
{
s16 *writeptr = propnums;
s32 room;
s32 i;
s32 j;
room = *rooms;
// Iterate rooms
while (room != -1) {
// Find the chunk to start at
s32 chunkindex = g_RoomPropListChunkIndexes[room];
// Iterate the chunks
while (chunkindex >= 0) {
// Iterate the propnums within each chunk
for (i = 0; i < 7; i++) {
s16 propnum = g_RoomPropListChunks[chunkindex].propnums[i];
if (propnum >= 0) {
// Check if it's in the list already
s16 *ptr = propnums;
while (ptr < writeptr) {
if (*ptr == propnum) {
break;
}
ptr++;
}
if (ptr == writeptr) {
// Prop is not in the list, so insert it
writeptr++;
writeptr[-1] = propnum;
}
}
}
chunkindex = g_RoomPropListChunks[chunkindex].propnums[7];
}
rooms++;
room = *rooms;
}
*writeptr = -1;
}
GLOBAL_ASM(
glabel func0f066054
@@ -7613,10 +7625,10 @@ glabel func0f066054
/* f06606c: afb00008 */ sw $s0,0x8($sp)
/* f066070: 1860005c */ blez $v1,.L0f0661e4
/* f066074: 00001025 */ or $v0,$zero,$zero
/* f066078: 3c0d800a */ lui $t5,%hi(var8009cda4)
/* f06607c: 3c0c800a */ lui $t4,%hi(var8009cda0)
/* f066080: 258ccda0 */ addiu $t4,$t4,%lo(var8009cda0)
/* f066084: 25adcda4 */ addiu $t5,$t5,%lo(var8009cda4)
/* f066078: 3c0d800a */ lui $t5,%hi(g_RoomPropListChunks)
/* f06607c: 3c0c800a */ lui $t4,%hi(g_RoomPropListChunkIndexes)
/* f066080: 258ccda0 */ addiu $t4,$t4,%lo(g_RoomPropListChunkIndexes)
/* f066084: 25adcda4 */ addiu $t5,$t5,%lo(g_RoomPropListChunks)
/* f066088: 00002825 */ or $a1,$zero,$zero
/* f06608c: 2413000e */ addiu $s3,$zero,0xe
/* f066090: 2412fffe */ addiu $s2,$zero,-2
+55 -55
View File
@@ -5370,7 +5370,7 @@ void func0f06a580(struct defaultobj *obj, struct coord *pos, Mtxf *matrix, s16 *
prop->pos.y = pos->y;
prop->pos.z = pos->z;
func0f065c44(prop);
propDeregisterRooms(prop);
roomsCopy(rooms, prop->rooms);
func0f069c70(obj, true, true);
@@ -6348,7 +6348,7 @@ void objRemove2(struct defaultobj *obj, bool freeprop, bool regen)
objDetach(obj->prop);
}
func0f065c44(obj->prop);
propDeregisterRooms(obj->prop);
if (obj->prop->type != PROPTYPE_DOOR) {
func0f089a94(true, obj->model);
@@ -9279,7 +9279,7 @@ glabel var7f1aa26c
/* f06d4c8: 02002025 */ or $a0,$s0,$zero
/* f06d4cc: e610000c */ swc1 $f16,0xc($s0)
/* f06d4d0: c7b20088 */ lwc1 $f18,0x88($sp)
/* f06d4d4: 0fc19711 */ jal func0f065c44
/* f06d4d4: 0fc19711 */ jal propDeregisterRooms
/* f06d4d8: e6120010 */ swc1 $f18,0x10($s0)
/* f06d4dc: 27a40070 */ addiu $a0,$sp,0x70
/* f06d4e0: 0fc195e9 */ jal roomsCopy
@@ -9530,7 +9530,7 @@ glabel var7f1aa26c
/* f06d85c: 02002025 */ or $a0,$s0,$zero
/* f06d860: e606000c */ swc1 $f6,0xc($s0)
/* f06d864: c7a80054 */ lwc1 $f8,0x54($sp)
/* f06d868: 0fc19711 */ jal func0f065c44
/* f06d868: 0fc19711 */ jal propDeregisterRooms
/* f06d86c: e6080010 */ swc1 $f8,0x10($s0)
/* f06d870: 27a40070 */ addiu $a0,$sp,0x70
/* f06d874: 0fc195e9 */ jal roomsCopy
@@ -9562,7 +9562,7 @@ glabel var7f1aa26c
/* f06d8d4: e7a80054 */ swc1 $f8,0x54($sp)
/* f06d8d8: c7aa0050 */ lwc1 $f10,0x50($sp)
/* f06d8dc: 02002025 */ or $a0,$s0,$zero
/* f06d8e0: 0fc19711 */ jal func0f065c44
/* f06d8e0: 0fc19711 */ jal propDeregisterRooms
/* f06d8e4: e60a000c */ swc1 $f10,0xc($s0)
/* f06d8e8: 27a40070 */ addiu $a0,$sp,0x70
/* f06d8ec: 0fc195e9 */ jal roomsCopy
@@ -9670,7 +9670,7 @@ glabel var7f1aa26c
/* f06d4c8: 02002025 */ or $a0,$s0,$zero
/* f06d4cc: e610000c */ swc1 $f16,0xc($s0)
/* f06d4d0: c7b20088 */ lwc1 $f18,0x88($sp)
/* f06d4d4: 0fc19711 */ jal func0f065c44
/* f06d4d4: 0fc19711 */ jal propDeregisterRooms
/* f06d4d8: e6120010 */ swc1 $f18,0x10($s0)
/* f06d4dc: 27a40070 */ addiu $a0,$sp,0x70
/* f06d4e0: 0fc195e9 */ jal roomsCopy
@@ -9921,7 +9921,7 @@ glabel var7f1aa26c
/* f06d85c: 02002025 */ or $a0,$s0,$zero
/* f06d860: e606000c */ swc1 $f6,0xc($s0)
/* f06d864: c7a80054 */ lwc1 $f8,0x54($sp)
/* f06d868: 0fc19711 */ jal func0f065c44
/* f06d868: 0fc19711 */ jal propDeregisterRooms
/* f06d86c: e6080010 */ swc1 $f8,0x10($s0)
/* f06d870: 27a40070 */ addiu $a0,$sp,0x70
/* f06d874: 0fc195e9 */ jal roomsCopy
@@ -9953,7 +9953,7 @@ glabel var7f1aa26c
/* f06d8d4: e7a80054 */ swc1 $f8,0x54($sp)
/* f06d8d8: c7aa0050 */ lwc1 $f10,0x50($sp)
/* f06d8dc: 02002025 */ or $a0,$s0,$zero
/* f06d8e0: 0fc19711 */ jal func0f065c44
/* f06d8e0: 0fc19711 */ jal propDeregisterRooms
/* f06d8e4: e60a000c */ swc1 $f10,0xc($s0)
/* f06d8e8: 27a40070 */ addiu $a0,$sp,0x70
/* f06d8ec: 0fc195e9 */ jal roomsCopy
@@ -11657,7 +11657,7 @@ glabel func0f06ef44
/* f06ef98: 8e190040 */ lw $t9,0x40($s0)
/* f06ef9c: 02202025 */ or $a0,$s1,$zero
/* f06efa0: 37280040 */ ori $t0,$t9,0x40
/* f06efa4: 0fc19711 */ jal func0f065c44
/* f06efa4: 0fc19711 */ jal propDeregisterRooms
/* f06efa8: ae080040 */ sw $t0,0x40($s0)
/* f06efac: 0fc18171 */ jal propDelist
/* f06efb0: 02202025 */ or $a0,$s1,$zero
@@ -18233,7 +18233,7 @@ glabel var7f1aa31c
/* f072548: 8fa400e8 */ lw $a0,0xe8($sp)
/* f07254c: e4840008 */ swc1 $f4,0x8($a0)
/* f072550: c7a80458 */ lwc1 $f8,0x458($sp)
/* f072554: 0fc19711 */ jal func0f065c44
/* f072554: 0fc19711 */ jal propDeregisterRooms
/* f072558: e4880010 */ swc1 $f8,0x10($a0)
/* f07255c: 27a40440 */ addiu $a0,$sp,0x440
/* f072560: 0fc195e9 */ jal roomsCopy
@@ -20093,7 +20093,7 @@ glabel func0f0732d4
/* f073400: c7aa008c */ lwc1 $f10,0x8c($sp)
/* f073404: e60a000c */ swc1 $f10,0xc($s0)
/* f073408: c7b00090 */ lwc1 $f16,0x90($sp)
/* f07340c: 0fc19711 */ jal func0f065c44
/* f07340c: 0fc19711 */ jal propDeregisterRooms
/* f073410: e6100010 */ swc1 $f16,0x10($s0)
/* f073414: 02a02025 */ or $a0,$s5,$zero
/* f073418: 03c02825 */ or $a1,$s8,$zero
@@ -20389,7 +20389,7 @@ glabel var7f1aa3d0
/* f073818: c7a60078 */ lwc1 $f6,0x78($sp)
/* f07381c: e666000c */ swc1 $f6,0xc($s3)
/* f073820: c7b0007c */ lwc1 $f16,0x7c($sp)
/* f073824: 0fc19711 */ jal func0f065c44
/* f073824: 0fc19711 */ jal propDeregisterRooms
/* f073828: e6700010 */ swc1 $f16,0x10($s3)
/* f07382c: 02202025 */ or $a0,$s1,$zero
/* f073830: 0fc195e9 */ jal roomsCopy
@@ -20846,7 +20846,7 @@ glabel var7f1aa3d0
/* f073818: c7a60078 */ lwc1 $f6,0x78($sp)
/* f07381c: e666000c */ swc1 $f6,0xc($s3)
/* f073820: c7b0007c */ lwc1 $f16,0x7c($sp)
/* f073824: 0fc19711 */ jal func0f065c44
/* f073824: 0fc19711 */ jal propDeregisterRooms
/* f073828: e6700010 */ swc1 $f16,0x10($s3)
/* f07382c: 02202025 */ or $a0,$s1,$zero
/* f073830: 0fc195e9 */ jal roomsCopy
@@ -21090,7 +21090,7 @@ glabel func0f073ae8
/* f073b90: c66600c8 */ lwc1 $f6,0xc8($s3)
/* f073b94: e626000c */ swc1 $f6,0xc($s1)
/* f073b98: c66800cc */ lwc1 $f8,0xcc($s3)
/* f073b9c: 0fc19711 */ jal func0f065c44
/* f073b9c: 0fc19711 */ jal propDeregisterRooms
/* f073ba0: e6280010 */ swc1 $f8,0x10($s1)
/* f073ba4: 02402025 */ or $a0,$s2,$zero
/* f073ba8: 0fc195e9 */ jal roomsCopy
@@ -21127,7 +21127,7 @@ glabel func0f073ae8
/* f073c1c: e630000c */ swc1 $f16,0xc($s1)
/* f073c20: 8fa90068 */ lw $t1,0x68($sp)
/* f073c24: c5320008 */ lwc1 $f18,0x8($t1)
/* f073c28: 0fc19711 */ jal func0f065c44
/* f073c28: 0fc19711 */ jal propDeregisterRooms
/* f073c2c: e6320010 */ swc1 $f18,0x10($s1)
/* f073c30: 27a40034 */ addiu $a0,$sp,0x34
/* f073c34: 0fc195e9 */ jal roomsCopy
@@ -23638,7 +23638,7 @@ glabel var7f1ab6dcpf
/* f076264: c7a805e0 */ lwc1 $f8,0x5e0($sp)
/* f076268: e648000c */ swc1 $f8,0xc($s2)
/* f07626c: c7aa05e4 */ lwc1 $f10,0x5e4($sp)
/* f076270: 0fc197b5 */ jal func0f065c44
/* f076270: 0fc197b5 */ jal propDeregisterRooms
/* f076274: e64a0010 */ swc1 $f10,0x10($s2)
/* f076278: 27a4013c */ addiu $a0,$sp,0x13c
/* f07627c: 0fc1968d */ jal roomsCopy
@@ -23680,7 +23680,7 @@ glabel var7f1ab6dcpf
/* f0762f8: c7a805e0 */ lwc1 $f8,0x5e0($sp)
/* f0762fc: e648000c */ swc1 $f8,0xc($s2)
/* f076300: c7aa05e4 */ lwc1 $f10,0x5e4($sp)
/* f076304: 0fc197b5 */ jal func0f065c44
/* f076304: 0fc197b5 */ jal propDeregisterRooms
/* f076308: e64a0010 */ swc1 $f10,0x10($s2)
/* f07630c: 27a4012c */ addiu $a0,$sp,0x12c
/* f076310: 0fc1968d */ jal roomsCopy
@@ -23803,7 +23803,7 @@ glabel var7f1ab6dcpf
/* f0764d4: 02402025 */ move $a0,$s2
/* f0764d8: e64a000c */ swc1 $f10,0xc($s2)
/* f0764dc: c7a605d0 */ lwc1 $f6,0x5d0($sp)
/* f0764e0: 0fc197b5 */ jal func0f065c44
/* f0764e0: 0fc197b5 */ jal propDeregisterRooms
/* f0764e4: e6460010 */ swc1 $f6,0x10($s2)
/* f0764e8: 27a405b8 */ addiu $a0,$sp,0x5b8
/* f0764ec: 0fc1968d */ jal roomsCopy
@@ -24598,7 +24598,7 @@ glabel var7f1ab6dcpf
/* f077068: 264e0008 */ addiu $t6,$s2,0x8
/* f07706c: 02402025 */ move $a0,$s2
/* f077070: e6460010 */ swc1 $f6,0x10($s2)
/* f077074: 0fc197b5 */ jal func0f065c44
/* f077074: 0fc197b5 */ jal propDeregisterRooms
/* f077078: afae0070 */ sw $t6,0x70($sp)
/* f07707c: 27a405b8 */ addiu $a0,$sp,0x5b8
/* f077080: 0fc1968d */ jal roomsCopy
@@ -27176,7 +27176,7 @@ glabel var7f1aa438
/* f075fe0: c7a605e0 */ lwc1 $f6,0x5e0($sp)
/* f075fe4: e646000c */ swc1 $f6,0xc($s2)
/* f075fe8: c7a805e4 */ lwc1 $f8,0x5e4($sp)
/* f075fec: 0fc19711 */ jal func0f065c44
/* f075fec: 0fc19711 */ jal propDeregisterRooms
/* f075ff0: e6480010 */ swc1 $f8,0x10($s2)
/* f075ff4: 27a4013c */ addiu $a0,$sp,0x13c
/* f075ff8: 0fc195e9 */ jal roomsCopy
@@ -27218,7 +27218,7 @@ glabel var7f1aa438
/* f076074: c7a605e0 */ lwc1 $f6,0x5e0($sp)
/* f076078: e646000c */ swc1 $f6,0xc($s2)
/* f07607c: c7a805e4 */ lwc1 $f8,0x5e4($sp)
/* f076080: 0fc19711 */ jal func0f065c44
/* f076080: 0fc19711 */ jal propDeregisterRooms
/* f076084: e6480010 */ swc1 $f8,0x10($s2)
/* f076088: 27a4012c */ addiu $a0,$sp,0x12c
/* f07608c: 0fc195e9 */ jal roomsCopy
@@ -27341,7 +27341,7 @@ glabel var7f1aa438
/* f076250: 02402025 */ or $a0,$s2,$zero
/* f076254: e648000c */ swc1 $f8,0xc($s2)
/* f076258: c7a405d0 */ lwc1 $f4,0x5d0($sp)
/* f07625c: 0fc19711 */ jal func0f065c44
/* f07625c: 0fc19711 */ jal propDeregisterRooms
/* f076260: e6440010 */ swc1 $f4,0x10($s2)
/* f076264: 27a405b8 */ addiu $a0,$sp,0x5b8
/* f076268: 0fc195e9 */ jal roomsCopy
@@ -28130,7 +28130,7 @@ glabel var7f1aa438
/* f076dcc: 264e0008 */ addiu $t6,$s2,0x8
/* f076dd0: 02402025 */ or $a0,$s2,$zero
/* f076dd4: e64a0010 */ swc1 $f10,0x10($s2)
/* f076dd8: 0fc19711 */ jal func0f065c44
/* f076dd8: 0fc19711 */ jal propDeregisterRooms
/* f076ddc: afae0070 */ sw $t6,0x70($sp)
/* f076de0: 27a405b8 */ addiu $a0,$sp,0x5b8
/* f076de4: 0fc195e9 */ jal roomsCopy
@@ -30679,7 +30679,7 @@ glabel var7f1aa438
/* f074d10: c7a605e0 */ lwc1 $f6,0x5e0($sp)
/* f074d14: e646000c */ swc1 $f6,0xc($s2)
/* f074d18: c7a805e4 */ lwc1 $f8,0x5e4($sp)
/* f074d1c: 0fc193ab */ jal func0f065c44
/* f074d1c: 0fc193ab */ jal propDeregisterRooms
/* f074d20: e6480010 */ swc1 $f8,0x10($s2)
/* f074d24: 27a4013c */ addiu $a0,$sp,0x13c
/* f074d28: 0fc19283 */ jal roomsCopy
@@ -30721,7 +30721,7 @@ glabel var7f1aa438
/* f074da4: c7a605e0 */ lwc1 $f6,0x5e0($sp)
/* f074da8: e646000c */ swc1 $f6,0xc($s2)
/* f074dac: c7a805e4 */ lwc1 $f8,0x5e4($sp)
/* f074db0: 0fc193ab */ jal func0f065c44
/* f074db0: 0fc193ab */ jal propDeregisterRooms
/* f074db4: e6480010 */ swc1 $f8,0x10($s2)
/* f074db8: 27a4012c */ addiu $a0,$sp,0x12c
/* f074dbc: 0fc19283 */ jal roomsCopy
@@ -31564,7 +31564,7 @@ glabel var7f1aa438
/* f0759f4: 264e0008 */ addiu $t6,$s2,0x8
/* f0759f8: 02402025 */ or $a0,$s2,$zero
/* f0759fc: e6460010 */ swc1 $f6,0x10($s2)
/* f075a00: 0fc193ab */ jal func0f065c44
/* f075a00: 0fc193ab */ jal propDeregisterRooms
/* f075a04: afae0074 */ sw $t6,0x74($sp)
/* f075a08: 27a405b8 */ addiu $a0,$sp,0x5b8
/* f075a0c: 0fc19283 */ jal roomsCopy
@@ -32121,7 +32121,7 @@ glabel var7f1aa454
/* f0777cc: c6a60008 */ lwc1 $f6,0x8($s5)
/* f0777d0: 46083401 */ sub.s $f16,$f6,$f8
/* f0777d4: 46105480 */ add.s $f18,$f10,$f16
/* f0777d8: 0fc19711 */ jal func0f065c44
/* f0777d8: 0fc19711 */ jal propDeregisterRooms
/* f0777dc: e6320010 */ swc1 $f18,0x10($s1)
/* f0777e0: 02602025 */ or $a0,$s3,$zero
/* f0777e4: 02802825 */ or $a1,$s4,$zero
@@ -32181,7 +32181,7 @@ glabel var7f1aa454
/* f0778b8: c6a40008 */ lwc1 $f4,0x8($s5)
/* f0778bc: 46062401 */ sub.s $f16,$f4,$f6
/* f0778c0: 46109200 */ add.s $f8,$f18,$f16
/* f0778c4: 0fc19711 */ jal func0f065c44
/* f0778c4: 0fc19711 */ jal propDeregisterRooms
/* f0778c8: e6280010 */ swc1 $f8,0x10($s1)
/* f0778cc: 26320008 */ addiu $s2,$s1,0x8
/* f0778d0: 02403025 */ or $a2,$s2,$zero
@@ -32334,7 +32334,7 @@ glabel var7f1aa454
/* f077b10: c7a4007c */ lwc1 $f4,0x7c($sp)
/* f077b14: e624000c */ swc1 $f4,0xc($s1)
/* f077b18: c7a60080 */ lwc1 $f6,0x80($sp)
/* f077b1c: 0fc19711 */ jal func0f065c44
/* f077b1c: 0fc19711 */ jal propDeregisterRooms
/* f077b20: e6260010 */ swc1 $f6,0x10($s1)
/* f077b24: 27a40068 */ addiu $a0,$sp,0x68
/* f077b28: 0fc195e9 */ jal roomsCopy
@@ -32507,7 +32507,7 @@ glabel var7f1aa454
/* f0777cc: c6a60008 */ lwc1 $f6,0x8($s5)
/* f0777d0: 46083401 */ sub.s $f16,$f6,$f8
/* f0777d4: 46105480 */ add.s $f18,$f10,$f16
/* f0777d8: 0fc19711 */ jal func0f065c44
/* f0777d8: 0fc19711 */ jal propDeregisterRooms
/* f0777dc: e6320010 */ swc1 $f18,0x10($s1)
/* f0777e0: 02602025 */ or $a0,$s3,$zero
/* f0777e4: 02802825 */ or $a1,$s4,$zero
@@ -32567,7 +32567,7 @@ glabel var7f1aa454
/* f0778b8: c6a40008 */ lwc1 $f4,0x8($s5)
/* f0778bc: 46062401 */ sub.s $f16,$f4,$f6
/* f0778c0: 46109200 */ add.s $f8,$f18,$f16
/* f0778c4: 0fc19711 */ jal func0f065c44
/* f0778c4: 0fc19711 */ jal propDeregisterRooms
/* f0778c8: e6280010 */ swc1 $f8,0x10($s1)
/* f0778cc: 26320008 */ addiu $s2,$s1,0x8
/* f0778d0: 02403025 */ or $a2,$s2,$zero
@@ -32720,7 +32720,7 @@ glabel var7f1aa454
/* f077b10: c7a4007c */ lwc1 $f4,0x7c($sp)
/* f077b14: e624000c */ swc1 $f4,0xc($s1)
/* f077b18: c7a60080 */ lwc1 $f6,0x80($sp)
/* f077b1c: 0fc19711 */ jal func0f065c44
/* f077b1c: 0fc19711 */ jal propDeregisterRooms
/* f077b20: e6260010 */ swc1 $f6,0x10($s1)
/* f077b24: 27a40068 */ addiu $a0,$sp,0x68
/* f077b28: 0fc195e9 */ jal roomsCopy
@@ -32890,7 +32890,7 @@ glabel var7f1aa454
/* f0763c4: c6460008 */ lwc1 $f6,0x8($s2)
/* f0763c8: 46083401 */ sub.s $f16,$f6,$f8
/* f0763cc: 46105480 */ add.s $f18,$f10,$f16
/* f0763d0: 0fc193ab */ jal func0f065c44
/* f0763d0: 0fc193ab */ jal propDeregisterRooms
/* f0763d4: e6320010 */ swc1 $f18,0x10($s1)
/* f0763d8: 02a02025 */ or $a0,$s5,$zero
/* f0763dc: 02c02825 */ or $a1,$s6,$zero
@@ -32950,7 +32950,7 @@ glabel var7f1aa454
/* f0764b0: c6440008 */ lwc1 $f4,0x8($s2)
/* f0764b4: 46062401 */ sub.s $f16,$f4,$f6
/* f0764b8: 46109200 */ add.s $f8,$f18,$f16
/* f0764bc: 0fc193ab */ jal func0f065c44
/* f0764bc: 0fc193ab */ jal propDeregisterRooms
/* f0764c0: e6280010 */ swc1 $f8,0x10($s1)
/* f0764c4: 26340008 */ addiu $s4,$s1,0x8
/* f0764c8: 02803025 */ or $a2,$s4,$zero
@@ -33217,7 +33217,7 @@ void liftTick(struct prop *prop)
prop->pos.y = newpos.y;
prop->pos.z = newpos.z;
func0f065c44(prop);
propDeregisterRooms(prop);
roomsCopy(newrooms, prop->rooms);
func0f069c70(obj, true, true);
func0f070f08(lift, lift->levelcur == lift->levelaim);
@@ -39911,7 +39911,7 @@ glabel var7f1aa668
/* f07c074: c7a60158 */ lwc1 $f6,0x158($sp)
/* f07c078: e486000c */ swc1 $f6,0xc($a0)
/* f07c07c: c7b2015c */ lwc1 $f18,0x15c($sp)
/* f07c080: 0fc19711 */ jal func0f065c44
/* f07c080: 0fc19711 */ jal propDeregisterRooms
/* f07c084: e4920010 */ swc1 $f18,0x10($a0)
/* f07c088: 27a40160 */ addiu $a0,$sp,0x160
/* f07c08c: 0fc195e9 */ jal roomsCopy
@@ -40435,7 +40435,7 @@ glabel var7f1aa668
/* f07c074: c7a60158 */ lwc1 $f6,0x158($sp)
/* f07c078: e486000c */ swc1 $f6,0xc($a0)
/* f07c07c: c7b2015c */ lwc1 $f18,0x15c($sp)
/* f07c080: 0fc19711 */ jal func0f065c44
/* f07c080: 0fc19711 */ jal propDeregisterRooms
/* f07c084: e4920010 */ swc1 $f18,0x10($a0)
/* f07c088: 27a40160 */ addiu $a0,$sp,0x160
/* f07c08c: 0fc195e9 */ jal roomsCopy
@@ -40888,7 +40888,7 @@ glabel var7f1aa698
/* f07c690: c7a4009c */ lwc1 $f4,0x9c($sp)
/* f07c694: e624000c */ swc1 $f4,0xc($s1)
/* f07c698: c7aa00a0 */ lwc1 $f10,0xa0($sp)
/* f07c69c: 0fc19711 */ jal func0f065c44
/* f07c69c: 0fc19711 */ jal propDeregisterRooms
/* f07c6a0: e62a0010 */ swc1 $f10,0x10($s1)
/* f07c6a4: 27a40050 */ addiu $a0,$sp,0x50
/* f07c6a8: 0fc195e9 */ jal roomsCopy
@@ -41365,7 +41365,7 @@ glabel var7f1aa698
/* f07c690: c7a4009c */ lwc1 $f4,0x9c($sp)
/* f07c694: e624000c */ swc1 $f4,0xc($s1)
/* f07c698: c7aa00a0 */ lwc1 $f10,0xa0($sp)
/* f07c69c: 0fc19711 */ jal func0f065c44
/* f07c69c: 0fc19711 */ jal propDeregisterRooms
/* f07c6a0: e62a0010 */ swc1 $f10,0x10($s1)
/* f07c6a4: 27a40050 */ addiu $a0,$sp,0x50
/* f07c6a8: 0fc195e9 */ jal roomsCopy
@@ -41841,7 +41841,7 @@ glabel var7f1aa698
/* f07b13c: c7a6009c */ lwc1 $f6,0x9c($sp)
/* f07b140: e626000c */ swc1 $f6,0xc($s1)
/* f07b144: c7b200a0 */ lwc1 $f18,0xa0($sp)
/* f07b148: 0fc193ab */ jal func0f065c44
/* f07b148: 0fc193ab */ jal propDeregisterRooms
/* f07b14c: e6320010 */ swc1 $f18,0x10($s1)
/* f07b150: 27a40050 */ addiu $a0,$sp,0x50
/* f07b154: 0fc19283 */ jal roomsCopy
@@ -42070,7 +42070,7 @@ glabel var7f1aa698
// chopperprop->pos.y = sp98.y;
// chopperprop->pos.z = sp98.z;
//
// func0f065c44(chopperprop);
// propDeregisterRooms(chopperprop);
// roomsCopy(sp50, chopperprop->rooms);
// func0f069c70(obj, false, true);
//
@@ -42888,7 +42888,7 @@ glabel var7f1aa6e4
/* f07d484: c7a401c4 */ lwc1 $f4,0x1c4($sp)
/* f07d488: e484000c */ swc1 $f4,0xc($a0)
/* f07d48c: c7aa01c8 */ lwc1 $f10,0x1c8($sp)
/* f07d490: 0fc19711 */ jal func0f065c44
/* f07d490: 0fc19711 */ jal propDeregisterRooms
/* f07d494: e48a0010 */ swc1 $f10,0x10($a0)
/* f07d498: 27a401b0 */ addiu $a0,$sp,0x1b0
/* f07d49c: 0fc195e9 */ jal roomsCopy
@@ -43575,7 +43575,7 @@ glabel var7f1aa6e4
/* f07de74: c7a60154 */ lwc1 $f6,0x154($sp)
/* f07de78: e486000c */ swc1 $f6,0xc($a0)
/* f07de7c: c7a80158 */ lwc1 $f8,0x158($sp)
/* f07de80: 0fc19711 */ jal func0f065c44
/* f07de80: 0fc19711 */ jal propDeregisterRooms
/* f07de84: e4880010 */ swc1 $f8,0x10($a0)
/* f07de88: 27a40140 */ addiu $a0,$sp,0x140
/* f07de8c: 0fc195e9 */ jal roomsCopy
@@ -43854,7 +43854,7 @@ glabel var7f1aa6e4
/* f07d484: c7a401c4 */ lwc1 $f4,0x1c4($sp)
/* f07d488: e484000c */ swc1 $f4,0xc($a0)
/* f07d48c: c7aa01c8 */ lwc1 $f10,0x1c8($sp)
/* f07d490: 0fc19711 */ jal func0f065c44
/* f07d490: 0fc19711 */ jal propDeregisterRooms
/* f07d494: e48a0010 */ swc1 $f10,0x10($a0)
/* f07d498: 27a401b0 */ addiu $a0,$sp,0x1b0
/* f07d49c: 0fc195e9 */ jal roomsCopy
@@ -44541,7 +44541,7 @@ glabel var7f1aa6e4
/* f07de74: c7a60154 */ lwc1 $f6,0x154($sp)
/* f07de78: e486000c */ swc1 $f6,0xc($a0)
/* f07de7c: c7a80158 */ lwc1 $f8,0x158($sp)
/* f07de80: 0fc19711 */ jal func0f065c44
/* f07de80: 0fc19711 */ jal propDeregisterRooms
/* f07de84: e4880010 */ swc1 $f8,0x10($a0)
/* f07de88: 27a40140 */ addiu $a0,$sp,0x140
/* f07de8c: 0fc195e9 */ jal roomsCopy
@@ -44818,7 +44818,7 @@ glabel var7f1aa6e0
/* f07bf30: c7a401c4 */ lwc1 $f4,0x1c4($sp)
/* f07bf34: e484000c */ swc1 $f4,0xc($a0)
/* f07bf38: c7aa01c8 */ lwc1 $f10,0x1c8($sp)
/* f07bf3c: 0fc193ab */ jal func0f065c44
/* f07bf3c: 0fc193ab */ jal propDeregisterRooms
/* f07bf40: e48a0010 */ swc1 $f10,0x10($a0)
/* f07bf44: 27a401b0 */ addiu $a0,$sp,0x1b0
/* f07bf48: 0fc19283 */ jal roomsCopy
@@ -45491,7 +45491,7 @@ glabel var7f1aa6e0
/* f07c8ec: c7a40154 */ lwc1 $f4,0x154($sp)
/* f07c8f0: e484000c */ swc1 $f4,0xc($a0)
/* f07c8f4: c7aa0158 */ lwc1 $f10,0x158($sp)
/* f07c8f8: 0fc193ab */ jal func0f065c44
/* f07c8f8: 0fc193ab */ jal propDeregisterRooms
/* f07c8fc: e48a0010 */ swc1 $f10,0x10($a0)
/* f07c900: 27a40140 */ addiu $a0,$sp,0x140
/* f07c904: 0fc19283 */ jal roomsCopy
@@ -45666,7 +45666,7 @@ glabel var7f1aa6e0
// prop->pos.y = sp1c0.y;
// prop->pos.z = sp1c0.z;
//
// func0f065c44(prop);
// propDeregisterRooms(prop);
// roomsCopy(sp1b0, prop->rooms);
// func0f069c70(&hovercar->base, false, true);
// }
@@ -45901,7 +45901,7 @@ glabel var7f1aa6e0
// prop->pos.y = sp150.y;
// prop->pos.z = sp150.z;
//
// func0f065c44(prop);
// propDeregisterRooms(prop);
// roomsCopy(sp140, prop->rooms);
//
// hovercar->roty = sp190;
@@ -46243,7 +46243,7 @@ u32 func0f07e474(struct prop *prop)
// 1 second left - time to start fading in
if (obj->damage == 0 && (obj->hidden2 & OBJH2FLAG_40) == 0) {
if (obj->flags & OBJFLAG_00008000) {
func0f065c44(prop);
propDeregisterRooms(prop);
propDelist(prop);
obj->hidden &= ~OBJHFLAG_00000800;
cmdoffset = setupGetCommandOffset(prop);
@@ -46428,7 +46428,7 @@ s32 objTick(struct prop *prop)
prop->pos.y = sp400.y;
prop->pos.z = sp400.z;
func0f065c44(prop);
propDeregisterRooms(prop);
roomsCopy(sp384, prop->rooms);
if (obj->type == OBJTYPE_HOVERPROP) {
@@ -46540,7 +46540,7 @@ s32 objTick(struct prop *prop)
prop->pos.x = sp236.x;
prop->pos.z = sp236.z;
func0f065c44(prop);
propDeregisterRooms(prop);
roomsCopy(sp220, prop->rooms);
if (sp148 <= sp144) {
@@ -54189,7 +54189,7 @@ glabel var7f1aa978
/* f083cd8: c7a40124 */ lwc1 $f4,0x124($sp)
/* f083cdc: e484000c */ swc1 $f4,0xc($a0)
/* f083ce0: c7a80128 */ lwc1 $f8,0x128($sp)
/* f083ce4: 0fc19711 */ jal func0f065c44
/* f083ce4: 0fc19711 */ jal propDeregisterRooms
/* f083ce8: e4880010 */ swc1 $f8,0x10($a0)
/* f083cec: 8fa50140 */ lw $a1,0x140($sp)
/* f083cf0: 27a400d4 */ addiu $a0,$sp,0xd4
@@ -55162,7 +55162,7 @@ glabel var7f1aa978
/* f083cd8: c7a40124 */ lwc1 $f4,0x124($sp)
/* f083cdc: e484000c */ swc1 $f4,0xc($a0)
/* f083ce0: c7a80128 */ lwc1 $f8,0x128($sp)
/* f083ce4: 0fc19711 */ jal func0f065c44
/* f083ce4: 0fc19711 */ jal propDeregisterRooms
/* f083ce8: e4880010 */ swc1 $f8,0x10($a0)
/* f083cec: 8fa50140 */ lw $a1,0x140($sp)
/* f083cf0: 27a400d4 */ addiu $a0,$sp,0xd4
@@ -67700,7 +67700,7 @@ glabel var7f1aaf78
/* f08d70c: c4c60004 */ lwc1 $f6,0x4($a2)
/* f08d710: e486000c */ swc1 $f6,0xc($a0)
/* f08d714: c4ca0008 */ lwc1 $f10,0x8($a2)
/* f08d718: 0fc19711 */ jal func0f065c44
/* f08d718: 0fc19711 */ jal propDeregisterRooms
/* f08d71c: e48a0010 */ swc1 $f10,0x10($a0)
/* f08d720: 8fa5007c */ lw $a1,0x7c($sp)
/* f08d724: 27a40028 */ addiu $a0,$sp,0x28
+2 -2
View File
@@ -103,8 +103,8 @@ extern s16 *g_ChrIndexes;
extern s32 g_NumActiveHeadsPerGender;
extern u32 g_ActiveMaleHeads[8];
extern u32 g_ActiveFemaleHeads[8];
extern s16 *var8009cda0;
extern struct var8009cda4 *var8009cda4;
extern s16 *g_RoomPropListChunkIndexes;
extern struct roomproplistchunk *g_RoomPropListChunks;
extern struct prop *var8009cda8;
extern u32 var8009cdac;
extern u32 var8009cdb0;
+1 -1
View File
@@ -5,6 +5,6 @@
#include "types.h"
void gvarsInitProps(void);
void func0f00c390(void);
void gvarsInitRoomProps(void);
#endif
+7 -7
View File
@@ -45,18 +45,18 @@ bool propIsOfCdType(struct prop *prop, u32 types);
void roomsCopy(s16 *srcrooms, s16 *dstrooms);
void roomsAppend(s16 *newrooms, s16 *rooms, u32 arg2);
bool arrayIntersects(s16 *a, s16 *b);
bool func0f0658e8(s16 propnum, s32 arg1);
s32 func0f06593c(s32 room, s32 arg1);
void func0f0659e4(struct prop *prop, s16 room);
void func0f065ae0(struct prop *prop, s16 room);
void func0f065c44(struct prop *prop);
void func0f065cb0(struct prop *prop);
bool propTryAddToChunk(s16 propnum, s32 chunkindex);
s32 roomAllocatePropListChunk(s32 room, s32 arg1);
void propRegisterRoom(struct prop *prop, s16 room);
void propDeregisterRoom(struct prop *prop, s16 room);
void propDeregisterRooms(struct prop *prop);
void propRegisterRooms(struct prop *prop);
void func0f065d1c(struct coord *pos, s16 *rooms, struct coord *newpos, s16 *newrooms, s16 *morerooms, u32 arg5);
void func0f065dd8(struct coord *pos, s16 *rooms, struct coord *newpos, s16 *newrooms);
void func0f065dfc(struct coord *pos, s16 *rooms, struct coord *newpos, s16 *newrooms, s16 *morerooms, u32 arg5);
void func0f065e74(struct coord *pos, s16 *rooms, struct coord *newpos, s16 *newrooms);
void func0f065e98(struct coord *pos, s16 *rooms, struct coord *pos2, s16 *rooms2);
void roomGetProps(s16 *room, s16 *propnums, u32 size);
void roomGetProps(s16 *room, s16 *propnums, s32 len);
u32 func0f066054(void);
void propGetBbox(struct prop *prop, f32 *width, f32 *ymax, f32 *ymin);
bool propUpdateGeometry(struct prop *prop, u8 **start, u8 **end);
+9 -1
View File
@@ -6797,7 +6797,15 @@ struct var800a41b0 {
/*0x78*/ u32 unk78;
};
struct var8009cda4 {
/**
* This struct is used as a pretend linked list.
*
* The final item in the propnums array is not a propnum; it's the index of the
* next chunk in the chunks array.
*
* The first item in the propnums array is -2 if this chunk is unallocated.
*/
struct roomproplistchunk {
s16 propnums[8];
};