diff --git a/asm/object/bigBarrel.s b/asm/object/bigBarrel.s deleted file mode 100644 index f22fefa0..00000000 --- a/asm/object/bigBarrel.s +++ /dev/null @@ -1,907 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start BigBarrel -BigBarrel: @ 0x08088A50 - push {lr} - ldr r2, _08088A64 @ =gUnk_08120C34 - ldrb r1, [r0, #0xa] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_08088A64: .4byte gUnk_08120C34 - - thumb_func_start sub_08088A68 -sub_08088A68: @ 0x08088A68 - push {r4, r5, r6, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _08088AE4 - movs r0, #1 - strb r0, [r4, #0xc] - ldrb r0, [r4, #0x18] - movs r2, #3 - orrs r0, r2 - strb r0, [r4, #0x18] - ldrb r1, [r4, #0x11] - movs r0, #0x10 - rsbs r0, r0, #0 - ands r0, r1 - orrs r0, r2 - strb r0, [r4, #0x11] - movs r0, #0x17 - bl CheckGlobalFlag - cmp r0, #0 - beq _08088AA0 - ldr r0, _08088A9C @ =gSave - ldrb r0, [r0, #7] - adds r0, #1 - b _08088AA4 - .align 2, 0 -_08088A9C: .4byte gSave -_08088AA0: - ldr r0, _08088AD8 @ =gSave - ldrb r0, [r0, #7] -_08088AA4: - strb r0, [r4, #0x1e] - adds r0, r4, #0 - bl sub_08088BE0 - movs r1, #0x2e - ldrsh r0, [r4, r1] - ldr r2, _08088ADC @ =gRoomControls - ldrh r1, [r2, #6] - subs r0, r0, r1 - movs r3, #0x32 - ldrsh r1, [r4, r3] - ldrh r2, [r2, #8] - subs r1, r1, r2 - movs r2, #0x80 - movs r3, #0x60 - bl CheckPlayerInRegion - cmp r0, #0 - beq _08088B82 - ldr r0, _08088AE0 @ =gRoomVars - ldr r1, [r0, #0x68] - movs r2, #4 - orrs r1, r2 - str r1, [r0, #0x68] - b _08088B82 - .align 2, 0 -_08088AD8: .4byte gSave -_08088ADC: .4byte gRoomControls -_08088AE0: .4byte gRoomVars -_08088AE4: - ldr r5, _08088B70 @ =gRoomVars - ldr r1, [r5, #0x68] - movs r6, #1 - adds r0, r1, #0 - ands r0, r6 - cmp r0, #0 - beq _08088B06 - movs r0, #2 - rsbs r0, r0, #0 - ands r1, r0 - str r1, [r5, #0x68] - strb r6, [r4, #0xe] - ldr r0, _08088B74 @ =gUnk_08120C1C - str r0, [r4, #0x68] - movs r0, #0x8a - bl SoundReq -_08088B06: - ldr r1, [r5, #0x68] - movs r0, #2 - ands r0, r1 - cmp r0, #0 - beq _08088B24 - movs r0, #3 - rsbs r0, r0, #0 - ands r1, r0 - str r1, [r5, #0x68] - strb r6, [r4, #0xe] - ldr r0, _08088B78 @ =gUnk_08120C25 - str r0, [r4, #0x68] - movs r0, #0x89 - bl SoundReq -_08088B24: - ldr r1, [r5, #0x68] - movs r0, #4 - ands r0, r1 - cmp r0, #0 - beq _08088B42 - movs r0, #5 - rsbs r0, r0, #0 - ands r1, r0 - str r1, [r5, #0x68] - strb r6, [r4, #0xe] - ldr r0, _08088B7C @ =gUnk_08120C2E - str r0, [r4, #0x68] - movs r0, #0x8a - bl SoundReq -_08088B42: - ldrb r0, [r4, #0xe] - cmp r0, #0 - beq _08088B82 - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - lsrs r3, r0, #0x18 - cmp r3, #0 - bne _08088B82 - ldr r1, [r4, #0x68] - ldrb r0, [r1] - adds r2, r4, #0 - adds r2, #0x63 - strb r0, [r2] - adds r1, #1 - ldrb r0, [r1] - cmp r0, #0xff - beq _08088B80 - movs r0, #8 - strb r0, [r4, #0xe] - str r1, [r4, #0x68] - b _08088B82 - .align 2, 0 -_08088B70: .4byte gRoomVars -_08088B74: .4byte gUnk_08120C1C -_08088B78: .4byte gUnk_08120C25 -_08088B7C: .4byte gUnk_08120C2E -_08088B80: - strb r3, [r2] -_08088B82: - adds r5, r4, #0 - adds r5, #0x29 - ldrb r1, [r5] - movs r6, #8 - rsbs r6, r6, #0 - adds r0, r6, #0 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r5] - movs r1, #0x2e - ldrsh r0, [r4, r1] - subs r0, #0x50 - movs r2, #0x32 - ldrsh r1, [r4, r2] - subs r1, #0x50 - movs r2, #0xa0 - movs r3, #0x30 - bl CheckPlayerProximity - cmp r0, #0 - beq _08088BBA - ldrb r0, [r5] - adds r1, r6, #0 - ands r1, r0 - movs r0, #5 - orrs r1, r0 - strb r1, [r5] -_08088BBA: - movs r3, #0x2e - ldrsh r0, [r4, r3] - subs r0, #0x50 - movs r2, #0x32 - ldrsh r1, [r4, r2] - adds r1, #0x30 - movs r2, #0xa0 - movs r3, #0x30 - bl CheckPlayerProximity - cmp r0, #0 - beq _08088BDE - ldrb r0, [r5] - adds r1, r6, #0 - ands r1, r0 - movs r0, #5 - orrs r1, r0 - strb r1, [r5] -_08088BDE: - pop {r4, r5, r6, pc} - - thumb_func_start sub_08088BE0 -sub_08088BE0: @ 0x08088BE0 - push {r4, lr} - adds r4, r0, #0 - movs r0, #0x15 - bl CheckLocalFlag - cmp r0, #0 - bne _08088C1C - movs r3, #0x78 - rsbs r3, r3, #0 - adds r0, r4, #0 - movs r1, #2 - movs r2, #0 - bl sub_08088C78 - adds r0, r4, #0 - movs r1, #4 - movs r2, #0x15 - movs r3, #0 - bl sub_08088C78 - adds r2, r0, #0 - cmp r2, #0 - beq _08088C1C - ldr r0, _08088C74 @ =gRoomControls - ldrh r1, [r0, #6] - adds r1, #0x48 - strh r1, [r2, #0x2e] - ldrh r0, [r0, #8] - adds r0, #0xc8 - strh r0, [r2, #0x32] -_08088C1C: - movs r0, #0x16 - bl CheckLocalFlag - cmp r0, #0 - bne _08088C58 - adds r0, r4, #0 - movs r1, #2 - movs r2, #1 - movs r3, #0x78 - bl sub_08088C78 - adds r0, r4, #0 - movs r1, #4 - movs r2, #0x16 - movs r3, #0 - bl sub_08088C78 - adds r2, r0, #0 - cmp r2, #0 - beq _08088C58 - ldr r0, _08088C74 @ =gRoomControls - movs r3, #0xc4 - lsls r3, r3, #1 - adds r1, r3, #0 - ldrh r3, [r0, #6] - adds r1, r1, r3 - strh r1, [r2, #0x2e] - ldrh r0, [r0, #8] - adds r0, #0xc8 - strh r0, [r2, #0x32] -_08088C58: - movs r3, #0x78 - rsbs r3, r3, #0 - adds r0, r4, #0 - movs r1, #1 - movs r2, #0 - bl sub_08088C78 - adds r0, r4, #0 - movs r1, #1 - movs r2, #1 - movs r3, #0x78 - bl sub_08088C78 - pop {r4, pc} - .align 2, 0 -_08088C74: .4byte gRoomControls - - thumb_func_start sub_08088C78 -sub_08088C78: @ 0x08088C78 - push {r4, r5, lr} - adds r4, r0, #0 - adds r5, r3, #0 - movs r0, #0x25 - bl CreateObject - adds r1, r0, #0 - cmp r1, #0 - beq _08088C96 - ldrh r0, [r4, #0x2e] - adds r0, r0, r5 - strh r0, [r1, #0x2e] - ldrh r0, [r4, #0x32] - strh r0, [r1, #0x32] - str r4, [r1, #0x50] -_08088C96: - adds r0, r1, #0 - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_08088C9C -sub_08088C9C: @ 0x08088C9C - push {r4, lr} - adds r4, r0, #0 - ldr r1, _08088CEC @ =gUnk_08120C48 - ldr r0, [r4, #0x50] - adds r0, #0x29 - ldrb r0, [r0] - lsls r0, r0, #0x1d - lsrs r0, r0, #0x1d - adds r0, r0, r1 - ldrb r0, [r0] - adds r3, r4, #0 - adds r3, #0x29 - movs r1, #7 - ands r1, r0 - ldrb r2, [r3] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - ldr r0, [r4, #0x50] - adds r0, #0x63 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - lsrs r1, r0, #0x1f - adds r0, r0, r1 - asrs r0, r0, #1 - adds r1, r4, #0 - adds r1, #0x63 - strb r0, [r1] - ldrb r0, [r4, #0xc] - cmp r0, #1 - beq _08088D4C - cmp r0, #1 - bgt _08088CF0 - cmp r0, #0 - beq _08088CFA - b _08088DB0 - .align 2, 0 -_08088CEC: .4byte gUnk_08120C48 -_08088CF0: - cmp r0, #2 - beq _08088D5A - cmp r0, #3 - beq _08088D7A - b _08088DB0 -_08088CFA: - movs r2, #1 - movs r0, #1 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x18] - subs r0, #5 - ands r0, r1 - orrs r0, r2 - strb r0, [r4, #0x18] - ldrb r2, [r4, #0xb] - adds r0, r2, #4 - strb r0, [r4, #0x1e] - ldrb r1, [r4, #0x11] - movs r0, #0x10 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #3 - orrs r0, r1 - strb r0, [r4, #0x11] - lsls r2, r2, #0x18 - movs r0, #0x16 - cmp r2, #0 - bne _08088D28 - movs r0, #0x15 -_08088D28: - strb r0, [r4, #0xf] - ldrb r0, [r4, #0xf] - bl CheckLocalFlag - cmp r0, #0 - beq _08088DB0 - ldr r1, _08088D48 @ =gUnk_08120C50 - ldrb r0, [r4, #0xb] - adds r0, r0, r1 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - ldrh r1, [r4, #0x2e] - adds r0, r0, r1 - strh r0, [r4, #0x2e] - b _08088DAC - .align 2, 0 -_08088D48: .4byte gUnk_08120C50 -_08088D4C: - ldrb r0, [r4, #0xf] - bl CheckLocalFlag - cmp r0, #0 - beq _08088DB0 - movs r0, #2 - b _08088DAE -_08088D5A: - ldr r2, _08088D98 @ =gRoomVars - ldr r1, [r2, #0x68] - movs r0, #0x20 - ands r0, r1 - cmp r0, #0 - beq _08088DB0 - movs r0, #0x21 - rsbs r0, r0, #0 - ands r1, r0 - str r1, [r2, #0x68] - movs r0, #3 - strb r0, [r4, #0xc] - movs r0, #4 - strb r0, [r4, #0xd] - movs r0, #1 - strb r0, [r4, #0xe] -_08088D7A: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _08088DB0 - movs r0, #8 - strb r0, [r4, #0xe] - movs r0, #0x2e - ldrsh r1, [r4, r0] - ldrb r0, [r4, #0xb] - cmp r0, #0 - beq _08088D9C - subs r0, r1, #2 - b _08088D9E - .align 2, 0 -_08088D98: .4byte gRoomVars -_08088D9C: - adds r0, r1, #2 -_08088D9E: - strh r0, [r4, #0x2e] - ldrb r0, [r4, #0xd] - subs r0, #1 - strb r0, [r4, #0xd] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _08088DB0 -_08088DAC: - movs r0, #4 -_08088DAE: - strb r0, [r4, #0xc] -_08088DB0: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08088DB4 -sub_08088DB4: @ 0x08088DB4 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #1 - beq _08088E28 - cmp r0, #1 - bgt _08088DC8 - cmp r0, #0 - beq _08088DEC - b _08088E50 -_08088DC8: - cmp r0, #4 - bgt _08088E50 - ldr r0, _08088DE8 @ =gRoomVars - ldr r0, [r0, #0x68] - movs r1, #8 - ands r0, r1 - cmp r0, #0 - beq _08088E6E - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _08088E6E - b _08088E3E - .align 2, 0 -_08088DE8: .4byte gRoomVars -_08088DEC: - movs r2, #1 - movs r0, #1 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x18] - subs r0, #5 - ands r0, r1 - orrs r0, r2 - strb r0, [r4, #0x18] - ldrb r0, [r4, #0xb] - lsls r0, r0, #2 - adds r0, #6 - strb r0, [r4, #0x1e] - adds r1, r4, #0 - adds r1, #0x38 - movs r0, #2 - strb r0, [r1] - adds r0, r4, #0 - movs r1, #3 - bl SetDefaultPriority - ldrb r0, [r4, #0xb] - movs r1, #0x16 - cmp r0, #0 - bne _08088E1E - movs r1, #0x15 -_08088E1E: - strb r1, [r4, #0xb] - adds r0, r4, #0 - bl UpdateSpriteForCollisionLayer - b _08088E6E -_08088E28: - ldrb r0, [r4, #0xb] - bl CheckLocalFlag - cmp r0, #0 - beq _08088E6E - ldrb r0, [r4, #0xc] - adds r0, #1 - strb r0, [r4, #0xc] - movs r0, #0xa - strb r0, [r4, #0xe] - b _08088E6E -_08088E3E: - movs r0, #0x1e - strb r0, [r4, #0xe] - ldrb r0, [r4, #0x1e] - adds r0, #1 - strb r0, [r4, #0x1e] - ldrb r0, [r4, #0xc] - adds r0, #1 - strb r0, [r4, #0xc] - b _08088E6E -_08088E50: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _08088E6E - ldr r0, _08088E70 @ =gRoomVars - ldr r1, [r0, #0x68] - movs r2, #9 - rsbs r2, r2, #0 - ands r1, r2 - str r1, [r0, #0x68] - adds r0, r4, #0 - bl DeleteEntity -_08088E6E: - pop {r4, pc} - .align 2, 0 -_08088E70: .4byte gRoomVars - - thumb_func_start sub_08088E74 -sub_08088E74: @ 0x08088E74 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _08088E94 - movs r0, #1 - strb r0, [r4, #0xc] - adds r1, r4, #0 - adds r1, #0x38 - movs r0, #2 - strb r0, [r1] - ldr r2, _08088EB0 @ =gRoomVars - ldr r0, [r2, #0x68] - movs r1, #8 - orrs r0, r1 - str r0, [r2, #0x68] -_08088E94: - adds r0, r4, #0 - bl sub_0806FB38 - cmp r0, #0 - beq _08088EB4 - ldr r0, _08088EB0 @ =gRoomVars - ldr r1, [r0, #0x68] - movs r2, #0x10 - orrs r1, r2 - str r1, [r0, #0x68] - adds r0, r4, #0 - bl DeleteEntity - b _08088F14 - .align 2, 0 -_08088EB0: .4byte gRoomVars -_08088EB4: - ldr r0, _08088F18 @ =gRoomTransition - ldr r0, [r0] - movs r1, #7 - ands r0, r1 - cmp r0, #0 - bne _08088F14 - adds r0, r4, #0 - movs r1, #0x2a - movs r2, #0 - movs r3, #0x1e - bl CreateObjectWithParent - adds r4, r0, #0 - cmp r4, #0 - beq _08088F14 - ldrb r1, [r4, #0x11] - movs r0, #0x10 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #3 - orrs r0, r1 - strb r0, [r4, #0x11] - ldrb r2, [r4, #0x19] - movs r1, #0x3f - adds r0, r1, #0 - ands r0, r2 - strb r0, [r4, #0x19] - adds r3, r4, #0 - adds r3, #0x29 - ldrb r2, [r3] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r2 - strb r0, [r3] - ldrb r0, [r4, #0x1b] - ands r1, r0 - strb r1, [r4, #0x1b] - bl Random - ldr r2, _08088F1C @ =gUnk_08120C52 - movs r1, #3 - ands r1, r0 - adds r1, r1, r2 - movs r0, #0 - ldrsb r0, [r1, r0] - ldrh r1, [r4, #0x32] - adds r0, r0, r1 - strh r0, [r4, #0x32] -_08088F14: - pop {r4, pc} - .align 2, 0 -_08088F18: .4byte gRoomTransition -_08088F1C: .4byte gUnk_08120C52 - - thumb_func_start sub_08088F20 -sub_08088F20: @ 0x08088F20 - push {r4, r5, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #1 - beq _08088F62 - cmp r0, #1 - bgt _08088F34 - cmp r0, #0 - beq _08088F3E - b _08089020 -_08088F34: - cmp r0, #2 - beq _08088FEC - cmp r0, #3 - beq _08089004 - b _08089020 -_08088F3E: - movs r0, #1 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x11] - subs r0, #0x11 - ands r0, r1 - movs r1, #3 - orrs r0, r1 - strb r0, [r4, #0x11] - ldrb r0, [r4, #0xb] - bl CheckLocalFlag - cmp r0, #0 - bne _08088F5A - b _0808908E -_08088F5A: - adds r0, r4, #0 - bl DeleteEntity - b _0808908E -_08088F62: - ldrb r0, [r4, #0xb] - bl CheckLocalFlag - cmp r0, #0 - bne _08088F6E - b _0808908E -_08088F6E: - movs r5, #2 - strb r5, [r4, #0xc] - movs r0, #0x1e - strb r0, [r4, #0xe] - movs r1, #0x87 - lsls r1, r1, #1 - adds r0, r4, #0 - bl RequestPriorityDuration - movs r0, #0x2a - movs r1, #1 - movs r2, #0 - bl CreateObject - adds r2, r0, #0 - cmp r2, #0 - beq _08088FBC - ldrb r1, [r2, #0x11] - movs r0, #0x10 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #3 - orrs r0, r1 - strb r0, [r2, #0x11] - ldrh r0, [r4, #0x2e] - strh r0, [r2, #0x2e] - ldrh r0, [r4, #0x32] - strh r0, [r2, #0x32] - adds r0, r2, #0 - adds r0, #0x38 - strb r5, [r0] - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #2 - orrs r0, r1 - strb r0, [r2] -_08088FBC: - movs r0, #0x2e - ldrsh r1, [r4, r0] - ldr r2, _08088FE8 @ =gRoomControls - ldrh r0, [r2, #6] - subs r1, r1, r0 - asrs r1, r1, #4 - movs r3, #0x3f - ands r1, r3 - movs r5, #0x32 - ldrsh r0, [r4, r5] - ldrh r2, [r2, #8] - subs r0, r0, r2 - asrs r0, r0, #4 - ands r0, r3 - lsls r0, r0, #6 - orrs r1, r0 - movs r0, #0x76 - movs r2, #2 - bl SetTileType - b _0808908E - .align 2, 0 -_08088FE8: .4byte gRoomControls -_08088FEC: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0808908E - adds r0, r4, #0 - bl sub_08089094 - movs r0, #3 - strb r0, [r4, #0xc] - b _0808908E -_08089004: - ldr r0, _0808901C @ =gRoomVars - ldr r0, [r0, #0x68] - movs r1, #0x10 - ands r0, r1 - cmp r0, #0 - beq _0808908E - movs r0, #4 - strb r0, [r4, #0xc] - movs r0, #0x78 - strb r0, [r4, #0xe] - b _0808908E - .align 2, 0 -_0808901C: .4byte gRoomVars -_08089020: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0x5a - bne _0808905C - movs r0, #0x15 - movs r1, #2 - bl CheckLocalFlags - cmp r0, #0 - beq _08089048 - ldr r0, _08089044 @ =gRoomVars - ldr r1, [r0, #0x68] - movs r2, #2 - b _0808904E - .align 2, 0 -_08089044: .4byte gRoomVars -_08089048: - ldr r0, _08089090 @ =gRoomVars - ldr r1, [r0, #0x68] - movs r2, #1 -_0808904E: - orrs r1, r2 - str r1, [r0, #0x68] - adds r2, r0, #0 - ldr r0, [r2, #0x68] - movs r1, #0x20 - orrs r0, r1 - str r0, [r2, #0x68] -_0808905C: - ldrb r0, [r4, #0xe] - cmp r0, #0 - bne _0808908E - ldr r2, _08089090 @ =gRoomVars - ldr r0, [r2, #0x68] - movs r1, #0x11 - rsbs r1, r1, #0 - ands r0, r1 - str r0, [r2, #0x68] - movs r0, #0x15 - movs r1, #2 - bl CheckLocalFlags - cmp r0, #0 - beq _08089088 - adds r0, r4, #0 - movs r1, #0x3c - bl RequestPriorityDuration - movs r0, #0x72 - bl SoundReq -_08089088: - adds r0, r4, #0 - bl DeleteEntity -_0808908E: - pop {r4, r5, pc} - .align 2, 0 -_08089090: .4byte gRoomVars - - thumb_func_start sub_08089094 -sub_08089094: @ 0x08089094 - push {r4, r5, lr} - adds r5, r0, #0 - movs r1, #0x2e - ldrsh r0, [r5, r1] - ldr r1, _080890C4 @ =gRoomControls - ldrh r1, [r1, #6] - subs r0, r0, r1 - cmp r0, #0xff - bgt _080890CC - ldr r4, _080890C8 @ =gUnk_08120C56 - movs r2, #8 - rsbs r2, r2, #0 - adds r0, r5, #0 - adds r1, r4, #0 - bl sub_080890EC - adds r4, #4 - adds r0, r5, #0 - adds r1, r4, #0 - movs r2, #4 - bl sub_080890EC - b _080890E6 - .align 2, 0 -_080890C4: .4byte gRoomControls -_080890C8: .4byte gUnk_08120C56 -_080890CC: - ldr r4, _080890E8 @ =gUnk_08120C5E - movs r2, #8 - rsbs r2, r2, #0 - adds r0, r5, #0 - adds r1, r4, #0 - bl sub_080890EC - adds r4, #4 - adds r0, r5, #0 - adds r1, r4, #0 - movs r2, #4 - bl sub_080890EC -_080890E6: - pop {r4, r5, pc} - .align 2, 0 -_080890E8: .4byte gUnk_08120C5E - - thumb_func_start sub_080890EC -sub_080890EC: @ 0x080890EC - push {r4, r5, r6, r7, lr} - adds r5, r0, #0 - adds r7, r1, #0 - adds r6, r2, #0 - movs r0, #0x25 - movs r1, #3 - movs r2, #0 - bl CreateObject - adds r4, r0, #0 - cmp r4, #0 - beq _08089132 - movs r1, #3 - bl SetDefaultPriority - ldrh r0, [r5, #0x2e] - strh r0, [r4, #0x2e] - ldrh r0, [r5, #0x32] - adds r0, r0, r6 - strh r0, [r4, #0x32] - str r5, [r4, #0x50] - movs r0, #0x2e - ldrsh r1, [r4, r0] - movs r2, #0 - ldrsh r0, [r7, r2] - adds r1, r1, r0 - movs r3, #0x32 - ldrsh r2, [r4, r3] - movs r3, #2 - ldrsh r0, [r7, r3] - adds r2, r2, r0 - adds r0, r4, #0 - movs r3, #0x5a - bl sub_0806FB00 -_08089132: - pop {r4, r5, r6, r7, pc} diff --git a/assets/assets.json b/assets/assets.json index dc420540..56245bc9 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -43105,46 +43105,6 @@ "size": 9, "type": "animation" }, - { - "path": "bigBarrel/gUnk_08120C1C.bin", - "start": 1182748, - "size": 9 - }, - { - "path": "bigBarrel/gUnk_08120C25.bin", - "start": 1182757, - "size": 9 - }, - { - "path": "bigBarrel/gUnk_08120C2E.bin", - "start": 1182766, - "size": 6 - }, - { - "path": "bigBarrel/gUnk_08120C48.bin", - "start": 1182792, - "size": 8 - }, - { - "path": "bigBarrel/gUnk_08120C50.bin", - "start": 1182800, - "size": 2 - }, - { - "path": "bigBarrel/gUnk_08120C52.bin", - "start": 1182802, - "size": 4 - }, - { - "path": "bigBarrel/gUnk_08120C56.bin", - "start": 1182806, - "size": 8 - }, - { - "path": "bigBarrel/gUnk_08120C5E.bin", - "start": 1182814, - "size": 8 - }, { "path": "animations/gSpriteAnimations_PushableStatue_0.bin", "start": 1183110, diff --git a/data/const/object/bigBarrel.s b/data/const/object/bigBarrel.s deleted file mode 100644 index 892cc682..00000000 --- a/data/const/object/bigBarrel.s +++ /dev/null @@ -1,36 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08120C1C:: @ 08120C1C - .incbin "bigBarrel/gUnk_08120C1C.bin" - -gUnk_08120C25:: @ 08120C25 - .incbin "bigBarrel/gUnk_08120C25.bin" - -gUnk_08120C2E:: @ 08120C2E - .incbin "bigBarrel/gUnk_08120C2E.bin" - -gUnk_08120C34:: @ 08120C34 - .4byte sub_08088A68 - .4byte sub_08088C9C - .4byte sub_08088DB4 - .4byte sub_08088E74 - .4byte sub_08088F20 - -gUnk_08120C48:: @ 08120C48 - .incbin "bigBarrel/gUnk_08120C48.bin" - -gUnk_08120C50:: @ 08120C50 - .incbin "bigBarrel/gUnk_08120C50.bin" - -gUnk_08120C52:: @ 08120C52 - .incbin "bigBarrel/gUnk_08120C52.bin" - -gUnk_08120C56:: @ 08120C56 - .incbin "bigBarrel/gUnk_08120C56.bin" - -gUnk_08120C5E:: @ 08120C5E - .incbin "bigBarrel/gUnk_08120C5E.bin" diff --git a/linker.ld b/linker.ld index 3d0e875b..53701c02 100644 --- a/linker.ld +++ b/linker.ld @@ -679,7 +679,7 @@ SECTIONS { asm/object/figurineDevice.o(.text); asm/object/eyeSwitch.o(.text); src/object/pressurePlate.o(.text); - asm/object/bigBarrel.o(.text); + src/object/bigBarrel.o(.text); src/object/barrelInside.o(.text); src/object/pushableStatue.o(.text); asm/object/object28.o(.text); @@ -1405,7 +1405,7 @@ SECTIONS { data/const/object/eyeSwitch.o(.rodata); data/animations/object/eyeSwitch.o(.rodata); src/object/pressurePlate.o(.rodata); - data/const/object/bigBarrel.o(.rodata); + src/object/bigBarrel.o(.rodata); data/animations/object/bigBarrel.o(.rodata); src/object/barrelInside.o(.rodata); src/object/pushableStatue.o(.rodata); diff --git a/src/coord.c b/src/coord.c index b126c9b0..8ebbdfcf 100644 --- a/src/coord.c +++ b/src/coord.c @@ -352,7 +352,7 @@ void sub_0806FB00(Entity* ent, u32 param_1, u32 param_2, u32 param_3) { ent->field_0x86.HWORD = param_2; } -bool32 sub_0806FB38(Entity* ent, u32 param_1, u32 param_2, u32 param_3) { +bool32 sub_0806FB38(Entity* ent) { s32 val; u32 rv; if (ent->field_0x7c.BYTES.byte2 < ent->field_0x7c.BYTES.byte3) { diff --git a/src/object/bigBarrel.c b/src/object/bigBarrel.c new file mode 100644 index 00000000..af09b0f4 --- /dev/null +++ b/src/object/bigBarrel.c @@ -0,0 +1,349 @@ +#define NENT_DEPRECATED +#include "entity.h" +#include "flags.h" +#include "save.h" +#include "room.h" +#include "asm.h" +#include "sound.h" +#include "common.h" +#include "object.h" + +typedef struct { + Entity base; + const u8* unk68; +} BigBarrelEntity; + +void sub_08088A68(BigBarrelEntity*); +void sub_08088C9C(BigBarrelEntity*); +void sub_08088DB4(BigBarrelEntity*); +void sub_08088E74(BigBarrelEntity*); +void sub_08088F20(BigBarrelEntity*); +void sub_08088BE0(BigBarrelEntity*); +void sub_08089094(BigBarrelEntity*); +void sub_080890EC(BigBarrelEntity*, const s16*, s32); + +Entity* sub_08088C78(BigBarrelEntity*, u32, u32, u32); + +extern bool32 sub_0806FB38(Entity*); +extern void sub_0806FB00(Entity*, u32, u32, u32); + +const s8 gUnk_08120C1C[] = { 3, 0, 2, 0, 2, 0, 1, 0, -1 }; +const s8 gUnk_08120C25[] = { 5, 0, 4, 0, 4, 0, 2, 0, -1 }; +const s8 gUnk_08120C2E[] = { 3, 0, -1, 0, 0, 0 }; + +void BigBarrel(Entity* this) { + static void (*const typeFuncs[])(BigBarrelEntity*) = { + sub_08088A68, sub_08088C9C, sub_08088DB4, sub_08088E74, sub_08088F20, + }; + typeFuncs[this->type]((BigBarrelEntity*)this); +} + +void sub_08088A68(BigBarrelEntity* this) { + u32 uVar3; + const u8* pcVar3; + + if (super->action == 0) { + super->action = 1; + super->spriteSettings.draw = 3; + super->updatePriority = 3; + if (CheckGlobalFlag(0x17)) { + super->frameIndex = gSave.unk7 + 1; + } else { + super->frameIndex = gSave.unk7; + } + sub_08088BE0(this); + if (CheckPlayerInRegion(super->x.HALF.HI - gRoomControls.origin_x, super->y.HALF.HI - gRoomControls.origin_y, + 0x80, 0x60)) { + gRoomVars.animFlags |= 4; + } + } else { + if (gRoomVars.animFlags & 1) { + gRoomVars.animFlags &= ~1; + super->actionDelay = 1; + this->unk68 = gUnk_08120C1C; + SoundReq(SFX_BARREL_ENTER); + } + if (gRoomVars.animFlags & 2) { + gRoomVars.animFlags &= ~2; + super->actionDelay = 1; + this->unk68 = gUnk_08120C25; + SoundReq(SFX_BARREL_RELEASE); + } + if (gRoomVars.animFlags & 4) { + gRoomVars.animFlags &= ~4; + super->actionDelay = 1; + this->unk68 = gUnk_08120C2E; + SoundReq(SFX_BARREL_ENTER); + } + if (super->actionDelay) { + if (super->actionDelay-- == 1) { + pcVar3 = this->unk68; + uVar3 = pcVar3[0]; + *(u8*)&super->spriteOffsetY = uVar3; + pcVar3++; + if (*pcVar3 != 0xff) { + super->actionDelay = 8; + this->unk68 = pcVar3; + } else { + super->spriteOffsetY = 0; + } + } + } + } + super->spritePriority.b0 = 1; + if (CheckPlayerProximity(super->x.HALF.HI - 0x50, super->y.HALF.HI - 0x50, 0xa0, 0x30)) { + super->spritePriority.b0 = 5; + } + if (CheckPlayerProximity(super->x.HALF.HI - 0x50, super->y.HALF.HI + 0x30, 0xa0, 0x30)) { + super->spritePriority.b0 = 5; + } +} + +void sub_08088BE0(BigBarrelEntity* this) { + Entity* ent; + + if (CheckLocalFlag(0x15) == 0) { + sub_08088C78(this, 2, 0, 0xffffff88); + ent = sub_08088C78(this, 4, 0x15, 0); + if (ent) { + ent->x.HALF.HI = gRoomControls.origin_x + 0x48; + ent->y.HALF.HI = gRoomControls.origin_y + 200; + } + } + + if (CheckLocalFlag(0x16) == 0) { + sub_08088C78(this, 2, 1, 0x78); + ent = sub_08088C78(this, 4, 0x16, 0); + if (ent) { + ent->x.HALF.HI = gRoomControls.origin_x + 0x188; + ent->y.HALF.HI = gRoomControls.origin_y + 200; + } + } + sub_08088C78(this, 1, 0, 0xffffff88); + sub_08088C78(this, 1, 1, 0x78); +} + +Entity* sub_08088C78(BigBarrelEntity* this, u32 type, u32 type2, u32 xOffset) { + Entity* pEVar1; + + pEVar1 = CreateObject(BIG_BARREL, type, type2); + if (pEVar1) { + pEVar1->x.HALF.HI = super->x.HALF.HI + xOffset; + pEVar1->y.HALF.HI = super->y.HALF.HI; + pEVar1->parent = super; + } + return pEVar1; +} + +void sub_08088C9C(BigBarrelEntity* this) { + static const u8 gUnk_08120C48[] = { 2, 3, 4, 5, 6, 7, 7, 7 }; + static const s8 gUnk_08120C50[] = { 8, -8 }; + u32 localFlag; + s32 x; + + super->spritePriority.b0 = gUnk_08120C48[super->parent->spritePriority.b0]; + super->spriteOffsetY = super->parent->spriteOffsetY / 2; + switch (super->action) { + case 0: + super->action = 1; + super->spriteSettings.draw = 1; + super->frameIndex = super->type2 + 4; + super->updatePriority = 3; + if (super->type2 == 0) { + localFlag = 21; + } else { + localFlag = 22; + } + super->field_0xf = localFlag; + if (CheckLocalFlag(super->field_0xf) == 0) { + return; + } + + super->x.HALF_U.HI += gUnk_08120C50[super->type2]; + super->action = 4; + break; + case 1: + if (CheckLocalFlag(super->field_0xf) == 0) { + return; + } + super->action = 2; + break; + case 2: + if ((gRoomVars.animFlags & 0x20) == 0) { + return; + } + gRoomVars.animFlags &= ~0x20; + super->action = 3; + super->subAction = 4; + super->actionDelay = 1; + case 3: + if (--super->actionDelay) { + return; + } + super->actionDelay = 8; + x = super->x.HALF.HI; + if (super->type2) { + super->x.HALF.HI = x - 2; + } else { + super->x.HALF.HI = x + 2; + } + if (--super->subAction) { + return; + } + super->action = 4; + break; + } +} + +void sub_08088DB4(BigBarrelEntity* this) { + switch (super->action) { + case 0: + super->action = 1; + super->spriteSettings.draw = 1; + super->frameIndex = super->type2 * 4 + 6; + super->collisionLayer = 2; + SetDefaultPriority(super, 3); + super->type2 = super->type2 == 0 ? 0x15 : 0x16; + UpdateSpriteForCollisionLayer(super); + break; + case 1: + if (CheckLocalFlag(super->type2)) { + super->action++; + super->actionDelay = 10; + } + break; + case 2: + case 3: + case 4: + if ((gRoomVars.animFlags & 8) == 0) { + return; + } + if (--super->actionDelay) { + return; + } + super->actionDelay = 0x1e; + super->frameIndex++; + super->action++; + break; + default: + if (--super->actionDelay == 0) { + gRoomVars.animFlags &= ~0x8; + DeleteEntity(super); + } + break; + } +} + +void sub_08088E74(BigBarrelEntity* this) { + static const s8 gUnk_08120C52[] = { -2, 0, 2, 0 }; + Entity* ent; + + if (super->action == 0) { + super->action = 1; + super->collisionLayer = 2; + gRoomVars.animFlags |= 8; + } + if (sub_0806FB38(super)) { + gRoomVars.animFlags |= 0x10; + DeleteEntity(super); + } else { + if ((gRoomTransition.frameCount & 7U) == 0) { + ent = CreateObjectWithParent(super, OBJECT_2A, 0, 0x1e); + if (ent) { + ent->updatePriority = 3; + ent->spriteRendering.b3 = 0; + ent->spritePriority.b0 = 0; + ent->spriteOrientation.flipY = 0; + ent->y.HALF.HI += gUnk_08120C52[Random() & 3]; + } + } + } +} + +void sub_08088F20(BigBarrelEntity* this) { + Entity* pEVar3; + + switch (super->action) { + case 0: + super->action = 1; + super->updatePriority = 3; + if (CheckLocalFlag(super->type2) == 0) { + return; + } + DeleteEntity(super); + break; + case 1: + if (CheckLocalFlag(super->type2) == 0) { + return; + } + super->action = 2; + super->actionDelay = 30; + RequestPriorityDuration(super, 0x10e); + pEVar3 = CreateObject(OBJECT_2A, 1, 0); + if (pEVar3 != NULL) { + pEVar3->updatePriority = 3; + pEVar3->x.HALF.HI = super->x.HALF.HI; + pEVar3->y.HALF.HI = super->y.HALF.HI; + pEVar3->collisionLayer = 2; + pEVar3->spritePriority.b0 = 2; + } + SetTileType(0x76, COORD_TO_TILE(super), 2); + break; + case 2: + if (--super->actionDelay) { + return; + } + sub_08089094(this); + super->action = 3; + break; + case 3: + if ((gRoomVars.animFlags & 0x10) == 0) { + return; + } + super->action = 4; + super->actionDelay = 0x78; + break; + default: + if (--super->actionDelay == 0x5a) { + if (CheckLocalFlags(0x15, 2)) { + gRoomVars.animFlags |= 2; + } else { + gRoomVars.animFlags |= 1; + } + gRoomVars.animFlags |= 0x20; + } + if (super->actionDelay == 0) { + gRoomVars.animFlags &= ~0x10; + if (CheckLocalFlags(0x15, 2)) { + RequestPriorityDuration(super, 0x3c); + SoundReq(SFX_SECRET); + } + DeleteEntity(super); + } + break; + } +} + +void sub_08089094(BigBarrelEntity* this) { + static const s16 gUnk_08120C56[] = { 0x58, -0x30, 0x58, 0x30 }; + static const s16 gUnk_08120C5E[] = { -0x58, -0x30, -0x58, 0x30 }; + + if (super->x.HALF.HI - gRoomControls.origin_x < 0x100) { + sub_080890EC(this, gUnk_08120C56, -8); + sub_080890EC(this, gUnk_08120C56 + 2, 4); + } else { + sub_080890EC(this, gUnk_08120C5E, -8); + sub_080890EC(this, gUnk_08120C5E + 2, 4); + } +} + +void sub_080890EC(BigBarrelEntity* this, const s16* offsets, s32 yOffset) { + Entity* pEVar1 = CreateObject(BIG_BARREL, 3, 0); + if (pEVar1) { + SetDefaultPriority(pEVar1, 3); + pEVar1->x.HALF.HI = super->x.HALF.HI; + pEVar1->y.HALF.HI = super->y.HALF.HI + yOffset; + pEVar1->parent = super; + sub_0806FB00(pEVar1, pEVar1->x.HALF.HI + offsets[0], pEVar1->y.HALF.HI + offsets[1], 0x5a); + } +}