diff --git a/asm/bladeTrap.s b/asm/bladeTrap.s deleted file mode 100644 index e13023bc..00000000 --- a/asm/bladeTrap.s +++ /dev/null @@ -1,60 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start sub_08032358 -sub_08032358: @ 0x08032358 - push {r4, r5, r6, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _0803237C - movs r0, #1 - strb r0, [r4, #0xc] - ldrb r0, [r4, #0xa] - bl sub_0804B128 - str r0, [r4, #0x54] - adds r1, r4, #0 - adds r1, #0x54 - adds r2, r4, #0 - adds r2, #0x74 - adds r0, r4, #0 - bl sub_080A2CC0 -_0803237C: - ldrb r1, [r4, #0x15] - movs r6, #0x80 - adds r0, r6, #0 - ands r0, r1 - cmp r0, #0 - bne _0803238E - adds r0, r4, #0 - bl sub_0806F69C -_0803238E: - adds r5, r4, #0 - adds r5, #0x74 - ldrh r0, [r5] - subs r0, #1 - strh r0, [r5] - lsls r0, r0, #0x10 - cmp r0, #0 - bne _080323BA - ldrb r1, [r4, #0x15] - adds r0, r6, #0 - ands r0, r1 - cmp r0, #0 - bne _080323AE - movs r0, #0x74 - bl sub_08004488 -_080323AE: - adds r1, r4, #0 - adds r1, #0x54 - adds r0, r4, #0 - adds r2, r5, #0 - bl sub_080A2CC0 -_080323BA: - pop {r4, r5, r6, pc} diff --git a/asm/cow.s b/asm/cow.s deleted file mode 100644 index a5610659..00000000 --- a/asm/cow.s +++ /dev/null @@ -1,448 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start sub_08068F98 -sub_08068F98: @ 0x08068F98 - push {r4, lr} - adds r4, r0, #0 - ldr r1, _08068FBC @ =gUnk_08111914 - ldrb r0, [r4, #0xc] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r1, [r0] - adds r0, r4, #0 - bl _call_via_r1 - adds r0, r4, #0 - bl sub_0806ED78 - adds r0, r4, #0 - bl sub_0806920C - pop {r4, pc} - .align 2, 0 -_08068FBC: .4byte gUnk_08111914 - - thumb_func_start sub_08068FC0 -sub_08068FC0: @ 0x08068FC0 - push {r4, lr} - adds r4, r0, #0 - movs r0, #1 - strb r0, [r4, #0xc] - ldrb r0, [r4, #0xb] - strb r0, [r4, #0x14] - movs r0, #0x40 - strh r0, [r4, #0x24] - adds r1, r4, #0 - adds r1, #0x6d - movs r0, #0xff - strb r0, [r1] - adds r0, r4, #0 - bl sub_0805ACC0 - adds r2, r0, #0 - cmp r2, #0 - bne _08068FF4 - ldrh r0, [r4, #0x2e] - adds r1, r4, #0 - adds r1, #0x68 - strh r0, [r1] - ldrh r0, [r4, #0x32] - adds r1, #2 - strh r0, [r1] - b _08069000 -_08068FF4: - lsrs r1, r2, #0x10 - adds r0, r4, #0 - adds r0, #0x68 - strh r1, [r0] - adds r0, #2 - strh r2, [r0] -_08069000: - adds r0, r4, #0 - bl sub_0801E99C - adds r1, r4, #0 - adds r1, #0x6c - strb r0, [r1] - ldrb r1, [r4, #0x14] - adds r1, #4 - adds r0, r4, #0 - bl LoadAnimation - pop {r4, pc} - - thumb_func_start sub_08069018 -sub_08069018: @ 0x08069018 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xd] - cmp r0, #0 - bne _0806903A - adds r0, #1 - strb r0, [r4, #0xd] - bl Random - movs r1, #0x3f - ands r0, r1 - adds r0, #0x3c - strb r0, [r4, #0xf] - ldrb r1, [r4, #0x14] - adds r0, r4, #0 - bl LoadAnimation -_0806903A: - adds r0, r4, #0 - bl sub_080042B8 - ldrb r0, [r4, #0xf] - subs r0, #1 - strb r0, [r4, #0xf] - lsls r0, r0, #0x18 - lsrs r1, r0, #0x18 - cmp r1, #0 - bne _0806905E - ldrb r0, [r4, #0xe] - cmp r0, #0 - bne _08069058 - movs r0, #2 - b _0806905A -_08069058: - movs r0, #3 -_0806905A: - strb r0, [r4, #0xc] - strb r1, [r4, #0xd] -_0806905E: - adds r0, r4, #0 - bl sub_0806924C - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08069068 -sub_08069068: @ 0x08069068 - push {r4, r5, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xd] - cmp r0, #0 - bne _080690A4 - adds r0, #1 - strb r0, [r4, #0xd] - bl Random - movs r1, #2 - ands r1, r0 - subs r1, #1 - ldrb r0, [r4, #0x14] - adds r1, r1, r0 - movs r0, #3 - ands r1, r0 - strb r1, [r4, #0x14] - lsls r1, r1, #3 - strb r1, [r4, #0x15] - bl Random - movs r1, #0x3f - ands r0, r1 - adds r0, #0x3c - strb r0, [r4, #0xf] - ldrb r1, [r4, #0x14] - adds r1, #4 - adds r0, r4, #0 - bl LoadAnimation -_080690A4: - adds r0, r4, #0 - bl sub_080AEF88 - adds r0, r4, #0 - bl sub_080042B8 - movs r0, #0x2e - ldrsh r1, [r4, r0] - adds r2, r4, #0 - adds r2, #0x68 - movs r3, #0 - ldrsh r0, [r2, r3] - subs r1, r1, r0 - cmp r1, #0x10 - ble _080690CC - ldrh r0, [r2] - adds r0, #0x10 - strh r0, [r4, #0x2e] - movs r0, #1 - strb r0, [r4, #0xf] -_080690CC: - movs r3, #0x10 - rsbs r3, r3, #0 - cmp r1, r3 - bge _080690DE - ldrh r0, [r2] - subs r0, #0x10 - strh r0, [r4, #0x2e] - movs r0, #1 - strb r0, [r4, #0xf] -_080690DE: - movs r5, #0x32 - ldrsh r1, [r4, r5] - adds r2, r4, #0 - adds r2, #0x6a - movs r5, #0 - ldrsh r0, [r2, r5] - subs r1, r1, r0 - cmp r1, #0x10 - ble _080690FA - ldrh r0, [r2] - adds r0, #0x10 - strh r0, [r4, #0x32] - movs r0, #1 - strb r0, [r4, #0xf] -_080690FA: - cmp r1, r3 - bge _08069108 - ldrh r0, [r2] - subs r0, #0x10 - strh r0, [r4, #0x32] - movs r0, #1 - strb r0, [r4, #0xf] -_08069108: - ldrb r0, [r4, #0xf] - subs r0, #1 - strb r0, [r4, #0xf] - lsls r0, r0, #0x18 - lsrs r1, r0, #0x18 - cmp r1, #0 - bne _0806911C - movs r0, #3 - strb r0, [r4, #0xc] - strb r1, [r4, #0xd] -_0806911C: - adds r0, r4, #0 - bl sub_0806924C - pop {r4, r5, pc} - - thumb_func_start sub_08069124 -sub_08069124: @ 0x08069124 - push {r4, lr} - adds r4, r0, #0 - bl sub_080042B8 - ldr r1, _08069144 @ =gUnk_08111928 - ldrb r0, [r4, #0xd] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r1, [r0] - adds r0, r4, #0 - bl _call_via_r1 - adds r0, r4, #0 - bl sub_0806924C - pop {r4, pc} - .align 2, 0 -_08069144: .4byte gUnk_08111928 - - thumb_func_start sub_08069148 -sub_08069148: @ 0x08069148 - push {r4, lr} - adds r4, r0, #0 - bl Random - movs r1, #3 - ands r0, r1 - adds r0, #3 - strb r0, [r4, #0xf] - movs r0, #1 - strb r0, [r4, #0xd] - ldrb r1, [r4, #0x14] - adds r1, #8 - adds r0, r4, #0 - bl LoadAnimation - pop {r4, pc} - - thumb_func_start sub_08069168 -sub_08069168: @ 0x08069168 - push {lr} - adds r2, r0, #0 - adds r0, #0x5a - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - bge _08069186 - movs r0, #2 - strb r0, [r2, #0xd] - ldrb r1, [r2, #0x14] - adds r1, #0xc - adds r0, r2, #0 - bl LoadAnimation -_08069186: - pop {pc} - - thumb_func_start sub_08069188 -sub_08069188: @ 0x08069188 - push {lr} - adds r2, r0, #0 - adds r3, r2, #0 - adds r3, #0x5a - ldrb r1, [r3] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _080691B8 - movs r0, #0 - strb r0, [r3] - ldrb r0, [r2, #0xf] - subs r0, #1 - strb r0, [r2, #0xf] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080691B8 - movs r0, #3 - strb r0, [r2, #0xd] - ldrb r1, [r2, #0x14] - adds r1, #0x10 - adds r0, r2, #0 - bl LoadAnimation -_080691B8: - pop {pc} - .align 2, 0 - - thumb_func_start sub_080691BC -sub_080691BC: @ 0x080691BC - push {lr} - adds r2, r0, #0 - adds r0, #0x5a - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - bge _080691DE - movs r1, #0 - movs r0, #1 - strb r0, [r2, #0xc] - strb r1, [r2, #0xd] - ldrb r1, [r2, #0x14] - adds r1, #4 - adds r0, r2, #0 - bl LoadAnimation -_080691DE: - pop {pc} - - thumb_func_start sub_080691E0 -sub_080691E0: @ 0x080691E0 - push {r4, lr} - adds r4, r0, #0 - bl UpdateFuseInteraction - cmp r0, #0 - beq _080691F4 - movs r1, #0 - movs r0, #1 - strb r0, [r4, #0xc] - strb r1, [r4, #0xd] -_080691F4: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080691F8 -sub_080691F8: @ 0x080691F8 - push {lr} - ldrb r1, [r0, #0xa] - lsls r1, r1, #3 - ldr r2, _08069208 @ =gUnk_08111938 - adds r1, r1, r2 - bl sub_0806F1AC - pop {pc} - .align 2, 0 -_08069208: .4byte gUnk_08111938 - - thumb_func_start sub_0806920C -sub_0806920C: @ 0x0806920C - push {r4, r5, lr} - adds r4, r0, #0 - ldr r0, _08069234 @ =gLinkState - ldr r0, [r0, #0x30] - movs r1, #0x80 - ands r0, r1 - rsbs r0, r0, #0 - lsrs r5, r0, #0x1f - adds r0, r4, #0 - adds r0, #0x6d - ldrb r0, [r0] - cmp r5, r0 - beq _08069244 - cmp r5, #0 - bne _08069238 - adds r0, r4, #0 - bl sub_08078778 - b _08069244 - .align 2, 0 -_08069234: .4byte gLinkState -_08069238: - adds r0, r4, #0 - adds r0, #0x6c - ldrb r1, [r0] - adds r0, r4, #0 - bl sub_080787A8 -_08069244: - adds r0, r4, #0 - adds r0, #0x6d - strb r5, [r0] - pop {r4, r5, pc} - - thumb_func_start sub_0806924C -sub_0806924C: @ 0x0806924C - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x39 - movs r2, #0 - ldrsb r2, [r0, r2] - cmp r2, #0 - beq _0806929C - ldr r0, _08069278 @ =gLinkState - ldr r0, [r0, #0x30] - movs r1, #0x80 - ands r0, r1 - cmp r0, #0 - beq _08069284 - cmp r2, #2 - bne _0806927C - movs r0, #4 - strb r0, [r4, #0xc] - adds r0, r4, #0 - bl sub_0806F118 - b _0806928E - .align 2, 0 -_08069278: .4byte gLinkState -_0806927C: - adds r0, r4, #0 - bl sub_080691F8 - b _0806928E -_08069284: - adds r0, r4, #0 - bl sub_080691F8 - bl sub_080791D0 -_0806928E: - movs r0, #0xd4 - bl PlaySFX - adds r1, r4, #0 - adds r1, #0x39 - movs r0, #0 - strb r0, [r1] -_0806929C: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080692A0 -sub_080692A0: @ 0x080692A0 - push {lr} - adds r2, r0, #0 - ldrb r0, [r2, #0xc] - cmp r0, #0 - bne _080692C6 - adds r0, #1 - strb r0, [r2, #0xc] - ldrb r1, [r2, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r2, #0x18] - adds r0, r2, #0 - movs r1, #0xf - bl LoadAnimation - b _080692CC -_080692C6: - adds r0, r2, #0 - bl sub_080042B8 -_080692CC: - pop {pc} - .align 2, 0 diff --git a/asm/zelda.s b/asm/zelda.s deleted file mode 100644 index 136b33b7..00000000 --- a/asm/zelda.s +++ /dev/null @@ -1,430 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start sub_08066CB4 -sub_08066CB4: @ 0x08066CB4 - push {lr} - ldr r2, _08066CC8 @ =gUnk_08110BD8 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_08066CC8: .4byte gUnk_08110BD8 - - thumb_func_start sub_08066CCC -sub_08066CCC: @ 0x08066CCC - push {r4, lr} - adds r4, r0, #0 - 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] - adds r0, r4, #0 - movs r1, #7 - bl sub_0805EA78 - adds r0, r4, #0 - movs r1, #2 - bl sub_0805E3A0 - adds r0, r4, #0 - bl sub_0807DD50 - pop {r4, pc} - - thumb_func_start sub_08066CF8 -sub_08066CF8: @ 0x08066CF8 - push {lr} - movs r1, #0 - bl sub_0807DD94 - pop {pc} - .align 2, 0 - - thumb_func_start sub_08066D04 -sub_08066D04: @ 0x08066D04 - push {r4, lr} - adds r4, r0, #0 - movs r0, #7 - movs r1, #0x2e - bl sub_0805EB9C - str r0, [r4, #0x50] - pop {r4, pc} - - thumb_func_start sub_08066D14 -sub_08066D14: @ 0x08066D14 - push {r4, r5, lr} - adds r4, r0, #0 - adds r5, r1, #0 - ldr r2, [r4, #0x50] - cmp r2, #0 - beq _08066D48 - ldrb r0, [r2, #0x14] - strb r0, [r4, #0x14] - ldrb r1, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r4, #0x18] - adds r0, r2, #0 - adds r1, r4, #0 - bl CopyPosition - ldr r1, [r4, #0x50] - adds r0, r4, #0 - bl sub_08068680 - movs r0, #1 - str r0, [r5, #0x14] - b _08066D4A -_08066D48: - str r2, [r5, #0x14] -_08066D4A: - pop {r4, r5, pc} - - thumb_func_start sub_08066D4C -sub_08066D4C: @ 0x08066D4C - push {r4, r5, lr} - adds r4, r0, #0 - adds r5, r1, #0 - ldr r1, [r4, #0x50] - cmp r1, #0 - beq _08066D90 - bl CopyPosition - ldr r3, [r4, #0x50] - ldrb r1, [r3, #0x18] - movs r2, #4 - rsbs r2, r2, #0 - adds r0, r2, #0 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r3, #0x18] - ldr r1, [r4, #0x50] - ldrb r0, [r4, #0x14] - strb r0, [r1, #0x14] - ldrb r0, [r4, #0x18] - ands r2, r0 - strb r2, [r4, #0x18] - ldrb r1, [r4, #0x17] - movs r0, #0xfe - ands r0, r1 - strb r0, [r4, #0x17] - ldr r1, [r4, #0x50] - adds r0, r4, #0 - bl sub_08068694 - movs r0, #1 - str r0, [r5, #0x14] - b _08066D92 -_08066D90: - str r1, [r5, #0x14] -_08066D92: - pop {r4, r5, pc} - - thumb_func_start sub_08066D94 -sub_08066D94: @ 0x08066D94 - push {r4, r5, lr} - adds r5, r0, #0 - movs r0, #0x1c - bl SetGlobalFlag - movs r0, #0x2e - movs r1, #0 - movs r2, #0 - bl CreateNPC - adds r4, r0, #0 - cmp r4, #0 - beq _08066DD6 - ldr r0, _08066DDC @ =gLinkEntity - ldrb r0, [r0, #0x14] - strb r0, [r4, #0x14] - ldrb r1, [r4, #0x10] - movs r0, #0x20 - orrs r0, r1 - strb r0, [r4, #0x10] - adds r0, r5, #0 - bl sub_0806EDC4 - strb r0, [r4, #0x14] - ldr r0, _08066DE0 @ =gRoomControls - ldrb r1, [r0, #5] - adds r0, r4, #0 - adds r0, #0x74 - strh r1, [r0] - adds r0, r5, #0 - adds r1, r4, #0 - bl CopyPosition -_08066DD6: - bl DeleteThisEntity - pop {r4, r5, pc} - .align 2, 0 -_08066DDC: .4byte gLinkEntity -_08066DE0: .4byte gRoomControls - - thumb_func_start sub_08066DE4 -sub_08066DE4: @ 0x08066DE4 - push {r4, r5, lr} - adds r5, r0, #0 - movs r0, #7 - movs r1, #0x2e - bl sub_0805EB9C - adds r4, r0, #0 - cmp r4, #0 - beq _08066E06 - adds r0, r5, #0 - adds r1, r4, #0 - bl CopyPosition - adds r0, r5, #0 - adds r1, r4, #0 - bl sub_080686C4 -_08066E06: - pop {r4, r5, pc} - - thumb_func_start sub_08066E08 -sub_08066E08: @ 0x08066E08 - push {r4, lr} - adds r4, r0, #0 - movs r1, #0x50 - bl LoadAnimation - adds r0, r4, #0 - adds r0, #0x58 - ldrb r0, [r0] - adds r4, #0x80 - strh r0, [r4] - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08066E20 -sub_08066E20: @ 0x08066E20 - push {r4, lr} - adds r4, r0, #0 - movs r1, #0x44 - bl LoadAnimation - adds r0, r4, #0 - adds r0, #0x58 - ldrb r0, [r0] - adds r4, #0x80 - strh r0, [r4] - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08066E38 -sub_08066E38: @ 0x08066E38 - push {r4, lr} - adds r4, r0, #0 - movs r1, #0x48 - bl LoadAnimation - adds r0, r4, #0 - adds r0, #0x58 - ldrb r0, [r0] - adds r4, #0x80 - strh r0, [r4] - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08066E50 -sub_08066E50: @ 0x08066E50 - push {r4, lr} - adds r4, r0, #0 - movs r1, #0x4c - bl LoadAnimation - adds r0, r4, #0 - adds r0, #0x58 - ldrb r0, [r0] - adds r4, #0x80 - strh r0, [r4] - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08066E68 -sub_08066E68: @ 0x08066E68 - push {r4, lr} - adds r4, r0, #0 - movs r1, #0x54 - bl LoadAnimation - adds r0, r4, #0 - adds r0, #0x58 - ldrb r0, [r0] - adds r4, #0x80 - strh r0, [r4] - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08066E80 -sub_08066E80: @ 0x08066E80 - push {r4, r5, lr} - adds r4, r0, #0 - adds r5, r1, #0 - ldrb r0, [r5, #0x18] - cmp r0, #4 - bhi _08066F7C - lsls r0, r0, #2 - ldr r1, _08066E98 @ =_08066E9C - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08066E98: .4byte _08066E9C -_08066E9C: @ jump table - .4byte _08066EB0 @ case 0 - .4byte _08066EC0 @ case 1 - .4byte _08066EF0 @ case 2 - .4byte _08066F28 @ case 3 - .4byte _08066F58 @ case 4 -_08066EB0: - ldrb r0, [r5, #0x18] - adds r0, #1 - strb r0, [r5, #0x18] - adds r0, r4, #0 - movs r1, #0x16 - bl LoadAnimation - b _08066F7C -_08066EC0: - adds r0, r4, #0 - bl sub_080042B8 - adds r2, r4, #0 - adds r2, #0x5a - ldrb r1, [r2] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _08066F7C - ldrb r0, [r5, #0x18] - adds r0, #1 - strb r0, [r5, #0x18] - movs r0, #0x80 - lsls r0, r0, #0xa - str r0, [r4, #0x20] - ldrb r1, [r2] - movs r0, #0xfe - ands r0, r1 - strb r0, [r2] - movs r0, #0x7c - bl PlaySFX - b _08066F7C -_08066EF0: - movs r1, #0x80 - lsls r1, r1, #1 - adds r0, r4, #0 - movs r2, #0x80 - bl sub_0806F62C - movs r1, #0x80 - lsls r1, r1, #6 - adds r0, r4, #0 - bl sub_08003FC4 - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - bne _08066F1A - adds r0, r4, #0 - bl sub_080042B8 -_08066F1A: - ldr r0, [r4, #0x20] - cmp r0, #0 - bge _08066F7C - ldrb r0, [r5, #0x18] - adds r0, #1 - strb r0, [r5, #0x18] - b _08066F7C -_08066F28: - movs r1, #0x80 - lsls r1, r1, #1 - adds r0, r4, #0 - movs r2, #0x80 - bl sub_0806F62C - adds r0, r4, #0 - bl sub_080042B8 - movs r1, #0x80 - lsls r1, r1, #6 - adds r0, r4, #0 - bl sub_08003FC4 - cmp r0, #0 - bne _08066F7C - ldrb r0, [r5, #0x18] - adds r0, #1 - strb r0, [r5, #0x18] - adds r0, r4, #0 - movs r1, #0x1e - bl LoadAnimation - b _08066F7C -_08066F58: - adds r0, r4, #0 - bl sub_080042B8 - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _08066F7C - ldr r2, _08066F78 @ =gUnk_02033280 - ldrb r1, [r2, #7] - movs r0, #1 - orrs r0, r1 - strb r0, [r2, #7] - b _08066F8C - .align 2, 0 -_08066F78: .4byte gUnk_02033280 -_08066F7C: - adds r0, r4, #0 - adds r0, #0x58 - ldrb r1, [r0] - adds r0, #0x28 - movs r2, #0 - strh r1, [r0] - ldr r0, _08066F90 @ =gUnk_02033280 - strb r2, [r0, #6] -_08066F8C: - pop {r4, r5, pc} - .align 2, 0 -_08066F90: .4byte gUnk_02033280 - - thumb_func_start sub_08066F94 -sub_08066F94: @ 0x08066F94 - push {r4, lr} - ldr r4, _08066F9C @ =gUnk_08110BE0 - b _08066FAC - .align 2, 0 -_08066F9C: .4byte gUnk_08110BE0 -_08066FA0: - ldrh r1, [r4] - adds r4, #2 - ldr r0, _08066FB4 @ =0x00004072 - movs r2, #1 - bl SetTileType -_08066FAC: - ldrh r0, [r4] - cmp r0, #0 - bne _08066FA0 - pop {r4, pc} - .align 2, 0 -_08066FB4: .4byte 0x00004072 - - thumb_func_start sub_08066FB8 -sub_08066FB8: @ 0x08066FB8 - push {r4, lr} - ldr r4, _08066FC0 @ =gUnk_08110BE0 - b _08066FCE - .align 2, 0 -_08066FC0: .4byte gUnk_08110BE0 -_08066FC4: - ldrh r0, [r4] - adds r4, #2 - movs r1, #1 - bl sub_0807BA8C -_08066FCE: - ldrh r0, [r4] - cmp r0, #0 - bne _08066FC4 - pop {r4, pc} - .align 2, 0 diff --git a/include/entity.h b/include/entity.h index 30dd6d97..6b519725 100644 --- a/include/entity.h +++ b/include/entity.h @@ -77,7 +77,7 @@ typedef struct Entity u8 filler[2]; u8 animationList; u8 field_1f; - u32 field_0x20; + s32 field_0x20; s16 nonPlanarMovement; u8 spriteAnimation[3]; struct { @@ -114,9 +114,12 @@ typedef struct Entity u8 field_0x59; union { u8 all; - u8 f0:6; - u8 f1:1; - u8 f2:1; + struct { + u8 f0:1; + u8 f1:5; + u8 f2:1; + u8 f3:1; + } PACKED b; } PACKED frames; u8 gfx; u8 field_0x5c; @@ -130,7 +133,9 @@ typedef struct Entity u8 field_0x68; u8 field_0x69; u16 field_0x6a; - u8 filler4[8]; + u8 field_0x6c; + u8 field_0x6d; + u8 filler4[6]; u32 * heldObjectPtr; u8 filler3[2]; u16 itemCooldown; @@ -142,4 +147,4 @@ typedef struct Entity } Entity; -#endif \ No newline at end of file +#endif diff --git a/linker.ld b/linker.ld index 852a5ffc..9f5cbd53 100644 --- a/linker.ld +++ b/linker.ld @@ -366,7 +366,7 @@ SECTIONS { asm/rope.o(.text); asm/smallPesto.o(.text); asm/acroBandits.o(.text); - asm/bladeTrap.o(.text); + src/bladeTrap.o(.text); asm/keaton.o(.text); asm/crow.o(.text); asm/mulldozer.o(.text); @@ -499,7 +499,7 @@ SECTIONS { asm/ministerPotho.o(.text); asm/npc26.o(.text); asm/vaati.o(.text); - asm/zelda.o(.text); + src/zelda.o(.text); asm/mutoh.o(.text); asm/carpenter.o(.text); asm/castorWildsStatue.o(.text); @@ -509,7 +509,7 @@ SECTIONS { asm/zeldaFollower.o(.text); asm/melari.o(.text); asm/bladeBrothers.o(.text); - asm/cow.o(.text); + src/cow.o(.text); asm/goron.o(.text); asm/goronMerchant.o(.text); asm/gorman.o(.text); diff --git a/src/bladeTrap.c b/src/bladeTrap.c new file mode 100644 index 00000000..ba37b3ae --- /dev/null +++ b/src/bladeTrap.c @@ -0,0 +1,33 @@ +#include "global.h" +#include "entity.h" +#include "entityData.h" + +extern void sub_080A2CC0(); +extern void sub_0806F69C(); +extern void sub_08004488(); +extern Entity * sub_0804B128(); + +void sub_08032358(Entity *ent) +{ + u16 uVar1; + Entity *pEVar2; + u16 *puVar3; + if (ent->action == 0) { + ent->action = 1; + pEVar2 = sub_0804B128((u8)(ent->entityType).parameter1); + ent->attachedEntity = pEVar2; + sub_080A2CC0((EntityData *)ent,&ent->attachedEntity,&ent->heldObjectPtr); + } + if ((ent->direction & 0x80) == 0) { + sub_0806F69C(ent); + } + (u32)puVar3 = &(ent->heldObjectPtr); + uVar1 = *puVar3; + *puVar3 = uVar1 - 1; + if ((u16)(*puVar3) == 0) { + if ((ent->direction & 0x80) == 0) { + sub_08004488(0x74); + } + sub_080A2CC0((EntityData *)ent,&ent->attachedEntity,puVar3); + } +} diff --git a/src/cow.c b/src/cow.c new file mode 100644 index 00000000..a0bb830a --- /dev/null +++ b/src/cow.c @@ -0,0 +1,235 @@ +#include "global.h" +#include "entity.h" +#include "link.h" + +extern void sub_0806ED78(Entity*); +extern void sub_0806920C(Entity*); +extern void sub_080042B8(Entity*); +extern u32 sub_0805ACC0(Entity*); +extern u32 sub_0801E99C(Entity*); +extern void sub_0806924C(Entity*); +extern void sub_080AEF88(Entity*); +extern void sub_0806F1AC(Entity*, u32*); +extern void sub_08078778(Entity*); +extern void sub_080787A8(Entity*, u32); +extern void sub_0806F118(Entity*); +extern void sub_080791D0(); +extern void (*gUnk_08111914[])(Entity*); +extern void (*gUnk_08111928[])(Entity*); +extern u32 gUnk_08111938[]; +extern void LoadAnimation(); +extern void PlaySFX(u32); +extern u32 Random(); +extern u32 UpdateFuseInteraction(Entity*); +extern LinkState gLinkState; + +void sub_08068F98(Entity* ent) { + gUnk_08111914[ent->action](ent); + sub_0806ED78(ent); + sub_0806920C(ent); +} + +void sub_08068FC0(Entity* ent) { + u32 r2; + + ent->action = 1; + ent->animationState = ent->entityType.parameter2; + ent->nonPlanarMovement = 0x40; + + ent->field_0x6d = 0xFF; + + r2 = sub_0805ACC0(ent); + if (r2 == 0) { + u16 x, y; + + x = ent->x.HALF.HI; + *(u16*)&ent->field_0x68 = x; + + y = ent->y.HALF.HI; + ent->field_0x6a = y; + } else { + u32 var1 = r2 >> 16; + //0x68+0x69 probably a SplitWord + *(u16*)&ent->field_0x68 = var1; + ent->field_0x6a = r2; + } + ent->field_0x6c = sub_0801E99C(ent); + + LoadAnimation(ent, ent->animationState + 4); +} + +void sub_08069018(Entity* ent) { + s32 var0; + + if (ent->previousActionFlag == 0) { + ent->previousActionFlag++; + ent->field_0xf = (Random() & 0x3F) + 0x3C; + LoadAnimation(ent, ent->animationState); + } + + sub_080042B8(ent); + var0 = --ent->field_0xf; + if (var0 == 0) { + if (ent->parameter3 == 0) { + ent->action = 2; + } else { + ent->action = 3; + } + ent->previousActionFlag = var0; + } + + sub_0806924C(ent); +} + +void sub_08069068(Entity *ent) { + s32 var0; + + if (ent->previousActionFlag == 0) { + u32 anim; + + ent->previousActionFlag++; + + anim = (Random() & 2) - 1; + anim = (anim + ent->animationState) & 3; + ent->animationState = anim; + ent->direction = anim <<= 3; + + ent->field_0xf = (Random() & 0x3F) + 0x3C; + LoadAnimation(ent, ent->animationState + 4); + } + + sub_080AEF88(ent); + sub_080042B8(ent); + + { + s32 x = ent->x.HALF.HI; + s16 *x2 = (s16 *)&ent->field_0x68; + x -= *x2; + if (x > 16) { + ent->x.HALF.HI = *x2 + 16; + ent->field_0xf = 1; + } + if (x < -16) { + ent->x.HALF.HI = *x2 - 16; + ent->field_0xf = 1; + } + } + { + s32 y = ent->y.HALF.HI; + s16 *y2 = &ent->field_0x6a; + y -= *y2; + if (y > 16) { + ent->y.HALF.HI = *y2 + 16; + ent->field_0xf = 1; + } + if (y < -16) { + ent->y.HALF.HI = *y2 - 16; + ent->field_0xf = 1; + } + } + + var0 = --ent->field_0xf; + if (var0 == 0) { + ent->action = 3; + ent->previousActionFlag = var0; + } + + sub_0806924C(ent); +} + +void sub_08069124(Entity* ent) { + sub_080042B8(ent); + gUnk_08111928[ent->previousActionFlag](ent); + sub_0806924C(ent); +} + +void sub_08069148(Entity* ent) { + u32 var0 = Random() & 3; + var0 += 3; + ent->field_0xf = var0; + ent->previousActionFlag = 1; + LoadAnimation(ent, ent->animationState + 8); +} + +void sub_08069168(Entity* ent) { + if ((s8)ent->frames.all < 0) { + ent->previousActionFlag = 2; + LoadAnimation(ent, ent->animationState + 12); + } +} + +void sub_08069188(Entity* ent) { + if (ent->frames.f2 == 0) return; + ent->frames.all = 0; + + if (((s8) --ent->field_0xf) != 0) return; + ent->previousActionFlag = 3; + LoadAnimation(ent, ent->animationState + 16); +} + +void sub_080691BC(Entity* ent) { + if ((s8)ent->frames.all < 0) { + ent->action = 1; + ent->previousActionFlag = 0; + LoadAnimation(ent, ent->animationState + 4); + } +} + +void sub_080691E0(Entity* ent) { + if (UpdateFuseInteraction(ent) != 0) { + ent->action = 1; + ent->previousActionFlag = 0; + } +} + +void sub_080691F8(Entity* ent) { + u32 var0 = ent->entityType.parameter1; + u32* var1 = gUnk_08111938 + (var0 * 2); + sub_0806F1AC(ent, var1); +} + +void sub_0806920C(Entity* ent) { + //TODO: figure out what bitfield flag this is + u32 var0 = gLinkState.flags.all & 0x80; + u32 var1 = -var0 >> 0x1F; + + if (var1 != ent->field_0x6d) { + if (var1 == 0) { + sub_08078778(ent); + } else { + sub_080787A8(ent, ent->field_0x6c); + } + } + + ent->field_0x6d = var1; +} + +void sub_0806924C(Entity* ent) { + s8 itype = ent->interactType; + if (itype != 0) { + //TODO: figure out what bitfield flag this is + if ((gLinkState.flags.all & 0x80) != 0) { + if (itype == 2) { + ent->action = 4; + sub_0806F118(ent); + } else { + sub_080691F8(ent); + } + } else { + sub_080691F8(ent); + sub_080791D0(); + } + PlaySFX(212); + ent->interactType = 0; + } +} + +void sub_080692A0(Entity* ent) { + if (ent->action == 0) { + ent->action++; + ent->spriteSettings.b.ss0 = 1; + LoadAnimation(ent, 15); + } else { + sub_080042B8(ent); + } +} diff --git a/src/zelda.c b/src/zelda.c new file mode 100644 index 00000000..4400351d --- /dev/null +++ b/src/zelda.c @@ -0,0 +1,237 @@ +#include "global.h" +#include "entity.h" +#include "room.h" + +extern void sub_0805EA78(Entity*, u32); +extern void sub_0805E3A0(Entity*, u32); +extern void sub_0807DD50(Entity*); +extern void sub_0807DD94(Entity*, u32); +extern Entity* sub_0805EB9C(u32, u32); +void CopyPosition(Entity*, Entity*); +void sub_08068680(Entity*, Entity*); +void sub_08068694(Entity*, Entity*); +extern void SetGlobalFlag(u32); +extern Entity* CreateNPC(u32 subtype,u32 parameter1,u32 parameter2); +u32 sub_0806EDC4(Entity* ent); +void DeleteThisEntity(void); +extern Entity* GetEntityByType(u32, u32); +extern void sub_080686C4(Entity*, Entity*); +extern void LoadAnimation(Entity*, u32); +extern void sub_080042B8(Entity*); +extern void sub_0806F62C(Entity*, u32, u32); +extern u32 sub_08003FC4(Entity*, u32); +extern void PlaySFX(u32); +extern void SetTileType(u32, u32, u32); +extern void sub_0807BA8C(u16, u32); + +extern Entity gLinkEntity; +extern RoomControls gRoomControls; + +extern void (*gUnk_08110BD8[])(Entity* ent); +extern u8 gUnk_02033280[]; +extern u16 gUnk_08110BE0[]; + + +void sub_08066CB4(Entity* ent) +{ + gUnk_08110BD8[ent->action](ent); +} + +void sub_08066CCC(Entity *ent) +{ + ent->action = 1; + ent->spriteSettings.b.ss0 = 1; + sub_0805EA78(ent, 7); + sub_0805E3A0(ent, 2); + sub_0807DD50(ent); +} + +void sub_08066CF8(Entity* ent) +{ + sub_0807DD94(ent, 0); +} + +void sub_08066D04(Entity* ent) +{ + ent->parent = sub_0805EB9C(7, 0x2E); +} + +void sub_08066D14(Entity* ent, u32* param_2) +{ + Entity* parent; + + parent = ent->parent; + if (parent != NULL) + { + ent->animationState = parent->animationState; + ent->spriteSettings.b.ss0 = 1; + CopyPosition(parent, ent); + sub_08068680(ent, ent->parent); + param_2[5] = 1; + } + else + { + param_2[5] = 0; + } +} + +void sub_08066D4C(Entity* ent, u32* param_2) +{ + Entity* parent; + + parent = ent->parent; + if (ent->parent != NULL) + { + CopyPosition(ent, parent); + ent->parent->spriteSettings.b.ss0 = 1; + ent->parent->animationState = ent->animationState; + ent->spriteSettings.b.ss0 = 0; + ent->field_0x17 &= 0xFE; + sub_08068694(ent, ent->parent); + param_2[5] = 1; + } + else + { + param_2[5] = 0; + } +} + +void sub_08066D94(Entity* ent) +{ + u32 roomID; + Entity* npc; + + SetGlobalFlag(0x1C); + npc = CreateNPC(0x2E, 0, 0); + if (npc != NULL) + { + npc->animationState = gLinkEntity.animationState; + npc->flags |= 0x20; + npc->animationState = sub_0806EDC4(ent); + roomID = gRoomControls.roomID; + *(u16*)&npc->heldObjectPtr = roomID; + CopyPosition(ent, npc); + } + DeleteThisEntity(); +} + +void sub_08066DE4(Entity* ent) +{ + Entity* pEVar1; + + pEVar1 = sub_0805EB9C(7, 0x2E); + if (pEVar1 != NULL) + { + CopyPosition(ent, pEVar1); + sub_080686C4(ent, pEVar1); + } +} + +void sub_08066E08(Entity* ent) +{ + LoadAnimation(ent, 0x50); + ent->field_0x80 = ent->field_0x58; +} + +void sub_08066E20(Entity* ent) +{ + LoadAnimation(ent, 0x44); + ent->field_0x80 = ent->field_0x58; +} + +void sub_08066E38(Entity* ent) +{ + LoadAnimation(ent, 0x48); + ent->field_0x80 = ent->field_0x58; +} + +void sub_08066E50(Entity* ent) +{ + LoadAnimation(ent, 0x4C); + ent->field_0x80 = ent->field_0x58; +} + +void sub_08066E68(Entity* ent) +{ + LoadAnimation(ent, 0x54); + ent->field_0x80 = ent->field_0x58; +} + +void sub_08066E80(Entity* ent, u8* param_2) +{ + switch(param_2[0x18]) + { + case 0: + param_2[0x18]++; + LoadAnimation(ent, 0x16); + break; + case 1: + sub_080042B8(ent); + if (ent->frames.all & 1) + { + param_2[0x18]++; + ent->field_0x20 = 0x20000; + ent->frames.all &= 0xFE; + PlaySFX(0x7C); + } + break; + case 2: + sub_0806F62C(ent, 0x100, 0x80); + sub_08003FC4(ent, 0x2000); + if (!(ent->frames.all & 1)) + { + sub_080042B8(ent); + } + if (ent->field_0x20 < 0) + { + param_2[0x18]++; + } + break; + case 3: + sub_0806F62C(ent, 0x100, 0x80); + sub_080042B8(ent); + if (sub_08003FC4(ent, 0x2000) == 0) + { + param_2[0x18]++; + LoadAnimation(ent, 0x1E); + } + break; + case 4: + sub_080042B8(ent); + if (ent->frames.b.f3) + { + gUnk_02033280[7] |= 1; + return; + } + } + ent->field_0x80 = ent->field_0x58; + gUnk_02033280[6] = 0; +} + +void sub_08066F94(void) +{ + u16 uVar1; + u16* puVar2; + + puVar2 = gUnk_08110BE0; + while (*puVar2 != 0) + { + uVar1 = *puVar2; + puVar2++; + SetTileType(16498, uVar1, 1); + } +} + +void sub_08066FB8(void) +{ + u16 uVar1; + u16* puVar2; + + puVar2 = gUnk_08110BE0; + while (*puVar2 != 0) + { + uVar1 = *puVar2; + puVar2++; + sub_0807BA8C(uVar1, 1); + } +}