From 104e7b5ec09521891e269d6cfa93dec617bc921d Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Sun, 28 Nov 2021 12:46:32 +1000 Subject: [PATCH] Decompile liftUpdateTiles --- src/game/game_00c490.c | 2 +- src/game/propobj.c | 377 ++++++++++--------------------------- src/include/constants.h | 14 +- src/include/game/propobj.h | 4 +- 4 files changed, 110 insertions(+), 287 deletions(-) diff --git a/src/game/game_00c490.c b/src/game/game_00c490.c index 0792f66ae..da04131b8 100644 --- a/src/game/game_00c490.c +++ b/src/game/game_00c490.c @@ -3084,7 +3084,7 @@ void setupParseObjects(s32 stagenum) lift->prevpos.y = prop->pos.y; lift->prevpos.z = prop->pos.z; - func0f070f08(lift, true); + liftUpdateTiles(lift, true); } } break; diff --git a/src/game/propobj.c b/src/game/propobj.c index 176895af7..23376b13e 100644 --- a/src/game/propobj.c +++ b/src/game/propobj.c @@ -4430,7 +4430,7 @@ void func0f069b4c(struct defaultobj *obj) uVar3 = 0x23; } - func0f070ca0(obj, ptr, uVar3, 0, rodata); + func0f070ca0(obj, ptr, uVar3, NULL, rodata); ptr += 0x40; } @@ -4438,7 +4438,7 @@ void func0f069b4c(struct defaultobj *obj) rodata = modelGetPartRodata(obj->model->filedata, MODELPART_0066); if (rodata != NULL) { - func0f070ca0(obj, ptr, 0x1c, 0, rodata); + func0f070ca0(obj, ptr, 0x1c, NULL, rodata); } } } @@ -17274,279 +17274,102 @@ f32 liftGetY(struct liftobj *lift) return y; } -#if VERSION >= VERSION_NTSC_1_0 -GLOBAL_ASM( -glabel func0f070f08 -/* f070f08: 27bdffa0 */ addiu $sp,$sp,-96 -/* f070f0c: afbf0044 */ sw $ra,0x44($sp) -/* f070f10: afbe0040 */ sw $s8,0x40($sp) -/* f070f14: afb7003c */ sw $s7,0x3c($sp) -/* f070f18: afb60038 */ sw $s6,0x38($sp) -/* f070f1c: afb50034 */ sw $s5,0x34($sp) -/* f070f20: afb40030 */ sw $s4,0x30($sp) -/* f070f24: afb3002c */ sw $s3,0x2c($sp) -/* f070f28: afb20028 */ sw $s2,0x28($sp) -/* f070f2c: afb10024 */ sw $s1,0x24($sp) -/* f070f30: afb00020 */ sw $s0,0x20($sp) -/* f070f34: afa50064 */ sw $a1,0x64($sp) -/* f070f38: a080005a */ sb $zero,0x5a($a0) -/* f070f3c: 00808825 */ or $s1,$a0,$zero -/* f070f40: 00009025 */ or $s2,$zero,$zero -/* f070f44: 8fb3004c */ lw $s3,0x4c($sp) -/* f070f48: 24150001 */ addiu $s5,$zero,0x1 -/* f070f4c: 24160002 */ addiu $s6,$zero,0x2 -/* f070f50: 24170003 */ addiu $s7,$zero,0x3 -/* f070f54: 241e0004 */ addiu $s8,$zero,0x4 -/* f070f58: 822f005a */ lb $t7,0x5a($s1) -.L0f070f5c: -/* f070f5c: 8e2e0044 */ lw $t6,0x44($s1) -/* f070f60: 0000a025 */ or $s4,$zero,$zero -/* f070f64: 000fc180 */ sll $t8,$t7,0x6 -/* f070f68: 01d8c821 */ addu $t9,$t6,$t8 -/* f070f6c: afb9005c */ sw $t9,0x5c($sp) -/* f070f70: 00008025 */ or $s0,$zero,$zero -.L0f070f74: -/* f070f74: 16400011 */ bnez $s2,.L0f070fbc -/* f070f78: 24050005 */ addiu $a1,$zero,0x5 -/* f070f7c: 8e280018 */ lw $t0,0x18($s1) -/* f070f80: 2413003b */ addiu $s3,$zero,0x3b -/* f070f84: 0c006a6f */ jal modelGetPartRodata -/* f070f88: 8d040008 */ lw $a0,0x8($t0) -/* f070f8c: 14400036 */ bnez $v0,.L0f071068 -/* f070f90: 00408025 */ or $s0,$v0,$zero -/* f070f94: 8e290018 */ lw $t1,0x18($s1) -/* f070f98: 00002825 */ or $a1,$zero,$zero -/* f070f9c: 0c006a6f */ jal modelGetPartRodata -/* f070fa0: 8d240008 */ lw $a0,0x8($t1) -/* f070fa4: 14400030 */ bnez $v0,.L0f071068 -/* f070fa8: 0040a025 */ or $s4,$v0,$zero -/* f070fac: 0fc1a2bd */ jal objFindBboxRodata -/* f070fb0: 02202025 */ or $a0,$s1,$zero -/* f070fb4: 1000002c */ b .L0f071068 -/* f070fb8: 0040a025 */ or $s4,$v0,$zero -.L0f070fbc: -/* f070fbc: 16550007 */ bne $s2,$s5,.L0f070fdc -/* f070fc0: 02a02825 */ or $a1,$s5,$zero -/* f070fc4: 8e2a0018 */ lw $t2,0x18($s1) -/* f070fc8: 24130004 */ addiu $s3,$zero,0x4 -/* f070fcc: 0c006a6f */ jal modelGetPartRodata -/* f070fd0: 8d440008 */ lw $a0,0x8($t2) -/* f070fd4: 10000024 */ b .L0f071068 -/* f070fd8: 00408025 */ or $s0,$v0,$zero -.L0f070fdc: -/* f070fdc: 16560007 */ bne $s2,$s6,.L0f070ffc -/* f070fe0: 02c02825 */ or $a1,$s6,$zero -/* f070fe4: 8e2b0018 */ lw $t3,0x18($s1) -/* f070fe8: 24130004 */ addiu $s3,$zero,0x4 -/* f070fec: 0c006a6f */ jal modelGetPartRodata -/* f070ff0: 8d640008 */ lw $a0,0x8($t3) -/* f070ff4: 1000001c */ b .L0f071068 -/* f070ff8: 00408025 */ or $s0,$v0,$zero -.L0f070ffc: -/* f070ffc: 16570007 */ bne $s2,$s7,.L0f07101c -/* f071000: 02e02825 */ or $a1,$s7,$zero -/* f071004: 8e2c0018 */ lw $t4,0x18($s1) -/* f071008: 24130004 */ addiu $s3,$zero,0x4 -/* f07100c: 0c006a6f */ jal modelGetPartRodata -/* f071010: 8d840008 */ lw $a0,0x8($t4) -/* f071014: 10000014 */ b .L0f071068 -/* f071018: 00408025 */ or $s0,$v0,$zero -.L0f07101c: -/* f07101c: 165e000b */ bne $s2,$s8,.L0f07104c -/* f071020: 24010005 */ addiu $at,$zero,0x5 -/* f071024: 8fad0064 */ lw $t5,0x64($sp) -/* f071028: 03c02825 */ or $a1,$s8,$zero -/* f07102c: 15a0000e */ bnez $t5,.L0f071068 -/* f071030: 00000000 */ nop -/* f071034: 8e2f0018 */ lw $t7,0x18($s1) -/* f071038: 24130004 */ addiu $s3,$zero,0x4 -/* f07103c: 0c006a6f */ jal modelGetPartRodata -/* f071040: 8de40008 */ lw $a0,0x8($t7) -/* f071044: 10000008 */ b .L0f071068 -/* f071048: 00408025 */ or $s0,$v0,$zero -.L0f07104c: -/* f07104c: 1641000a */ bne $s2,$at,.L0f071078 -/* f071050: 24050006 */ addiu $a1,$zero,0x6 -/* f071054: 8e2e0018 */ lw $t6,0x18($s1) -/* f071058: 2413003b */ addiu $s3,$zero,0x3b -/* f07105c: 0c006a6f */ jal modelGetPartRodata -/* f071060: 8dc40008 */ lw $a0,0x8($t6) -/* f071064: 00408025 */ or $s0,$v0,$zero -.L0f071068: -/* f071068: 16800003 */ bnez $s4,.L0f071078 -/* f07106c: 26520001 */ addiu $s2,$s2,0x1 -/* f071070: 1200ffc0 */ beqz $s0,.L0f070f74 -/* f071074: 00000000 */ nop -.L0f071078: -/* f071078: 16800003 */ bnez $s4,.L0f071088 -/* f07107c: 02202025 */ or $a0,$s1,$zero -/* f071080: 12000009 */ beqz $s0,.L0f0710a8 -/* f071084: 00000000 */ nop -.L0f071088: -/* f071088: 8fa5005c */ lw $a1,0x5c($sp) -/* f07108c: 02603025 */ or $a2,$s3,$zero -/* f071090: 02803825 */ or $a3,$s4,$zero -/* f071094: 0fc1c328 */ jal func0f070ca0 -/* f071098: afb00010 */ sw $s0,0x10($sp) -/* f07109c: 8238005a */ lb $t8,0x5a($s1) -/* f0710a0: 27190001 */ addiu $t9,$t8,0x1 -/* f0710a4: a239005a */ sb $t9,0x5a($s1) -.L0f0710a8: -/* f0710a8: 5680ffac */ bnezl $s4,.L0f070f5c -/* f0710ac: 822f005a */ lb $t7,0x5a($s1) -/* f0710b0: 5600ffaa */ bnezl $s0,.L0f070f5c -/* f0710b4: 822f005a */ lb $t7,0x5a($s1) -/* f0710b8: 8fbf0044 */ lw $ra,0x44($sp) -/* f0710bc: afb3004c */ sw $s3,0x4c($sp) -/* f0710c0: 8fb3002c */ lw $s3,0x2c($sp) -/* f0710c4: 8fb00020 */ lw $s0,0x20($sp) -/* f0710c8: 8fb10024 */ lw $s1,0x24($sp) -/* f0710cc: 8fb20028 */ lw $s2,0x28($sp) -/* f0710d0: 8fb40030 */ lw $s4,0x30($sp) -/* f0710d4: 8fb50034 */ lw $s5,0x34($sp) -/* f0710d8: 8fb60038 */ lw $s6,0x38($sp) -/* f0710dc: 8fb7003c */ lw $s7,0x3c($sp) -/* f0710e0: 8fbe0040 */ lw $s8,0x40($sp) -/* f0710e4: 03e00008 */ jr $ra -/* f0710e8: 27bd0060 */ addiu $sp,$sp,0x60 -); -#else -GLOBAL_ASM( -glabel func0f070f08 -/* f070f08: 27bdffa0 */ addiu $sp,$sp,-96 -/* f070f0c: afbf0044 */ sw $ra,0x44($sp) -/* f070f10: afbe0040 */ sw $s8,0x40($sp) -/* f070f14: afb7003c */ sw $s7,0x3c($sp) -/* f070f18: afb60038 */ sw $s6,0x38($sp) -/* f070f1c: afb50034 */ sw $s5,0x34($sp) -/* f070f20: afb40030 */ sw $s4,0x30($sp) -/* f070f24: afb3002c */ sw $s3,0x2c($sp) -/* f070f28: afb20028 */ sw $s2,0x28($sp) -/* f070f2c: afb10024 */ sw $s1,0x24($sp) -/* f070f30: afb00020 */ sw $s0,0x20($sp) -/* f070f34: afa50064 */ sw $a1,0x64($sp) -/* f070f38: a080005a */ sb $zero,0x5a($a0) -/* f070f3c: 00808825 */ or $s1,$a0,$zero -/* f070f40: 00009025 */ or $s2,$zero,$zero -/* f070f44: 8fb3004c */ lw $s3,0x4c($sp) -/* f070f48: 24150001 */ addiu $s5,$zero,0x1 -/* f070f4c: 24160002 */ addiu $s6,$zero,0x2 -/* f070f50: 24170003 */ addiu $s7,$zero,0x3 -/* f070f54: 241e0004 */ addiu $s8,$zero,0x4 -/* f070f58: 822f005a */ lb $t7,0x5a($s1) -.L0f070f5c: -/* f070f5c: 8e2e0044 */ lw $t6,0x44($s1) -/* f070f60: 0000a025 */ or $s4,$zero,$zero -/* f070f64: 000fc180 */ sll $t8,$t7,0x6 -/* f070f68: 01d8c821 */ addu $t9,$t6,$t8 -/* f070f6c: afb9005c */ sw $t9,0x5c($sp) -/* f070f70: 00008025 */ or $s0,$zero,$zero -.L0f070f74: -/* f070f74: 16400011 */ bnez $s2,.L0f070fbc -/* f070f78: 24050005 */ addiu $a1,$zero,0x5 -/* f070f7c: 8e280018 */ lw $t0,0x18($s1) -/* f070f80: 2413003b */ addiu $s3,$zero,0x23 -/* f070f84: 0c006a6f */ jal modelGetPartRodata -/* f070f88: 8d040008 */ lw $a0,0x8($t0) -/* f070f8c: 14400036 */ bnez $v0,.L0f071068 -/* f070f90: 00408025 */ or $s0,$v0,$zero -/* f070f94: 8e290018 */ lw $t1,0x18($s1) -/* f070f98: 00002825 */ or $a1,$zero,$zero -/* f070f9c: 0c006a6f */ jal modelGetPartRodata -/* f070fa0: 8d240008 */ lw $a0,0x8($t1) -/* f070fa4: 14400030 */ bnez $v0,.L0f071068 -/* f070fa8: 0040a025 */ or $s4,$v0,$zero -/* f070fac: 0fc1a2bd */ jal objFindBboxRodata -/* f070fb0: 02202025 */ or $a0,$s1,$zero -/* f070fb4: 1000002c */ b .L0f071068 -/* f070fb8: 0040a025 */ or $s4,$v0,$zero -.L0f070fbc: -/* f070fbc: 16550007 */ bne $s2,$s5,.L0f070fdc -/* f070fc0: 02a02825 */ or $a1,$s5,$zero -/* f070fc4: 8e2a0018 */ lw $t2,0x18($s1) -/* f070fc8: 24130004 */ addiu $s3,$zero,0x4 -/* f070fcc: 0c006a6f */ jal modelGetPartRodata -/* f070fd0: 8d440008 */ lw $a0,0x8($t2) -/* f070fd4: 10000024 */ b .L0f071068 -/* f070fd8: 00408025 */ or $s0,$v0,$zero -.L0f070fdc: -/* f070fdc: 16560007 */ bne $s2,$s6,.L0f070ffc -/* f070fe0: 02c02825 */ or $a1,$s6,$zero -/* f070fe4: 8e2b0018 */ lw $t3,0x18($s1) -/* f070fe8: 24130004 */ addiu $s3,$zero,0x4 -/* f070fec: 0c006a6f */ jal modelGetPartRodata -/* f070ff0: 8d640008 */ lw $a0,0x8($t3) -/* f070ff4: 1000001c */ b .L0f071068 -/* f070ff8: 00408025 */ or $s0,$v0,$zero -.L0f070ffc: -/* f070ffc: 16570007 */ bne $s2,$s7,.L0f07101c -/* f071000: 02e02825 */ or $a1,$s7,$zero -/* f071004: 8e2c0018 */ lw $t4,0x18($s1) -/* f071008: 24130004 */ addiu $s3,$zero,0x4 -/* f07100c: 0c006a6f */ jal modelGetPartRodata -/* f071010: 8d840008 */ lw $a0,0x8($t4) -/* f071014: 10000014 */ b .L0f071068 -/* f071018: 00408025 */ or $s0,$v0,$zero -.L0f07101c: -/* f07101c: 165e000b */ bne $s2,$s8,.L0f07104c -/* f071020: 24010005 */ addiu $at,$zero,0x5 -/* f071024: 8fad0064 */ lw $t5,0x64($sp) -/* f071028: 03c02825 */ or $a1,$s8,$zero -/* f07102c: 15a0000e */ bnez $t5,.L0f071068 -/* f071030: 00000000 */ nop -/* f071034: 8e2f0018 */ lw $t7,0x18($s1) -/* f071038: 24130004 */ addiu $s3,$zero,0x4 -/* f07103c: 0c006a6f */ jal modelGetPartRodata -/* f071040: 8de40008 */ lw $a0,0x8($t7) -/* f071044: 10000008 */ b .L0f071068 -/* f071048: 00408025 */ or $s0,$v0,$zero -.L0f07104c: -/* f07104c: 1641000a */ bne $s2,$at,.L0f071078 -/* f071050: 24050006 */ addiu $a1,$zero,0x6 -/* f071054: 8e2e0018 */ lw $t6,0x18($s1) -/* f071058: 2413003b */ addiu $s3,$zero,0x23 -/* f07105c: 0c006a6f */ jal modelGetPartRodata -/* f071060: 8dc40008 */ lw $a0,0x8($t6) -/* f071064: 00408025 */ or $s0,$v0,$zero -.L0f071068: -/* f071068: 16800003 */ bnez $s4,.L0f071078 -/* f07106c: 26520001 */ addiu $s2,$s2,0x1 -/* f071070: 1200ffc0 */ beqz $s0,.L0f070f74 -/* f071074: 00000000 */ nop -.L0f071078: -/* f071078: 16800003 */ bnez $s4,.L0f071088 -/* f07107c: 02202025 */ or $a0,$s1,$zero -/* f071080: 12000009 */ beqz $s0,.L0f0710a8 -/* f071084: 00000000 */ nop -.L0f071088: -/* f071088: 8fa5005c */ lw $a1,0x5c($sp) -/* f07108c: 02603025 */ or $a2,$s3,$zero -/* f071090: 02803825 */ or $a3,$s4,$zero -/* f071094: 0fc1c328 */ jal func0f070ca0 -/* f071098: afb00010 */ sw $s0,0x10($sp) -/* f07109c: 8238005a */ lb $t8,0x5a($s1) -/* f0710a0: 27190001 */ addiu $t9,$t8,0x1 -/* f0710a4: a239005a */ sb $t9,0x5a($s1) -.L0f0710a8: -/* f0710a8: 5680ffac */ bnezl $s4,.L0f070f5c -/* f0710ac: 822f005a */ lb $t7,0x5a($s1) -/* f0710b0: 5600ffaa */ bnezl $s0,.L0f070f5c -/* f0710b4: 822f005a */ lb $t7,0x5a($s1) -/* f0710b8: 8fbf0044 */ lw $ra,0x44($sp) -/* f0710bc: afb3004c */ sw $s3,0x4c($sp) -/* f0710c0: 8fb3002c */ lw $s3,0x2c($sp) -/* f0710c4: 8fb00020 */ lw $s0,0x20($sp) -/* f0710c8: 8fb10024 */ lw $s1,0x24($sp) -/* f0710cc: 8fb20028 */ lw $s2,0x28($sp) -/* f0710d0: 8fb40030 */ lw $s4,0x30($sp) -/* f0710d4: 8fb50034 */ lw $s5,0x34($sp) -/* f0710d8: 8fb60038 */ lw $s6,0x38($sp) -/* f0710dc: 8fb7003c */ lw $s7,0x3c($sp) -/* f0710e0: 8fbe0040 */ lw $s8,0x40($sp) -/* f0710e4: 03e00008 */ jr $ra -/* f0710e8: 27bd0060 */ addiu $sp,$sp,0x60 -); -#endif +/** + * Recalculate a lift's tile/geometry information. + * + * The lift models and the part numbers in each model are: + * + * a51_lift_control 0 + * a51_lift_hangar 0 + * a51_lift_store 0 + * a51_lift_thinwall 0 + * a51dish 0 + * airbase_lift_angle 0 1 2 + * airbase_lift_enclosed 0 1 2 + * al_docklift 5 6 + * baggagecarrier 0 + * chamber 0 + * ci_lift 0 + * dd_liftr 0 1 2 3 4 + * lift_platform 0 1 + * matrix_lift 0 1 2 + * ravinelift 0 + * sk_lift 0 + * skedarbridge 0 + * + * Part 0 is the floor if rectangular + * Parts 1-3 are walls (some lifts rely on BG geometry instead) + * Part 4 is a door blocker (used by dataDyne tower lifts) + * Part 5 is the first half of the floor if non-rectangular (Deep Sea lift) + * Part 6 is the second half of the floor if non-rectangular (Deep Sea lift) + */ +void liftUpdateTiles(struct liftobj *lift, bool stationary) +{ + u8 *geo; + union modelrodata *rodata; + struct modelrodata_bbox *bbox; + s32 numtiles; + u32 sp4c; + s32 i; + + lift->base.numtiles = 0; + i = 0; + + do { + geo = (u8 *)lift->base.unkgeo + lift->base.numtiles * 0x40; + bbox = NULL; + rodata = NULL; + + do { + if (i == 0) { + sp4c = VERSION >= VERSION_NTSC_1_0 ? 0x3b : 0x23; + + // Look for a non-rectangular floor with fallback to rectangular + rodata = modelGetPartRodata(lift->base.model->filedata, MODELPART_LIFT_FLOORNONRECT1); + + if (rodata == NULL) { + union modelrodata *tmp; + tmp = modelGetPartRodata(lift->base.model->filedata, MODELPART_LIFT_FLOORRECT); + bbox = &tmp->bbox; + + if (bbox == NULL) { + bbox = objFindBboxRodata(&lift->base); + } + } + } else if (i == 1) { + sp4c = 4; + rodata = modelGetPartRodata(lift->base.model->filedata, MODELPART_LIFT_WALL1); + } else if (i == 2) { + sp4c = 4; + rodata = modelGetPartRodata(lift->base.model->filedata, MODELPART_LIFT_WALL2); + } else if (i == 3) { + sp4c = 4; + rodata = modelGetPartRodata(lift->base.model->filedata, MODELPART_LIFT_WALL3); + } else if (i == 4) { + // The doorblock model part exists in the dataDyne tower lifts. + // It's a tile across the door that only applies while the lift + // is moving. Without it, the player could exit the lift through + // the doorway while it's moving. + if (!stationary) { + sp4c = 4; + rodata = modelGetPartRodata(lift->base.model->filedata, MODELPART_LIFT_DOORBLOCK); + } + } else if (i == 5) { + sp4c = VERSION >= VERSION_NTSC_1_0 ? 0x3b : 0x23; + rodata = modelGetPartRodata(lift->base.model->filedata, MODELPART_LIFT_FLOORNONRECT2); + } else { + break; + } + + i++; + } while (!bbox && !rodata); + + if (bbox || rodata) { + func0f070ca0(&lift->base, geo, sp4c, bbox, rodata); + lift->base.numtiles++; + } + } while (bbox || rodata); +} #if VERSION >= VERSION_NTSC_1_0 void liftGoToStop(struct liftobj *lift, s32 stopnum) @@ -35184,7 +35007,7 @@ void liftTick(struct prop *prop) propDeregisterRooms(prop); roomsCopy(newrooms, prop->rooms); func0f069c70(obj, true, true); - func0f070f08(lift, lift->levelcur == lift->levelaim); + liftUpdateTiles(lift, lift->levelcur == lift->levelaim); platformDisplaceProps(prop, propnums, &prevpos, &prop->pos); } } else { @@ -50056,7 +49879,7 @@ s32 objTick(struct prop *prop) func0f069c70(obj, true, true); if (obj->type == OBJTYPE_LIFT) { - func0f070f08((struct liftobj *)obj, 0); + liftUpdateTiles((struct liftobj *)obj, false); } sp592 = true; diff --git a/src/include/constants.h b/src/include/constants.h index b0991080b..3861fe61f 100644 --- a/src/include/constants.h +++ b/src/include/constants.h @@ -2101,13 +2101,13 @@ #define MODELPART_LASER_0037 0x0037 // position #define MODELPART_LASER_0041 0x0041 // gundl #define MODELPART_LASER_0042 0x0042 // toggle -#define MODELPART_LIFT_0000 0x0000 // bbox -#define MODELPART_LIFT_0001 0x0001 // type19 -#define MODELPART_LIFT_0002 0x0002 // type19 -#define MODELPART_LIFT_0003 0x0003 // type19 -#define MODELPART_LIFT_0004 0x0004 // type19 -#define MODELPART_LIFT_0005 0x0005 // type19 -#define MODELPART_LIFT_0006 0x0006 // type19 +#define MODELPART_LIFT_FLOORRECT 0x0000 // bbox +#define MODELPART_LIFT_WALL1 0x0001 // type19 +#define MODELPART_LIFT_WALL2 0x0002 // type19 +#define MODELPART_LIFT_WALL3 0x0003 // type19 +#define MODELPART_LIFT_DOORBLOCK 0x0004 // type19 +#define MODELPART_LIFT_FLOORNONRECT1 0x0005 // type19 +#define MODELPART_LIFT_FLOORNONRECT2 0x0006 // type19 #define MODELPART_LOGO_0000 0x0000 // toggle #define MODELPART_LOGO_0001 0x0001 // toggle #define MODELPART_LOGO_0002 0x0002 // dl diff --git a/src/include/game/propobj.h b/src/include/game/propobj.h index b4befd715..51901e408 100644 --- a/src/include/game/propobj.h +++ b/src/include/game/propobj.h @@ -138,11 +138,11 @@ void func0f07079c(struct prop *prop, bool arg1); s32 glassCalculateOpacity(struct coord *pos, f32 xludist, f32 opadist, f32 arg3); u32 func0f070a1c(void); u32 func0f070bd0(void); -void func0f070ca0(struct defaultobj *obj, void *ptr, s32 arg2, s32 arg3, union modelrodata *rodata); +void func0f070ca0(struct defaultobj *obj, void *ptr, s32 arg2, struct modelrodata_bbox *bbox, union modelrodata *rodata); void liftActivate(struct prop *prop, u8 liftnum); struct prop *liftFindByPad(s16 padnum); f32 liftGetY(struct liftobj *lift); -void func0f070f08(struct liftobj *lift, bool arg0); +void liftUpdateTiles(struct liftobj *lift, bool stationary); void liftGoToStop(struct liftobj *lift, s32 stopnum); f32 objGetHov04(struct defaultobj *obj); void hovUpdateGround(struct defaultobj *obj, struct hov *hov, struct coord *pos, s16 *rooms, f32 matrix[3][3]);