From d799c4cb2dd8f0d8ac54a52f1b2e935aed31acbd Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Sun, 17 Apr 2022 15:59:15 +0300 Subject: [PATCH 01/63] Match lilypadLarge functions and add const data --- .../lilypadLarge/sub_080855E8.inc | 564 ------------------ .../lilypadLarge/sub_08085D60.inc | 139 ----- assets/assets.json | 15 - data/const/object/lilypadLarge.s | 27 - linker.ld | 2 +- src/object/lilypadLarge.c | 287 ++++++++- 6 files changed, 270 insertions(+), 764 deletions(-) delete mode 100644 asm/non_matching/lilypadLarge/sub_080855E8.inc delete mode 100644 asm/non_matching/lilypadLarge/sub_08085D60.inc delete mode 100644 data/const/object/lilypadLarge.s diff --git a/asm/non_matching/lilypadLarge/sub_080855E8.inc b/asm/non_matching/lilypadLarge/sub_080855E8.inc deleted file mode 100644 index 2c8e391c..00000000 --- a/asm/non_matching/lilypadLarge/sub_080855E8.inc +++ /dev/null @@ -1,564 +0,0 @@ - .syntax unified - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - adds r7, r0, #0 - ldrb r1, [r7, #0x10] - movs r0, #0x20 - orrs r0, r1 - strb r0, [r7, #0x10] - ldr r6, _0808564C @ =gPlayerEntity - adds r0, r7, #0 - adds r1, r6, #0 - movs r2, #0x18 - bl sub_0806FC80 - adds r1, r0, #0 - cmp r1, #0 - beq _080856EE - ldr r3, _08085650 @ =gPlayerState - ldr r0, [r3, #0x30] - movs r1, #2 - orrs r0, r1 - str r0, [r3, #0x30] - ldr r4, [r6, #0x34] - cmp r4, #0 - beq _0808561C - b _080857CE -_0808561C: - adds r5, r3, #0 - adds r5, #0x26 - ldrb r0, [r5] - cmp r0, #0 - beq _08085634 - adds r2, r6, #0 - adds r2, #0x3c - ldrb r1, [r2] - movs r0, #0xfb - ands r0, r1 - strb r0, [r2] - strb r4, [r5] -_08085634: - adds r0, r3, #0 - adds r0, #0x84 - str r7, [r0] - adds r0, r7, #0 - adds r0, #0x38 - ldrb r0, [r0] - cmp r0, #1 - bne _08085654 - adds r0, r6, #0 - bl ResetCollisionLayer - b _0808565A - .align 2, 0 -_0808564C: .4byte gPlayerEntity -_08085650: .4byte gPlayerState -_08085654: - adds r0, r6, #0 - bl sub_08004542 -_0808565A: - ldrb r0, [r7, #0xf] - cmp r0, #0 - bne _0808568C - movs r0, #4 - strb r0, [r7, #0xf] -_08085664: - adds r0, r7, #0 - movs r1, #8 - movs r2, #0xa - bl sub_080A2AF4 - ldrb r0, [r7, #0xf] - subs r0, #1 - strb r0, [r7, #0xf] - lsls r0, r0, #0x18 - lsrs r2, r0, #0x18 - cmp r2, #0 - bne _08085664 - movs r0, #1 - strb r0, [r7, #0xf] - ldrb r1, [r7, #0xe] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r7, #0xe] - str r2, [r7, #0x70] - str r2, [r7, #0x6c] -_0808568C: - ldr r2, _080856B8 @ =gPlayerState - ldrb r0, [r2, #0x1c] - cmp r0, #3 - beq _08085696 - b _080857CE -_08085696: - ldr r1, _080856BC @ =gUnk_08120620 - ldrb r0, [r2, #0x1d] - subs r0, #1 - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r4, [r0] - ldr r0, _080856C0 @ =gPlayerEntity - ldrb r0, [r0, #0x14] - movs r1, #6 - ands r1, r0 - cmp r1, #2 - beq _080856DE - cmp r1, #2 - bgt _080856C4 - cmp r1, #0 - beq _080856D6 - b _080857CE - .align 2, 0 -_080856B8: .4byte gPlayerState -_080856BC: .4byte gUnk_08120620 -_080856C0: .4byte gPlayerEntity -_080856C4: - cmp r1, #4 - beq _080856CE - cmp r1, #6 - beq _080856E6 - b _080857CE -_080856CE: - ldr r0, [r7, #0x70] - subs r0, r0, r4 - str r0, [r7, #0x70] - b _080857CE -_080856D6: - ldr r0, [r7, #0x70] - adds r0, r0, r4 - str r0, [r7, #0x70] - b _080857CE -_080856DE: - ldr r0, [r7, #0x6c] - subs r0, r0, r4 - str r0, [r7, #0x6c] - b _080857CE -_080856E6: - ldr r0, [r7, #0x6c] - adds r0, r0, r4 - str r0, [r7, #0x6c] - b _080857CE -_080856EE: - ldrb r0, [r7, #0xf] - cmp r0, #0 - beq _080856FC - strb r1, [r7, #0xf] - movs r0, #0x83 - bl SoundReq -_080856FC: - adds r2, r7, #0 - adds r2, #0x41 - ldrb r1, [r2] - movs r0, #0x7f - ands r0, r1 - mov r8, r2 - cmp r0, #0x13 - bne _080857C8 - movs r0, #0x2e - ldrsh r1, [r6, r0] - ldr r3, _08085758 @ =gUnk_08126EE4 - ldrb r2, [r6, #0x14] - movs r0, #0xe - ands r0, r2 - adds r0, r0, r3 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r5, r1, r0 - movs r0, #0x32 - ldrsh r1, [r6, r0] - movs r0, #1 - orrs r0, r2 - adds r0, r0, r3 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r3, r1, r0 - movs r1, #0x2e - ldrsh r0, [r7, r1] - movs r2, #0x32 - ldrsh r1, [r7, r2] - adds r2, r5, #0 - bl CalculateDirectionTo - strb r0, [r7, #0x15] - ldr r0, _0808575C @ =gPlayerState - ldrb r0, [r0, #0x1d] - cmp r0, #2 - beq _0808576A - cmp r0, #2 - bgt _08085760 - cmp r0, #1 - beq _08085770 - b _08085774 - .align 2, 0 -_08085758: .4byte gUnk_08126EE4 -_0808575C: .4byte gPlayerState -_08085760: - cmp r0, #3 - bne _08085774 - movs r4, #0x80 - lsls r4, r4, #3 - b _08085774 -_0808576A: - movs r4, #0xc0 - lsls r4, r4, #2 - b _08085774 -_08085770: - movs r4, #0x80 - lsls r4, r4, #2 -_08085774: - ldr r6, _080858A8 @ =gSineTable - ldrb r0, [r7, #0x15] - lsls r0, r0, #4 - adds r0, r0, r6 - movs r1, #0 - ldrsh r0, [r0, r1] - lsls r4, r4, #0x10 - asrs r4, r4, #0x18 - adds r1, r4, #0 - bl FixedMul - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - movs r5, #0x80 - lsls r5, r5, #1 - adds r1, r5, #0 - bl FixedDiv - lsls r0, r0, #0x10 - asrs r0, r0, #8 - ldr r1, [r7, #0x6c] - adds r1, r1, r0 - str r1, [r7, #0x6c] - ldrb r0, [r7, #0x15] - lsls r0, r0, #4 - adds r0, #0x80 - adds r0, r0, r6 - movs r2, #0 - ldrsh r0, [r0, r2] - adds r1, r4, #0 - bl FixedMul - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - adds r1, r5, #0 - bl FixedDiv - lsls r0, r0, #0x10 - asrs r0, r0, #8 - ldr r1, [r7, #0x70] - subs r1, r1, r0 - str r1, [r7, #0x70] -_080857C8: - movs r0, #0 - mov r1, r8 - strb r0, [r1] -_080857CE: - ldr r0, [r7, #0x2c] - str r0, [r7, #0x54] - ldr r0, [r7, #0x30] - str r0, [r7, #0x50] - ldr r0, [r7, #0x6c] - cmp r0, #0 - bne _080857E4 - ldr r0, [r7, #0x70] - cmp r0, #0 - bne _080857E4 - b _080859F4 -_080857E4: - ldr r0, [r7, #0x70] - ldr r1, _080858AC @ =0xFFFF0000 - cmp r0, r1 - blt _080857F4 - movs r1, #0x80 - lsls r1, r1, #9 - cmp r0, r1 - ble _080857F6 -_080857F4: - str r1, [r7, #0x70] -_080857F6: - ldr r0, [r7, #0x6c] - ldr r1, _080858AC @ =0xFFFF0000 - cmp r0, r1 - blt _08085806 - movs r1, #0x80 - lsls r1, r1, #9 - cmp r0, r1 - ble _08085808 -_08085806: - str r1, [r7, #0x6c] -_08085808: - ldr r0, _080858B0 @ =gRoomTransition - ldr r0, [r0] - movs r1, #0xf - ands r0, r1 - cmp r0, #0 - bne _0808581A - adds r0, r7, #0 - bl CreateLargeWaterTrace -_0808581A: - ldr r0, [r7, #0x2c] - ldr r1, [r7, #0x6c] - adds r5, r0, r1 - ldr r1, [r7, #0x30] - ldr r2, [r7, #0x70] - adds r3, r1, r2 - adds r2, r5, #0 - bl CalculateDirectionTo - strb r0, [r7, #0x15] - ldr r0, [r7, #0x6c] - lsls r0, r0, #8 - asrs r0, r0, #0x10 - movs r4, #0x80 - lsls r4, r4, #1 - adds r1, r4, #0 - bl FixedMul - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - ldr r5, _080858A8 @ =gSineTable - ldrb r1, [r7, #0x15] - lsls r1, r1, #4 - adds r1, r1, r5 - movs r2, #0 - ldrsh r1, [r1, r2] - bl FixedDiv - strh r0, [r7, #0x24] - ldr r0, [r7, #0x70] - lsls r0, r0, #8 - asrs r0, r0, #0x10 - adds r1, r4, #0 - bl FixedMul - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - ldrb r1, [r7, #0x15] - lsls r1, r1, #4 - adds r1, #0x80 - adds r1, r1, r5 - movs r2, #0 - ldrsh r1, [r1, r2] - bl FixedDiv - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - rsbs r4, r0, #0 - movs r1, #0x24 - ldrsh r0, [r7, r1] - cmp r4, r0 - ble _08085884 - strh r4, [r7, #0x24] -_08085884: - ldrb r0, [r7, #0xb] - cmp r0, #0 - beq _080858BC - adds r0, r7, #0 - adds r0, #0x7e - movs r2, #0 - ldrsh r1, [r0, r2] - ldr r0, _080858B4 @ =0x00000FFF - cmp r1, r0 - bgt _080858B8 - movs r0, #0x24 - ldrsh r1, [r7, r0] - lsls r1, r1, #0xc - ldr r0, [r7, #0x7c] - adds r0, r0, r1 - str r0, [r7, #0x7c] - b _080858E0 - .align 2, 0 -_080858A8: .4byte gSineTable -_080858AC: .4byte 0xFFFF0000 -_080858B0: .4byte gRoomTransition -_080858B4: .4byte 0x00000FFF -_080858B8: - movs r0, #0 - b _080858DE -_080858BC: - adds r0, r7, #0 - adds r0, #0x7e - movs r2, #0 - ldrsh r1, [r0, r2] - ldr r0, _080858D8 @ =0xFFFFF000 - cmp r1, r0 - ble _080858DC - movs r0, #0x24 - ldrsh r1, [r7, r0] - lsls r1, r1, #0xc - ldr r0, [r7, #0x7c] - subs r0, r0, r1 - str r0, [r7, #0x7c] - b _080858E0 - .align 2, 0 -_080858D8: .4byte 0xFFFFF000 -_080858DC: - movs r0, #1 -_080858DE: - strb r0, [r7, #0xb] -_080858E0: - adds r0, r7, #0 - bl sub_08085EFC - adds r0, r7, #0 - bl ProcessMovement4 - ldr r1, [r7, #0x54] - ldr r0, [r7, #0x2c] - cmp r1, r0 - bne _0808590C - adds r0, r7, #0 - adds r0, #0x85 - ldrb r1, [r0] - adds r2, r0, #0 - cmp r1, #2 - bne _08085906 - movs r0, #0 - str r0, [r7, #0x6c] - b _08085916 -_08085906: - adds r0, r1, #1 - strb r0, [r2] - b _08085916 -_0808590C: - adds r1, r7, #0 - adds r1, #0x85 - movs r0, #0 - strb r0, [r1] - adds r2, r1, #0 -_08085916: - ldr r1, [r7, #0x50] - ldr r0, [r7, #0x30] - cmp r1, r0 - bne _0808592E - ldrb r0, [r2] - cmp r0, #2 - bne _0808592A - movs r0, #0 - str r0, [r7, #0x70] - b _08085932 -_0808592A: - adds r0, #1 - b _08085930 -_0808592E: - movs r0, #0 -_08085930: - strb r0, [r2] -_08085932: - ldr r0, _0808595C @ =gPlayerState - ldr r0, [r0, #0x30] - movs r1, #2 - ands r0, r1 - cmp r0, #0 - beq _08085944 - adds r0, r7, #0 - bl sub_08085F1C -_08085944: - ldr r1, [r7, #0x6c] - cmp r1, #0 - beq _08085998 - cmp r1, #0 - bge _0808596E - movs r0, #0x80 - rsbs r0, r0, #0 - cmp r1, r0 - ble _08085960 - movs r0, #0 - b _08085964 - .align 2, 0 -_0808595C: .4byte gPlayerState -_08085960: - adds r0, r1, #0 - adds r0, #0x80 -_08085964: - str r0, [r7, #0x6c] - ldrh r2, [r7, #0x2a] - movs r1, #0xe0 - lsls r1, r1, #4 - b _08085982 -_0808596E: - cmp r1, #0x7f - bhi _08085976 - movs r0, #0 - b _0808597A -_08085976: - adds r0, r1, #0 - subs r0, #0x80 -_0808597A: - str r0, [r7, #0x6c] - ldrh r2, [r7, #0x2a] - movs r1, #0xe0 - lsls r1, r1, #8 -_08085982: - adds r0, r1, #0 - ands r0, r2 - cmp r0, r1 - bne _08085998 - ldr r0, [r7, #0x6c] - cmp r0, #0 - bge _08085992 - adds r0, #3 -_08085992: - asrs r0, r0, #2 - rsbs r0, r0, #0 - str r0, [r7, #0x6c] -_08085998: - ldr r1, [r7, #0x70] - cmp r1, #0 - beq _080859E6 - cmp r1, #0 - bge _080859C0 - movs r0, #0x80 - rsbs r0, r0, #0 - cmp r1, r0 - ble _080859AE - movs r0, #0 - b _080859B2 -_080859AE: - adds r0, r1, #0 - adds r0, #0x80 -_080859B2: - str r0, [r7, #0x70] - ldrh r1, [r7, #0x2a] - movs r0, #0xe - ands r0, r1 - cmp r0, #0xe - bne _080859E6 - b _080859D8 -_080859C0: - cmp r1, #0x7f - bhi _080859C8 - movs r0, #0 - b _080859CC -_080859C8: - adds r0, r1, #0 - subs r0, #0x80 -_080859CC: - str r0, [r7, #0x70] - ldrh r1, [r7, #0x2a] - movs r0, #0xe0 - ands r0, r1 - cmp r0, #0xe0 - bne _080859E6 -_080859D8: - ldr r0, [r7, #0x70] - cmp r0, #0 - bge _080859E0 - adds r0, #3 -_080859E0: - asrs r0, r0, #2 - rsbs r0, r0, #0 - str r0, [r7, #0x70] -_080859E6: - adds r0, r7, #0 - bl sub_08085D28 - adds r0, r7, #0 - bl sub_08085D60 - b _08085A0A -_080859F4: - ldr r0, _08085A18 @ =gRoomTransition - ldr r0, [r0] - movs r1, #0x1f - ands r0, r1 - cmp r0, #0 - bne _08085A0A - adds r0, r7, #0 - movs r1, #8 - movs r2, #0xa - bl sub_080A2AF4 -_08085A0A: - adds r0, r7, #0 - bl sub_08085F48 - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_08085A18: .4byte gRoomTransition - .syntax divided diff --git a/asm/non_matching/lilypadLarge/sub_08085D60.inc b/asm/non_matching/lilypadLarge/sub_08085D60.inc deleted file mode 100644 index 334ce788..00000000 --- a/asm/non_matching/lilypadLarge/sub_08085D60.inc +++ /dev/null @@ -1,139 +0,0 @@ - .syntax unified - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - adds r5, r0, #0 - ldr r2, _08085D94 @ =gPlayerState - ldr r0, [r2, #0x30] - movs r1, #2 - ands r0, r1 - cmp r0, #0 - beq _08085E64 - adds r0, r2, #0 - adds r0, #0xa8 - ldrb r0, [r0] - cmp r0, #0x12 - beq _08085E64 - ldrb r0, [r2, #2] - cmp r0, #0 - bne _08085E64 - ldrb r1, [r5, #0x15] - movs r0, #7 - ands r0, r1 - cmp r0, #0 - bne _08085D98 - ldrb r6, [r5, #0x15] - adds r4, r6, #0 - b _08085DB0 - .align 2, 0 -_08085D94: .4byte gPlayerState -_08085D98: - movs r0, #0x10 - ands r0, r1 - movs r4, #8 - cmp r0, #0 - beq _08085DA4 - movs r4, #0x18 -_08085DA4: - ldrb r0, [r5, #0x15] - subs r0, #8 - movs r6, #0x10 - cmp r0, #0x10 - ble _08085DB0 - movs r6, #0 -_08085DB0: - cmp r4, #0x18 - beq _08085DB8 - cmp r4, #8 - bne _08085E20 -_08085DB8: - lsrs r3, r4, #2 - ldr r1, _08085E10 @ =gUnk_08120638 - adds r0, r3, r1 - movs r7, #0 - ldrsb r7, [r0, r7] - adds r0, r3, #1 - adds r0, r0, r1 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - mov r8, r0 - adds r0, r5, #0 - adds r1, r7, #0 - mov r2, r8 - bl sub_080B1AF0 - cmp r0, #0xff - bne _08085E20 - movs r1, #0x2e - ldrsh r0, [r5, r1] - ldr r2, _08085E14 @ =gRoomControls - ldrh r1, [r2, #6] - subs r0, r0, r1 - adds r0, r0, r7 - movs r3, #0x32 - ldrsh r1, [r5, r3] - ldrh r2, [r2, #8] - subs r1, r1, r2 - add r1, r8 - adds r2, r4, #0 - movs r3, #5 - bl sub_080806BC - cmp r0, #0 - bne _08085E1C - ldr r0, _08085E18 @ =gPlayerEntity - lsrs r1, r4, #3 - bl sub_0807BD14 - cmp r0, #0 - beq _08085E20 - strb r4, [r5, #0x15] - b _08085E52 - .align 2, 0 -_08085E10: .4byte gUnk_08120638 -_08085E14: .4byte gRoomControls -_08085E18: .4byte gPlayerEntity -_08085E1C: - strb r4, [r5, #0x15] - b _08085E6C -_08085E20: - cmp r6, #0 - beq _08085E28 - cmp r6, #0x10 - bne _08085E6C -_08085E28: - lsrs r3, r6, #2 - ldr r2, _08085E5C @ =gUnk_08120638 - adds r0, r3, r2 - movs r1, #0 - ldrsb r1, [r0, r1] - adds r0, r3, #1 - adds r0, r0, r2 - movs r2, #0 - ldrsb r2, [r0, r2] - adds r0, r5, #0 - bl sub_080B1AF0 - cmp r0, #0xff - bne _08085E6C - ldr r0, _08085E60 @ =gPlayerEntity - lsrs r1, r6, #3 - bl sub_0807BD14 - cmp r0, #0 - beq _08085E6C - strb r6, [r5, #0x15] -_08085E52: - adds r0, r5, #0 - bl sub_08085E74 - b _08085E6C - .align 2, 0 -_08085E5C: .4byte gUnk_08120638 -_08085E60: .4byte gPlayerEntity -_08085E64: - ldrb r1, [r5, #0x10] - movs r0, #0xdf - ands r0, r1 - strb r0, [r5, #0x10] -_08085E6C: - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7, pc} - .align 2, 0 - .syntax divided diff --git a/assets/assets.json b/assets/assets.json index 31faaf38..402901aa 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -41971,21 +41971,6 @@ "size": 4, "type": "animation" }, - { - "path": "lilypadLarge/gUnk_08120620.bin", - "start": 1181216, - "size": 12 - }, - { - "path": "lilypadLarge/gUnk_08120638.bin", - "start": 1181240, - "size": 8 - }, - { - "path": "lilypadLarge/gUnk_08120640.bin", - "start": 1181248, - "size": 8 - }, { "path": "evilSpirit/gUnk_08120678.bin", "start": 1181304, diff --git a/data/const/object/lilypadLarge.s b/data/const/object/lilypadLarge.s deleted file mode 100644 index 59a23b7b..00000000 --- a/data/const/object/lilypadLarge.s +++ /dev/null @@ -1,27 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08120608:: @ 08120608 - .4byte sub_08085504 - .4byte sub_080855E8 - .4byte sub_08085A1C - .4byte sub_08085C5C - .4byte sub_08085CDC - .4byte sub_08085D10 - -gUnk_08120620:: @ 08120620 - .incbin "lilypadLarge/gUnk_08120620.bin" - -gUnk_0812062C:: @ 0812062C - .4byte sub_08085A44 - .4byte sub_08085A98 - .4byte sub_08085B40 - -gUnk_08120638:: @ 08120638 - .incbin "lilypadLarge/gUnk_08120638.bin" - -gUnk_08120640:: @ 08120640 - .incbin "lilypadLarge/gUnk_08120640.bin" diff --git a/linker.ld b/linker.ld index f847aa6f..6d594db6 100644 --- a/linker.ld +++ b/linker.ld @@ -1352,7 +1352,7 @@ SECTIONS { src/object/object12.o(.rodata); src/object/railtrack.o(.rodata); data/animations/object/railtrack.o(.rodata); - data/const/object/lilypadLarge.o(.rodata); + src/object/lilypadLarge.o(.rodata); src/object/object15.o(.rodata); src/object/floatingPlatform.o(.rodata); src/object/object17.o(.rodata); diff --git a/src/object/lilypadLarge.c b/src/object/lilypadLarge.c index e447e036..2e478e2c 100644 --- a/src/object/lilypadLarge.c +++ b/src/object/lilypadLarge.c @@ -27,12 +27,7 @@ typedef struct { u8 unk_85; } LilypadLargeEntity; -extern void (*const gUnk_08120608[])(LilypadLargeEntity*); -extern Hitbox gUnk_08120640; -extern void (*const gUnk_0812062C[])(LilypadLargeEntity*); -extern u8 gUnk_08120638[]; extern u8 gUnk_08126EE4[]; -extern u32 gUnk_08120620[]; void sub_080855E8(LilypadLargeEntity*); void sub_08085CDC(LilypadLargeEntity*); @@ -42,11 +37,25 @@ void sub_08085E74(LilypadLargeEntity*); void sub_08085F48(LilypadLargeEntity*); void sub_08085D28(LilypadLargeEntity*); void sub_08085D60(LilypadLargeEntity*); +void sub_08085504(LilypadLargeEntity*); +void sub_080855E8(LilypadLargeEntity*); +void sub_08085A1C(LilypadLargeEntity*); +void sub_08085C5C(LilypadLargeEntity*); +void sub_08085CDC(LilypadLargeEntity*); +void sub_08085D10(LilypadLargeEntity*); +void sub_08085B40(LilypadLargeEntity*); +void sub_08085A98(LilypadLargeEntity*); +void sub_08085A44(LilypadLargeEntity*); void LilypadLarge(LilypadLargeEntity* this) { - gUnk_08120608[super->action](this); + static void (*const actionFuncs[])(LilypadLargeEntity*) = { + sub_08085504, sub_080855E8, sub_08085A1C, sub_08085C5C, sub_08085CDC, sub_08085D10, + }; + actionFuncs[super->action](this); } +static const Hitbox gUnk_08120640; + void sub_08085504(LilypadLargeEntity* this) { if (super->type == 0xff) { if (GetInventoryValue(ITEM_FLIPPERS)) { @@ -79,7 +88,7 @@ void sub_08085504(LilypadLargeEntity* this) { super->action = 1; super->speed = 0x100; super->spritePriority.b0 = 6; - super->hitbox = &gUnk_08120640; + super->hitbox = (Hitbox*)&gUnk_08120640; super->flags |= ENT_COLLIDE; super->collisionFlags = 7; super->hitType = 1; @@ -92,10 +101,245 @@ void sub_08085504(LilypadLargeEntity* this) { sub_080855E8(this); } -ASM_FUNC("asm/non_matching/lilypadLarge/sub_080855E8.inc", void sub_080855E8(LilypadLargeEntity* this)); +void sub_080855E8(LilypadLargeEntity* this) { + static const u32 gUnk_08120620[] = { + 0x5000, + 0x18000, + 0x28000, + }; + s16 sVar3; + u32 uVar1; + u16 uVar8; + s32 sVar10; + u32 uVar5; + u32 tmp; + u32 uVar4; + + super->flags |= 0x20; + if (sub_0806FC80(super, &gPlayerEntity, 0x18) != 0) { + + gPlayerState.flags |= 2; + if (gPlayerEntity.z.WORD == 0) { + if (gPlayerState.swim_state != 0) { + gPlayerEntity.collisionFlags &= 0xfb; + gPlayerState.swim_state = 0; + } + *(u32*)&gPlayerState.field_0x82[2] = (u32)this; // TODO + if (super->collisionLayer == 1) { + ResetCollisionLayer(&gPlayerEntity); + } else { + sub_08004542(&gPlayerEntity); + } + if (super->subtimer == 0) { + super->subtimer = 4; + while (super->subtimer != 0) { + sub_080A2AF4(super, 8, 10); + super->subtimer--; + } + super->subtimer = 1; + super->timer |= 0x80; + this->unk_70 = 0; + this->unk_6c = 0; + } + if (gPlayerState.field_0x1c == 3) { + tmp = gUnk_08120620[gPlayerState.gustJarSpeed - 1]; + switch (gPlayerEntity.animationState & 6) { + case 4: + this->unk_70 -= tmp; + break; + case 0: + this->unk_70 += tmp; + break; + case 2: + this->unk_6c -= tmp; + break; + case 6: + this->unk_6c += tmp; + break; + } + } + } + + } else { + if (super->subtimer != 0) { + super->subtimer = 0; + SoundReq(SFX_WATER_WALK); + } + if ((super->contactFlags & 0x7f) == 0x13) { + sVar10 = gPlayerEntity.x.HALF.HI + (s8)gUnk_08126EE4[gPlayerEntity.animationState & 0xe]; + uVar4 = gPlayerEntity.y.HALF.HI + (s8)gUnk_08126EE4[gPlayerEntity.animationState | 1]; + super->direction = CalculateDirectionTo(super->x.HALF.HI, super->y.HALF.HI, sVar10, uVar4); + + switch (gPlayerState.gustJarSpeed) { + case 3: + tmp = 0x400; + break; + case 2: + tmp = 0x300; + break; + case 1: + tmp = 0x200; + break; + } + + //! @bug: tmp could be uninitialized here + sVar3 = FixedMul(gSineTable[(u32)super->direction * 8], ((s16)tmp) >> 8); + sVar3 = FixedDiv(sVar3, 0x100); + this->unk_6c = this->unk_6c + (((s32)sVar3 << 0x10) >> 8); + sVar3 = FixedMul(gSineTable[(u32)super->direction * 8 + 0x40], ((s16)tmp) >> 8); + sVar3 = FixedDiv(sVar3, 0x100); + this->unk_70 = this->unk_70 - (((s32)sVar3 << 0x10) >> 8); + } + super->contactFlags = 0; + } + super->child = (Entity*)super->x.WORD; + super->parent = (Entity*)super->y.WORD; + if (this->unk_6c != 0 || this->unk_70 != 0) { + if ((this->unk_70 < -0x10000)) { + this->unk_70 = -0x10000; + } else if ((this->unk_70) > 0x10000) { + this->unk_70 = 0x10000; + } + + if ((this->unk_6c < -0x10000)) { + this->unk_6c = -0x10000; + } else if ((this->unk_6c) > 0x10000) { + this->unk_6c = 0x10000; + } + + if ((gRoomTransition.frameCount & 0xfU) == 0) { + CreateLargeWaterTrace(super); + } + sVar10 = super->x.WORD + this->unk_6c; + uVar4 = super->y.WORD + this->unk_70; + super->direction = CalculateDirectionTo(super->x.WORD, super->y.WORD, sVar10, uVar4); + sVar3 = FixedMul((s16)((this->unk_6c << 8) >> 0x10), 0x100); + sVar3 = FixedDiv(sVar3, gSineTable[(u32)super->direction * 8]); + super->speed = sVar3; + sVar3 = FixedMul((s16)((this->unk_70 << 8) >> 0x10), 0x100); + sVar3 = FixedDiv(sVar3, gSineTable[(u32)super->direction * 8 + 0x40]); + tmp = -sVar3; + if ((s32)tmp > super->speed) { + super->speed = tmp; + } + + if (super->type2 != 0) { + if (this->unk_7c.HALF.HI < 0x1000) { + this->unk_7c.WORD += super->speed * 0x1000; + } else { + super->type2 = 0; + } + } else { + if (this->unk_7c.HALF.HI > -0x1000) { + this->unk_7c.WORD += super->speed * -0x1000; + } else { + super->type2 = 1; + } + } + + sub_08085EFC(this); + ProcessMovement4(super); + if (super->child == (Entity*)super->x.WORD) { + if (this->unk_85 == 2) { + this->unk_6c = 0; + } else { + this->unk_85++; + } + } else { + this->unk_85 = 0; + } + + if (super->parent == (Entity*)super->y.WORD) { + if (this->unk_85 == 2) { + this->unk_70 = 0; + } else { + this->unk_85++; + } + } else { + this->unk_85 = 0; + } + + if ((gPlayerState.flags & 2) != 0) { + sub_08085F1C(this); + } + + if (this->unk_6c != 0) { + if (this->unk_6c < 0) { + if (this->unk_6c > -0x80) { + this->unk_6c = 0; + } else { + this->unk_6c += 0x80; + } + if ((super->collisions & 0xe00) == 0xe00) { + s32 tmp = this->unk_6c; + if (this->unk_6c < 0) { + tmp += 3; + } + this->unk_6c = -(tmp >> 2); + } + } else { + if (this->unk_6c < 0x80u) { + this->unk_6c = 0; + } else { + this->unk_6c -= 0x80; + } + if ((super->collisions & 0xe000) == 0xe000) { + s32 tmp = this->unk_6c; + if (this->unk_6c < 0) { + tmp += 3; + } + this->unk_6c = -(tmp >> 2); + } + } + } + if (this->unk_70 != 0) { + if ((s32)this->unk_70 < 0) { + if ((s32)this->unk_70 > -0x80) { + this->unk_70 = 0; + } else { + this->unk_70 += 0x80; + } + if ((super->collisions & 0xe) == 0xe) { + u32 tmp2 = this->unk_70; + if ((s32)this->unk_70 < 0) { + tmp2 += 3; + } + this->unk_70 = -((s32)tmp2 >> 2); + } + } else { + if (this->unk_70 < 0x80u) { + this->unk_70 = 0; + } else { + this->unk_70 -= 0x80; + } + if ((super->collisions & 0xe0) == 0xe0) { + // goto _080859D8; + u32 tmp2 = this->unk_70; + if ((s32)this->unk_70 < 0) { + tmp2 += 3; + } + this->unk_70 = -((s32)tmp2 >> 2); + } + } + } + sub_08085D28(this); + sub_08085D60(this); + } else { + end: + if ((gRoomTransition.frameCount & 0x1fU) == 0) { + sub_080A2AF4(super, 8, 10); + } + } + sub_08085F48(this); +} void sub_08085A1C(LilypadLargeEntity* this) { - gUnk_0812062C[super->subAction](this); + static void (*const subActionFuncs[])(LilypadLargeEntity*) = { + sub_08085A44, + sub_08085A98, + sub_08085B40, + }; + subActionFuncs[super->subAction](this); gPlayerState.flags |= PL_FLAGS2; sub_08078B48(); } @@ -236,9 +480,15 @@ void sub_08085D28(LilypadLargeEntity* this) { } } -NONMATCH("asm/non_matching/lilypadLarge/sub_08085D60.inc", void sub_08085D60(LilypadLargeEntity* this)) { +void sub_08085D60(LilypadLargeEntity* this) { + static const s8 gUnk_08120638[] = { + 0, -24, 24, 0, 0, 24, -24, 0, + }; u32 r4; // horizontal direction? u32 r6; // vertical direction? + u32 tmp; + s32 tmpX, tmpX2; + s32 tmpY, tmpY2; if ((gPlayerState.flags & PL_FLAGS2) != 0) { if (gPlayerState.framestate != PL_STATE_DIE) { if (gPlayerState.jump_status == 0) { @@ -258,9 +508,9 @@ NONMATCH("asm/non_matching/lilypadLarge/sub_08085D60.inc", void sub_08085D60(Lil } } if (r4 == DirectionWest || r4 == DirectionEast) { // Handle horizontal - u32 tmp = r4 >> 2; - s32 tmpX = gUnk_08120638[tmp]; - s32 tmpY = gUnk_08120638[tmp + 1]; + tmp = r4 >> 2; + tmpX = gUnk_08120638[tmp]; + tmpY = gUnk_08120638[tmp + 1]; if (sub_080B1AF0(super, tmpX, tmpY) == 0xff) { if (sub_080806BC((super->x.HALF.HI - gRoomControls.origin_x) + tmpX, @@ -277,10 +527,10 @@ NONMATCH("asm/non_matching/lilypadLarge/sub_08085D60.inc", void sub_08085D60(Lil } } if (r6 == DirectionNorth || r6 == DirectionSouth) { // Handle vertical - u32 tmp = r6 >> 2; - s32 tmpX = (u8)gUnk_08120638[tmp]; - s32 tmpY = gUnk_08120638[tmp + 1]; - if (sub_080B1AF0(super, tmpX, tmpY) == 0xff) { + tmp = r6 >> 2; + tmpX2 = gUnk_08120638[tmp]; + tmpY2 = gUnk_08120638[tmp + 1]; + if (sub_080B1AF0(super, tmpX2, tmpY2) == 0xff) { if (sub_0807BD14(&gPlayerEntity, r6 >> 3) != 0) { super->direction = (u8)r6; sub_08085E74(this); @@ -293,7 +543,6 @@ NONMATCH("asm/non_matching/lilypadLarge/sub_08085D60.inc", void sub_08085D60(Lil } super->flags &= ~ENT_PERSIST; } -END_NONMATCH void sub_08085E74(LilypadLargeEntity* this) { super->flags |= ENT_PERSIST; @@ -383,3 +632,5 @@ void sub_08085F48(LilypadLargeEntity* this) { } SetAffineInfo(super, this->unk_78.HALF_U.HI, this->unk_78.HALF_U.HI, this->unk_7c.HALF_U.HI); } + +static const Hitbox gUnk_08120640 = { 0, 0, { 16, 14, 14, 16 }, 16, 16 }; From 5aec68f2ef9f9fba76290068d197f695b13fd75d Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Sun, 17 Apr 2022 19:58:38 +0300 Subject: [PATCH 02/63] Put const data in houseDoorExterior --- assets/assets.json | 5 ----- data/const/object/houseDoorExterior.s | 14 -------------- linker.ld | 2 +- src/object/houseDoorExterior.c | 18 +++++++++++++----- 4 files changed, 14 insertions(+), 25 deletions(-) delete mode 100644 data/const/object/houseDoorExterior.s diff --git a/assets/assets.json b/assets/assets.json index 402901aa..cdcbe84a 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -42006,11 +42006,6 @@ "size": 6, "type": "animation" }, - { - "path": "houseDoorExterior/gUnk_081206AC.bin", - "start": 1181356, - "size": 8 - }, { "path": "greatFairy/gUnk_0812079C.bin", "start": 1181596, diff --git a/data/const/object/houseDoorExterior.s b/data/const/object/houseDoorExterior.s deleted file mode 100644 index f1a0bb7d..00000000 --- a/data/const/object/houseDoorExterior.s +++ /dev/null @@ -1,14 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_081206AC:: @ 081206AC - .incbin "houseDoorExterior/gUnk_081206AC.bin" - -gUnk_081206B4:: @ 081206B4 - .4byte sub_080866D8 - .4byte sub_080867E4 - .4byte sub_0808681C - .4byte sub_080868B0 diff --git a/linker.ld b/linker.ld index 6d594db6..1c1241c1 100644 --- a/linker.ld +++ b/linker.ld @@ -1358,7 +1358,7 @@ SECTIONS { src/object/object17.o(.rodata); data/const/object/evilSpirit.o(.rodata); data/animations/object/evilSpirit.o(.rodata); - data/const/object/houseDoorExterior.o(.rodata); + src/object/houseDoorExterior.o(.rodata); src/object/rupee.o(.rodata); src/object/greatFairy.o(.rodata); data/animations/npc/greatFairy.o(.rodata); diff --git a/src/object/houseDoorExterior.c b/src/object/houseDoorExterior.c index 828497e4..80dcef12 100644 --- a/src/object/houseDoorExterior.c +++ b/src/object/houseDoorExterior.c @@ -26,13 +26,21 @@ typedef struct { static void sub_080868EC(Entity* entity, unk_80868EC* arg1); static bool32 sub_080867CC(u32); void sub_0808681C(Entity*); +void sub_080866D8(Entity*); +void sub_080867E4(Entity*); +void sub_080868B0(Entity*); static u8 sub_08086954(Entity*); -extern void (*const gUnk_081206B4[])(Entity*); -extern Hitbox gUnk_081206AC; // TODO: should be const +static const Hitbox gUnk_081206AC = { 0, -5, { 5, 3, 3, 5 }, 10, 4 }; void HouseDoorExterior(Entity* this) { - gUnk_081206B4[this->type2](this); + static void (*const typeFuncs[])(Entity*) = { + sub_080866D8, + sub_080867E4, + sub_0808681C, + sub_080868B0, + }; + typeFuncs[this->type2](this); } void sub_080866D8(Entity* this) { @@ -97,7 +105,7 @@ void sub_0808681C(Entity* this) { this->timer = 8; this->spriteSettings.draw = 1; this->frameIndex = 0; - this->hitbox = &gUnk_081206AC; + this->hitbox = (Hitbox*)&gUnk_081206AC; if (this->subAction == 1) { this->action = 2; this->frameIndex = 1; @@ -126,7 +134,7 @@ void sub_080868B0(Entity* this) { if (this->action == 0) { this->action = 1; this->spriteSettings.draw = 1; - this->hitbox = &gUnk_081206AC; + this->hitbox = (Hitbox*)&gUnk_081206AC; this->timer = 8; } ExecuteScript(this, *(ScriptExecutionContext**)&this->cutsceneBeh); From 8b54665b493a45a3ebea36f62f272fb93130188c Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Sun, 17 Apr 2022 20:26:46 +0300 Subject: [PATCH 03/63] Put const data in object1D --- assets/assets.json | 10 ---------- data/const/object/object1D.s | 14 -------------- linker.ld | 2 +- src/object/object1D.c | 20 ++++++++++++++++++-- 4 files changed, 19 insertions(+), 27 deletions(-) delete mode 100644 data/const/object/object1D.s diff --git a/assets/assets.json b/assets/assets.json index cdcbe84a..9be3efb1 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -42076,16 +42076,6 @@ "size": 35, "type": "animation" }, - { - "path": "object1D/gUnk_081208A8.bin", - "start": 1181864, - "size": 8 - }, - { - "path": "object1D/gUnk_081208A8_1.bin", - "start": 1181876, - "size": 4 - }, { "path": "animations/gSpriteAnimations_Object1E_2.bin", "start": 1181896, diff --git a/data/const/object/object1D.s b/data/const/object/object1D.s deleted file mode 100644 index c4534746..00000000 --- a/data/const/object/object1D.s +++ /dev/null @@ -1,14 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_081208A0:: @ 081208A0 - .4byte sub_080874F8 - .4byte nullsub_117 - -gUnk_081208A8:: @ 081208A8 - .incbin "object1D/gUnk_081208A8.bin" - .4byte gUnk_081208A8 - .incbin "object1D/gUnk_081208A8_1.bin" diff --git a/linker.ld b/linker.ld index 1c1241c1..4b41aeec 100644 --- a/linker.ld +++ b/linker.ld @@ -1362,7 +1362,7 @@ SECTIONS { src/object/rupee.o(.rodata); src/object/greatFairy.o(.rodata); data/animations/npc/greatFairy.o(.rodata); - data/const/object/object1D.o(.rodata); + src/object/object1D.o(.rodata); src/object/object1E.o(.rodata); data/animations/object/object1E.o(.rodata); src/object/object1F.o(.rodata); diff --git a/src/object/object1D.c b/src/object/object1D.c index f1e13a00..7e6db44b 100644 --- a/src/object/object1D.c +++ b/src/object/object1D.c @@ -1,9 +1,14 @@ #include "entity.h" -extern void (*gUnk_081208A0[])(Entity*); +void sub_080874F8(Entity*); +void nullsub_117(Entity*); void Object1D(Entity* this) { - gUnk_081208A0[this->action](this); + static void (*const actionFuncs[])(Entity*) = { + sub_080874F8, + nullsub_117, + }; + actionFuncs[this->action](this); } void sub_080874F8(Entity* this) { @@ -12,3 +17,14 @@ void sub_080874F8(Entity* this) { void nullsub_117(Entity* this) { } + +static const s16 unused1[] = { + -1, + 0x8000, + 1, + 0, +}; +static const s16* const unusedptr[] = { + unused1, +}; +static const u32 unused2 = 0; From e6931831b62afea1ab2db798c31e7d5766e75d4c Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Sun, 17 Apr 2022 20:31:52 +0300 Subject: [PATCH 04/63] Put const data in smoke --- assets/assets.json | 5 ----- data/const/object/smoke.s | 16 ---------------- linker.ld | 2 +- src/object/smoke.c | 23 +++++++++++++++++------ 4 files changed, 18 insertions(+), 28 deletions(-) delete mode 100644 data/const/object/smoke.s diff --git a/assets/assets.json b/assets/assets.json index 9be3efb1..3000863c 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -42304,11 +42304,6 @@ "size": 40, "type": "animation" }, - { - "path": "smoke/gUnk_08121068.bin", - "start": 1183848, - "size": 8 - }, { "path": "animations/gSpriteAnimations_PushableRock_0.bin", "start": 1183888, diff --git a/data/const/object/smoke.s b/data/const/object/smoke.s deleted file mode 100644 index ec51b4fa..00000000 --- a/data/const/object/smoke.s +++ /dev/null @@ -1,16 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08121060:: @ 08121060 - .4byte sub_0808A40C - .4byte sub_0808A46C - -gUnk_08121068:: @ 08121068 - .incbin "smoke/gUnk_08121068.bin" - -gUnk_08121070:: @ 08121070 - .4byte sub_0808A484 - .4byte sub_0808A4D0 diff --git a/linker.ld b/linker.ld index 4b41aeec..bb948f8e 100644 --- a/linker.ld +++ b/linker.ld @@ -1384,7 +1384,7 @@ SECTIONS { data/animations/object/object2A.o(.rodata); src/object/beanstalk.o(.rodata); data/animations/object/beanstalk.o(.rodata); - data/const/object/smoke.o(.rodata); + src/object/smoke.o(.rodata); src/object/pushableRock.o(.rodata); data/animations/object/pushableRock.o(.rodata); src/object/hittableLever.o(.rodata); diff --git a/src/object/smoke.c b/src/object/smoke.c index a33cf5b3..8f76ea10 100644 --- a/src/object/smoke.c +++ b/src/object/smoke.c @@ -1,15 +1,22 @@ #include "object.h" -extern void (*const gUnk_08121060[])(Entity*); -extern void (*const gUnk_08121070[])(Entity*); - -extern s8 gUnk_08121068[]; +void sub_0808A40C(Entity*); +void sub_0808A46C(Entity*); +void sub_0808A484(Entity*); +void sub_0808A4D0(Entity*); void Smoke(Entity* this) { - gUnk_08121060[this->type](this); + static void (*const typeFuncs[])(Entity*) = { + sub_0808A40C, + sub_0808A46C, + }; + typeFuncs[this->type](this); } void sub_0808A40C(Entity* this) { + static const s8 gUnk_08121068[] = { + -1, 1, -2, 2, 0, 0, 0, 0, + }; Entity* ent; if (this->action == 0) { @@ -27,7 +34,11 @@ void sub_0808A40C(Entity* this) { } void sub_0808A46C(Entity* this) { - gUnk_08121070[this->action](this); + static void (*const actionFuncs[])(Entity*) = { + sub_0808A484, + sub_0808A4D0, + }; + actionFuncs[this->action](this); } void sub_0808A484(Entity* this) { From dcbdf53c113c46b477e419d51c747e7dd578cd8f Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Sun, 17 Apr 2022 20:33:32 +0300 Subject: [PATCH 05/63] Put const data in frozenFlower --- data/const/object/object31.s | 9 --------- linker.ld | 2 +- src/object/frozenFlower.c | 9 +++++++-- 3 files changed, 8 insertions(+), 12 deletions(-) delete mode 100644 data/const/object/object31.s diff --git a/data/const/object/object31.s b/data/const/object/object31.s deleted file mode 100644 index 4ddc687a..00000000 --- a/data/const/object/object31.s +++ /dev/null @@ -1,9 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_0812119C:: @ 0812119C - .4byte sub_0808A9DC - .4byte nullsub_519 diff --git a/linker.ld b/linker.ld index bb948f8e..b7215ce3 100644 --- a/linker.ld +++ b/linker.ld @@ -1389,7 +1389,7 @@ SECTIONS { data/animations/object/pushableRock.o(.rodata); src/object/hittableLever.o(.rodata); src/object/object30.o(.rodata); - data/const/object/object31.o(.rodata); + src/object/frozenFlower.o(.rodata); src/object/pullableMushroom.o(.rodata); data/animations/object/pullableMushroom.o(.rodata); src/object/bollard.o(.rodata); diff --git a/src/object/frozenFlower.c b/src/object/frozenFlower.c index e576218b..73a85446 100644 --- a/src/object/frozenFlower.c +++ b/src/object/frozenFlower.c @@ -1,9 +1,14 @@ #include "object.h" -extern void (*const gUnk_0812119C[])(Entity*); +void sub_0808A9DC(Entity*); +void nullsub_519(Entity*); void FrozenFlower(Entity* this) { - gUnk_0812119C[this->action](this); + static void (*const actionFuncs[])(Entity*) = { + sub_0808A9DC, + nullsub_519, + }; + actionFuncs[this->action](this); } void sub_0808A9DC(Entity* this) { From 809ad1331b120e3689beb173235039735f37b97b Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Sun, 17 Apr 2022 20:34:58 +0300 Subject: [PATCH 06/63] Put const data in jarPortal --- data/const/object/jarPortal.s | 13 ------------- linker.ld | 2 +- src/object/jarPortal.c | 12 +++++++++--- 3 files changed, 10 insertions(+), 17 deletions(-) delete mode 100644 data/const/object/jarPortal.s diff --git a/data/const/object/jarPortal.s b/data/const/object/jarPortal.s deleted file mode 100644 index 29fd4af3..00000000 --- a/data/const/object/jarPortal.s +++ /dev/null @@ -1,13 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08121488:: @ 08121488 - .4byte sub_0808BE9C - .4byte sub_0808BF14 - .4byte sub_0808BF58 - .4byte sub_0808BFD8 - .4byte sub_0808C0AC - diff --git a/linker.ld b/linker.ld index b7215ce3..8722e600 100644 --- a/linker.ld +++ b/linker.ld @@ -1400,7 +1400,7 @@ SECTIONS { data/animations/object/object35.o(.rodata); src/object/object36.o(.rodata); src/object/object37.o(.rodata); - data/const/object/jarPortal.o(.rodata); + src/object/jarPortal.o(.rodata); data/animations/object/jarPortal.o(.rodata); src/object/bossDoor.o(.rodata); data/animations/object/bossDoor.o(.rodata); diff --git a/src/object/jarPortal.c b/src/object/jarPortal.c index 4cdcf642..550cc6c4 100644 --- a/src/object/jarPortal.c +++ b/src/object/jarPortal.c @@ -2,17 +2,23 @@ #include "area.h" #include "functions.h" -extern void (*gUnk_08121488[])(Entity*); - extern u32 PortalReadyForMinish(void); u32 sub_0808C128(Entity*); void sub_0808C13C(Entity*); +void sub_0808BE9C(Entity*); +void sub_0808BF14(Entity*); +void sub_0808BF58(Entity*); +void sub_0808BFD8(Entity*); +void sub_0808C0AC(Entity*); void sub_0808C148(Entity*, u32); void sub_0808C01C(Entity*, u32); void JarPortal(Entity* this) { - gUnk_08121488[this->action](this); + static void (*const actionFuncs[])(Entity*) = { + sub_0808BE9C, sub_0808BF14, sub_0808BF58, sub_0808BFD8, sub_0808C0AC, + }; + actionFuncs[this->action](this); } void sub_0808BE9C(Entity* this) { From 1c6bc876b5fd15d3703954a50acab9169c7562f9 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Sun, 17 Apr 2022 20:40:55 +0300 Subject: [PATCH 07/63] Put const data in giantLeaf --- assets/assets.json | 10 ---------- data/const/object/giantLeaf.s | 11 ----------- linker.ld | 2 +- src/object/giantLeaf.c | 11 +++++++---- 4 files changed, 8 insertions(+), 26 deletions(-) delete mode 100644 data/const/object/giantLeaf.s diff --git a/assets/assets.json b/assets/assets.json index 3000863c..08cd07d8 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -42544,16 +42544,6 @@ "size": 4, "type": "animation" }, - { - "path": "giantLeaf/gUnk_08121750.bin", - "start": 1185616, - "size": 26 - }, - { - "path": "giantLeaf/gUnk_0812176A.bin", - "start": 1185642, - "size": 26 - }, { "path": "animations/gSpriteAnimations_Object43_0.bin", "start": 1185760, diff --git a/data/const/object/giantLeaf.s b/data/const/object/giantLeaf.s deleted file mode 100644 index b1883e37..00000000 --- a/data/const/object/giantLeaf.s +++ /dev/null @@ -1,11 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08121750:: @ 08121750 - .incbin "giantLeaf/gUnk_08121750.bin" - -gUnk_0812176A:: @ 0812176A - .incbin "giantLeaf/gUnk_0812176A.bin" diff --git a/linker.ld b/linker.ld index 8722e600..f8d8de49 100644 --- a/linker.ld +++ b/linker.ld @@ -1411,7 +1411,7 @@ SECTIONS { src/object/macroPlayer.o(.rodata); src/object/object3D.o(.rodata); src/object/object3E.o(.rodata); - data/const/object/giantLeaf.o(.rodata); + src/object/giantLeaf.o(.rodata); src/object/fairy.o(.rodata); src/object/object42.o(.rodata); src/object/object43.o(.rodata); diff --git a/src/object/giantLeaf.c b/src/object/giantLeaf.c index ab3ebac8..23a998e8 100644 --- a/src/object/giantLeaf.c +++ b/src/object/giantLeaf.c @@ -2,9 +2,6 @@ void sub_0808D618(Entity* ent); -extern s16 gUnk_08121750[]; -extern s16 gUnk_0812176A[]; - void GiantLeaf(Entity* ent) { if (ent->action == 0) { ent->action = 1; @@ -17,8 +14,14 @@ void GiantLeaf(Entity* ent) { } void sub_0808D618(Entity* ent) { + static const s16 gUnk_08121750[] = { + 0x41, 0x40, 0x3f, 0x3e, 0x1, 0x0, -0x1, -0x2, -0x3e, -0x3f, -0x40, -0x41, -0x7e, + }; + static const s16 gUnk_0812176A[] = { + 0x3f, 0x40, 0x41, 0x42, -0x1, 0x0, 0x1, 0x2, -0x42, -0x41, -0x40, -0x3f, -0x82, + }; u32 tilePos; - s16* arr; + const s16* arr; u32 i; arr = (ent->type != 0) ? gUnk_0812176A : gUnk_08121750; From 4b4372dbd7c7d966246020cedf43ed4b28f75bcd Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Sun, 17 Apr 2022 20:44:10 +0300 Subject: [PATCH 08/63] Put const data in heartContainer --- assets/assets.json | 5 ----- data/const/object/heartContainer.s | 8 -------- linker.ld | 1 - src/object/heartContainer.c | 4 ++-- src/object/object30.c | 2 +- 5 files changed, 3 insertions(+), 17 deletions(-) delete mode 100644 data/const/object/heartContainer.s diff --git a/assets/assets.json b/assets/assets.json index 08cd07d8..cdd9009e 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -42640,11 +42640,6 @@ "size": 60, "type": "animation" }, - { - "path": "heartContainer/gUnk_08121C58.bin", - "start": 1186904, - "size": 12 - }, { "path": "animations/gSpriteAnimations_FileScreenObjects_0.bin", "start": 1187364, diff --git a/data/const/object/heartContainer.s b/data/const/object/heartContainer.s deleted file mode 100644 index efba07ef..00000000 --- a/data/const/object/heartContainer.s +++ /dev/null @@ -1,8 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08121C58:: @ 08121C58 - .incbin "heartContainer/gUnk_08121C58.bin" diff --git a/linker.ld b/linker.ld index f8d8de49..3904d151 100644 --- a/linker.ld +++ b/linker.ld @@ -1422,7 +1422,6 @@ SECTIONS { data/animations/object/object45.o(.rodata); src/object/giantBookLadder.o(.rodata); src/object/heartContainer.o(.rodata); - data/const/object/heartContainer.o(.rodata); data/const/object/fileScreenObjects.o(.rodata); data/animations/object/fileScreenObjects.o(.rodata); data/const/object/object49.o(.rodata); diff --git a/src/object/heartContainer.c b/src/object/heartContainer.c index b195e6f6..9d02d53f 100644 --- a/src/object/heartContainer.c +++ b/src/object/heartContainer.c @@ -17,7 +17,7 @@ static void (*const gHeartContainerActions[])(Entity*) = { sub_0808E764, }; -extern Hitbox gUnk_08121C58; +const Hitbox3D gUnk_08121C58 = { 0, -3, { 5, 3, 3, 5 }, 6, 6, 12, {} }; void HeartContainer(Entity* this) { gHeartContainerActions[this->action](this); @@ -30,7 +30,7 @@ static void sub_0808E6A0(Entity* this) { this->action = 1; this->type = 0x62; this->spriteSettings.draw = 0; - this->hitbox = &gUnk_08121C58; + this->hitbox = (Hitbox*)&gUnk_08121C58; this->collisionLayer = 3; this->updatePriority = PRIO_NO_BLOCK; } diff --git a/src/object/object30.c b/src/object/object30.c index 6a999eb3..6ebc3d4f 100644 --- a/src/object/object30.c +++ b/src/object/object30.c @@ -21,7 +21,7 @@ typedef struct { } Object30Entity; extern u32 sub_0806F798(Entity*); -extern const Hitbox gUnk_08121C58; +extern const Hitbox3D gUnk_08121C58; void Object30_Init(Object30Entity*); void Object30_Action1(Object30Entity*); From 4d8c726f849176fd6ea61f5bdc3a1c0afcd0c029 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Sun, 17 Apr 2022 21:51:23 +0300 Subject: [PATCH 09/63] Put const data in fileScreenObjects --- assets/assets.json | 30 ------------ data/const/object/fileScreenObjects.s | 55 --------------------- linker.ld | 2 +- src/object/fileScreenObjects.c | 69 +++++++++++++++++++++++---- 4 files changed, 61 insertions(+), 95 deletions(-) delete mode 100644 data/const/object/fileScreenObjects.s diff --git a/assets/assets.json b/assets/assets.json index cdd9009e..b909612f 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -42652,36 +42652,6 @@ "size": 31, "type": "animation" }, - { - "path": "fileScreenObjects/gUnk_08121CD4.bin", - "start": 1187028, - "size": 60 - }, - { - "path": "fileScreenObjects/gUnk_08121D10.bin", - "start": 1187088, - "size": 8 - }, - { - "path": "fileScreenObjects/gUnk_08121D18.bin", - "start": 1187096, - "size": 32 - }, - { - "path": "fileScreenObjects/gUnk_08121D38.bin", - "start": 1187128, - "size": 16 - }, - { - "path": "fileScreenObjects/gUnk_08121D48.bin", - "start": 1187144, - "size": 12 - }, - { - "path": "fileScreenObjects/gUnk_08121D54.bin", - "start": 1187156, - "size": 208 - }, { "path": "object49/gUnk_08121EA0.bin", "start": 1187488, diff --git a/data/const/object/fileScreenObjects.s b/data/const/object/fileScreenObjects.s deleted file mode 100644 index 192d294c..00000000 --- a/data/const/object/fileScreenObjects.s +++ /dev/null @@ -1,55 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08121C64:: @ 08121C64 - .4byte sub_0808EA28 - .4byte sub_0808EA28 - .4byte sub_0808EA28 - .4byte sub_0808EA28 - .4byte sub_0808ECBC - .4byte sub_0808ECBC - .4byte sub_0808ECBC - .4byte sub_0808ECBC - .4byte sub_0808ED64 - .4byte sub_0808ED98 - .4byte sub_0808EE00 - .4byte sub_0808EE00 - .4byte sub_0808EE00 - .4byte sub_0808EE00 - .4byte sub_0808EE00 - .4byte sub_0808EB74 - .4byte sub_0808EBB8 - .4byte nullsub_522 - .4byte sub_0808EE98 - .4byte sub_0808EED8 - .4byte sub_0808EED8 - .4byte sub_0808EF24 - .4byte sub_0808EF24 - .4byte sub_0808E7D8 - .4byte sub_0808E988 - .4byte sub_0808E9F4 - -gUnk_08121CCC:: @ 08121CCC - .4byte sub_0808E7F0 - .4byte sub_0808E818 - -gUnk_08121CD4:: @ 08121CD4 - .incbin "fileScreenObjects/gUnk_08121CD4.bin" - -gUnk_08121D10:: @ 08121D10 - .incbin "fileScreenObjects/gUnk_08121D10.bin" - -gUnk_08121D18:: @ 08121D18 - .incbin "fileScreenObjects/gUnk_08121D18.bin" - -gUnk_08121D38:: @ 08121D38 - .incbin "fileScreenObjects/gUnk_08121D38.bin" - -gUnk_08121D48:: @ 08121D48 - .incbin "fileScreenObjects/gUnk_08121D48.bin" - -gUnk_08121D54:: @ 08121D54 - .incbin "fileScreenObjects/gUnk_08121D54.bin" diff --git a/linker.ld b/linker.ld index 3904d151..463fb3cd 100644 --- a/linker.ld +++ b/linker.ld @@ -1422,7 +1422,7 @@ SECTIONS { data/animations/object/object45.o(.rodata); src/object/giantBookLadder.o(.rodata); src/object/heartContainer.o(.rodata); - data/const/object/fileScreenObjects.o(.rodata); + src/object/fileScreenObjects.o(.rodata); data/animations/object/fileScreenObjects.o(.rodata); data/const/object/object49.o(.rodata); data/const/object/backgroundCloud.o(.rodata); diff --git a/src/object/fileScreenObjects.c b/src/object/fileScreenObjects.c index 9a00d152..c17fefbd 100644 --- a/src/object/fileScreenObjects.c +++ b/src/object/fileScreenObjects.c @@ -12,6 +12,23 @@ static void sub_0808EABC(Entity*); static Entity* sub_0808EC80(int); static u32 sub_0808EF6C(Entity*); static void sub_0808EFF0(Entity*); +static void sub_0808EA28(Entity*); +static void sub_0808E7D8(Entity*); +static void sub_0808E988(Entity*); +static void sub_0808E9F4(Entity*); +static void sub_0808EBB8(Entity*); +static void sub_0808ECBC(Entity*); +static void sub_0808ED64(Entity*); +static void sub_0808E9F4(Entity*); +static void sub_0808ED98(Entity*); +static void sub_0808EE00(Entity*); +static void nullsub_522(Entity*); +static void sub_0808EB74(Entity*); +static void sub_0808EE98(Entity*); +static void sub_0808EED8(Entity*); +static void sub_0808EF24(Entity*); +static void sub_0808E818(Entity*); +static void sub_0808E7F0(Entity*); typedef struct { u8 unk0; @@ -21,7 +38,7 @@ typedef struct { typedef struct { u16 unk0; - u16 unk2; + s16 unk2; u16 unk4; u8 unk6_0 : 3; u8 unk6_3 : 3; @@ -29,17 +46,15 @@ typedef struct { u8 unk7; } struct_08121D54; -extern void (*const gUnk_08121C64[])(Entity*); -extern void (*const gUnk_08121CCC[])(Entity*); extern const int gUnk_08133368[]; -extern const struct_08121CD4 gUnk_08121CD4[][4]; -extern const u8 gUnk_08121D10[]; -extern const u8 gUnk_08121D38[][8]; -extern const u16 gUnk_08121D18[][8]; -extern const u8 gUnk_08121D48[]; -extern const struct_08121D54 gUnk_08121D54[]; void FileScreenObjects(Entity* this) { + static void (*const gUnk_08121C64[])(Entity*) = { + sub_0808EA28, sub_0808EA28, sub_0808EA28, sub_0808EA28, sub_0808ECBC, sub_0808ECBC, sub_0808ECBC, + sub_0808ECBC, sub_0808ED64, sub_0808ED98, sub_0808EE00, sub_0808EE00, sub_0808EE00, sub_0808EE00, + sub_0808EE00, sub_0808EB74, sub_0808EBB8, nullsub_522, sub_0808EE98, sub_0808EED8, sub_0808EED8, + sub_0808EF24, sub_0808EF24, sub_0808E7D8, sub_0808E988, sub_0808E9F4, + }; if (this->health == 0) { sub_0808EFF0(this); } @@ -50,6 +65,10 @@ void FileScreenObjects(Entity* this) { } void sub_0808E7D8(Entity* this) { + static void (*const gUnk_08121CCC[])(Entity*) = { + sub_0808E7F0, + sub_0808E818, + }; gUnk_08121CCC[this->action](this); } @@ -331,6 +350,13 @@ static Entity* sub_0808EC80(int form) { } void sub_0808ECBC(Entity* this) { + static const struct_08121CD4 gUnk_08121CD4[][4] = { + { { 0x9, 0x18, 0xb0 }, { 0x9, 0x60, 0xb0 }, { 0x9, 0xa8, 0xb0 }, { 0x9, 0x40, 0xb0 } }, + { { 0x0, 0x18, 0x90 }, { 0x1, 0x60, 0x90 }, { 0x2, 0xa8, 0x90 }, { 0x9, 0x40, 0xb0 } }, + { { 0x9, 0x18, 0xb0 }, { 0x9, 0x60, 0xb0 }, { 0x9, 0xa8, 0xb0 }, { 0x4, 0x14, 0x90 } }, + { { 0x9, 0x18, 0xb0 }, { 0x9, 0x60, 0xb0 }, { 0x1, 0x88, 0x90 }, { 0x0, 0x40, 0x90 } }, + { { 0x0, 0x18, 0x90 }, { 0x9, 0x60, 0xb0 }, { 0x9, 0xa8, 0xb0 }, { 0x9, 0x40, 0xb0 } } + }; int var0; int var1; int var2; @@ -379,6 +405,9 @@ void sub_0808ED64(Entity* this) { } void sub_0808ED98(Entity* this) { + static const s8 gUnk_08121D10[] = { + 0, -1, -3, -2, -2, -1, 0, 0, + }; int y; if (gUI.lastState != 1) { this->field_0x68.HWORD = 27; @@ -400,6 +429,12 @@ void sub_0808ED98(Entity* this) { } void sub_0808EE00(Entity* this) { + static const u16 gUnk_08121D18[][8] = { { 0x2c, 0x54, 0x7c, 0xa4, 0xcc, 0x0, 0x0, 0x0 }, + { 0xfff, 0x2e, 0x62, 0x96, 0xca, 0x0, 0x0, 0x0 } }; + static const u8 gUnk_08121D38[][8] = { + { 12, 13, 14, 16, 17, 0, 0, 0 }, + { -1, 14, 15, 16, 17, 0, 0, 0 }, + }; int var0, var1, var2; var0 = ((SaveHeader*)0x2000000)->language != 0; @@ -424,6 +459,7 @@ void nullsub_522(Entity* this) { } void sub_0808EE98(Entity* this) { + static const u8 gUnk_08121D48[] = { 0x28, 0x27, 0x28, 0x28, 0x28, 0x2a, 0x29, 0x28, 0xff, 0x0, 0x0, 0x0 }; this->timer = gUI.lastState; this->frameIndex = gUnk_08121D48[this->timer]; if (this->timer != 2) { @@ -509,6 +545,21 @@ static u32 sub_0808EF6C(Entity* this) { } static void sub_0808EFF0(Entity* this) { + static const struct_08121D54 gUnk_08121D54[] = { + { 0x800, -0x40, 0x28, 2, 4, 1, 0x80 }, { 0x800, -0x40, 0x48, 2, 4, 1, 0x81 }, + { 0x800, -0x40, 0x68, 2, 4, 1, 0x82 }, { 0x800, -0x40, 0x88, 2, 4, 1, 0x83 }, + { 0x300, 0x40, 0xb0, 1, 1, 1, 0x84 }, { 0x300, 0x70, 0xb0, 1, 1, 1, 0x85 }, + { 0x300, 0x90, 0xb0, 1, 1, 1, 0x86 }, { 0x300, 0x40, 0xb0, 1, 1, 1, 0x87 }, + { 0x1000, 0x1c, 0xff, 2, 7, 2, 0x88 }, { 0x200, 0x1b, 0xff, 1, 1, 1, 0x0 }, + { 0x200, 0x0, 0xb0, 1, 1, 1, 0xff }, { 0x200, 0x0, 0xb0, 1, 2, 1, 0xff }, + { 0x200, 0x0, 0xb0, 1, 3, 1, 0xff }, { 0x200, 0x0, 0xb0, 1, 4, 1, 0xff }, + { 0x200, 0x0, 0xb0, 1, 5, 1, 0xff }, { 0x800, 0x0, 0x0, 2, 6, 1, 0x1 }, + { 0x1000, 0x0, 0x0, 2, 6, 1, 0x1 }, { 0x1000, 0x0, 0xb0, 2, 6, 1, 0x1 }, + { 0x1000, 0x60, 0x0, 0, 0, 0, 0xff }, { 0x400, 0xa8, 0x50, 1, 1, 1, 0x99 }, + { 0x400, 0xa8, 0x50, 1, 1, 1, 0x9a }, { 0x400, 0xa8, 0x50, 1, 1, 1, 0x9b }, + { 0x400, 0xa8, 0x50, 1, 1, 1, 0x9e }, { 0x400, 0x80, 0x48, 1, 1, 1, 0xff }, + { 0x400, 0xc0, 0x42, 1, 1, 1, 0xff }, { 0x400, 0xc8, 0x32, 1, 1, 1, 0xa5 } + }; const struct_08121D54* var0; u8 var1; From 778173eb4a1a5fdeb5ed0085ce3d52055aa23e97 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Sun, 17 Apr 2022 23:57:30 +0300 Subject: [PATCH 10/63] Put const data in object49 --- assets/assets.json | 5 ----- data/const/object/object49.s | 31 --------------------------- linker.ld | 2 +- src/object/object49.c | 41 +++++++++++++++++++++++++++--------- 4 files changed, 32 insertions(+), 47 deletions(-) delete mode 100644 data/const/object/object49.s diff --git a/assets/assets.json b/assets/assets.json index b909612f..0337e58f 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -42652,11 +42652,6 @@ "size": 31, "type": "animation" }, - { - "path": "object49/gUnk_08121EA0.bin", - "start": 1187488, - "size": 4 - }, { "path": "backgroundCloud/gUnk_08121EB0.bin", "start": 1187504, diff --git a/data/const/object/object49.s b/data/const/object/object49.s deleted file mode 100644 index 956d0d24..00000000 --- a/data/const/object/object49.s +++ /dev/null @@ -1,31 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08121E5C:: @ 08121E5C - .4byte sub_0808F0B8 - .4byte sub_0808F1E0 - .4byte sub_0808F2C0 - .4byte sub_0808F370 - .4byte sub_0808F0B8 - .4byte sub_0808F3DC - .4byte sub_0808F3DC - .4byte sub_0808F3DC - .4byte sub_0808F3DC - .4byte sub_0808F498 - .4byte sub_0808F554 - -gUnk_08121E88:: @ 08121E88 - .4byte sub_0808F0D0 - .4byte sub_0808F14C - .4byte sub_0808F170 - .4byte sub_0808F1A4 - -gUnk_08121E98:: @ 08121E98 - .4byte sub_0808F1F8 - .4byte sub_0808F244 - -gUnk_08121EA0:: @ 08121EA0 - .incbin "object49/gUnk_08121EA0.bin" diff --git a/linker.ld b/linker.ld index 463fb3cd..82fa2941 100644 --- a/linker.ld +++ b/linker.ld @@ -1424,7 +1424,7 @@ SECTIONS { src/object/heartContainer.o(.rodata); src/object/fileScreenObjects.o(.rodata); data/animations/object/fileScreenObjects.o(.rodata); - data/const/object/object49.o(.rodata); + src/object/object49.o(.rodata); data/const/object/backgroundCloud.o(.rodata); src/object/object4B.o(.rodata); src/object/pushableFurniture.o(.rodata); diff --git a/src/object/object49.c b/src/object/object49.c index b67a7b86..7adbcc00 100644 --- a/src/object/object49.c +++ b/src/object/object49.c @@ -4,20 +4,36 @@ static void sub_0808F2B0(Entity*); void sub_0808F14C(Entity*); void sub_0808F244(Entity*); - -extern void sub_0808F5EC(Entity*); - -extern void (*const gUnk_08121E5C[])(Entity*); -extern void (*const gUnk_08121E88[])(Entity*); -extern void (*const gUnk_08121E98[])(Entity*); -extern const u16 gUnk_08121EA0[]; +void sub_0808F0B8(Entity*); +void sub_0808F1E0(Entity*); +void sub_0808F2C0(Entity*); +void sub_0808F370(Entity*); +void sub_0808F3DC(Entity*); +void sub_0808F498(Entity*); +void sub_0808F554(Entity*); +void sub_0808F0D0(Entity*); +void sub_0808F170(Entity*); +void sub_0808F1A4(Entity*); +void sub_0808F244(Entity*); +void sub_0808F1F8(Entity*); +void sub_0808F5EC(Entity*); void Object49(Entity* this) { - gUnk_08121E5C[this->type](this); + static void (*const typeFuncs[])(Entity*) = { + sub_0808F0B8, sub_0808F1E0, sub_0808F2C0, sub_0808F370, sub_0808F0B8, sub_0808F3DC, + sub_0808F3DC, sub_0808F3DC, sub_0808F3DC, sub_0808F498, sub_0808F554, + }; + typeFuncs[this->type](this); } void sub_0808F0B8(Entity* this) { - gUnk_08121E88[this->action](this); + static void (*const actionFuncs[])(Entity*) = { + sub_0808F0D0, + sub_0808F14C, + sub_0808F170, + sub_0808F1A4, + }; + actionFuncs[this->action](this); } void sub_0808F0D0(Entity* this) { @@ -80,7 +96,11 @@ void sub_0808F1A4(Entity* this) { } void sub_0808F1E0(Entity* this) { - gUnk_08121E98[this->action](this); + static void (*const actionFuncs[])(Entity*) = { + sub_0808F1F8, + sub_0808F244, + }; + actionFuncs[this->action](this); } void sub_0808F1F8(Entity* this) { @@ -143,6 +163,7 @@ void sub_0808F2C0(Entity* this) { } void sub_0808F370(Entity* this) { + static const u16 gUnk_08121EA0[] = { 0x1a4, 0x12c }; if (this->action == 0) { if (this->parent->subAction == 1) { this->action = 1; From 8dd7d84cefaad631b966bda1cc35e7df6bd5ed4d Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 18 Apr 2022 00:00:59 +0300 Subject: [PATCH 11/63] Put const data in backgroundCloud --- assets/assets.json | 10 ---------- data/const/object/backgroundCloud.s | 16 ---------------- linker.ld | 2 +- src/object/backgroundCloud.c | 15 +++++++++++---- 4 files changed, 12 insertions(+), 31 deletions(-) delete mode 100644 data/const/object/backgroundCloud.s diff --git a/assets/assets.json b/assets/assets.json index 0337e58f..243eb377 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -42652,16 +42652,6 @@ "size": 31, "type": "animation" }, - { - "path": "backgroundCloud/gUnk_08121EB0.bin", - "start": 1187504, - "size": 3 - }, - { - "path": "backgroundCloud/gUnk_08121EB3.bin", - "start": 1187507, - "size": 5 - }, { "path": "furniture/gUnk_08122128.bin", "start": 1188136, diff --git a/data/const/object/backgroundCloud.s b/data/const/object/backgroundCloud.s deleted file mode 100644 index 4bb365bf..00000000 --- a/data/const/object/backgroundCloud.s +++ /dev/null @@ -1,16 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08121EA4:: @ 08121EA4 - .4byte sub_0808F658 - .4byte sub_0808F6E0 - .4byte sub_0808F70C - -gUnk_08121EB0:: @ 08121EB0 - .incbin "backgroundCloud/gUnk_08121EB0.bin" - -gUnk_08121EB3:: @ 08121EB3 - .incbin "backgroundCloud/gUnk_08121EB3.bin" diff --git a/linker.ld b/linker.ld index 82fa2941..48af070d 100644 --- a/linker.ld +++ b/linker.ld @@ -1425,7 +1425,7 @@ SECTIONS { src/object/fileScreenObjects.o(.rodata); data/animations/object/fileScreenObjects.o(.rodata); src/object/object49.o(.rodata); - data/const/object/backgroundCloud.o(.rodata); + src/object/backgroundCloud.o(.rodata); src/object/object4B.o(.rodata); src/object/pushableFurniture.o(.rodata); data/const/object/furniture.o(.rodata); diff --git a/src/object/backgroundCloud.c b/src/object/backgroundCloud.c index 617ce505..bd76632d 100644 --- a/src/object/backgroundCloud.c +++ b/src/object/backgroundCloud.c @@ -1,14 +1,20 @@ #include "object.h" -extern void (*const gUnk_08121EA4[])(Entity*); -extern const u8 gUnk_08121EB0[]; -extern const u8 gUnk_08121EB3[]; +void sub_0808F658(Entity*); +void sub_0808F6E0(Entity*); +void sub_0808F70C(Entity*); void BackgroundCloud(Entity* this) { - gUnk_08121EA4[this->action](this); + static void (*const actionFuncs[])(Entity*) = { + sub_0808F658, + sub_0808F6E0, + sub_0808F70C, + }; + actionFuncs[this->action](this); } void sub_0808F658(Entity* this) { + static const u8 gUnk_08121EB0[] = { 0x30, 0x28, 0x20 }; this->action = 1; this->spriteSettings.draw = 1; this->spriteOrientation.flipY = 3; @@ -33,6 +39,7 @@ void sub_0808F6E0(Entity* this) { } void sub_0808F70C(Entity* this) { + static const u8 gUnk_08121EB3[] = { 0x8, 0x28, 0x48, 0x98, 0 }; if (this->subAction == 0) { this->subAction = 1; this->timer = ((Random() & 7) << 3) + 31; From cd4fdf40cb8491738ad257c16c5b38e1563e885b Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 18 Apr 2022 00:12:51 +0300 Subject: [PATCH 12/63] Put const data in furniture --- assets/assets.json | 50 --------------------- data/animations/object/furniture.s | 32 ------------- data/const/object/furniture.s | 8 ---- linker.ld | 2 - src/object/furniture.c | 72 +++++++++++++++++++++++++----- 5 files changed, 62 insertions(+), 102 deletions(-) delete mode 100644 data/animations/object/furniture.s delete mode 100644 data/const/object/furniture.s diff --git a/assets/assets.json b/assets/assets.json index 243eb377..2f86c83c 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -42652,56 +42652,6 @@ "size": 31, "type": "animation" }, - { - "path": "furniture/gUnk_08122128.bin", - "start": 1188136, - "size": 112 - }, - { - "path": "furniture/gUnk_08122198.bin", - "start": 1188248, - "size": 16 - }, - { - "path": "furniture/gUnk_081221A8.bin", - "start": 1188264, - "size": 16 - }, - { - "path": "furniture/gUnk_081221B8.bin", - "start": 1188280, - "size": 16 - }, - { - "path": "furniture/gUnk_081221C8.bin", - "start": 1188296, - "size": 16 - }, - { - "path": "furniture/gUnk_081221D8.bin", - "start": 1188312, - "size": 16 - }, - { - "path": "furniture/gUnk_081221E8.bin", - "start": 1188328, - "size": 16 - }, - { - "path": "furniture/gUnk_081221F8.bin", - "start": 1188344, - "size": 16 - }, - { - "path": "furniture/gUnk_08122208.bin", - "start": 1188360, - "size": 16 - }, - { - "path": "furniture/gUnk_08121EF8.bin", - "start": 1187576, - "size": 560 - }, { "path": "animations/gSpriteAnimations_MinishSizedEntrance_0.bin", "start": 1188452, diff --git a/data/animations/object/furniture.s b/data/animations/object/furniture.s deleted file mode 100644 index d33e0045..00000000 --- a/data/animations/object/furniture.s +++ /dev/null @@ -1,32 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08122128:: @ 08122128 - .incbin "furniture/gUnk_08122128.bin" - -gUnk_08122198:: @ 08122198 - .incbin "furniture/gUnk_08122198.bin" - -gUnk_081221A8:: @ 081221A8 - .incbin "furniture/gUnk_081221A8.bin" - -gUnk_081221B8:: @ 081221B8 - .incbin "furniture/gUnk_081221B8.bin" - -gUnk_081221C8:: @ 081221C8 - .incbin "furniture/gUnk_081221C8.bin" - -gUnk_081221D8:: @ 081221D8 - .incbin "furniture/gUnk_081221D8.bin" - -gUnk_081221E8:: @ 081221E8 - .incbin "furniture/gUnk_081221E8.bin" - -gUnk_081221F8:: @ 081221F8 - .incbin "furniture/gUnk_081221F8.bin" - -gUnk_08122208:: @ 08122208 - .incbin "furniture/gUnk_08122208.bin" diff --git a/data/const/object/furniture.s b/data/const/object/furniture.s deleted file mode 100644 index 26d1985c..00000000 --- a/data/const/object/furniture.s +++ /dev/null @@ -1,8 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08121EF8:: @ 08121EF8 - .incbin "furniture/gUnk_08121EF8.bin" diff --git a/linker.ld b/linker.ld index 48af070d..624f337e 100644 --- a/linker.ld +++ b/linker.ld @@ -1428,8 +1428,6 @@ SECTIONS { src/object/backgroundCloud.o(.rodata); src/object/object4B.o(.rodata); src/object/pushableFurniture.o(.rodata); - data/const/object/furniture.o(.rodata); - data/animations/object/furniture.o(.rodata); src/object/furniture.o(.rodata); data/const/object/minishSizedEntrance.o(.rodata); data/animations/object/minishSizedEntrance.o(.rodata); diff --git a/src/object/furniture.c b/src/object/furniture.c index 1e8770ac..8cd7fcc4 100644 --- a/src/object/furniture.c +++ b/src/object/furniture.c @@ -118,16 +118,68 @@ typedef struct { u16 flags; } FurnitureCfg; -extern FurnitureCfg gUnk_08122128[]; -extern FurnitureCfg gUnk_08122198[]; -extern FurnitureCfg gUnk_081221A8[]; -extern FurnitureCfg gUnk_081221B8[]; -extern FurnitureCfg gUnk_081221C8[]; -extern FurnitureCfg gUnk_081221D8[]; -extern FurnitureCfg gUnk_081221E8[]; -extern FurnitureCfg gUnk_081221F8[]; -extern FurnitureCfg gUnk_08122208[]; -extern const FurnitureCfg gUnk_08121EF8[]; +static const FurnitureCfg gUnk_08121EF8[] = { + { 0x30, 0x10, 0x0, 0x0, 0x2, 0x4, 0x0 }, { 0x10, 0x10, 0x0, 0x0, 0x2, 0x5, 0x0 }, + { 0x40, 0x10, 0x0, 0x0, 0x2, 0x4, 0x1 }, { 0x18, 0x10, 0x0, 0x0, 0x2, 0x5, 0x0 }, + { 0x18, 0x10, 0x0, 0x0, 0x2, 0x4, 0x0 }, { 0x10, 0x10, 0x0, 0x0, 0x2, 0x4, 0x0 }, + { 0x10, 0x10, 0x0, 0x0, 0x2, 0x4, 0x0 }, { 0x0, 0x0, 0x0, 0x0, 0x2, 0x7, 0x8000 }, + { 0x20, 0x10, 0x0, -0x4, 0x2, 0x4, 0x0 }, { 0x40, 0x10, 0x0, 0x0, 0x3, 0x7, 0x0 }, + { 0x30, 0x10, 0x0, 0x0, 0x2, 0x5, 0x2 }, { 0x0, 0x0, 0x0, 0x3, 0x3, 0x7, 0x8000 }, + { 0x10, 0x10, 0x0, 0x0, 0x2, 0x4, 0x8 }, { 0x10, 0x10, 0x0, 0x0, 0x2, 0x4, 0x8 }, + { 0x18, 0x10, 0x0, 0x0, 0x2, 0x4, 0x0 }, { 0x30, 0x10, 0x0, 0x0, 0x2, 0x4, 0x0 }, + { 0x20, 0x10, 0x0, -0x4, 0x2, 0x4, 0x0 }, { 0x18, 0x10, 0x0, 0x4, 0x2, 0x4, 0x0 }, + { 0x10, 0x10, 0x0, 0x0, 0x2, 0x4, 0x0 }, { 0x20, 0x10, 0x0, 0x0, 0x2, 0x4, 0x0 }, + { 0x0, 0x0, 0x0, 0x1, 0x2, 0x4, 0x8000 }, { 0x10, 0x30, 0x0, -0x8, 0x2, 0x4, 0x4 }, + { 0x40, 0x10, 0x0, -0x8, 0x2, 0x4, 0x4 }, { 0x60, 0x20, 0x0, 0x0, 0x3, 0x7, 0x10 }, + { 0x28, 0x20, 0x0, 0x0, 0x2, 0x4, 0x0 }, { 0x20, 0x10, 0x0, 0x0, 0x2, 0x4, 0x0 }, + { 0x18, 0x10, 0x0, 0x0, 0x3, 0x7, 0x2 }, { 0x0, 0x0, 0x0, 0x2, 0x2, 0x4, 0x8000 }, + { 0x10, 0x10, 0x0, 0x0, 0x2, 0x3, 0x20 }, { 0x10, 0x10, 0x0, 0x0, 0x2, 0x4, 0x20 }, + { 0x30, 0x20, 0x0, 0x0, 0x3, 0x4, 0x0 }, { 0x20, 0x10, 0x0, 0x0, 0x3, 0x7, 0x20 }, + { 0x20, 0x10, 0x0, 0x0, 0x2, 0x4, 0x100 }, { 0x0, 0x0, 0x0, 0x4, 0x2, 0x4, 0x8000 }, + { 0x18, 0x10, 0x0, 0x0, 0x2, 0x4, 0x0 }, { 0x18, 0x10, 0x0, 0x0, 0x2, 0x5, 0x0 }, + { 0x18, 0x10, 0x0, 0x0, 0x2, 0x5, 0x0 }, { 0x0, 0x0, 0x0, 0x5, 0x2, 0x4, 0x8000 }, + { 0x20, 0x10, 0x0, 0x0, 0x2, 0x4, 0x0 }, { 0x30, 0x20, 0x0, 0x0, 0x2, 0x4, 0x0 }, + { 0x50, 0x20, 0x0, 0x0, 0x2, 0x4, 0x0 }, { 0x20, 0x20, 0x0, 0x0, 0x2, 0x4, 0x0 }, + { 0x0, 0x0, 0x0, 0x7, 0x2, 0x4, 0x8000 }, { 0x30, 0x20, 0x0, 0x0, 0x2, 0x4, 0x0 }, + { 0x38, 0x20, 0x0, 0x0, 0x2, 0x4, 0x20 }, { 0x30, 0x20, 0x0, 0x0, 0x2, 0x5, 0x0 }, + { 0x28, 0x20, 0x0, 0x0, 0x2, 0x4, 0x0 }, { 0x10, 0x10, 0x0, 0x0, 0x2, 0x4, 0x0 }, + { 0x0, 0x0, 0x0, 0x6, 0x2, 0x4, 0x8000 }, { 0x30, 0x20, 0x0, 0x0, 0x2, 0x4, 0x0 }, + { 0x20, 0x20, 0x0, 0x0, 0x2, 0x4, 0x0 }, { 0x30, 0x30, 0x0, 0x0, 0x2, 0x4, 0x0 }, + { 0x20, 0x20, 0x0, 0x0, 0x2, 0x4, 0x0 }, { 0x30, 0x20, 0x0, 0x0, 0x2, 0x4, 0x0 }, + { 0x28, 0x20, 0x0, 0x0, 0x2, 0x4, 0x400 }, { 0x20, 0x10, 0x0, 0x0, 0x2, 0x6, 0x200 }, + { 0x0, 0x0, 0x0, 0x0, 0x2, 0x4, 0x20 }, { 0x0, 0x0, 0x0, 0x0, 0x2, 0x4, 0x20 }, + { 0x30, 0x10, 0x0, 0x0, 0x2, 0x4, 0x0 }, { 0x30, 0x10, 0x0, 0x0, 0x2, 0x6, 0x0 }, + { 0x40, 0x10, 0x0, 0x0, 0x2, 0x4, 0x0 }, { 0x30, 0x10, 0x0, 0x0, 0x2, 0x4, 0x0 }, + { 0x0, 0x0, 0x0, 0x0, 0x3, 0x6, 0x10 }, { 0x30, 0x20, 0x0, 0x0, 0x2, 0x4, 0x0 }, + { 0x30, 0x10, 0x0, 0x0, 0x2, 0x5, 0x0 }, { 0x40, 0x10, 0x0, 0x0, 0x2, 0x4, 0x0 }, + { 0x50, 0x10, 0x0, 0x0, 0x2, 0x5, 0x0 }, { 0x40, 0x10, 0x0, 0x0, 0x2, 0x5, 0x0 }, + { 0x30, 0x20, 0x0, 0x0, 0x2, 0x4, 0x0 }, { 0x0, 0x0, 0x0, 0x8, 0x2, 0x4, 0x8000 } +}; +static const FurnitureCfg gUnk_08122128[] = { + { 0x28, 0x10, 0x0, -0x8, 0x2, 0x7, 0x20 }, { 0x28, 0x10, 0x0, -0x8, 0x2, 0x7, 0x20 }, + { 0x28, 0x10, 0x0, -0x8, 0x2, 0x7, 0x20 }, { 0x28, 0x10, 0x0, -0x8, 0x2, 0x7, 0x20 }, + { 0x20, 0x20, 0x0, 0x0, 0x2, 0x7, 0x20 }, { 0x20, 0x20, 0x0, 0x0, 0x2, 0x7, 0x20 }, + { 0x20, 0x20, 0x0, 0x0, 0x2, 0x7, 0x20 }, { 0x20, 0x20, 0x0, 0x0, 0x2, 0x7, 0x20 }, + { 0x10, 0x10, 0x0, -0x4, 0x2, 0x7, 0x20 }, { 0x10, 0x10, 0x0, -0x4, 0x2, 0x7, 0x20 }, + { 0x10, 0x10, 0x0, 0x0, 0x2, 0x7, 0x20 }, { 0x10, 0x10, 0x0, 0x0, 0x2, 0x7, 0x20 }, + { 0x10, 0x10, 0x0, 0x0, 0x2, 0x7, 0x20 }, { 0x10, 0x10, 0x0, 0x0, 0x2, 0x7, 0x20 } +}; +static const FurnitureCfg gUnk_08122198[] = { { 0x10, 0x10, 0x0, 0x0, 0x2, 0x4, 0x0 }, + { 0x10, 0x10, 0x0, 0x0, 0x2, 0x4, 0x4 } }; +static const FurnitureCfg gUnk_081221A8[] = { { 0x30, 0x20, 0x0, 0x8, 0x2, 0x4, 0x0 }, + { 0x10, 0x10, 0x0, 0x0, 0x2, 0x4, 0x0 } }; +static const FurnitureCfg gUnk_081221B8[] = { { 0x20, 0x10, 0x0, 0x0, 0x3, 0x7, 0x40 }, + { 0x20, 0x10, 0x0, 0x2, 0x2, 0x4, 0x80 } }; +static const FurnitureCfg gUnk_081221C8[] = { { 0x18, 0x10, 0x0, 0x0, 0x2, 0x4, 0x0 }, + { 0x18, 0x10, 0x0, 0x0, 0x2, 0x4, 0x0 } }; +static const FurnitureCfg gUnk_081221D8[] = { { 0x30, 0x10, 0x0, 0x0, 0x2, 0x4, 0x0 }, + { 0x30, 0x10, 0x0, 0x0, 0x2, 0x4, 0x0 } }; +static const FurnitureCfg gUnk_081221E8[] = { { 0x28, 0x20, 0x0, 0x0, 0x2, 0x4, 0x0 }, + { 0x20, 0x20, 0x0, 0x0, 0x2, 0x4, 0x0 } }; +static const FurnitureCfg gUnk_081221F8[] = { { 0x20, 0x10, -0x2, 0x8, 0x2, 0x4, 0x0 }, + { 0x20, 0x10, 0x0, 0x0, 0x2, 0x4, 0x0 } }; +static const FurnitureCfg gUnk_08122208[] = { { 0x30, 0x20, 0x0, 0x0, 0x2, 0x4, 0x0 }, + { 0x30, 0x20, 0x0, 0x0, 0x2, 0x4, 0x0 } }; static void sub_08090DC4(FurnitureEntity*); static void sub_08090E64(FurnitureEntity*); From de1df01c436a1755f50fcd5d57fddb044deefd72 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 18 Apr 2022 00:15:15 +0300 Subject: [PATCH 13/63] Put const data in minishSizedEntrance --- assets/assets.json | 5 ----- data/const/object/minishSizedEntrance.s | 12 ------------ linker.ld | 2 +- src/object/minishSizedEntrance.c | 16 +++++++++++++--- 4 files changed, 14 insertions(+), 21 deletions(-) delete mode 100644 data/const/object/minishSizedEntrance.s diff --git a/assets/assets.json b/assets/assets.json index 2f86c83c..e98a7770 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -42664,11 +42664,6 @@ "size": 4, "type": "animation" }, - { - "path": "minishSizedEntrance/gUnk_0812225C.bin", - "start": 1188444, - "size": 8 - }, { "path": "animations/gSpriteAnimations_PullableLever_0.bin", "start": 1188548, diff --git a/data/const/object/minishSizedEntrance.s b/data/const/object/minishSizedEntrance.s deleted file mode 100644 index 1e0723b9..00000000 --- a/data/const/object/minishSizedEntrance.s +++ /dev/null @@ -1,12 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08122254:: @ 08122254 - .4byte sub_08090EC0 - .4byte sub_08090F00 - -gUnk_0812225C:: @ 0812225C - .incbin "minishSizedEntrance/gUnk_0812225C.bin" diff --git a/linker.ld b/linker.ld index 624f337e..7e65fb86 100644 --- a/linker.ld +++ b/linker.ld @@ -1429,7 +1429,7 @@ SECTIONS { src/object/object4B.o(.rodata); src/object/pushableFurniture.o(.rodata); src/object/furniture.o(.rodata); - data/const/object/minishSizedEntrance.o(.rodata); + src/object/minishSizedEntrance.o(.rodata); data/animations/object/minishSizedEntrance.o(.rodata); src/object/giantRock2.o(.rodata); src/object/object53.o(.rodata); diff --git a/src/object/minishSizedEntrance.c b/src/object/minishSizedEntrance.c index e40ac638..debcea2d 100644 --- a/src/object/minishSizedEntrance.c +++ b/src/object/minishSizedEntrance.c @@ -2,11 +2,15 @@ #include "game.h" #include "functions.h" -extern void (*const gUnk_08122254[])(Entity*); -extern u16 gUnk_0812225C[]; +void sub_08090F00(Entity*); +void sub_08090EC0(Entity*); void MinishSizedEntrance(Entity* this) { - gUnk_08122254[this->action](this); + static void (*const actionFuncs[])(Entity*) = { + sub_08090EC0, + sub_08090F00, + }; + actionFuncs[this->action](this); } void sub_08090EC0(Entity* this) { @@ -22,6 +26,12 @@ void sub_08090EC0(Entity* this) { } void sub_08090F00(Entity* this) { + static const u16 gUnk_0812225C[] = { + 0x400, + 0x100, + 0x800, + 0x200, + }; if (this->type == 1) { Entity* parent = this->parent; u32 mask = 1 << this->subtimer; From 2a528d35b3f7ee97019304b593af10c58b566ee7 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 18 Apr 2022 00:18:13 +0300 Subject: [PATCH 14/63] Put const data in thoughtBubble --- assets/assets.json | 5 ----- data/const/object/thoughtBubble.s | 12 ------------ linker.ld | 2 +- src/object/thoughtBubble.c | 14 ++++++++++++-- 4 files changed, 13 insertions(+), 20 deletions(-) delete mode 100644 data/const/object/thoughtBubble.s diff --git a/assets/assets.json b/assets/assets.json index e98a7770..ecb9f510 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -42966,11 +42966,6 @@ "size": 28, "type": "animation" }, - { - "path": "thoughtBubble/ThoughtBubble_SFX.bin", - "start": 1189264, - "size": 8 - }, { "path": "animations/gSpriteAnimations_GentariCurtains_0.bin", "start": 1189404, diff --git a/data/const/object/thoughtBubble.s b/data/const/object/thoughtBubble.s deleted file mode 100644 index 0c70e9e0..00000000 --- a/data/const/object/thoughtBubble.s +++ /dev/null @@ -1,12 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -ThoughtBubble_SFX:: @ 08122590 - .incbin "thoughtBubble/ThoughtBubble_SFX.bin" - -ThoughtBubble_Behaviors:: @ 08122598 - .4byte ThoughtBubble_Init - .4byte ThoughtBubble_Update diff --git a/linker.ld b/linker.ld index 7e65fb86..42cb5dcb 100644 --- a/linker.ld +++ b/linker.ld @@ -1437,7 +1437,7 @@ SECTIONS { data/animations/object/pullableLever.o(.rodata); src/object/minecart.o(.rodata); data/animations/object/minecart.o(.rodata); - data/const/object/thoughtBubble.o(.rodata); + src/object/thoughtBubble.o(.rodata); data/animations/object/thoughtBubble.o(.rodata); data/const/object/hiddenLadderDown.o(.rodata); src/object/gentariCurtains.o(.rodata); diff --git a/src/object/thoughtBubble.c b/src/object/thoughtBubble.c index 0a622628..eb3bf5e6 100644 --- a/src/object/thoughtBubble.c +++ b/src/object/thoughtBubble.c @@ -2,11 +2,21 @@ #include "entity.h" #include "sound.h" -extern void (*const ThoughtBubble_Behaviors[])(Entity*); +void ThoughtBubble_Init(Entity*); +void ThoughtBubble_Update(Entity*); -extern u16 ThoughtBubble_SFX[]; +static const u16 ThoughtBubble_SFX[] = { + SFX_METAL_CLINK, + SFX_F3, + SFX_NONE, + SFX_NONE, +}; void ThoughtBubble(Entity* this) { + static void (*const ThoughtBubble_Behaviors[])(Entity*) = { + ThoughtBubble_Init, + ThoughtBubble_Update, + }; ThoughtBubble_Behaviors[this->action](this); } From 7a65a8a845409678f20c2408c28555c7ad25404f Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 18 Apr 2022 00:21:27 +0300 Subject: [PATCH 15/63] Put const data in hiddenLadderDown --- data/const/object/hiddenLadderDown.s | 9 --------- linker.ld | 2 +- src/object/hiddenLadderDown.c | 9 +++++++-- 3 files changed, 8 insertions(+), 12 deletions(-) delete mode 100644 data/const/object/hiddenLadderDown.s diff --git a/data/const/object/hiddenLadderDown.s b/data/const/object/hiddenLadderDown.s deleted file mode 100644 index 7a623dda..00000000 --- a/data/const/object/hiddenLadderDown.s +++ /dev/null @@ -1,9 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08122604:: @ 08122604 - .4byte sub_08091F14 - .4byte sub_08092000 diff --git a/linker.ld b/linker.ld index 42cb5dcb..e3512a2f 100644 --- a/linker.ld +++ b/linker.ld @@ -1439,7 +1439,7 @@ SECTIONS { data/animations/object/minecart.o(.rodata); src/object/thoughtBubble.o(.rodata); data/animations/object/thoughtBubble.o(.rodata); - data/const/object/hiddenLadderDown.o(.rodata); + src/object/hiddenLadderDown.o(.rodata); src/object/gentariCurtains.o(.rodata); data/animations/object/gentariCurtains.o(.rodata); src/object/lavaPlatform.o(.rodata); diff --git a/src/object/hiddenLadderDown.c b/src/object/hiddenLadderDown.c index 55831a80..a16b06c9 100644 --- a/src/object/hiddenLadderDown.c +++ b/src/object/hiddenLadderDown.c @@ -4,11 +4,16 @@ #include "functions.h" #include "flags.h" -extern void (*const gUnk_08122604[])(Entity*); +void sub_08091F14(Entity*); +void sub_08092000(Entity*); void HiddenLadderDown(Entity* this) { + static void (*const actionFuncs[])(Entity*) = { + sub_08091F14, + sub_08092000, + }; if (this->action < 2) { - gUnk_08122604[this->action](this); + actionFuncs[this->action](this); } } From ac8b0220b5d88e1a473c149f0f3f354f1d43e334 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 18 Apr 2022 00:22:50 +0300 Subject: [PATCH 16/63] Put const data in mask --- data/const/object/mask.s | 11 ----------- linker.ld | 2 +- src/object/mask.c | 11 ++++++++++- 3 files changed, 11 insertions(+), 13 deletions(-) delete mode 100644 data/const/object/mask.s diff --git a/data/const/object/mask.s b/data/const/object/mask.s deleted file mode 100644 index a7e34e4e..00000000 --- a/data/const/object/mask.s +++ /dev/null @@ -1,11 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -MaskActionFuncs:: @ 081227A4 - .4byte sub_080929A4 - .4byte sub_08092A94 - .4byte sub_08092B0C - .4byte Mask_Delete+1 diff --git a/linker.ld b/linker.ld index e3512a2f..93613e76 100644 --- a/linker.ld +++ b/linker.ld @@ -1446,7 +1446,7 @@ SECTIONS { data/animations/object/lavaPlatform.o(.rodata); src/object/paper.o(.rodata); src/object/object5B.o(.rodata); - data/const/object/mask.o(.rodata); + src/object/mask.o(.rodata); src/object/houseDoorInterior.o(.rodata); src/object/whirlwind.o(.rodata); data/animations/object/whirlwind.o(.rodata); diff --git a/src/object/mask.c b/src/object/mask.c index 6571de7e..af7361af 100644 --- a/src/object/mask.c +++ b/src/object/mask.c @@ -1,9 +1,18 @@ #include "object.h" #include "functions.h" -extern void (*MaskActionFuncs[])(Entity*); +void sub_080929A4(Entity*); +void sub_08092A94(Entity*); +void sub_08092B0C(Entity*); +void Mask_Delete(Entity*); void Mask(Entity* this) { + static void (*const MaskActionFuncs[])(Entity*) = { + sub_080929A4, + sub_08092A94, + sub_08092B0C, + Mask_Delete, + }; MaskActionFuncs[this->action](this); } From 90eac705f2871b3897a0d718c2a51b7f22b64f10 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 18 Apr 2022 00:26:18 +0300 Subject: [PATCH 17/63] Put const data in swordsmanNewsletter --- assets/assets.json | 10 ---------- data/const/object/swordsmanNewsletter.s | 15 --------------- linker.ld | 2 +- src/object/swordsmanNewsletter.c | 20 +++++++++++++------- 4 files changed, 14 insertions(+), 33 deletions(-) delete mode 100644 data/const/object/swordsmanNewsletter.s diff --git a/assets/assets.json b/assets/assets.json index ecb9f510..50118494 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -43044,16 +43044,6 @@ "size": 27, "type": "animation" }, - { - "path": "swordsmanNewsletter/gUnk_081228A8.bin", - "start": 1190056, - "size": 8 - }, - { - "path": "swordsmanNewsletter/gUnk_081228B8.bin", - "start": 1190072, - "size": 16 - }, { "path": "animations/gSpriteAnimations_Object64_0.bin", "start": 1190252, diff --git a/data/const/object/swordsmanNewsletter.s b/data/const/object/swordsmanNewsletter.s deleted file mode 100644 index 2040cdfd..00000000 --- a/data/const/object/swordsmanNewsletter.s +++ /dev/null @@ -1,15 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_081228A8:: @ 081228A8 - .incbin "swordsmanNewsletter/gUnk_081228A8.bin" - -gUnk_081228B0:: @ 081228B0 - .4byte sub_080933D8 - .4byte sub_080933FC - -gUnk_081228B8:: @ 081228B8 - .incbin "swordsmanNewsletter/gUnk_081228B8.bin" diff --git a/linker.ld b/linker.ld index 93613e76..68c8e5b3 100644 --- a/linker.ld +++ b/linker.ld @@ -1451,7 +1451,7 @@ SECTIONS { src/object/whirlwind.o(.rodata); data/animations/object/whirlwind.o(.rodata); src/object/objectBlockingStairs.o(.rodata); - data/const/object/swordsmanNewsletter.o(.rodata); + src/object/swordsmanNewsletter.o(.rodata); src/object/object61.o(.rodata); src/object/giantTwig.o(.rodata); src/object/object63.o(.rodata); diff --git a/src/object/swordsmanNewsletter.c b/src/object/swordsmanNewsletter.c index d71fd1f8..344ea110 100644 --- a/src/object/swordsmanNewsletter.c +++ b/src/object/swordsmanNewsletter.c @@ -3,27 +3,33 @@ #include "message.h" extern void sub_080787B4(Entity*); +void sub_080933D8(Entity*); +void sub_080933FC(Entity*); -extern void (*const gUnk_081228B0[])(Entity*); - -extern Hitbox gUnk_081228A8; -extern u16 gUnk_081228B8[]; +static const Hitbox gUnk_081228A8 = { 0, 0, {}, 6, 8 }; void SwordsmanNewsletter(Entity* this) { - gUnk_081228B0[this->action](this); + static void (*const actionFuncs[])(Entity*) = { + sub_080933D8, + sub_080933FC, + }; + actionFuncs[this->action](this); } void sub_080933D8(Entity* this) { this->action = 1; this->frameIndex = this->type; UpdateSpriteForCollisionLayer(this); - this->hitbox = &gUnk_081228A8; + this->hitbox = (Hitbox*)&gUnk_081228A8; sub_080787B4(this); } void sub_080933FC(Entity* this) { + static const u16 messageIndices[] = { + 0x301, 0x302, 0x303, 0x304, 0x305, 0x306, 0x307, 0x308, + }; if (this->interactType != 0) { this->interactType = 0; - MessageNoOverlap(gUnk_081228B8[this->type], this); + MessageNoOverlap(messageIndices[this->type], this); } } From 551c36849c528574da44d93e964fe8ded3d3307b Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 18 Apr 2022 00:33:29 +0300 Subject: [PATCH 18/63] Put const data in mineralWaterSource --- assets/assets.json | 5 ----- data/const/object/mineralWaterSource.s | 12 ----------- linker.ld | 2 +- src/object/mineralWaterSource.c | 30 +++++++++++++++----------- 4 files changed, 19 insertions(+), 30 deletions(-) delete mode 100644 data/const/object/mineralWaterSource.s diff --git a/assets/assets.json b/assets/assets.json index 50118494..118e1fa1 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -43552,11 +43552,6 @@ "size": 4, "type": "animation" }, - { - "path": "mineralWaterSource/MineralWaterSourceParameters.bin", - "start": 1192608, - "size": 4 - }, { "path": "lilypadSmall/gUnk_08123318.bin", "start": 1192728, diff --git a/data/const/object/mineralWaterSource.s b/data/const/object/mineralWaterSource.s deleted file mode 100644 index 5518b904..00000000 --- a/data/const/object/mineralWaterSource.s +++ /dev/null @@ -1,12 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -MineralWaterSourceActionFuncs:: @ 08123298 - .4byte MineralWaterSource_Init - .4byte sub_080973DC - -MineralWaterSourceParameters:: @ 081232A0 - .incbin "mineralWaterSource/MineralWaterSourceParameters.bin" diff --git a/linker.ld b/linker.ld index 68c8e5b3..40b322d5 100644 --- a/linker.ld +++ b/linker.ld @@ -1467,7 +1467,7 @@ SECTIONS { data/animations/object/crenelBeanSprout.o(.rodata); src/object/minecartDoor.o(.rodata); src/object/objectOnPillar.o(.rodata); - data/const/object/mineralWaterSource.o(.rodata); + src/object/mineralWaterSource.o(.rodata); src/object/object70.o(.rodata); src/object/pushableGrave.o(.rodata); src/object/stoneTablet.o(.rodata); diff --git a/src/object/mineralWaterSource.c b/src/object/mineralWaterSource.c index 40f40837..12f066f4 100644 --- a/src/object/mineralWaterSource.c +++ b/src/object/mineralWaterSource.c @@ -1,22 +1,28 @@ #include "object.h" -extern void (*MineralWaterSourceActionFuncs[])(Entity*); +void MineralWaterSource_Init(Entity*); +void sub_080973DC(Entity*); typedef struct { - u8 field_0x00; - u8 field_0x01; - u8 field_0x02; - u8 field_0x03; + u8 type2; + u8 hitboxWidth; + u8 hitboxHeight; + u8 hurtType; } UnkStruct_MineralWater; -extern UnkStruct_MineralWater MineralWaterSourceParameters[]; - void MineralWaterSource(Entity* this) { + static void (*const MineralWaterSourceActionFuncs[])(Entity*) = { + MineralWaterSource_Init, + sub_080973DC, + }; MineralWaterSourceActionFuncs[this->action](this); } void MineralWaterSource_Init(Entity* this) { - UnkStruct_MineralWater* unknownParameters; + static const UnkStruct_MineralWater MineralWaterSourceParameters[] = { + { 0x27, 0x30, 0x20, 0x4D }, + }; + const UnkStruct_MineralWater* unknownParameters; if (AllocMutableHitbox(this) == NULL) { return; @@ -24,11 +30,11 @@ void MineralWaterSource_Init(Entity* this) { unknownParameters = &MineralWaterSourceParameters[this->type]; - this->type2 = unknownParameters->field_0x00; - this->hurtType = unknownParameters->field_0x03; + this->type2 = unknownParameters->type2; + this->hurtType = unknownParameters->hurtType; - this->hitbox->width = unknownParameters->field_0x01; - this->hitbox->height = unknownParameters->field_0x02; + this->hitbox->width = unknownParameters->hitboxWidth; + this->hitbox->height = unknownParameters->hitboxHeight; COLLISION_ON(this); From b085c7c401358b682b720d1e89db004f0f59ae4d Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 18 Apr 2022 00:35:29 +0300 Subject: [PATCH 19/63] Put const data in lilypadSmall --- assets/assets.json | 5 ----- data/const/object/lilypadSmall.s | 9 --------- linker.ld | 2 +- src/object/lilypadSmall.c | 7 ++++--- 4 files changed, 5 insertions(+), 18 deletions(-) delete mode 100644 data/const/object/lilypadSmall.s diff --git a/assets/assets.json b/assets/assets.json index 118e1fa1..b7774db7 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -43552,11 +43552,6 @@ "size": 4, "type": "animation" }, - { - "path": "lilypadSmall/gUnk_08123318.bin", - "start": 1192728, - "size": 16 - }, { "path": "animations/gSpriteAnimations_Bell_0.bin", "start": 1192844, diff --git a/data/const/object/lilypadSmall.s b/data/const/object/lilypadSmall.s deleted file mode 100644 index 3580eecf..00000000 --- a/data/const/object/lilypadSmall.s +++ /dev/null @@ -1,9 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08123318:: @ 08123318 - .incbin "lilypadSmall/gUnk_08123318.bin" - diff --git a/linker.ld b/linker.ld index 40b322d5..b05744f4 100644 --- a/linker.ld +++ b/linker.ld @@ -1471,7 +1471,7 @@ SECTIONS { src/object/object70.o(.rodata); src/object/pushableGrave.o(.rodata); src/object/stoneTablet.o(.rodata); - data/const/object/lilypadSmall.o(.rodata); + src/object/lilypadSmall.o(.rodata); src/object/object74.o(.rodata); data/const/object/bell.o(.rodata); data/animations/object/bell.o(.rodata); diff --git a/src/object/lilypadSmall.c b/src/object/lilypadSmall.c index 6cbd40e4..0a14f7f2 100644 --- a/src/object/lilypadSmall.c +++ b/src/object/lilypadSmall.c @@ -1,8 +1,6 @@ #include "object.h" #include "functions.h" -extern u16 gUnk_08123318[]; - static void sub_08097B24(Entity* this); static bool32 CheckMovePlayer(Entity* this); @@ -47,9 +45,12 @@ static bool32 CheckMovePlayer(Entity* this) { } static void sub_08097B24(Entity* this) { + static const u16 gUnk_08123318[] = { + 0x100, 0x101, 0x102, 0x101, 0x100, 0xff, 0xfe, 0xff, + }; u32 temp; u32 temp2; - u16* temp3; + const u16* temp3; if (--this->timer == 0) { this->timer = 90; From 589d80bc7418c9e953e3f7f6bc0917a5b37e8dc2 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 18 Apr 2022 00:36:48 +0300 Subject: [PATCH 20/63] Put const data in bell --- data/const/object/bell.s | 9 --------- linker.ld | 2 +- src/object/bell.c | 9 +++++++-- 3 files changed, 8 insertions(+), 12 deletions(-) delete mode 100644 data/const/object/bell.s diff --git a/data/const/object/bell.s b/data/const/object/bell.s deleted file mode 100644 index e6862702..00000000 --- a/data/const/object/bell.s +++ /dev/null @@ -1,9 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08123384:: @ 08123384 - .4byte sub_08097D90 - .4byte sub_08097DCC diff --git a/linker.ld b/linker.ld index b05744f4..862bd35c 100644 --- a/linker.ld +++ b/linker.ld @@ -1473,7 +1473,7 @@ SECTIONS { src/object/stoneTablet.o(.rodata); src/object/lilypadSmall.o(.rodata); src/object/object74.o(.rodata); - data/const/object/bell.o(.rodata); + src/object/bell.o(.rodata); data/animations/object/bell.o(.rodata); src/object/macroDecorations.o(.rodata); src/object/object79.o(.rodata); diff --git a/src/object/bell.c b/src/object/bell.c index 135584c3..da1043c3 100644 --- a/src/object/bell.c +++ b/src/object/bell.c @@ -1,9 +1,14 @@ #include "object.h" -extern void (*gUnk_08123384[])(Entity*); +void sub_08097D90(Entity*); +void sub_08097DCC(Entity*); void Bell(Entity* ent) { - gUnk_08123384[ent->action](ent); + static void (*const actionFuncs[])(Entity*) = { + sub_08097D90, + sub_08097DCC, + }; + actionFuncs[ent->action](ent); } void sub_08097D90(Entity* ent) { From 9557443a8539956bf4526b523b6572517084edb8 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 18 Apr 2022 00:39:22 +0300 Subject: [PATCH 21/63] Put const data in bigVortex --- assets/assets.json | 5 ----- data/const/object/bigVortex.s | 16 ---------------- linker.ld | 2 +- src/object/bigVortex.c | 24 +++++++++++++++++------- 4 files changed, 18 insertions(+), 29 deletions(-) delete mode 100644 data/const/object/bigVortex.s diff --git a/assets/assets.json b/assets/assets.json index b7774db7..65796d16 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -43653,11 +43653,6 @@ "size": 18, "type": "animation" }, - { - "path": "bigVortex/gUnk_08123690.bin", - "start": 1193616, - "size": 8 - }, { "path": "animations/gSpriteAnimations_BigPushableLever_0.bin", "start": 1193724, diff --git a/data/const/object/bigVortex.s b/data/const/object/bigVortex.s deleted file mode 100644 index 550003a2..00000000 --- a/data/const/object/bigVortex.s +++ /dev/null @@ -1,16 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_0812367C:: @ 0812367C - .4byte sub_08098D1C - .4byte sub_08098D6C - .4byte sub_08098D9C - .4byte sub_08098DC4 - .4byte sub_08098E34 - -gUnk_08123690:: @ 08123690 - .incbin "bigVortex/gUnk_08123690.bin" - diff --git a/linker.ld b/linker.ld index 862bd35c..1c8463d3 100644 --- a/linker.ld +++ b/linker.ld @@ -1487,7 +1487,7 @@ SECTIONS { data/animations/object/picoBloom.o(.rodata); src/object/board.o(.rodata); src/object/object81.o(.rodata); - data/const/object/bigVortex.o(.rodata); + src/object/bigVortex.o(.rodata); data/animations/object/bigVortex.o(.rodata); src/object/bigPushableLever.o(.rodata); data/animations/object/bigPushableLever.o(.rodata); diff --git a/src/object/bigVortex.c b/src/object/bigVortex.c index 2aa0f349..6b7ef06d 100644 --- a/src/object/bigVortex.c +++ b/src/object/bigVortex.c @@ -4,14 +4,18 @@ #include "object.h" #include "functions.h" -extern void sub_08098E3C(Entity*); -extern void sub_08098E88(Entity*); - -extern void (*const gUnk_0812367C[])(Entity*); - -extern u16 gUnk_08123690[]; +void sub_08098E3C(Entity*); +void sub_08098E88(Entity*); +void sub_08098D1C(Entity*); +void sub_08098D6C(Entity*); +void sub_08098D9C(Entity*); +void sub_08098DC4(Entity*); +void sub_08098E34(Entity*); void BigVortex(Entity* this) { + static void (*const gUnk_0812367C[])(Entity*) = { + sub_08098D1C, sub_08098D6C, sub_08098D9C, sub_08098DC4, sub_08098E34, + }; if (this->type == 0) { gUnk_0812367C[this->action](this); } else { @@ -83,7 +87,13 @@ void sub_08098E34(Entity* this) { } void sub_08098E3C(Entity* this) { - u16* temp; + static const u16 gUnk_08123690[] = { + 0x1c0, + 0x160, + 0x300, + 0x200, + }; + const u16* temp; if (this->action == 0) { this->action = 1; From 6de7b5c333869ba6329cd355f2b3544653145677 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 18 Apr 2022 00:40:47 +0300 Subject: [PATCH 22/63] Put const data in object86 --- data/const/object/object86.s | 12 ------------ linker.ld | 2 +- src/object/object86.c | 12 +++++++++--- 3 files changed, 10 insertions(+), 16 deletions(-) delete mode 100644 data/const/object/object86.s diff --git a/data/const/object/object86.s b/data/const/object/object86.s deleted file mode 100644 index 7f520f2c..00000000 --- a/data/const/object/object86.s +++ /dev/null @@ -1,12 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_081237F8:: @ 081237F8 - .4byte sub_08099DD0 - .4byte sub_08099E10 - .4byte sub_08099E58 - .4byte sub_08099E8C - .4byte nullsub_534 diff --git a/linker.ld b/linker.ld index 1c8463d3..32c9836f 100644 --- a/linker.ld +++ b/linker.ld @@ -1495,7 +1495,7 @@ SECTIONS { data/animations/object/smallIceBlock.o(.rodata); src/object/bigIceBlock.o(.rodata); data/animations/object/bigIceBlock.o(.rodata); - data/const/object/object86.o(.rodata); + src/object/object86.o(.rodata); data/animations/object/object86.o(.rodata); src/object/octorokBossObject.o(.rodata); src/object/macroBook.o(.rodata); diff --git a/src/object/object86.c b/src/object/object86.c index 72f880e4..98017cc7 100644 --- a/src/object/object86.c +++ b/src/object/object86.c @@ -2,12 +2,18 @@ #include "item.h" void sub_08099ECC(Entity*); +void sub_08099DD0(Entity*); +void sub_08099E10(Entity*); +void sub_08099E58(Entity*); +void sub_08099E8C(Entity*); +void nullsub_534(Entity*); extern void sub_0805B390(u32); -extern void (*const gUnk_081237F8[])(Entity*); - void Object86(Entity* this) { - gUnk_081237F8[this->action](this); + static void (*const actionFuncs[])(Entity*) = { + sub_08099DD0, sub_08099E10, sub_08099E58, sub_08099E8C, nullsub_534, + }; + actionFuncs[this->action](this); } void sub_08099DD0(Entity* this) { From 24b936f2fb292a6d86d1e6e5e0d12b5335ca644d Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 18 Apr 2022 00:41:56 +0300 Subject: [PATCH 23/63] Put const data in fireplace --- data/const/object/fireplace.s | 9 --------- linker.ld | 2 +- src/object/fireplace.c | 9 ++++++--- 3 files changed, 7 insertions(+), 13 deletions(-) delete mode 100644 data/const/object/fireplace.s diff --git a/data/const/object/fireplace.s b/data/const/object/fireplace.s deleted file mode 100644 index c59473e2..00000000 --- a/data/const/object/fireplace.s +++ /dev/null @@ -1,9 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08123D98:: @ 08123D98 - .4byte sub_0809B708 - .4byte sub_0809B7A0 diff --git a/linker.ld b/linker.ld index 32c9836f..65bffe6f 100644 --- a/linker.ld +++ b/linker.ld @@ -1504,7 +1504,7 @@ SECTIONS { src/object/cabinFurniture.o(.rodata); src/object/doubleBookshelf.o(.rodata); src/object/book.o(.rodata); - data/const/object/fireplace.o(.rodata); + src/object/fireplace.o(.rodata); src/object/object8E.o(.rodata); src/object/frozenWaterElement.o(.rodata); src/object/object90.o(.rodata); diff --git a/src/object/fireplace.c b/src/object/fireplace.c index 5a86491a..e1c0f0d7 100644 --- a/src/object/fireplace.c +++ b/src/object/fireplace.c @@ -1,14 +1,17 @@ #include "object.h" #include "functions.h" -extern void (*gUnk_08123D98[])(Entity*); - void sub_0809B7A0(Entity* this); void sub_0809B7DC(Entity* this); void sub_0809B7C0(Entity* this); +void sub_0809B708(Entity* this); void Fireplace(Entity* e) { - gUnk_08123D98[e->action](e); + static void (*const actionFuncs[])(Entity*) = { + sub_0809B708, + sub_0809B7A0, + }; + actionFuncs[e->action](e); } void sub_0809B708(Entity* this) { From 017b419abd2b1b8fb66ffa56b914b46317ecded5 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 18 Apr 2022 00:43:08 +0300 Subject: [PATCH 24/63] Put const data in bakerOven --- data/const/object/bakerOven.s | 10 ---------- linker.ld | 2 +- src/object/bakerOven.c | 14 ++++++++++---- 3 files changed, 11 insertions(+), 15 deletions(-) delete mode 100644 data/const/object/bakerOven.s diff --git a/data/const/object/bakerOven.s b/data/const/object/bakerOven.s deleted file mode 100644 index 6d635c75..00000000 --- a/data/const/object/bakerOven.s +++ /dev/null @@ -1,10 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08123E20:: @ 08123E20 - .4byte sub_0809CC74 - .4byte sub_0809CD0C - .4byte sub_0809CDB4 diff --git a/linker.ld b/linker.ld index 65bffe6f..f6bddc92 100644 --- a/linker.ld +++ b/linker.ld @@ -1509,7 +1509,7 @@ SECTIONS { src/object/frozenWaterElement.o(.rodata); src/object/object90.o(.rodata); src/object/frozenOctorok.o(.rodata); - data/const/object/bakerOven.o(.rodata); + src/object/bakerOven.o(.rodata); data/animations/object/bakerOven.o(.rodata); src/object/lamp.o(.rodata); data/animations/object/lamp.o(.rodata); diff --git a/src/object/bakerOven.c b/src/object/bakerOven.c index 8f77955f..5d48244f 100644 --- a/src/object/bakerOven.c +++ b/src/object/bakerOven.c @@ -2,12 +2,18 @@ #include "functions.h" extern void SoundReqClipped(Entity*, u32); -extern void sub_0809CDF0(Entity*); - -extern void (*const gUnk_08123E20[])(Entity*); +void sub_0809CDF0(Entity*); +void sub_0809CC74(Entity*); +void sub_0809CD0C(Entity*); +void sub_0809CDB4(Entity*); void BakerOven(Entity* this) { - gUnk_08123E20[this->action](this); + static void (*const actionFuncs[])(Entity*) = { + sub_0809CC74, + sub_0809CD0C, + sub_0809CDB4, + }; + actionFuncs[this->action](this); } void sub_0809CC74(Entity* this) { From dffed216136c79b27e416bbacf34e9038bbb5b8e Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 18 Apr 2022 00:45:50 +0300 Subject: [PATCH 25/63] Put const data in lighttableSwitch --- data/const/object/lightableSwitch.s | 19 --------------- linker.ld | 2 +- src/object/lightableSwitch.c | 38 +++++++++++++++++++++-------- 3 files changed, 29 insertions(+), 30 deletions(-) delete mode 100644 data/const/object/lightableSwitch.s diff --git a/data/const/object/lightableSwitch.s b/data/const/object/lightableSwitch.s deleted file mode 100644 index 284e98e9..00000000 --- a/data/const/object/lightableSwitch.s +++ /dev/null @@ -1,19 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_081243B4:: @ 081243B4 - .4byte sub_0809EA1C - .4byte sub_0809EB68 - -gUnk_081243BC:: @ 081243BC - .4byte sub_0809EA34 - .4byte sub_0809EA80 - -gUnk_081243C4:: @ 081243C4 - .4byte sub_0809EB80 - .4byte sub_0809EBD8 - .4byte sub_0809EC08 - .4byte nullsub_126 diff --git a/linker.ld b/linker.ld index f6bddc92..44ce7be2 100644 --- a/linker.ld +++ b/linker.ld @@ -1523,7 +1523,7 @@ SECTIONS { src/object/object9B.o(.rodata); data/animations/object/object9B.o(.rodata); src/object/treeHidingPortal.o(.rodata); - data/const/object/lightableSwitch.o(.rodata); + src/object/lightableSwitch.o(.rodata); src/object/fan.o(.rodata); data/animations/object/fan.o(.rodata); src/object/angryStatue.o(.rodata); diff --git a/src/object/lightableSwitch.c b/src/object/lightableSwitch.c index a3680f93..ae10b872 100644 --- a/src/object/lightableSwitch.c +++ b/src/object/lightableSwitch.c @@ -8,21 +8,33 @@ #include "hitbox.h" #include "object.h" -extern void (*const gUnk_081243B4[])(Entity*); -extern void (*const gUnk_081243BC[])(Entity*); -extern void (*const gUnk_081243C4[])(Entity*); - -static void sub_0809EB30(Entity* this); -static void sub_0809EAD8(Entity* this); -static void sub_0809EABC(Entity* this); +static void sub_0809EB30(Entity*); +static void sub_0809EAD8(Entity*); +static void sub_0809EABC(Entity*); +static void sub_0809EA1C(Entity*); +static void sub_0809EB68(Entity*); +static void sub_0809EA34(Entity*); +static void sub_0809EA80(Entity*); +static void nullsub_126(Entity*); +static void sub_0809EC08(Entity*); +static void sub_0809EBD8(Entity*); +static void sub_0809EB80(Entity*); void LightableSwitch(Entity* this) { - gUnk_081243B4[this->type](this); + static void (*const typeFuncs[])(Entity*) = { + sub_0809EA1C, + sub_0809EB68, + }; + typeFuncs[this->type](this); sub_0809EB30(this); } void sub_0809EA1C(Entity* this) { - gUnk_081243BC[this->action](this); + static void (*const actionFuncs[])(Entity*) = { + sub_0809EA34, + sub_0809EA80, + }; + actionFuncs[this->action](this); } void sub_0809EA34(Entity* this) { @@ -93,7 +105,13 @@ static void sub_0809EB30(Entity* this) { } void sub_0809EB68(Entity* this) { - gUnk_081243C4[this->action](this); + static void (*const actionFuncs[])(Entity*) = { + sub_0809EB80, + sub_0809EBD8, + sub_0809EC08, + nullsub_126, + }; + actionFuncs[this->action](this); } void sub_0809EB80(Entity* this) { From ad2a1ebbdf8d87c06505c7d0e3435a1406d14b85 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 18 Apr 2022 00:46:59 +0300 Subject: [PATCH 26/63] Put const data in palaceArchway --- data/const/object/palaceArchway.s | 9 --------- linker.ld | 2 +- src/object/palaceArchway.c | 9 +++++++-- 3 files changed, 8 insertions(+), 12 deletions(-) delete mode 100644 data/const/object/palaceArchway.s diff --git a/data/const/object/palaceArchway.s b/data/const/object/palaceArchway.s deleted file mode 100644 index 0c10617e..00000000 --- a/data/const/object/palaceArchway.s +++ /dev/null @@ -1,9 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_081246EC:: @ 081246EC - .4byte sub_0809F2A0 - .4byte nullsub_537 diff --git a/linker.ld b/linker.ld index 44ce7be2..f1bcb580 100644 --- a/linker.ld +++ b/linker.ld @@ -1528,7 +1528,7 @@ SECTIONS { data/animations/object/fan.o(.rodata); src/object/angryStatue.o(.rodata); data/animations/object/angryStatue.o(.rodata); - data/const/object/palaceArchway.o(.rodata); + src/object/palaceArchway.o(.rodata); src/object/objectA2.o(.rodata); data/animations/object/objectA2.o(.rodata); data/const/object/cloud.o(.rodata); diff --git a/src/object/palaceArchway.c b/src/object/palaceArchway.c index f1c0abb9..73d6218a 100644 --- a/src/object/palaceArchway.c +++ b/src/object/palaceArchway.c @@ -1,9 +1,14 @@ #include "object.h" -extern void (*const gUnk_081246EC[])(Entity*); +void sub_0809F2A0(Entity*); +void nullsub_537(Entity*); void PalaceArchway(Entity* this) { - gUnk_081246EC[this->action](this); + static void (*const actionFuncs[])(Entity*) = { + sub_0809F2A0, + nullsub_537, + }; + actionFuncs[this->action](this); } void sub_0809F2A0(Entity* this) { From 33a9dfccd156161796f5cd93a0220f755aa1d497 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 18 Apr 2022 00:48:28 +0300 Subject: [PATCH 27/63] Put const data in metalDoor --- data/const/object/metalDoor.s | 12 ------------ linker.ld | 2 +- src/object/metalDoor.c | 16 +++++++++++----- 3 files changed, 12 insertions(+), 18 deletions(-) delete mode 100644 data/const/object/metalDoor.s diff --git a/data/const/object/metalDoor.s b/data/const/object/metalDoor.s deleted file mode 100644 index df748a3c..00000000 --- a/data/const/object/metalDoor.s +++ /dev/null @@ -1,12 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_0812493C:: @ 0812493C - .4byte sub_080A0684 - .4byte sub_080A0718 - .4byte sub_080A074C - .4byte sub_080A07BC - .4byte sub_080A07F0 diff --git a/linker.ld b/linker.ld index f1bcb580..485e89a1 100644 --- a/linker.ld +++ b/linker.ld @@ -1544,7 +1544,7 @@ SECTIONS { src/object/objectAD.o(.rodata); data/const/object/objectAF.o(.rodata); data/animations/object/objectAF.o(.rodata); - data/const/object/metalDoor.o(.rodata); + src/object/metalDoor.o(.rodata); data/const/object/jailBars.o(.rodata); data/animations/object/jailBars.o(.rodata); data/animations/object/objectB2.o(.rodata); diff --git a/src/object/metalDoor.c b/src/object/metalDoor.c index fd5e7b22..1938f2b5 100644 --- a/src/object/metalDoor.c +++ b/src/object/metalDoor.c @@ -9,13 +9,19 @@ #include "hitbox.h" extern u32 sub_08083734(Entity*, u32); -extern void sub_080A080C(Entity*); -extern void sub_080A0870(Entity*); - -extern void (*const gUnk_0812493C[])(Entity*); +void sub_080A080C(Entity*); +void sub_080A0870(Entity*); +void sub_080A0684(Entity*); +void sub_080A0718(Entity*); +void sub_080A074C(Entity*); +void sub_080A07BC(Entity*); +void sub_080A07F0(Entity*); void MetalDoor(Entity* this) { - gUnk_0812493C[this->action](this); + static void (*const actionFuncs[])(Entity*) = { + sub_080A0684, sub_080A0718, sub_080A074C, sub_080A07BC, sub_080A07F0, + }; + actionFuncs[this->action](this); } void sub_080A0684(Entity* this) { From fd07825123558d39df0a15a99032c26423417f94 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 18 Apr 2022 00:51:08 +0300 Subject: [PATCH 28/63] put const data in well --- data/const/object/well.s | 9 --------- linker.ld | 2 +- src/object/well.c | 9 +++++++-- 3 files changed, 8 insertions(+), 12 deletions(-) delete mode 100644 data/const/object/well.s diff --git a/data/const/object/well.s b/data/const/object/well.s deleted file mode 100644 index 6b6673f1..00000000 --- a/data/const/object/well.s +++ /dev/null @@ -1,9 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08124C08:: @ 08124C08 - .4byte sub_080A0EB0 - .4byte sub_080A0EF0 diff --git a/linker.ld b/linker.ld index 485e89a1..02f44d3c 100644 --- a/linker.ld +++ b/linker.ld @@ -1552,7 +1552,7 @@ SECTIONS { data/animations/object/objectB3.o(.rodata); src/object/objectB4.o(.rodata); data/animations/object/objectB4.o(.rodata); - data/const/object/well.o(.rodata); + src/object/well.o(.rodata); src/object/windTribeTeleporter.o(.rodata); src/object/cuccoMinigame.o(.rodata); src/object/gyorgBossObject.o(.rodata); diff --git a/src/object/well.c b/src/object/well.c index dfc61a9c..52f79e5c 100644 --- a/src/object/well.c +++ b/src/object/well.c @@ -5,10 +5,15 @@ #include "player.h" #include "functions.h" -extern void (*gUnk_08124C08[])(Entity*); +void sub_080A0EB0(Entity*); +void sub_080A0EF0(Entity*); void Well(Entity* ent) { - gUnk_08124C08[ent->action](ent); + static void (*const actionFuncs[])(Entity*) = { + sub_080A0EB0, + sub_080A0EF0, + }; + actionFuncs[ent->action](ent); } void sub_080A0EB0(Entity* ent) { From e2c87fb9ca79506abab5126457c9f615dd072197 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 18 Apr 2022 13:13:06 +0300 Subject: [PATCH 29/63] Put const data in cloud --- assets/assets.json | 15 -------------- data/const/object/cloud.s | 30 ---------------------------- include/player.h | 2 +- linker.ld | 2 +- src/object/cloud.c | 42 +++++++++++++++++++++++++++++---------- src/playerUtils.c | 2 +- 6 files changed, 35 insertions(+), 58 deletions(-) delete mode 100644 data/const/object/cloud.s diff --git a/assets/assets.json b/assets/assets.json index 65796d16..a4858372 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -43959,21 +43959,6 @@ "size": 36, "type": "animation" }, - { - "path": "cloud/gUnk_081247C0.bin", - "start": 1198016, - "size": 8 - }, - { - "path": "cloud/gUnk_081247C8.bin", - "start": 1198024, - "size": 8 - }, - { - "path": "cloud/gUnk_081247D0.bin", - "start": 1198032, - "size": 40 - }, { "path": "animations/gSpriteAnimations_ObjectA6_0.bin", "start": 1198088, diff --git a/data/const/object/cloud.s b/data/const/object/cloud.s deleted file mode 100644 index b4d2d8c1..00000000 --- a/data/const/object/cloud.s +++ /dev/null @@ -1,30 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08124798:: @ 08124798 - .4byte sub_0809F4DC - .4byte sub_0809F700 - -gUnk_081247A0:: @ 081247A0 - .4byte sub_0809F514 - .4byte sub_0809F548 - .4byte sub_0809F5B0 - -gUnk_081247AC:: @ 081247AC - .4byte sub_0809F5DC - .4byte sub_0809F5F0 - .4byte sub_0809F61C - .4byte sub_0809F69C - .4byte sub_0809F6CC - -gUnk_081247C0:: @ 081247C0 - .incbin "cloud/gUnk_081247C0.bin" - -gUnk_081247C8:: @ 081247C8 - .incbin "cloud/gUnk_081247C8.bin" - -gUnk_081247D0:: @ 081247D0 - .incbin "cloud/gUnk_081247D0.bin" diff --git a/include/player.h b/include/player.h index d9c869f5..e91c92f5 100644 --- a/include/player.h +++ b/include/player.h @@ -410,7 +410,7 @@ void sub_0807B7D8(u32, u32, u32); void sub_08078850(Entity*, u32, u32, const void*); void sub_08079D84(void); u32 sub_0807953C(void); -void sub_0807BB68(s16*, u32, u32); +void sub_0807BB68(const s16*, u32, u32); void sub_0807B9B8(u32, u32, u32); void sub_0807B7D8(u32, u32, u32); void RestorePrevTileEntity(u32, u32); diff --git a/linker.ld b/linker.ld index 02f44d3c..252ab931 100644 --- a/linker.ld +++ b/linker.ld @@ -1531,7 +1531,7 @@ SECTIONS { src/object/palaceArchway.o(.rodata); src/object/objectA2.o(.rodata); data/animations/object/objectA2.o(.rodata); - data/const/object/cloud.o(.rodata); + src/object/cloud.o(.rodata); data/const/object/minishLight.o(.rodata); src/object/objectA6.o(.rodata); data/animations/object/objectA6.o(.rodata); diff --git a/src/object/cloud.c b/src/object/cloud.c index 5c7349bb..162db099 100644 --- a/src/object/cloud.c +++ b/src/object/cloud.c @@ -4,22 +4,38 @@ void sub_0809F814(u32 r0); -extern void sub_0809F7BC(Entity*); -extern void sub_0809F7F4(Entity*); -extern void (*gUnk_08124798[])(Entity*); -extern void (*gUnk_081247A0[])(Entity*); -extern void (*gUnk_081247AC[])(Entity*); +void sub_0809F7BC(Entity*); +void sub_0809F7F4(Entity*); +void sub_0809F4DC(Entity*); +void sub_0809F700(Entity*); +void sub_0809F514(Entity*); +void sub_0809F548(Entity*); +void sub_0809F5B0(Entity*); +void sub_0809F6CC(Entity*); +void sub_0809F69C(Entity*); +void sub_0809F61C(Entity*); +void sub_0809F5F0(Entity*); +void sub_0809F5DC(Entity*); extern void* gUnk_080DD750; -extern u8 gUnk_081247C0[]; -extern u16 gUnk_081247C8[]; -extern u16 gUnk_081247D0; void Cloud(Entity* this) { - gUnk_08124798[this->type](this); + static void (*const typeFuncs[])(Entity*) = { + sub_0809F4DC, + sub_0809F700, + }; + typeFuncs[this->type](this); } void sub_0809F4DC(Entity* this) { + static void (*const gUnk_081247A0[])(Entity*) = { + sub_0809F514, + sub_0809F548, + sub_0809F5B0, + }; + static void (*const gUnk_081247AC[])(Entity*) = { + sub_0809F5DC, sub_0809F5F0, sub_0809F61C, sub_0809F69C, sub_0809F6CC, + }; if (this->type2 == 0) { gUnk_081247A0[this->action](this); } else { @@ -121,6 +137,9 @@ void sub_0809F6CC(Entity* this) { } void sub_0809F700(Entity* this) { + static const s8 gUnk_081247C0[] = { + -1, 1, 2, -2, 0, 1, 0, -1, + }; u8 bVar1; u32 uVar2; @@ -157,6 +176,7 @@ Entity* sub_0809F770(Entity* this) { } void sub_0809F7BC(Entity* this) { + static const u16 gUnk_081247C8[] = { 0x100, 0x180, 0x200, 0x280 }; Entity* cloud; u32 uVar1; u32 uVar2; @@ -179,5 +199,7 @@ void sub_0809F7F4(Entity* this) { } void sub_0809F814(u32 r0) { - sub_0807BB68(&gUnk_081247D0, r0, 1); + static const s16 gUnk_081247D0[] = { 0x257, -0x41, 0x258, -0x40, 0x259, -0x3f, 0x25a, -0x1, 0x25b, 0x0, + 0x25c, 0x1, 0x25d, 0x3f, 0x25e, 0x40, 0x25f, 0x41, -0x1, 0x0 }; + sub_0807BB68(gUnk_081247D0, r0, 1); } diff --git a/src/playerUtils.c b/src/playerUtils.c index d5062e2a..436e6eb2 100644 --- a/src/playerUtils.c +++ b/src/playerUtils.c @@ -1980,7 +1980,7 @@ void RestorePrevTileEntity(u32 position, u32 layer) { } } -void sub_0807BB68(s16* param_1, u32 basePosition, u32 layer) { +void sub_0807BB68(const s16* param_1, u32 basePosition, u32 layer) { while (param_1[0] != -1) { SetTileType((u16)param_1[0], basePosition + param_1[1], layer); param_1 += 2; From b703cced65e66ba92d06797c51c806adc5aca3be Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 18 Apr 2022 13:14:25 +0300 Subject: [PATCH 30/63] Put const data in minishLight --- data/const/object/minishLight.s | 9 --------- linker.ld | 2 +- src/object/minishLight.c | 9 +++++++-- 3 files changed, 8 insertions(+), 12 deletions(-) delete mode 100644 data/const/object/minishLight.s diff --git a/data/const/object/minishLight.s b/data/const/object/minishLight.s deleted file mode 100644 index 65089903..00000000 --- a/data/const/object/minishLight.s +++ /dev/null @@ -1,9 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_081247F8:: @ 081247F8 - .4byte sub_0809F840 - .4byte sub_0809F868 diff --git a/linker.ld b/linker.ld index 252ab931..7ffc45c8 100644 --- a/linker.ld +++ b/linker.ld @@ -1532,7 +1532,7 @@ SECTIONS { src/object/objectA2.o(.rodata); data/animations/object/objectA2.o(.rodata); src/object/cloud.o(.rodata); - data/const/object/minishLight.o(.rodata); + src/object/minishLight.o(.rodata); src/object/objectA6.o(.rodata); data/animations/object/objectA6.o(.rodata); src/object/objectA8.o(.rodata); diff --git a/src/object/minishLight.c b/src/object/minishLight.c index 3ec27575..361e6768 100644 --- a/src/object/minishLight.c +++ b/src/object/minishLight.c @@ -1,9 +1,14 @@ #include "entity.h" -extern void (*const gUnk_081247F8[])(Entity*); +void sub_0809F840(Entity*); +void sub_0809F868(Entity*); void MinishLight(Entity* this) { - gUnk_081247F8[this->action](this); + static void (*const actionFuncs[])(Entity*) = { + sub_0809F840, + sub_0809F868, + }; + actionFuncs[this->action](this); } void sub_0809F840(Entity* this) { From 2fe7c42dcf475528c432e3420f38ba576712e058 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 18 Apr 2022 13:16:21 +0300 Subject: [PATCH 31/63] Put const data in objectAF --- data/const/object/objectAF.s | 10 ---------- linker.ld | 2 +- src/object/objectAF.c | 14 ++++++++++---- 3 files changed, 11 insertions(+), 15 deletions(-) delete mode 100644 data/const/object/objectAF.s diff --git a/data/const/object/objectAF.s b/data/const/object/objectAF.s deleted file mode 100644 index 5dfc2d66..00000000 --- a/data/const/object/objectAF.s +++ /dev/null @@ -1,10 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_081248C4:: @ 081248C4 - .4byte sub_080A05A4 - .4byte sub_080A05F4 - .4byte sub_080A0624 diff --git a/linker.ld b/linker.ld index 7ffc45c8..391fd7d6 100644 --- a/linker.ld +++ b/linker.ld @@ -1542,7 +1542,7 @@ SECTIONS { data/animations/object/objectAB.o(.rodata); src/object/fourElements.o(.rodata); src/object/objectAD.o(.rodata); - data/const/object/objectAF.o(.rodata); + src/object/objectAF.o(.rodata); data/animations/object/objectAF.o(.rodata); src/object/metalDoor.o(.rodata); data/const/object/jailBars.o(.rodata); diff --git a/src/object/objectAF.c b/src/object/objectAF.c index e0771380..d2707ab4 100644 --- a/src/object/objectAF.c +++ b/src/object/objectAF.c @@ -2,12 +2,18 @@ #include "entity.h" #include "physics.h" -extern void sub_080A0640(Entity*); - -extern void (*const gUnk_081248C4[])(Entity*); +void sub_080A0640(Entity*); +void sub_080A05A4(Entity*); +void sub_080A05F4(Entity*); +void sub_080A0624(Entity*); void ObjectAF(Entity* this) { - gUnk_081248C4[this->action](this); + static void (*const actionFuncs[])(Entity*) = { + sub_080A05A4, + sub_080A05F4, + sub_080A0624, + }; + actionFuncs[this->action](this); } void sub_080A05A4(Entity* this) { From 268ac11430e8cadb211aa699196d1b300bc5e359 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 18 Apr 2022 13:30:57 +0300 Subject: [PATCH 32/63] Put const data in jailBars --- assets/assets.json | 10 ---------- data/const/object/jailBars.s | 17 ----------------- include/functions.h | 2 +- linker.ld | 2 +- src/beanstalkSubtask.c | 2 +- src/object/jailBars.c | 24 +++++++++++++++++------- 6 files changed, 20 insertions(+), 37 deletions(-) delete mode 100644 data/const/object/jailBars.s diff --git a/assets/assets.json b/assets/assets.json index a4858372..8edb1f49 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -44007,16 +44007,6 @@ "size": 12, "type": "animation" }, - { - "path": "jailBars/gUnk_08124960.bin", - "start": 1198432, - "size": 26 - }, - { - "path": "jailBars/gUnk_0812497A.bin", - "start": 1198458, - "size": 26 - }, { "path": "animations/gSpriteAnimations_ObjectB2_0.bin", "start": 1198520, diff --git a/data/const/object/jailBars.s b/data/const/object/jailBars.s deleted file mode 100644 index 4f5aa48f..00000000 --- a/data/const/object/jailBars.s +++ /dev/null @@ -1,17 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08124950:: @ 08124950 - .4byte sub_080A08C4 - .4byte sub_080A0910 - .4byte sub_080A0938 - .4byte nullsub_127 - -gUnk_08124960:: @ 08124960 - .incbin "jailBars/gUnk_08124960.bin" - -gUnk_0812497A:: @ 0812497A - .incbin "jailBars/gUnk_0812497A.bin" diff --git a/include/functions.h b/include/functions.h index 1f7d35cf..10d18e30 100644 --- a/include/functions.h +++ b/include/functions.h @@ -41,7 +41,7 @@ extern void SetDirtTile(u32); * @param basePosition the position the offsets in tileData are based on * @param layer the tile layer */ -extern void SetMultipleTiles(TileData* tileData, u32 basePosition, u32 layer); +extern void SetMultipleTiles(const TileData* tileData, u32 basePosition, u32 layer); extern void TryLoadPrologueHyruleTown(void); extern void UnloadGFXSlots(Entity*); extern void UnloadOBJPalette(Entity*); diff --git a/linker.ld b/linker.ld index 391fd7d6..d696e6ab 100644 --- a/linker.ld +++ b/linker.ld @@ -1545,7 +1545,7 @@ SECTIONS { src/object/objectAF.o(.rodata); data/animations/object/objectAF.o(.rodata); src/object/metalDoor.o(.rodata); - data/const/object/jailBars.o(.rodata); + src/object/jailBars.o(.rodata); data/animations/object/jailBars.o(.rodata); data/animations/object/objectB2.o(.rodata); src/object/objectB3.o(.rodata); diff --git a/src/beanstalkSubtask.c b/src/beanstalkSubtask.c index 6ed3af67..455738b8 100644 --- a/src/beanstalkSubtask.c +++ b/src/beanstalkSubtask.c @@ -499,7 +499,7 @@ void sub_0801AE44(s32 param_1) { UpdateScrollVram(); } -void SetMultipleTiles(TileData* tileData, u32 basePosition, u32 layer) { +void SetMultipleTiles(const TileData* tileData, u32 basePosition, u32 layer) { while (tileData->tile != -1) { SetTile((u16)tileData->tile, basePosition + tileData->position, layer); tileData++; diff --git a/src/object/jailBars.c b/src/object/jailBars.c index 3758a766..ba563f9e 100644 --- a/src/object/jailBars.c +++ b/src/object/jailBars.c @@ -6,13 +6,19 @@ #include "functions.h" static void SetJailBarTiles(Entity*, u32); - -extern void (*const gUnk_08124950[])(Entity*); -extern TileData gUnk_08124960[]; -extern TileData gUnk_0812497A[]; +void sub_080A08C4(Entity*); +void sub_080A0910(Entity*); +void sub_080A0938(Entity*); +void nullsub_127(Entity*); void JailBars(Entity* this) { - gUnk_08124950[this->action](this); + static void (*const actionFuncs[])(Entity*) = { + sub_080A08C4, + sub_080A0910, + sub_080A0938, + nullsub_127, + }; + actionFuncs[this->action](this); } void sub_080A08C4(Entity* this) { @@ -49,11 +55,15 @@ void nullsub_127(Entity* this) { } static void SetJailBarTiles(Entity* this, u32 arg1) { - TileData* puVar1; + static const s16 gUnk_08124960[] = { 0x4023, -0x3, 0x4023, -0x2, 0x4023, -0x1, 0x4023, + 0x0, 0x4023, 0x1, 0x4023, 0x2, -0x1 }; + static const s16 gUnk_0812497A[] = { 0x4023, -0x3, 0x4023, -0x2, 0x4088, -0x1, 0x4087, + 0x0, 0x4023, 0x1, 0x4023, 0x2, -0x1 }; + const s16* puVar1; puVar1 = gUnk_08124960; if (arg1 == 1) { puVar1 = gUnk_0812497A; } - SetMultipleTiles(puVar1, COORD_TO_TILE(this), 1); + SetMultipleTiles((const TileData*)puVar1, COORD_TO_TILE(this), 1); } From 868c950e5091d900b9af557e9b702c3b06a2949e Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 18 Apr 2022 14:11:34 +0300 Subject: [PATCH 33/63] Put const data in pinwheel --- assets/assets.json | 39 ------------------------------------ data/const/object/pinwheel.s | 25 ----------------------- linker.ld | 2 +- src/object/pinwheel.c | 14 +++++++++++-- 4 files changed, 13 insertions(+), 67 deletions(-) delete mode 100644 data/const/object/pinwheel.s diff --git a/assets/assets.json b/assets/assets.json index 8edb1f49..09800747 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -44107,45 +44107,6 @@ "size": 20, "type": "animation" }, - { - "path": "pinwheel/gUnk_08125050_JP.bin", - "variants": [ - "JP" - ], - "starts": { - "JP": 1199380 - }, - "size": 12 - }, - { - "path": "pinwheel/gUnk_08125050_1_DEMO_JP.bin", - "variants": [ - "DEMO_JP" - ], - "starts": { - "DEMO_JP": 1198016 - }, - "size": 12 - }, - { - "path": "pinwheel/gUnk_08125050_2_EU.bin", - "variants": [ - "EU" - ], - "starts": { - "EU": 1197976 - }, - "size": 12 - }, - { - "path": "pinwheel/gUnk_08125050_3_USA-DEMO_USA.bin", - "variants": [ - "USA", - "DEMO_USA" - ], - "start": 1200208, - "size": 12 - }, { "offsets": { "EU": -2248 diff --git a/data/const/object/pinwheel.s b/data/const/object/pinwheel.s deleted file mode 100644 index 107853c8..00000000 --- a/data/const/object/pinwheel.s +++ /dev/null @@ -1,25 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08125050:: @ 08125050 -.ifdef JP - .incbin "pinwheel/gUnk_08125050_JP.bin" -.else -.ifdef DEMO_JP - .incbin "pinwheel/gUnk_08125050_1_DEMO_JP.bin" -.else -.ifdef EU - .incbin "pinwheel/gUnk_08125050_2_EU.bin" -.else - .incbin "pinwheel/gUnk_08125050_3_USA-DEMO_USA.bin" -.endif -.endif -.endif - -gUnk_0812505C:: @ 0812505C - .4byte sub_080A23DC - .4byte sub_080A2420 - .4byte sub_080A243C diff --git a/linker.ld b/linker.ld index d696e6ab..edfa4b96 100644 --- a/linker.ld +++ b/linker.ld @@ -1558,7 +1558,7 @@ SECTIONS { src/object/gyorgBossObject.o(.rodata); data/const/object/windcrest.o(.rodata); src/object/objectBD.o(.rodata); - data/const/object/pinwheel.o(.rodata); + src/object/pinwheel.o(.rodata); data/animations/object/pinwheel.o(.rodata); src/object/objectC1.o(.rodata); src/objectDefinitions.o(.rodata); diff --git a/src/object/pinwheel.c b/src/object/pinwheel.c index 519b96a3..f3fc9873 100644 --- a/src/object/pinwheel.c +++ b/src/object/pinwheel.c @@ -3,11 +3,21 @@ #include "flags.h" #include "object.h" +static const u16 gUnk_08125050[] = { + KUMOUE_02_AWASE_01, KUMOUE_02_AWASE_02, KUMOUE_02_AWASE_03, KUMOUE_02_AWASE_04, KUMOUE_02_AWASE_05, BEGIN_1, +}; extern u32 gUnk_020342F8; -extern u16 gUnk_08125050[]; -extern void (*gUnk_0812505C[])(Entity*); + +void sub_080A23DC(Entity*); +void sub_080A2420(Entity*); +void sub_080A243C(Entity*); void Pinwheel(Entity* this) { + static void (*const gUnk_0812505C[])(Entity*) = { + sub_080A23DC, + sub_080A2420, + sub_080A243C, + }; u16 x = this->health; if ((x & 0x7f) != 0) { if (ReadBit(&gUnk_020342F8, x - 1) == 0) { From 62135a7584a8ae7081841357040807e6ece6d9c9 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 18 Apr 2022 14:34:24 +0300 Subject: [PATCH 34/63] Put const data in manager4 --- assets/assets.json | 75 ------------ data/const/manager/manager4.s | 209 ---------------------------------- include/manager.h | 4 +- linker.ld | 2 +- src/manager/manager4.c | 92 +++++++++++++-- 5 files changed, 85 insertions(+), 297 deletions(-) delete mode 100644 data/const/manager/manager4.s diff --git a/assets/assets.json b/assets/assets.json index 09800747..f9017dbd 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -32282,81 +32282,6 @@ "DEMO_JP": -2052 } }, - { - "path": "manager4/gUnk_08107C78.bin", - "start": 1080440, - "size": 8 - }, - { - "path": "manager4/gUnk_08107C80.bin", - "start": 1080448, - "size": 24 - }, - { - "path": "manager4/gUnk_08107C98.bin", - "start": 1080472, - "size": 40 - }, - { - "path": "manager4/gUnk_08107CC0.bin", - "start": 1080512, - "size": 16 - }, - { - "path": "manager4/gUnk_08107CD0.bin", - "start": 1080528, - "size": 16 - }, - { - "path": "manager4/gUnk_08107CE0.bin", - "start": 1080544, - "size": 24 - }, - { - "path": "manager4/gUnk_08107CF8.bin", - "start": 1080568, - "size": 16 - }, - { - "path": "manager4/gUnk_08107D08.bin", - "start": 1080584, - "size": 24 - }, - { - "path": "manager4/gUnk_08107D20.bin", - "start": 1080608, - "size": 24 - }, - { - "path": "manager4/gUnk_08107D38.bin", - "start": 1080632, - "size": 16 - }, - { - "path": "manager4/gUnk_08107D48.bin", - "start": 1080648, - "size": 32 - }, - { - "path": "manager4/gUnk_08107D68.bin", - "start": 1080680, - "size": 16 - }, - { - "path": "manager4/gUnk_08107D78.bin", - "start": 1080696, - "size": 24 - }, - { - "path": "manager4/gUnk_08107D90.bin", - "start": 1080720, - "size": 16 - }, - { - "path": "manager4/gUnk_08107DA0.bin", - "start": 1080736, - "size": 32 - }, { "offsets": { "EU": -2220, diff --git a/data/const/manager/manager4.s b/data/const/manager/manager4.s deleted file mode 100644 index 65034cbd..00000000 --- a/data/const/manager/manager4.s +++ /dev/null @@ -1,209 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08107C70:: @ 08107C70 - .4byte sub_0805786C - .4byte sub_08057920 - -gUnk_08107C78:: @ 08107C78 - .incbin "manager4/gUnk_08107C78.bin" - -gUnk_08107C80:: @ 08107C80 - .incbin "manager4/gUnk_08107C80.bin" - -gUnk_08107C98:: @ 08107C98 - .incbin "manager4/gUnk_08107C98.bin" - -gUnk_08107CC0:: @ 08107CC0 - .incbin "manager4/gUnk_08107CC0.bin" - -gUnk_08107CD0:: @ 08107CD0 - .incbin "manager4/gUnk_08107CD0.bin" - -gUnk_08107CE0:: @ 08107CE0 - .incbin "manager4/gUnk_08107CE0.bin" - -gUnk_08107CF8:: @ 08107CF8 - .incbin "manager4/gUnk_08107CF8.bin" - -gUnk_08107D08:: @ 08107D08 - .incbin "manager4/gUnk_08107D08.bin" - -gUnk_08107D20:: @ 08107D20 - .incbin "manager4/gUnk_08107D20.bin" - -gUnk_08107D38:: @ 08107D38 - .incbin "manager4/gUnk_08107D38.bin" - -gUnk_08107D48:: @ 08107D48 - .incbin "manager4/gUnk_08107D48.bin" - -gUnk_08107D68:: @ 08107D68 - .incbin "manager4/gUnk_08107D68.bin" - -gUnk_08107D78:: @ 08107D78 - .incbin "manager4/gUnk_08107D78.bin" - -gUnk_08107D90:: @ 08107D90 - .incbin "manager4/gUnk_08107D90.bin" - -gUnk_08107DA0:: @ 08107DA0 - .incbin "manager4/gUnk_08107DA0.bin" - -diggingCaveEntrances:: @ 08107DC0 - .4byte gUnk_08107C80 - .4byte gUnk_08107C78 - .4byte gUnk_08107CC0 - .4byte gUnk_08107C98 - .4byte gUnk_08107CF8 - .4byte gUnk_08107C78 - .4byte gUnk_08107CD0 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107CE0 - .4byte gUnk_08107D08 - .4byte gUnk_08107D20 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107D38 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107D48 - .4byte gUnk_08107D68 - .4byte gUnk_08107C78 - .4byte gUnk_08107D78 - .4byte gUnk_08107D90 - .4byte gUnk_08107C78 - .4byte gUnk_08107DA0 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 diff --git a/include/manager.h b/include/manager.h index 131e9967..94df1639 100644 --- a/include/manager.h +++ b/include/manager.h @@ -138,7 +138,7 @@ typedef struct { } DiggingCaveEntrance; typedef struct { - DiggingCaveEntrance* unk_00; + const DiggingCaveEntrance* unk_00; u16 unk_04; u16 unk_06; u8 isDiggingCave; @@ -148,7 +148,7 @@ typedef struct { } struct_03004030; extern struct_03004030 gUnk_03004030; -extern DiggingCaveEntrance* diggingCaveEntrances[]; +extern const DiggingCaveEntrance* const diggingCaveEntrances[]; typedef struct { Manager manager; diff --git a/linker.ld b/linker.ld index edfa4b96..257ffb21 100644 --- a/linker.ld +++ b/linker.ld @@ -1108,7 +1108,7 @@ SECTIONS { . = ALIGN(4); src/manager/manager1.o(.rodata); src/manager/manager3.o(.rodata); - data/const/manager/manager4.o(.rodata); + src/manager/manager4.o(.rodata); src/manager/manager5.o(.rodata); src/manager/manager7.o(.rodata); . = ALIGN(4); diff --git a/src/manager/manager4.c b/src/manager/manager4.c index 7ed53807..a94c7a5a 100644 --- a/src/manager/manager4.c +++ b/src/manager/manager4.c @@ -6,18 +6,24 @@ #include "structures.h" #include "functions.h" -extern void (*gUnk_08107C70[])(Manager*); +void Manager4_Main(Manager*); +void sub_0805786C(Manager*); +void sub_08057920(Manager*); void Manager4_Main(Manager* this) { - gUnk_08107C70[this->action](this); + static void (*const actionFuncs[])(Manager*) = { + sub_0805786C, + sub_08057920, + }; + actionFuncs[this->action](this); } extern void UpdateIsDiggingCave(void); -extern DiggingCaveEntrance* sub_08057AA8(DiggingCaveEntrance*, int); +extern const DiggingCaveEntrance* sub_08057AA8(const DiggingCaveEntrance*, int); void sub_0805786C(Manager* this) { - DiggingCaveEntrance* tmp; + const DiggingCaveEntrance* tmp; u8 room; u8 area; u16 uVar = 0x81 << 7; @@ -50,10 +56,10 @@ void sub_0805786C(Manager* this) { this->action = 1; } -extern u32 sub_0805795C(Manager*, DiggingCaveEntrance*); +extern u32 sub_0805795C(Manager*, const DiggingCaveEntrance*); void sub_08057920(Manager* this) { - DiggingCaveEntrance* tmp; + const DiggingCaveEntrance* tmp; u8 room; room = gRoomControls.room; for (tmp = diggingCaveEntrances[gRoomControls.area]; @@ -61,9 +67,9 @@ void sub_08057920(Manager* this) { ; } -void sub_08057A18(Manager*, DiggingCaveEntrance*); +void sub_08057A18(Manager*, const DiggingCaveEntrance*); -u32 sub_0805795C(Manager* this, DiggingCaveEntrance* entr) { +u32 sub_0805795C(Manager* this, const DiggingCaveEntrance* entr) { u16 offsetX, offsetY, offsetX2, offsetY2; u32 tmp, tmp2; if (gUnk_03004030.isDiggingCave) { @@ -91,7 +97,7 @@ u32 sub_0805795C(Manager* this, DiggingCaveEntrance* entr) { extern void sub_08080930(u32); -void sub_08057A18(Manager* this, DiggingCaveEntrance* entr) { +void sub_08057A18(Manager* this, const DiggingCaveEntrance* entr) { u16 tmp; SetInitializationPriority(); gUnk_03004030.unk_0a = gUnk_03004030.unk_09; @@ -118,10 +124,76 @@ void sub_08057A18(Manager* this, DiggingCaveEntrance* entr) { DeleteManager(this); } -DiggingCaveEntrance* sub_08057AA8(DiggingCaveEntrance* entr, int room) { +const DiggingCaveEntrance* sub_08057AA8(const DiggingCaveEntrance* entr, int room) { for (; entr->unk_00 != 0xFFFF; entr++) { if (entr->source_room == room) return entr; } return 0; } + +static const DiggingCaveEntrance gUnk_08107C78[] = { { -1, 0, 0, 0, 0 } }; +static const DiggingCaveEntrance gUnk_08107C80[] = { { 0x4e5, 0x0, 0x0, 0xc, 0x0, 0xce5 }, + { 0x3df, 0x0, 0x0, 0xc, 0x0, 0xbdf }, + { -0x1, 0x0, 0x0, 0x0, 0x0, 0x0 } }; +static const DiggingCaveEntrance gUnk_08107C98[] = { { 0x2c3, 0x4, 0x4, 0x13, 0x0, 0x2c3 }, + { 0x163, 0x5, 0x10, 0x19, 0x1, 0x448 }, + { 0x385, 0x7, 0xa, 0x13, 0x3, 0x385 }, + { 0x390, 0x7, 0xa, 0x13, 0x3, 0x390 }, + { -0x1, 0x0, 0x0, 0x0, 0x0, 0x0 } }; +static const DiggingCaveEntrance gUnk_08107CC0[] = { { 0x62d, 0x0, 0x2, 0xf, 0x0, 0xa2d }, + { -0x1, 0x0, 0x0, 0x0, 0x0, 0x0 } }; +static const DiggingCaveEntrance gUnk_08107CD0[] = { { 0x143, 0x1, 0x6, 0x14, 0x0, 0x643 }, + { -0x1, 0x0, 0x0, 0x0, 0x0, 0x0 } }; +static const DiggingCaveEntrance gUnk_08107CE0[] = { { 0x95a, 0x0, 0x8, 0x16, 0x0, 0x95a }, + { 0x9ce, 0x0, 0x8, 0x16, 0x0, 0x9ce }, + { -0x1, 0x0, 0x0, 0x0, 0x0, 0x0 } }; +static const DiggingCaveEntrance gUnk_08107CF8[] = { { 0x670, 0x0, 0xc, 0x17, 0x0, 0x670 }, + { -0x1, 0x0, 0x0, 0x0, 0x0, 0x0 } }; +static const DiggingCaveEntrance gUnk_08107D08[] = { { 0x15e, 0x0, 0xe, 0x19, 0x1, 0x46e }, + { 0x79e, 0x0, 0x12, 0x19, 0x0, 0x248 }, + { -0x1, 0x0, 0x0, 0x0, 0x0, 0x0 } }; +static const DiggingCaveEntrance gUnk_08107D20[] = { { 0xce5, 0x0, 0x1, 0x0, 0x0, 0x4e5 }, + { 0xbdf, 0x0, 0x1, 0x0, 0x0, 0x3df }, + { -0x1, 0x0, 0x0, 0x0, 0x0, 0x0 } }; +static const DiggingCaveEntrance gUnk_08107D38[] = { { 0xa2d, 0x0, 0x3, 0x2, 0x0, 0x62d }, + { -0x1, 0x0, 0x0, 0x0, 0x0, 0x0 } }; +static const DiggingCaveEntrance gUnk_08107D48[] = { { 0x2c3, 0x0, 0x5, 0x3, 0x4, 0x2c3 }, + { 0x385, 0x3, 0xb, 0x3, 0x7, 0x385 }, + { 0x390, 0x3, 0xb, 0x3, 0x7, 0x390 }, + { -0x1, 0x0, 0x0, 0x0, 0x0, 0x0 } }; +static const DiggingCaveEntrance gUnk_08107D68[] = { { 0x643, 0x0, 0x7, 0x6, 0x1, 0x143 }, + { -0x1, 0x0, 0x0, 0x0, 0x0, 0x0 } }; +static const DiggingCaveEntrance gUnk_08107D78[] = { { 0x95a, 0x0, 0x9, 0xa, 0x0, 0x95a }, + { 0x9ce, 0x0, 0x9, 0xa, 0x0, 0x9ce }, + { -0x1, 0x0, 0x0, 0x0, 0x0, 0x0 } }; +static const DiggingCaveEntrance gUnk_08107D90[] = { { 0x670, 0x0, 0xd, 0x4, 0x0, 0x670 }, + { -0x1, 0x0, 0x0, 0x0, 0x0, 0x0 } }; +static const DiggingCaveEntrance gUnk_08107DA0[] = { { 0x46e, 0x1, 0xf, 0xb, 0x0, 0x15e }, + { 0x448, 0x1, 0x11, 0x3, 0x5, 0x163 }, + { 0x248, 0x0, 0x13, 0xb, 0x0, 0x79e }, + { -0x1, 0x0, 0x0, 0x0, 0x0, 0x0 } }; +static const DiggingCaveEntrance* const diggingCaveEntrances[] = { + gUnk_08107C80, gUnk_08107C78, gUnk_08107CC0, gUnk_08107C98, gUnk_08107CF8, gUnk_08107C78, gUnk_08107CD0, + gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107CE0, gUnk_08107D08, gUnk_08107D20, gUnk_08107C78, + gUnk_08107C78, gUnk_08107D38, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107D48, gUnk_08107D68, + gUnk_08107C78, gUnk_08107D78, gUnk_08107D90, gUnk_08107C78, gUnk_08107DA0, gUnk_08107C78, gUnk_08107C78, + gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, + gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, + gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, + gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, + gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, + gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, + gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, + gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, + gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, + gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, + gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, + gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, + gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, + gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, + gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, + gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, + gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, + gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, +}; From 534fc194a54d5cc4d585f9872cc61f2e30fc7a42 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 18 Apr 2022 14:35:36 +0300 Subject: [PATCH 35/63] Put const data in managerD --- data/const/manager/managerD.s | 10 ---------- linker.ld | 2 +- src/manager/managerD.c | 11 +++++++++-- 3 files changed, 10 insertions(+), 13 deletions(-) delete mode 100644 data/const/manager/managerD.s diff --git a/data/const/manager/managerD.s b/data/const/manager/managerD.s deleted file mode 100644 index c99ddb03..00000000 --- a/data/const/manager/managerD.s +++ /dev/null @@ -1,10 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08108308:: @ 08108308 - .4byte sub_08058DE8 - .4byte sub_08058E18 - .4byte sub_08058E34 diff --git a/linker.ld b/linker.ld index 257ffb21..305e9e45 100644 --- a/linker.ld +++ b/linker.ld @@ -1116,7 +1116,7 @@ SECTIONS { src/manager/managerA.o(.rodata); src/manager/managerB.o(.rodata); src/manager/managerC.o(.rodata); - data/const/manager/managerD.o(.rodata); + src/manager/managerD.o(.rodata); src/manager/managerF.o(.rodata); src/manager/manager10.o(.rodata); data/const/manager/manager12.o(.rodata); diff --git a/src/manager/managerD.c b/src/manager/managerD.c index 621e7c43..dec69e60 100644 --- a/src/manager/managerD.c +++ b/src/manager/managerD.c @@ -32,10 +32,17 @@ typedef struct { u16 field_0x3e; } ManagerD; -extern void (*const gUnk_08108308[])(ManagerD*); +void sub_08058DE8(ManagerD*); +void sub_08058E18(ManagerD*); +void sub_08058E34(ManagerD*); void ManagerD_Main(ManagerD* this) { - gUnk_08108308[this->manager.action](this); + static void (*const actionFuncs[])(ManagerD*) = { + sub_08058DE8, + sub_08058E18, + sub_08058E34, + }; + actionFuncs[this->manager.action](this); } void sub_08058DE8(ManagerD* this) { From 0700c0e13f308feab8661ff8914d2dd382cb607b Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 18 Apr 2022 16:33:58 +0300 Subject: [PATCH 36/63] Put const data in manager12 --- assets/assets.json | 114 --------------------------------- data/const/manager/manager12.s | 49 -------------- linker.ld | 2 +- src/main.c | 4 +- src/manager/manager12.c | 63 +++++++++++------- 5 files changed, 44 insertions(+), 188 deletions(-) delete mode 100644 data/const/manager/manager12.s diff --git a/assets/assets.json b/assets/assets.json index f9017dbd..d77119a5 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -32288,120 +32288,6 @@ "JP": -828 } }, - { - "path": "manager12/gUnk_08108398.bin", - "start": 1082264, - "size": 22 - }, - { - "path": "manager12/gUnk_081083AE.bin", - "start": 1082286, - "size": 22 - }, - { - "path": "manager12/gUnk_081083C4.bin", - "start": 1082308, - "size": 22 - }, - { - "path": "manager12/gUnk_081083DA.bin", - "start": 1082330, - "size": 24 - }, - { - "path": "manager12/gUnk_081083F2.bin", - "start": 1082354, - "size": 22 - }, - { - "path": "manager12/gUnk_08108408_EU.bin", - "variants": [ - "EU" - ], - "starts": { - "EU": 1080156 - }, - "size": 60 - }, - { - "path": "manager12/gUnk_08108408_1_USA-JP-DEMO_USA-DEMO_JP.bin", - "variants": [ - "USA", - "JP", - "DEMO_USA", - "DEMO_JP" - ], - "start": 1082376, - "size": 60 - }, - { - "path": "manager12/gUnk_08108408_2_EU.bin", - "variants": [ - "EU" - ], - "starts": { - "EU": 1080216 - }, - "size": 36 - }, - { - "path": "manager12/gUnk_08108408_3_USA-JP-DEMO_USA-DEMO_JP.bin", - "variants": [ - "USA", - "JP", - "DEMO_USA", - "DEMO_JP" - ], - "start": 1082436, - "size": 36 - }, - { - "path": "manager12/gUnk_08108468_EU.bin", - "variants": [ - "EU" - ], - "starts": { - "EU": 1080252 - }, - "size": 38 - }, - { - "path": "manager12/gUnk_08108468_1_USA-JP-DEMO_USA-DEMO_JP.bin", - "variants": [ - "USA", - "JP", - "DEMO_USA", - "DEMO_JP" - ], - "start": 1082472, - "size": 38 - }, - { - "path": "manager12/gUnk_08108468_2_EU.bin", - "variants": [ - "EU" - ], - "starts": { - "EU": 1080290 - }, - "size": 53 - }, - { - "path": "manager12/gUnk_08108468_3_USA-JP-DEMO_USA-DEMO_JP.bin", - "variants": [ - "USA", - "JP", - "DEMO_USA", - "DEMO_JP" - ], - "start": 1082510, - "size": 53 - }, - { - "path": "manager12/gUnk_08108468_4.bin", - "start": 1082563, - "size": 5 - }, { "path": "manager13/gUnk_081084C8.bin", "start": 1082568, diff --git a/data/const/manager/manager12.s b/data/const/manager/manager12.s deleted file mode 100644 index b25916f7..00000000 --- a/data/const/manager/manager12.s +++ /dev/null @@ -1,49 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08108398:: @ 08108398 - .incbin "manager12/gUnk_08108398.bin" - -gUnk_081083AE:: @ 081083AE - .incbin "manager12/gUnk_081083AE.bin" - -gUnk_081083C4:: @ 081083C4 - .incbin "manager12/gUnk_081083C4.bin" - -gUnk_081083DA:: @ 081083DA - .incbin "manager12/gUnk_081083DA.bin" - -gUnk_081083F2:: @ 081083F2 - .incbin "manager12/gUnk_081083F2.bin" - -gUnk_08108408:: @ 08108408 -.ifdef EU - @ TODO only small differences - .incbin "manager12/gUnk_08108408_EU.bin" -.else - .incbin "manager12/gUnk_08108408_1_USA-JP-DEMO_USA-DEMO_JP.bin" -.endif -.ifdef EU - @ TODO only small differences - .incbin "manager12/gUnk_08108408_2_EU.bin" -.else - .incbin "manager12/gUnk_08108408_3_USA-JP-DEMO_USA-DEMO_JP.bin" -.endif - -gUnk_08108468:: @ 08108468 -.ifdef EU - @ TODO only small differences - .incbin "manager12/gUnk_08108468_EU.bin" -.else - .incbin "manager12/gUnk_08108468_1_USA-JP-DEMO_USA-DEMO_JP.bin" -.endif -.ifdef EU - @ TODO only small differences - .incbin "manager12/gUnk_08108468_2_EU.bin" -.else - .incbin "manager12/gUnk_08108468_3_USA-JP-DEMO_USA-DEMO_JP.bin" -.endif - .incbin "manager12/gUnk_08108468_4.bin" diff --git a/linker.ld b/linker.ld index 305e9e45..0423a30b 100644 --- a/linker.ld +++ b/linker.ld @@ -1119,7 +1119,7 @@ SECTIONS { src/manager/managerD.o(.rodata); src/manager/managerF.o(.rodata); src/manager/manager10.o(.rodata); - data/const/manager/manager12.o(.rodata); + src/manager/manager12.o(.rodata); data/const/manager/manager13.o(.rodata); src/manager/manager14.o(.rodata); data/const/manager/manager15.o(.rodata); diff --git a/src/main.c b/src/main.c index b05555a5..1fa74dcd 100644 --- a/src/main.c +++ b/src/main.c @@ -279,8 +279,8 @@ u32 CheckRegionOnScreen(u32 x0, u32 y0, u32 x1, u32 y1) { } // Iterate over array of AABBs and check if any fit on screen -u16 CheckRegionsOnScreen(u16* arr) { - u16* i; +u16 CheckRegionsOnScreen(const u16* arr) { + const u16* i; for (i = arr; *i != 0xff; i += 5) { if (CheckRegionOnScreen(i[1], i[2], i[3], i[4])) return *i; diff --git a/src/manager/manager12.c b/src/manager/manager12.c index 9bc1eb23..0f947039 100644 --- a/src/manager/manager12.c +++ b/src/manager/manager12.c @@ -13,20 +13,19 @@ typedef struct { } Manager12; void sub_08059A58(Manager12*); - void sub_08059A2C(Manager12*); +u32 CheckRegionsOnScreen(const u16* arr); -u32 CheckRegionsOnScreen(u16* arr); -extern u16 gUnk_081083DA; -extern u16 gUnk_081083F2; -extern u16 gUnk_08108398; -extern u16 gUnk_081083AE; -extern u16 gUnk_081083C4; +static const u16 gUnk_08108398[] = { 0x0, 0x0, 0x0, 0x3f0, 0x200, 0x1, 0x0, 0x280, 0x3f0, 0x140, 0xff }; +static const u16 gUnk_081083AE[] = { 0x2, 0x0, 0x0, 0x180, 0x3c0, 0x3, 0x280, 0x0, 0x170, 0x3c0, 0xff }; +static const u16 gUnk_081083C4[] = { 0x5, 0x130, 0x1b0, 0x190, 0x140, 0x4, 0x0, 0x0, 0x3f0, 0x3c0, 0xff }; +static const u16 gUnk_081083DA[] = { 0x0, 0x0, 0x0, 0x190, 0x1d0, 0x1, 0x0, 0x2a0, 0x190, 0x120, 0xff, 0xff }; +static const u16 gUnk_081083F2[] = { 0x5, 0x0, 0x1b0, 0x190, 0x140, 0x4, 0x0, 0x0, 0x190, 0x3c0, 0xff }; void sub_08059CC0(u32, u32); void sub_08059B18(void); -bool32 sub_08059C8C(Manager12*, u32, u8*, u16*); +bool32 sub_08059C8C(Manager12*, u32, u8*, const u16*); extern u32 gUnk_086E8460; @@ -37,8 +36,28 @@ typedef struct { u32 field_0xc; } Unknown; -extern Unknown gUnk_08108468[]; -extern Unknown gUnk_08108408[]; +static const Unknown gUnk_08108408[] = { +#ifdef EU + { 0x139860, 0x6000000, 0x13f860, 0x6008000 }, { 0x13c860, 0x6000000, 0x142860, 0x6008000 }, + { 0x13a860, 0x6001000, 0x140860, 0x6009000 }, { 0x13d860, 0x6001000, 0x143860, 0x6009000 }, + { 0x13b860, 0x6002000, 0x141860, 0x600a000 }, { 0x13e860, 0x6002000, 0x144860, 0x600a000 } +#else + { 0x1395e0, 0x6000000, 0x13f5e0, 0x6008000 }, { 0x13c5e0, 0x6000000, 0x1425e0, 0x6008000 }, + { 0x13a5e0, 0x6001000, 0x1405e0, 0x6009000 }, { 0x13d5e0, 0x6001000, 0x1435e0, 0x6009000 }, + { 0x13b5e0, 0x6002000, 0x1415e0, 0x600a000 }, { 0x13e5e0, 0x6002000, 0x1445e0, 0x600a000 } +#endif +}; +static const Unknown gUnk_08108468[] = { +#ifdef EU + { 0x146060, 0x6000000, 0x14c060, 0x6008000 }, { 0x149060, 0x6000000, 0x14f060, 0x6008000 }, + { 0x147060, 0x6001000, 0x14d060, 0x6009000 }, { 0x14a060, 0x6001000, 0x150060, 0x6009000 }, + { 0x148060, 0x6002000, 0x14e060, 0x600a000 }, { 0x14b060, 0x6002000, 0x151060, 0x600a000 }, +#else + { 0x145de0, 0x6000000, 0x14bde0, 0x6008000 }, { 0x148de0, 0x6000000, 0x14ede0, 0x6008000 }, + { 0x146de0, 0x6001000, 0x14cde0, 0x6009000 }, { 0x149de0, 0x6001000, 0x14fde0, 0x6009000 }, + { 0x147de0, 0x6002000, 0x14dde0, 0x600a000 }, { 0x14ade0, 0x6002000, 0x150de0, 0x600a000 }, +#endif +}; extern const u8 gGlobalGfxAndPalettes[]; void Manager12_Main(Manager12* this) { @@ -65,23 +84,23 @@ void sub_08059A2C(Manager12* this) { void sub_08059A58(Manager12* this) { if (gRoomControls.area != AREA_FESTIVAL_TOWN) { - if (sub_08059C8C(this, 0, &this->field_0x20, &gUnk_08108398) != 0) { + if (sub_08059C8C(this, 0, &this->field_0x20, gUnk_08108398) != 0) { sub_08059CC0(0, (u32)this->field_0x20); } - if (sub_08059C8C(this, 1, &this->field_0x21, &gUnk_081083AE) != 0) { + if (sub_08059C8C(this, 1, &this->field_0x21, gUnk_081083AE) != 0) { sub_08059CC0(1, this->field_0x21); if (this->field_0x21 == 2) { sub_08059B18(); } } - if (sub_08059C8C(this, 2, &this->field_0x22, &gUnk_081083C4) != 0) { + if (sub_08059C8C(this, 2, &this->field_0x22, gUnk_081083C4) != 0) { sub_08059CC0(2, (u32)this->field_0x22); } } else { - if (sub_08059C8C(this, 0, &this->field_0x20, &gUnk_081083DA) != 0) { + if (sub_08059C8C(this, 0, &this->field_0x20, gUnk_081083DA) != 0) { sub_08059CC0(0, (u32)this->field_0x20); } - if (sub_08059C8C(this, 2, &this->field_0x22, &gUnk_081083F2) != 0) { + if (sub_08059C8C(this, 2, &this->field_0x22, gUnk_081083F2) != 0) { sub_08059CC0(2, (u32)this->field_0x22); } } @@ -125,7 +144,7 @@ void sub_08059B18(void) { } } -bool32 sub_08059C8C(Manager12* this, u32 param_2, u8* param_3, u16* param_4) { +bool32 sub_08059C8C(Manager12* this, u32 param_2, u8* param_3, const u16* param_4) { bool32 bVar2; *param_3 = CheckRegionsOnScreen(param_4); @@ -138,7 +157,7 @@ bool32 sub_08059C8C(Manager12* this, u32 param_2, u8* param_3, u16* param_4) { } void sub_08059CC0(u32 param_1, u32 param_2) { - Unknown* unknown; + const Unknown* unknown; gRoomVars.unk_10[param_1] = param_2; if (gRoomControls.area != AREA_FESTIVAL_TOWN) { @@ -154,24 +173,24 @@ void TryLoadPrologueHyruleTown(void) { u32 tmp; if (gRoomControls.area != AREA_FESTIVAL_TOWN) { - tmp = CheckRegionsOnScreen(&gUnk_08108398); + tmp = CheckRegionsOnScreen(gUnk_08108398); if (tmp != 0xff) { sub_08059CC0(0, tmp); } - tmp = CheckRegionsOnScreen(&gUnk_081083AE); + tmp = CheckRegionsOnScreen(gUnk_081083AE); if ((tmp != 0xff) && (sub_08059CC0(1, tmp), tmp == 2)) { sub_08059B18(); } - tmp = CheckRegionsOnScreen(&gUnk_081083C4); + tmp = CheckRegionsOnScreen(gUnk_081083C4); if (tmp != 0xff) { sub_08059CC0(2, tmp); } } else { - tmp = CheckRegionsOnScreen(&gUnk_081083DA); + tmp = CheckRegionsOnScreen(gUnk_081083DA); if (tmp != 0xff) { sub_08059CC0(0, tmp); } - tmp = CheckRegionsOnScreen(&gUnk_081083F2); + tmp = CheckRegionsOnScreen(gUnk_081083F2); if (tmp != 0xff) { sub_08059CC0(2, tmp); } From 041635bf16f3164c3656d6606fa5e26fb6815655 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 18 Apr 2022 16:36:32 +0300 Subject: [PATCH 37/63] Put const data in manager13 --- assets/assets.json | 10 ---------- data/const/manager/manager13.s | 11 ----------- linker.ld | 2 +- src/manager/manager13.c | 22 ++++++++++++++++++---- 4 files changed, 19 insertions(+), 26 deletions(-) delete mode 100644 data/const/manager/manager13.s diff --git a/assets/assets.json b/assets/assets.json index d77119a5..c288f3d2 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -32288,16 +32288,6 @@ "JP": -828 } }, - { - "path": "manager13/gUnk_081084C8.bin", - "start": 1082568, - "size": 104 - }, - { - "path": "manager13/gUnk_08108530.bin", - "start": 1082672, - "size": 88 - }, { "path": "manager15/gUnk_081085B8.bin", "start": 1082808, diff --git a/data/const/manager/manager13.s b/data/const/manager/manager13.s deleted file mode 100644 index 6937afcb..00000000 --- a/data/const/manager/manager13.s +++ /dev/null @@ -1,11 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_081084C8:: @ 081084C8 - .incbin "manager13/gUnk_081084C8.bin" - -gUnk_08108530:: @ 08108530 - .incbin "manager13/gUnk_08108530.bin" diff --git a/linker.ld b/linker.ld index 0423a30b..96aaf719 100644 --- a/linker.ld +++ b/linker.ld @@ -1120,7 +1120,7 @@ SECTIONS { src/manager/managerF.o(.rodata); src/manager/manager10.o(.rodata); src/manager/manager12.o(.rodata); - data/const/manager/manager13.o(.rodata); + src/manager/manager13.o(.rodata); src/manager/manager14.o(.rodata); data/const/manager/manager15.o(.rodata); data/const/manager/manager17.o(.rodata); diff --git a/src/manager/manager13.c b/src/manager/manager13.c index e1d7820b..142a0801 100644 --- a/src/manager/manager13.c +++ b/src/manager/manager13.c @@ -17,9 +17,6 @@ typedef struct { u8 _padding; } SpawnData; -extern SpawnData gUnk_081084C8[]; -extern SpawnData gUnk_08108530[]; - extern u32 CheckRectOnScreen(u16, u16, u32, u32); /* @@ -27,7 +24,24 @@ Keeps track in its bitfield of whether 0x10 x 0x10 rects at certain positions ar Spawns OBJECT_1C objects that check this and unsets the value in the bitfield. */ void Manager13_Main(Manager13* this) { - SpawnData* spawnData; + static const SpawnData gUnk_081084C8[] = { + { 0x48, 0x90, 0x0, 0x0, 0x2, 0x0 }, { 0x138, 0x30, 0x1, 0x1, 0x2, 0x0 }, + { 0x168, 0x90, 0x2, 0x2, 0x2, 0x0 }, { 0x2c8, 0x80, 0x3, 0x3, 0x2, 0x0 }, + { 0x388, 0x240, 0x4, 0x4, 0x2, 0x0 }, { 0x158, 0x1ed, 0x5, 0x5, 0x2, 0x0 }, + { 0x15a, 0x228, 0x6, 0x6, 0x2, 0x0 }, { 0x158, 0x26b, 0x7, 0x7, 0x2, 0x0 }, + { 0x198, 0x2b1, 0x8, 0x8, 0x2, 0x0 }, { 0x258, 0x2ac, 0x9, 0x9, 0x2, 0x0 }, + { 0x298, 0x21a, 0xa, 0xa, 0x2, 0x0 }, { 0x298, 0x1cb, 0xb, 0xb, 0x2, 0x0 }, + { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } + }; + static const SpawnData gUnk_08108530[] = { + { 0x8, 0x30, 0x1, 0x1, 0x2, 0x0 }, { 0x38, 0x90, 0x2, 0x2, 0x2, 0x0 }, + { 0x198, 0x80, 0x3, 0x2, 0x2, 0x0 }, { 0x28, 0x1ed, 0x5, 0x5, 0x2, 0x0 }, + { 0x2a, 0x228, 0x6, 0x6, 0x2, 0x0 }, { 0x28, 0x26b, 0x7, 0x7, 0x2, 0x0 }, + { 0x68, 0x2b1, 0x8, 0x8, 0x2, 0x0 }, { 0x128, 0x2ac, 0x9, 0x9, 0x2, 0x0 }, + { 0x168, 0x21a, 0xa, 0xa, 0x2, 0x0 }, { 0x168, 0x1cb, 0xb, 0xb, 0x2, 0x0 }, + { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } + }; + const SpawnData* spawnData; u32 type2; if (this->manager.action == 0) { From a048115a948eb93f013b8f2fdbb2981764de6a53 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 18 Apr 2022 22:58:57 +0300 Subject: [PATCH 38/63] Put const data in manager15 --- assets/assets.json | 10 ----- data/const/manager/manager15.s | 49 --------------------- linker.ld | 2 +- src/manager/manager15.c | 78 +++++++++++++++++++++++++--------- 4 files changed, 58 insertions(+), 81 deletions(-) delete mode 100644 data/const/manager/manager15.s diff --git a/assets/assets.json b/assets/assets.json index c288f3d2..fd9ceac4 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -32288,16 +32288,6 @@ "JP": -828 } }, - { - "path": "manager15/gUnk_081085B8.bin", - "start": 1082808, - "size": 32 - }, - { - "path": "manager15/gUnk_08108648.bin", - "start": 1082952, - "size": 12 - }, { "path": "manager18/gUnk_0810865C.bin", "start": 1082972, diff --git a/data/const/manager/manager15.s b/data/const/manager/manager15.s deleted file mode 100644 index 6909cccc..00000000 --- a/data/const/manager/manager15.s +++ /dev/null @@ -1,49 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_081085B8:: @ 081085B8 - .incbin "manager15/gUnk_081085B8.bin" - -gUnk_081085D8:: @ 081085D8 - .4byte sub_0805A298 - .4byte sub_0805A2E4 - .4byte sub_0805A3D4 - .4byte sub_0805A3D4 - .4byte sub_0805A500 - .4byte sub_0805A660 - .4byte sub_0805A664 - .4byte sub_0805A804 - -gUnk_081085F8:: @ 081085F8 - .4byte 00000000 - .4byte sub_0805A464 - .4byte sub_0805A370 - .4byte sub_0805A394 - .4byte nullsub_496 - -gUnk_0810860C:: @ 0810860C - .4byte 00000000 - .4byte sub_0805A464 - .4byte sub_0805A480 - .4byte sub_0805A498 - .4byte sub_0805A4B4 - -gUnk_08108620:: @ 08108620 - .4byte 00000000 - .4byte sub_0805A5FC - .4byte sub_0805A618 - .4byte sub_0805A628 - .4byte sub_0805A64C - .4byte sub_0805A65C - -gUnk_08108638:: @ 08108638 - .4byte sub_0805A6E8 - .4byte sub_0805A758 - .4byte sub_0805A76C - .4byte sub_0805A7E4 - -gUnk_08108648:: @ 08108648 - .incbin "manager15/gUnk_08108648.bin" diff --git a/linker.ld b/linker.ld index 96aaf719..265d9fd3 100644 --- a/linker.ld +++ b/linker.ld @@ -1122,7 +1122,7 @@ SECTIONS { src/manager/manager12.o(.rodata); src/manager/manager13.o(.rodata); src/manager/manager14.o(.rodata); - data/const/manager/manager15.o(.rodata); + src/manager/manager15.o(.rodata); data/const/manager/manager17.o(.rodata); data/const/manager/manager18.o(.rodata); data/const/manager/manager1A.o(.rodata); diff --git a/src/manager/manager15.c b/src/manager/manager15.c index f9a3fe11..4eaa8486 100644 --- a/src/manager/manager15.c +++ b/src/manager/manager15.c @@ -27,15 +27,47 @@ typedef struct { u16 unk_3e; // used } Manager15; -extern void (*const gUnk_081085D8[])(Manager*); - -void Manager15_Main(Manager* this) { - gUnk_081085D8[this->unk_0a](this); -} +static const u16 gUnk_081085B8[] = { 0x1008, 0x1007, 0x1006, 0x1005, 0x1006, 0x1007, 0x1008, 0x1009, + 0x1008, 0x1007, 0x1006, 0x1005, 0x1006, 0x1007, 0x1008, 0x1009 }; +void sub_0805A298(Manager15*); +void sub_0805A2E4(Manager15*); +void sub_0805A3D4(Manager15*); +void sub_0805A3D4(Manager15*); +void sub_0805A500(Manager15*); +void sub_0805A660(Manager15*); +void sub_0805A664(Manager15*); +void sub_0805A804(Manager15*); +void sub_0805A464(Manager15*); +void sub_0805A370(Manager15*); +void sub_0805A394(Manager15*); +void nullsub_496(Manager15*); void sub_0805A89C(Manager15*); void sub_0805A8EC(Manager15*); +void sub_0805A4B4(Manager15*); +void sub_0805A498(Manager15*); +void sub_0805A480(Manager15*); +void sub_0805A464(Manager15*); void sub_0805AAF0(u32); +void sub_0805AA58(Manager15*); +void sub_0805A9CC(Manager15*); +void sub_0805A5FC(Manager15*); +void sub_0805A618(Manager15*); +void sub_0805A628(Manager15*); +void sub_0805A64C(Manager15*); +void sub_0805A65C(Manager15*); +void sub_0805A68C(Manager15*); +void sub_0805A7E4(Manager15*); +void sub_0805A76C(Manager15*); +void sub_0805A758(Manager15*); +void sub_0805A6E8(Manager15*); + +void Manager15_Main(Manager* this) { + static void (*const gUnk_081085D8[])(Manager15*) = { + sub_0805A298, sub_0805A2E4, sub_0805A3D4, sub_0805A3D4, sub_0805A500, sub_0805A660, sub_0805A664, sub_0805A804, + }; + gUnk_081085D8[this->unk_0a]((Manager15*)this); +} void sub_0805A298(Manager15* this) { if (this->manager.action == 0) { @@ -51,9 +83,10 @@ void sub_0805A298(Manager15* this) { sub_0805A8EC(this); } -extern void (*const gUnk_081085F8[])(Manager15*); - void sub_0805A2E4(Manager15* this) { + static void (*const actionFuncs[])(Manager15*) = { + NULL, sub_0805A464, sub_0805A370, sub_0805A394, nullsub_496, + }; if (this->manager.action == 0) { sub_0805A89C(this); this->unk_23 = 1; @@ -70,7 +103,7 @@ void sub_0805A2E4(Manager15* this) { gScreen.lcd.displayControl |= DISPCNT_WIN1_ON | DISPCNT_BG3_ON; } } else { - gUnk_081085F8[this->manager.action](this); + actionFuncs[this->manager.action](this); } if (this->manager.next) { sub_0805A8EC(this); @@ -103,9 +136,10 @@ void sub_0805A394(Manager15* this) { void nullsub_496(Manager15* this) { } -extern void (*const gUnk_0810860C[])(Manager15*); - void sub_0805A3D4(Manager15* this) { + static void (*const gUnk_0810860C[])(Manager15*) = { + NULL, sub_0805A464, sub_0805A480, sub_0805A498, sub_0805A4B4, + }; if (this->manager.action == 0) { sub_0805A89C(this); if (this->manager.unk_0a == 3) { @@ -170,11 +204,10 @@ void sub_0805A4CC(Manager15* this, u32 unk_0) { } } -extern void (*const gUnk_08108620[])(Manager15*); -void sub_0805AA58(Manager15*); -void sub_0805A9CC(Manager15*); - void sub_0805A500(Manager15* this) { + static void (*const actionFuncs[])(Manager15*) = { + NULL, sub_0805A5FC, sub_0805A618, sub_0805A628, sub_0805A64C, sub_0805A65C, + }; if (this->manager.action == 0) { sub_0805A89C(this); this->unk_28 = 0; @@ -195,7 +228,7 @@ void sub_0805A500(Manager15* this) { } sub_0805AAF0(this->unk_23); } else { - gUnk_08108620[this->manager.action](this); + actionFuncs[this->manager.action](this); } sub_0805AA58(this); sub_0805A9CC(this); @@ -245,10 +278,13 @@ void sub_0805A65C(Manager15* this) { void sub_0805A660(Manager15* this) { } -extern void (*const gUnk_08108638[])(Manager15*); -void sub_0805A68C(Manager15*); - void sub_0805A664(Manager15* this) { + static void (*const gUnk_08108638[])(Manager15*) = { + sub_0805A6E8, + sub_0805A758, + sub_0805A76C, + sub_0805A7E4, + }; gUnk_08108638[this->manager.action](this); sub_0805A8EC(this); sub_0805A68C(this); @@ -451,7 +487,6 @@ void sub_0805A9CC(Manager15* this) { } extern struct { u8 unk_00[0x20]; } gUnk_085A97A0[]; -extern u16 gUnk_081085B8[]; void sub_0805AA58(Manager15* this) { if (--this->manager.unk_0e == 0) { @@ -473,9 +508,10 @@ void sub_0805AAC8(Manager15* this) { Manager15_Main(&this->manager); } -extern u16 gUnk_08108648[]; - void sub_0805AADC(u32 unk0) { + static const u16 gUnk_08108648[] = { + 0x31, 0x32, 0x33, 0x34, 0x35, 0, + }; LoadGfxGroup(gUnk_08108648[unk0]); } From 4ce714ee5c597172f4de57ad7703f8c0e2d39b8d Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 18 Apr 2022 23:00:16 +0300 Subject: [PATCH 39/63] Put const data in manager17 --- data/const/manager/manager17.s | 9 --------- linker.ld | 2 +- src/manager/manager17.c | 9 ++++++--- 3 files changed, 7 insertions(+), 13 deletions(-) delete mode 100644 data/const/manager/manager17.s diff --git a/data/const/manager/manager17.s b/data/const/manager/manager17.s deleted file mode 100644 index d1c21868..00000000 --- a/data/const/manager/manager17.s +++ /dev/null @@ -1,9 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08108654:: @ 08108654 - .4byte sub_0805AD60 - .4byte sub_0805AD80 diff --git a/linker.ld b/linker.ld index 265d9fd3..d1a988d3 100644 --- a/linker.ld +++ b/linker.ld @@ -1123,7 +1123,7 @@ SECTIONS { src/manager/manager13.o(.rodata); src/manager/manager14.o(.rodata); src/manager/manager15.o(.rodata); - data/const/manager/manager17.o(.rodata); + src/manager/manager17.o(.rodata); data/const/manager/manager18.o(.rodata); data/const/manager/manager1A.o(.rodata); data/const/manager/manager1B.o(.rodata); diff --git a/src/manager/manager17.c b/src/manager/manager17.c index 9ba38cda..61cbacd6 100644 --- a/src/manager/manager17.c +++ b/src/manager/manager17.c @@ -15,12 +15,15 @@ typedef struct { u16 field_0x3e; } Manager17; -extern void (*const gUnk_08108654[])(Manager17*); - +void sub_0805AD60(Manager17*); void sub_0805AD80(Manager17*); void Manager17_Main(Manager17* manager) { - gUnk_08108654[manager->manager.action](manager); + static void (*const actionFuncs[])(Manager17*) = { + sub_0805AD60, + sub_0805AD80, + }; + actionFuncs[manager->manager.action](manager); } void sub_0805AD60(Manager17* manager) { From 46b82dce97f5a3c1f8c4e0f339ef95993b744293 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 18 Apr 2022 23:02:08 +0300 Subject: [PATCH 40/63] Put const data in manager18 --- assets/assets.json | 5 ----- data/const/manager/manager18.s | 8 -------- linker.ld | 2 +- src/manager/manager18.c | 4 +++- 4 files changed, 4 insertions(+), 15 deletions(-) delete mode 100644 data/const/manager/manager18.s diff --git a/assets/assets.json b/assets/assets.json index fd9ceac4..d30b25e6 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -32288,11 +32288,6 @@ "JP": -828 } }, - { - "path": "manager18/gUnk_0810865C.bin", - "start": 1082972, - "size": 12 - }, { "path": "manager1A/gUnk_08108670_EU.bin", "variants": [ diff --git a/data/const/manager/manager18.s b/data/const/manager/manager18.s deleted file mode 100644 index d3d5712d..00000000 --- a/data/const/manager/manager18.s +++ /dev/null @@ -1,8 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_0810865C:: @ 0810865C - .incbin "manager18/gUnk_0810865C.bin" diff --git a/linker.ld b/linker.ld index d1a988d3..a00d9885 100644 --- a/linker.ld +++ b/linker.ld @@ -1124,7 +1124,7 @@ SECTIONS { src/manager/manager14.o(.rodata); src/manager/manager15.o(.rodata); src/manager/manager17.o(.rodata); - data/const/manager/manager18.o(.rodata); + src/manager/manager18.o(.rodata); data/const/manager/manager1A.o(.rodata); data/const/manager/manager1B.o(.rodata); data/const/manager/manager1C.o(.rodata); diff --git a/src/manager/manager18.c b/src/manager/manager18.c index fd7ba93f..16ea8a8f 100644 --- a/src/manager/manager18.c +++ b/src/manager/manager18.c @@ -10,9 +10,11 @@ typedef struct { void sub_0805AEDC(Manager18*); void sub_0805AF3C(Manager18*); -extern u16 gUnk_0810865C[]; void Manager18_Main(Manager18* this) { + static const u16 gUnk_0810865C[] = { + 0xf01, 0xe02, 0xe03, 0xe04, 0, 0, + }; if (this == NULL) { if (gArea.onEnter != sub_0805AEDC) { sub_0805AEDC(NULL); From 1bb08eca421052de9348e62e9490e21813457c6a Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 18 Apr 2022 23:08:52 +0300 Subject: [PATCH 41/63] Put const data in manager1B --- assets/assets.json | 15 --------------- data/const/manager/manager1B.s | 18 ------------------ linker.ld | 2 +- src/manager/manager1B.c | 18 ++++++++++++------ 4 files changed, 13 insertions(+), 40 deletions(-) delete mode 100644 data/const/manager/manager1B.s diff --git a/assets/assets.json b/assets/assets.json index d30b25e6..6ad3126c 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -32723,21 +32723,6 @@ "start": 1084332, "size": 124 }, - { - "path": "manager1B/gUnk_08108C28.bin", - "start": 1084456, - "size": 28 - }, - { - "path": "manager1B/gUnk_08108C44.bin", - "start": 1084484, - "size": 16 - }, - { - "path": "manager1B/gUnk_08108C5C.bin", - "start": 1084508, - "size": 8 - }, { "path": "manager1C/gUnk_08108C6C.bin", "start": 1084524, diff --git a/data/const/manager/manager1B.s b/data/const/manager/manager1B.s deleted file mode 100644 index fa43508e..00000000 --- a/data/const/manager/manager1B.s +++ /dev/null @@ -1,18 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08108C28:: @ 08108C28 - .incbin "manager1B/gUnk_08108C28.bin" - -gUnk_08108C44:: @ 08108C44 - .incbin "manager1B/gUnk_08108C44.bin" - -gUnk_08108C54:: @ 08108C54 - .4byte sub_0805B448 - .4byte sub_0805B474 - -gUnk_08108C5C:: @ 08108C5C - .incbin "manager1B/gUnk_08108C5C.bin" diff --git a/linker.ld b/linker.ld index a00d9885..93c4bf45 100644 --- a/linker.ld +++ b/linker.ld @@ -1126,7 +1126,7 @@ SECTIONS { src/manager/manager17.o(.rodata); src/manager/manager18.o(.rodata); data/const/manager/manager1A.o(.rodata); - data/const/manager/manager1B.o(.rodata); + src/manager/manager1B.o(.rodata); data/const/manager/manager1C.o(.rodata); data/const/manager/manager1D.o(.rodata); src/manager/manager1E.o(.rodata); diff --git a/src/manager/manager1B.c b/src/manager/manager1B.c index 4eafda98..a0b80066 100644 --- a/src/manager/manager1B.c +++ b/src/manager/manager1B.c @@ -9,19 +9,24 @@ typedef struct { u32 field_0x20; } Manager1B; -extern u8 gUnk_08108C28[]; -extern void (*const gUnk_08108C54[])(Manager1B*); - void sub_0805B4B4(Manager1B*); +void sub_0805B448(Manager1B*); +void sub_0805B474(Manager1B*); void sub_0806D0F8(void); // in bigGoron? -extern u8 gUnk_08108C5C[]; -extern u16 gUnk_08108C44[]; +static const u8 gUnk_08108C28[] = { 0x14, 0x0, 0x0, 0x0, 0x15, 0x0, 0x0, 0x0, 0x14, 0x0, 0xd8, 0x0, 0x2f, 0x0, + 0x70, 0x0, 0x4b, 0x0, 0x0, 0x0, 0x4e, 0x0, 0x0, 0x0, 0x4d, 0x1, 0x0, 0x0 }; +static const u16 gUnk_08108C44[] = { 0, 0, -0x28, 0x70, 0, 0, 0, 0 }; void Manager1B_Main(Manager1B* this) { + static void (*const gUnk_08108C54[])(Manager1B*) = { + sub_0805B448, + sub_0805B474, + }; + s32 iVar3; - u8* tmp; + const u8* tmp; if (EntityHasDuplicateID((Entity*)this) != 0) { DeleteThisEntity(); @@ -66,6 +71,7 @@ void sub_0805B4B4(Manager1B* this) { } void sub_0805B4D0(u32 param_1) { + static const u8 gUnk_08108C5C[] = { 0x14, 0x15, 0x14, 0x2f, 0x4b, 0x4e, 0x4d, 0 }; s32 iVar1; u32 uVar2; From dcd206fd9e9d4aa0b65721fe92f1f8e9aa6307cb Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 18 Apr 2022 23:13:24 +0300 Subject: [PATCH 42/63] Put const data in manager1C --- assets/assets.json | 10 ---------- data/const/manager/manager1C.s | 15 --------------- linker.ld | 2 +- src/manager/manager1C.c | 15 ++++++++++----- 4 files changed, 11 insertions(+), 31 deletions(-) delete mode 100644 data/const/manager/manager1C.s diff --git a/assets/assets.json b/assets/assets.json index 6ad3126c..7f83dfb2 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -32723,16 +32723,6 @@ "start": 1084332, "size": 124 }, - { - "path": "manager1C/gUnk_08108C6C.bin", - "start": 1084524, - "size": 16 - }, - { - "path": "manager1C/gUnk_08108C7C.bin", - "start": 1084540, - "size": 4 - }, { "path": "manager1D/gUnk_08108C88.bin", "start": 1084552, diff --git a/data/const/manager/manager1C.s b/data/const/manager/manager1C.s deleted file mode 100644 index bcf3b8bb..00000000 --- a/data/const/manager/manager1C.s +++ /dev/null @@ -1,15 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08108C64:: @ 08108C64 - .4byte sub_0805B554 - .4byte sub_0805B55C - -gUnk_08108C6C:: @ 08108C6C - .incbin "manager1C/gUnk_08108C6C.bin" - -gUnk_08108C7C:: @ 08108C7C - .incbin "manager1C/gUnk_08108C7C.bin" diff --git a/linker.ld b/linker.ld index 93c4bf45..ad43df49 100644 --- a/linker.ld +++ b/linker.ld @@ -1127,7 +1127,7 @@ SECTIONS { src/manager/manager18.o(.rodata); data/const/manager/manager1A.o(.rodata); src/manager/manager1B.o(.rodata); - data/const/manager/manager1C.o(.rodata); + src/manager/manager1C.o(.rodata); data/const/manager/manager1D.o(.rodata); src/manager/manager1E.o(.rodata); data/const/manager/manager1F.o(.rodata); diff --git a/src/manager/manager1C.c b/src/manager/manager1C.c index 54b5e63f..5651f93f 100644 --- a/src/manager/manager1C.c +++ b/src/manager/manager1C.c @@ -3,13 +3,15 @@ #include "room.h" #include "enemy.h" -extern void (*const gUnk_08108C64[])(Manager*); - -extern u16 gUnk_08108C6C[]; -extern s8 gUnk_08108C7C[]; +void sub_0805B554(Manager*); +void sub_0805B55C(Manager*); void Manager1C_Main(Manager* manager) { - gUnk_08108C64[manager->action](manager); + static void (*const actionFuncs[])(Manager*) = { + sub_0805B554, + sub_0805B55C, + }; + actionFuncs[manager->action](manager); } // Initial setup @@ -20,6 +22,9 @@ void sub_0805B554(Manager* manager) { // Spawn water drops every 0xf frames void sub_0805B55C(Manager* manager) { + static const s16 gUnk_08108C6C[] = { -0x64, -0x3c, -0x14, 0x14, 0x3c, 0x64, 0x8c, 0xb4 }; + static const s8 gUnk_08108C7C[] = { -0x32, -0x19, 0x0, 0x19 }; + if (--manager->unk_0e == 0) { Entity* waterDrop; manager->unk_0e = 0xf; From ea286b32852efd1ab8a2ac51c79a17d5c0cd9b22 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 18 Apr 2022 23:17:09 +0300 Subject: [PATCH 43/63] Put const data in manager1D --- assets/assets.json | 5 ----- data/const/manager/manager1D.s | 12 ------------ linker.ld | 2 +- src/manager/manager1D.c | 12 ++++++++---- 4 files changed, 9 insertions(+), 22 deletions(-) delete mode 100644 data/const/manager/manager1D.s diff --git a/assets/assets.json b/assets/assets.json index 7f83dfb2..a9a2f276 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -32723,11 +32723,6 @@ "start": 1084332, "size": 124 }, - { - "path": "manager1D/gUnk_08108C88.bin", - "start": 1084552, - "size": 4 - }, { "path": "manager1F/gUnk_08108C9C.bin", "start": 1084572, diff --git a/data/const/manager/manager1D.s b/data/const/manager/manager1D.s deleted file mode 100644 index 37ea7655..00000000 --- a/data/const/manager/manager1D.s +++ /dev/null @@ -1,12 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08108C80:: @ 08108C80 - .4byte sub_0805B5E0 - .4byte sub_0805B638 - -gUnk_08108C88:: @ 08108C88 - .incbin "manager1D/gUnk_08108C88.bin" diff --git a/linker.ld b/linker.ld index ad43df49..f5fd46da 100644 --- a/linker.ld +++ b/linker.ld @@ -1128,7 +1128,7 @@ SECTIONS { data/const/manager/manager1A.o(.rodata); src/manager/manager1B.o(.rodata); src/manager/manager1C.o(.rodata); - data/const/manager/manager1D.o(.rodata); + src/manager/manager1D.o(.rodata); src/manager/manager1E.o(.rodata); data/const/manager/manager1F.o(.rodata); src/manager/manager22.o(.rodata); diff --git a/src/manager/manager1D.c b/src/manager/manager1D.c index f1d9a40f..7d74ef45 100644 --- a/src/manager/manager1D.c +++ b/src/manager/manager1D.c @@ -2,15 +2,19 @@ #include "room.h" #include "screen.h" -extern void (*const gUnk_08108C80[])(Manager*); - -extern u16 gUnk_08108C88[]; +void sub_0805B5E0(Manager*); +void sub_0805B638(Manager*); void Manager1D_Main(Manager* this) { - gUnk_08108C80[this->action](this); + static void (*const actionFuncs[])(Manager*) = { + sub_0805B5E0, + sub_0805B638, + }; + actionFuncs[this->action](this); } void sub_0805B5E0(Manager* this) { + static const u16 gUnk_08108C88[] = { 0x1e07, 0x1e07 }; this->action = 1; gScreen.lcd.displayControl |= DISPCNT_BG3_ON; From 52be07a588a7eb2c6b8118466572734ac2ae6de8 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 18 Apr 2022 23:21:43 +0300 Subject: [PATCH 44/63] Put const data in manager1F --- assets/assets.json | 5 ----- data/const/manager/manager1F.s | 12 ------------ linker.ld | 2 +- src/manager/manager1F.c | 12 ++++++++---- 4 files changed, 9 insertions(+), 22 deletions(-) delete mode 100644 data/const/manager/manager1F.s diff --git a/assets/assets.json b/assets/assets.json index a9a2f276..dedc213b 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -32723,11 +32723,6 @@ "start": 1084332, "size": 124 }, - { - "path": "manager1F/gUnk_08108C9C.bin", - "start": 1084572, - "size": 12 - }, { "path": "manager24/gUnk_08108CFC.bin", "start": 1084668, diff --git a/data/const/manager/manager1F.s b/data/const/manager/manager1F.s deleted file mode 100644 index 4036b98d..00000000 --- a/data/const/manager/manager1F.s +++ /dev/null @@ -1,12 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08108C94:: @ 08108C94 - .4byte sub_0805B70C - .4byte sub_0805B744 - -gUnk_08108C9C:: @ 08108C9C - .incbin "manager1F/gUnk_08108C9C.bin" diff --git a/linker.ld b/linker.ld index f5fd46da..6c194680 100644 --- a/linker.ld +++ b/linker.ld @@ -1130,7 +1130,7 @@ SECTIONS { src/manager/manager1C.o(.rodata); src/manager/manager1D.o(.rodata); src/manager/manager1E.o(.rodata); - data/const/manager/manager1F.o(.rodata); + src/manager/manager1F.o(.rodata); src/manager/manager22.o(.rodata); data/const/manager/manager23.o(.rodata); data/const/manager/manager24.o(.rodata); diff --git a/src/manager/manager1F.c b/src/manager/manager1F.c index 1ad3135e..49effc47 100644 --- a/src/manager/manager1F.c +++ b/src/manager/manager1F.c @@ -13,14 +13,17 @@ typedef struct { u8 field_0x3d; u16 field_0x3e; } Manager1F; -extern void (*const gUnk_08108C94[])(Manager1F*); void sub_0805B778(Manager1F*); - -extern u16 gUnk_08108C9C[]; +void sub_0805B70C(Manager1F*); +void sub_0805B744(Manager1F*); void Manager1F_Main(Manager1F* this) { - gUnk_08108C94[this->manager.action](this); + static void (*const actionFuncs[])(Manager1F*) = { + sub_0805B70C, + sub_0805B744, + }; + actionFuncs[this->manager.action](this); } void sub_0805B70C(Manager1F* this) { @@ -47,5 +50,6 @@ void sub_0805B744(Manager1F* this) { } void sub_0805B778(Manager1F* this) { + static const u16 gUnk_08108C9C[] = { 0x358, 0x359, 0x356, 0x35a, 0x35a, 0x357 }; SetTileType(gUnk_08108C9C[this->manager.unk_0a * 2 + this->manager.unk_0b], this->field_0x38, this->field_0x36); } From 9373fb7a82c0781a9c36a6908890b8a78a04b595 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 18 Apr 2022 23:23:27 +0300 Subject: [PATCH 45/63] Put const data in manager23 --- data/const/manager/manager23.s | 11 ----------- linker.ld | 2 +- src/manager/manager23.c | 14 +++++++++++--- 3 files changed, 12 insertions(+), 15 deletions(-) delete mode 100644 data/const/manager/manager23.s diff --git a/data/const/manager/manager23.s b/data/const/manager/manager23.s deleted file mode 100644 index 4f59dc42..00000000 --- a/data/const/manager/manager23.s +++ /dev/null @@ -1,11 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08108CCC:: @ 08108CCC - .4byte sub_0805BC8C - .4byte sub_0805BCD4 - .4byte sub_0805BD5C - .4byte sub_0805BDB4 diff --git a/linker.ld b/linker.ld index 6c194680..04d6873d 100644 --- a/linker.ld +++ b/linker.ld @@ -1132,7 +1132,7 @@ SECTIONS { src/manager/manager1E.o(.rodata); src/manager/manager1F.o(.rodata); src/manager/manager22.o(.rodata); - data/const/manager/manager23.o(.rodata); + src/manager/manager23.o(.rodata); data/const/manager/manager24.o(.rodata); src/manager/manager26.o(.rodata); src/manager/manager27.o(.rodata); diff --git a/src/manager/manager23.c b/src/manager/manager23.c index f831f008..7defd96a 100644 --- a/src/manager/manager23.c +++ b/src/manager/manager23.c @@ -6,8 +6,6 @@ #include "object.h" #include "game.h" -extern void (*const gUnk_08108CCC[])(Manager*); - typedef struct { Manager manager; u16 field_0x20; @@ -23,11 +21,21 @@ typedef struct { void sub_0805BE94(Manager23*); void sub_0805BEC4(Manager23*); +void sub_0805BC8C(Manager23*); +void sub_0805BCD4(Manager23*); +void sub_0805BD5C(Manager23*); +void sub_0805BDB4(Manager23*); void sub_0805BE70(Manager23*, u32); void Manager23_Main(Manager* this) { - gUnk_08108CCC[this->unk_0a](this); + static void (*const gUnk_08108CCC[])(Manager23*) = { + sub_0805BC8C, + sub_0805BCD4, + sub_0805BD5C, + sub_0805BDB4, + }; + gUnk_08108CCC[this->unk_0a]((Manager23*)this); } void sub_0805BC8C(Manager23* this) { From b8110d0341550f0c031e86724526a39a88493a7e Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 18 Apr 2022 23:28:26 +0300 Subject: [PATCH 46/63] Put const data in manager24 --- assets/assets.json | 5 ----- data/const/manager/manager24.s | 20 ----------------- linker.ld | 2 +- src/manager/manager24.c | 41 +++++++++++++++++++++------------- 4 files changed, 27 insertions(+), 41 deletions(-) delete mode 100644 data/const/manager/manager24.s diff --git a/assets/assets.json b/assets/assets.json index dedc213b..44af985f 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -32723,11 +32723,6 @@ "start": 1084332, "size": 124 }, - { - "path": "manager24/gUnk_08108CFC.bin", - "start": 1084668, - "size": 8 - }, { "path": "manager31/gUnk_08108D5C.bin", "start": 1084764, diff --git a/data/const/manager/manager24.s b/data/const/manager/manager24.s deleted file mode 100644 index 3cf58a24..00000000 --- a/data/const/manager/manager24.s +++ /dev/null @@ -1,20 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08108CDC:: @ 08108CDC - .4byte sub_0805BF30 - .4byte sub_0805BF78 - .4byte sub_0805BFA4 - -gUnk_08108CE8:: @ 08108CE8 - .4byte sub_0805C050 - .4byte sub_0805C178 - .4byte sub_0805C294 - .4byte sub_0805C3B4 - .4byte sub_0805C4E0 - -gUnk_08108CFC:: @ 08108CFC - .incbin "manager24/gUnk_08108CFC.bin" diff --git a/linker.ld b/linker.ld index 04d6873d..5ba71a93 100644 --- a/linker.ld +++ b/linker.ld @@ -1133,7 +1133,7 @@ SECTIONS { src/manager/manager1F.o(.rodata); src/manager/manager22.o(.rodata); src/manager/manager23.o(.rodata); - data/const/manager/manager24.o(.rodata); + src/manager/manager24.o(.rodata); src/manager/manager26.o(.rodata); src/manager/manager27.o(.rodata); src/manager/manager28.o(.rodata); diff --git a/src/manager/manager24.c b/src/manager/manager24.c index 4f230475..c8e7fdc9 100644 --- a/src/manager/manager24.c +++ b/src/manager/manager24.c @@ -5,21 +5,28 @@ #include "game.h" #include "object.h" -extern void (*const gUnk_08108CDC[])(Manager24*); - u32 sub_0805BFC4(u32, u32); void sub_0805C02C(Manager24*); extern u32 sub_080B1AE0(u16, u8); -extern void (*const gUnk_08108CE8[])(u32, u32); - -u32 sub_0805C608(void); - -extern u8 gUnk_08108CFC[]; +u32 getArchwayType(void); +void sub_0805BF30(Manager24*); +void sub_0805BF78(Manager24*); +void sub_0805BFA4(Manager24*); +void sub_0805C050(u32, u32); +void sub_0805C178(u32, u32); +void sub_0805C294(u32, u32); +void sub_0805C3B4(u32, u32); +void sub_0805C4E0(u32, u32); void Manager24_Main(Manager24* manager) { - gUnk_08108CDC[manager->manager.action](manager); + static void (*const actionFuncs[])(Manager24*) = { + sub_0805BF30, + sub_0805BF78, + sub_0805BFA4, + }; + actionFuncs[manager->manager.action](manager); } void sub_0805BF30(Manager24* manager) { @@ -77,6 +84,9 @@ u32 sub_0805BFC4(u32 pos, u32 layer) { } void sub_0805C02C(Manager24* this) { + static void (*const gUnk_08108CE8[])(u32, u32) = { + sub_0805C050, sub_0805C178, sub_0805C294, sub_0805C3B4, sub_0805C4E0, + }; if (this->manager.unk_0a != 0xff) { gUnk_08108CE8[this->manager.unk_0a](this->tile, this->field_0x35); } @@ -113,7 +123,7 @@ void sub_0805C050(u32 pos, u32 layer) { if (AreaIsDungeon() == 0) { return; } - object = CreateObject(ARCHWAY, sub_0805C608(), 6); + object = CreateObject(ARCHWAY, getArchwayType(), 6); if (object == NULL) { return; } @@ -156,7 +166,7 @@ void sub_0805C178(u32 pos, u32 layer) { if (AreaIsDungeon() == 0) { return; } - object = CreateObject(ARCHWAY, sub_0805C608(), 7); + object = CreateObject(ARCHWAY, getArchwayType(), 7); if (object == NULL) { return; } @@ -197,7 +207,7 @@ void sub_0805C294(u32 pos, u32 layer) { if (AreaIsDungeon() == 0) { return; } - object = CreateObject(ARCHWAY, sub_0805C608(), 8); + object = CreateObject(ARCHWAY, getArchwayType(), 8); if (object == NULL) { return; } @@ -239,7 +249,7 @@ void sub_0805C3B4(u32 pos, u32 layer) { return; } - object = CreateObject(ARCHWAY, sub_0805C608(), 9); + object = CreateObject(ARCHWAY, getArchwayType(), 9); if (object == NULL) { return; } @@ -281,7 +291,7 @@ void sub_0805C4E0(u32 pos, u32 layer) { return; } - object = CreateObject(ARCHWAY, sub_0805C608(), 6); + object = CreateObject(ARCHWAY, getArchwayType(), 6); if (object == NULL) { return; } @@ -291,6 +301,7 @@ void sub_0805C4E0(u32 pos, u32 layer) { } } -u32 sub_0805C608(void) { - return gUnk_08108CFC[gArea.dungeon_idx]; +u32 getArchwayType(void) { + static const u8 archwayTypes[] = { 0xd, 0xd, 0xd, 0x19, 0x1a, 0xd, 0x21, 0 }; + return archwayTypes[gArea.dungeon_idx]; } From fdd9d5ccf6c30ef9a440b282d57c5bcdc8185705 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 18 Apr 2022 23:29:22 +0300 Subject: [PATCH 47/63] Put const data in manager2B --- data/const/manager/manager2B.s | 10 ---------- linker.ld | 2 +- src/manager/manager2B.c | 10 ++++++++-- 3 files changed, 9 insertions(+), 13 deletions(-) delete mode 100644 data/const/manager/manager2B.s diff --git a/data/const/manager/manager2B.s b/data/const/manager/manager2B.s deleted file mode 100644 index c917c9cc..00000000 --- a/data/const/manager/manager2B.s +++ /dev/null @@ -1,10 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08108D30:: @ 08108D30 - .4byte sub_0805D02C - .4byte sub_0805D0C4 - .4byte sub_0805D0FC diff --git a/linker.ld b/linker.ld index 5ba71a93..7720f810 100644 --- a/linker.ld +++ b/linker.ld @@ -1137,7 +1137,7 @@ SECTIONS { src/manager/manager26.o(.rodata); src/manager/manager27.o(.rodata); src/manager/manager28.o(.rodata); - data/const/manager/manager2B.o(.rodata); + src/manager/manager2B.o(.rodata); data/const/manager/manager2E.o(.rodata); data/const/manager/manager31.o(.rodata); data/const/manager/manager32.o(.rodata); diff --git a/src/manager/manager2B.c b/src/manager/manager2B.c index b83236e4..db812f9b 100644 --- a/src/manager/manager2B.c +++ b/src/manager/manager2B.c @@ -24,11 +24,17 @@ typedef struct { u16 field_0x3e; } Manager2B; -extern void (*const gUnk_08108D30[])(Manager2B*); - void sub_0805D11C(Manager2B*); +void sub_0805D02C(Manager2B*); +void sub_0805D0C4(Manager2B*); +void sub_0805D0FC(Manager2B*); void Manager2B_Main(Manager2B* this) { + static void (*const gUnk_08108D30[])(Manager2B*) = { + sub_0805D02C, + sub_0805D0C4, + sub_0805D0FC, + }; gUnk_08108D30[this->manager.action](this); } From 036d01172a61865e54307d5a314af532a4ce7fc4 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 18 Apr 2022 23:31:39 +0300 Subject: [PATCH 48/63] Put const data in manager2E --- data/const/manager/manager2E.s | 19 ------------------- linker.ld | 2 +- src/manager/manager2E.c | 31 ++++++++++++++++++++++++------- 3 files changed, 25 insertions(+), 27 deletions(-) delete mode 100644 data/const/manager/manager2E.s diff --git a/data/const/manager/manager2E.s b/data/const/manager/manager2E.s deleted file mode 100644 index 5c8d9593..00000000 --- a/data/const/manager/manager2E.s +++ /dev/null @@ -1,19 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08108D3C:: @ 08108D3C - .4byte sub_0805D268 - .4byte sub_0805D32C - -gUnk_08108D44:: @ 08108D44 - .4byte sub_0805D280 - .4byte sub_0805D2C0 - .4byte sub_0805D2F4 - -gUnk_08108D50:: @ 08108D50 - .4byte sub_0805D344 - .4byte sub_0805D36C - .4byte sub_0805D384 diff --git a/linker.ld b/linker.ld index 7720f810..125e86ac 100644 --- a/linker.ld +++ b/linker.ld @@ -1138,7 +1138,7 @@ SECTIONS { src/manager/manager27.o(.rodata); src/manager/manager28.o(.rodata); src/manager/manager2B.o(.rodata); - data/const/manager/manager2E.o(.rodata); + src/manager/manager2E.o(.rodata); data/const/manager/manager31.o(.rodata); data/const/manager/manager32.o(.rodata); data/const/manager/manager34.o(.rodata); diff --git a/src/manager/manager2E.c b/src/manager/manager2E.c index 1bfc410b..d71f8539 100644 --- a/src/manager/manager2E.c +++ b/src/manager/manager2E.c @@ -15,19 +15,31 @@ typedef struct { u16 field_0x3e; } Manager2E; -extern void (*const gUnk_08108D3C[])(Manager2E*); -extern void (*const gUnk_08108D44[])(Manager2E*); - void sub_0805D2F4(Manager2E*); - -extern void (*const gUnk_08108D50[])(Manager2E*); +void sub_0805D268(Manager2E*); +void sub_0805D32C(Manager2E*); +void sub_0805D280(Manager2E*); +void sub_0805D2C0(Manager2E*); +void sub_0805D2F4(Manager2E*); +void sub_0805D384(Manager2E*); +void sub_0805D36C(Manager2E*); +void sub_0805D344(Manager2E*); void Manager2E_Main(Manager2E* this) { + static void (*const gUnk_08108D3C[])(Manager2E*) = { + sub_0805D268, + sub_0805D32C, + }; gUnk_08108D3C[this->manager.unk_0a](this); } void sub_0805D268(Manager2E* this) { - gUnk_08108D44[this->manager.action](this); + static void (*const actionFuncs[])(Manager2E*) = { + sub_0805D280, + sub_0805D2C0, + sub_0805D2F4, + }; + actionFuncs[this->manager.action](this); } void sub_0805D280(Manager2E* this) { @@ -70,7 +82,12 @@ void sub_0805D2F4(Manager2E* this) { } void sub_0805D32C(Manager2E* this) { - gUnk_08108D50[this->manager.action](this); + static void (*const actionFuncs[])(Manager2E*) = { + sub_0805D344, + sub_0805D36C, + sub_0805D384, + }; + actionFuncs[this->manager.action](this); } void sub_0805D344(Manager2E* this) { From ddc088230927f0343c34a52fa33fe7324da3ccf3 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 18 Apr 2022 23:33:17 +0300 Subject: [PATCH 49/63] Put const data in manager31 --- assets/assets.json | 5 ----- data/const/manager/manager31.s | 8 -------- linker.ld | 2 +- src/manager/manager31.c | 7 ++++--- 4 files changed, 5 insertions(+), 17 deletions(-) delete mode 100644 data/const/manager/manager31.s diff --git a/assets/assets.json b/assets/assets.json index 44af985f..8f341fdf 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -32723,11 +32723,6 @@ "start": 1084332, "size": 124 }, - { - "path": "manager31/gUnk_08108D5C.bin", - "start": 1084764, - "size": 24 - }, { "path": "manager32/gUnk_08108D74.bin", "start": 1084788, diff --git a/data/const/manager/manager31.s b/data/const/manager/manager31.s deleted file mode 100644 index 8045603c..00000000 --- a/data/const/manager/manager31.s +++ /dev/null @@ -1,8 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08108D5C:: @ 08108D5C - .incbin "manager31/gUnk_08108D5C.bin" diff --git a/linker.ld b/linker.ld index 125e86ac..65e1aa55 100644 --- a/linker.ld +++ b/linker.ld @@ -1139,7 +1139,7 @@ SECTIONS { src/manager/manager28.o(.rodata); src/manager/manager2B.o(.rodata); src/manager/manager2E.o(.rodata); - data/const/manager/manager31.o(.rodata); + src/manager/manager31.o(.rodata); data/const/manager/manager32.o(.rodata); data/const/manager/manager34.o(.rodata); data/const/manager/manager35.o(.rodata); diff --git a/src/manager/manager31.c b/src/manager/manager31.c index f9a151bc..eae858e8 100644 --- a/src/manager/manager31.c +++ b/src/manager/manager31.c @@ -16,14 +16,15 @@ typedef struct { u16 y; } GoronShopSpawnData; -extern GoronShopSpawnData gUnk_08108D5C[3]; - /* Spawns the shop items for the kinstones for the goron merchant. */ void Manager31_Main(Manager31* this) { + static const GoronShopSpawnData gUnk_08108D5C[3] = { { 0x6e, 0x3, 0x210, 0x210 }, + { 0x71, 0x2, 0x220, 0x210 }, + { 0x73, 0x3, 0x230, 0x210 } }; s32 uVar2; - GoronShopSpawnData* spawnData; + const GoronShopSpawnData* spawnData; s32 count; if (this->manager.action == 0) { From 6bae4ae861d2cea6cda8c4284876e5df3c659de5 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 18 Apr 2022 23:35:29 +0300 Subject: [PATCH 50/63] Put const data in manager32 --- assets/assets.json | 5 ----- data/const/manager/manager32.s | 14 -------------- linker.ld | 2 +- src/manager/manager32.c | 15 ++++++++++++--- 4 files changed, 13 insertions(+), 23 deletions(-) delete mode 100644 data/const/manager/manager32.s diff --git a/assets/assets.json b/assets/assets.json index 8f341fdf..da91f04b 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -32723,11 +32723,6 @@ "start": 1084332, "size": 124 }, - { - "path": "manager32/gUnk_08108D74.bin", - "start": 1084788, - "size": 8 - }, { "path": "manager36/gUnk_08108DA8.bin", "start": 1084840, diff --git a/data/const/manager/manager32.s b/data/const/manager/manager32.s deleted file mode 100644 index 94c8689e..00000000 --- a/data/const/manager/manager32.s +++ /dev/null @@ -1,14 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08108D74:: @ 08108D74 - .incbin "manager32/gUnk_08108D74.bin" - -gUnk_08108D7C:: @ 08108D7C - .4byte sub_0805D7DC - .4byte sub_0805D860 - .4byte sub_0805D900 - .4byte sub_0805D98C diff --git a/linker.ld b/linker.ld index 65e1aa55..3fb18504 100644 --- a/linker.ld +++ b/linker.ld @@ -1140,7 +1140,7 @@ SECTIONS { src/manager/manager2B.o(.rodata); src/manager/manager2E.o(.rodata); src/manager/manager31.o(.rodata); - data/const/manager/manager32.o(.rodata); + src/manager/manager32.o(.rodata); data/const/manager/manager34.o(.rodata); data/const/manager/manager35.o(.rodata); data/const/manager/manager36.o(.rodata); diff --git a/src/manager/manager32.c b/src/manager/manager32.c index b07e57f0..4ba9245b 100644 --- a/src/manager/manager32.c +++ b/src/manager/manager32.c @@ -13,18 +13,27 @@ typedef struct { u32 field_0x28; } Manager32; -extern void (*const gUnk_08108D7C[])(Manager32*); void sub_0805D9D8(Manager32*); +void sub_0805D98C(Manager32*); +void sub_0805D900(Manager32*); +void sub_0805D860(Manager32*); +void sub_0805D7DC(Manager32*); void sub_0805DA08(u32, u32, u32); -extern u8 gUnk_08108D74[]; +static const u8 gUnk_08108D74[] = { 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x0 }; extern struct BgAffineDstData gUnk_02017AA0[]; extern u8 gUnk_03003DE4[0xC]; extern void sub_0805622C(struct BgAffineDstData*, u32, u32); void Manager32_Main(Manager32* this) { - gUnk_08108D7C[this->manager.action](this); + static void (*const actionFuncs[])(Manager32*) = { + sub_0805D7DC, + sub_0805D860, + sub_0805D900, + sub_0805D98C, + }; + actionFuncs[this->manager.action](this); this->field_0x24 = gRoomTransition.frameCount << 4; sub_0805D9D8(this); sub_0805DA08(this->field_0x20, this->field_0x28, this->field_0x24); From 334972c649c52335ac57d3c42d6c6c5a299b1c30 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 18 Apr 2022 23:36:30 +0300 Subject: [PATCH 51/63] Putr const data in manager34 --- data/const/manager/manager34.s | 10 ---------- linker.ld | 2 +- src/manager/manager34.c | 11 +++++++++-- 3 files changed, 10 insertions(+), 13 deletions(-) delete mode 100644 data/const/manager/manager34.s diff --git a/data/const/manager/manager34.s b/data/const/manager/manager34.s deleted file mode 100644 index 29ed6cda..00000000 --- a/data/const/manager/manager34.s +++ /dev/null @@ -1,10 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08108D8C:: @ 08108D8C - .4byte sub_0805DBB4 - .4byte sub_0805DBCC - .4byte nullsub_498 diff --git a/linker.ld b/linker.ld index 3fb18504..767cf754 100644 --- a/linker.ld +++ b/linker.ld @@ -1141,7 +1141,7 @@ SECTIONS { src/manager/manager2E.o(.rodata); src/manager/manager31.o(.rodata); src/manager/manager32.o(.rodata); - data/const/manager/manager34.o(.rodata); + src/manager/manager34.o(.rodata); data/const/manager/manager35.o(.rodata); data/const/manager/manager36.o(.rodata); data/const/manager/manager37.o(.rodata); diff --git a/src/manager/manager34.c b/src/manager/manager34.c index ae12a2e2..455730a6 100644 --- a/src/manager/manager34.c +++ b/src/manager/manager34.c @@ -8,15 +8,22 @@ typedef struct { u16 field_0x20; } Manager34; -extern void (*const gUnk_08108D8C[])(Manager34*); void sub_0805DBF0(Manager34*); +void sub_0805DBB4(Manager34*); +void sub_0805DBCC(Manager34*); +void nullsub_498(Manager34*); extern ScreenTransitionData gUnk_0813AC48; void sub_0805DC70(void); void Manager34_Main(Manager34* this) { - gUnk_08108D8C[this->manager.action](this); + static void (*const actionFuncs[])(Manager34*) = { + sub_0805DBB4, + sub_0805DBCC, + nullsub_498, + }; + actionFuncs[this->manager.action](this); sub_0805DBF0(this); } From db1d23dd693cc4cbceb6d4d5e5f21bd484018e22 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 18 Apr 2022 23:37:45 +0300 Subject: [PATCH 52/63] Putr const data in manager35 --- data/const/manager/manager35.s | 11 ----------- linker.ld | 2 +- src/manager/manager35.c | 13 +++++++++++-- 3 files changed, 12 insertions(+), 14 deletions(-) delete mode 100644 data/const/manager/manager35.s diff --git a/data/const/manager/manager35.s b/data/const/manager/manager35.s deleted file mode 100644 index d75b95c0..00000000 --- a/data/const/manager/manager35.s +++ /dev/null @@ -1,11 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08108D98:: @ 08108D98 - .4byte sub_0805DC9C - .4byte sub_0805DCC8 - .4byte sub_0805DD24 - .4byte sub_0805DD68 diff --git a/linker.ld b/linker.ld index 767cf754..2490c049 100644 --- a/linker.ld +++ b/linker.ld @@ -1142,7 +1142,7 @@ SECTIONS { src/manager/manager31.o(.rodata); src/manager/manager32.o(.rodata); src/manager/manager34.o(.rodata); - data/const/manager/manager35.o(.rodata); + src/manager/manager35.o(.rodata); data/const/manager/manager36.o(.rodata); data/const/manager/manager37.o(.rodata); data/const/manager/manager38.o(.rodata); diff --git a/src/manager/manager35.c b/src/manager/manager35.c index 49083531..e913ae82 100644 --- a/src/manager/manager35.c +++ b/src/manager/manager35.c @@ -15,10 +15,19 @@ typedef struct { u16 field_0x3e; } Manager35; -extern void (*const gUnk_08108D98[])(Manager35*); +void sub_0805DC9C(Manager35*); +void sub_0805DCC8(Manager35*); +void sub_0805DD24(Manager35*); +void sub_0805DD68(Manager35*); void Manager35_Main(Manager35* this) { - gUnk_08108D98[this->manager.action](this); + static void (*const actionFuncs[])(Manager35*) = { + sub_0805DC9C, + sub_0805DCC8, + sub_0805DD24, + sub_0805DD68, + }; + actionFuncs[this->manager.action](this); } void sub_0805DC9C(Manager35* this) { From 737e39dc2b443b2e59dabfbd2c54bd2f17d10d2c Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 18 Apr 2022 23:40:23 +0300 Subject: [PATCH 53/63] Put const data in manager36 --- assets/assets.json | 5 ----- data/const/manager/manager36.s | 9 --------- linker.ld | 2 +- src/manager/manager36.c | 7 ++++--- 4 files changed, 5 insertions(+), 18 deletions(-) delete mode 100644 data/const/manager/manager36.s diff --git a/assets/assets.json b/assets/assets.json index da91f04b..4cf6c012 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -32723,11 +32723,6 @@ "start": 1084332, "size": 124 }, - { - "path": "manager36/gUnk_08108DA8.bin", - "start": 1084840, - "size": 20 - }, { "path": "manager39/gUnk_08108DE8.bin", "start": 1084904, diff --git a/data/const/manager/manager36.s b/data/const/manager/manager36.s deleted file mode 100644 index e17cd7b6..00000000 --- a/data/const/manager/manager36.s +++ /dev/null @@ -1,9 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08108DA8:: @ 08108DA8 - .incbin "manager36/gUnk_08108DA8.bin" - diff --git a/linker.ld b/linker.ld index 2490c049..dc01e1ea 100644 --- a/linker.ld +++ b/linker.ld @@ -1143,7 +1143,7 @@ SECTIONS { src/manager/manager32.o(.rodata); src/manager/manager34.o(.rodata); src/manager/manager35.o(.rodata); - data/const/manager/manager36.o(.rodata); + src/manager/manager36.o(.rodata); data/const/manager/manager37.o(.rodata); data/const/manager/manager38.o(.rodata); data/const/manager/manager39.o(.rodata); diff --git a/src/manager/manager36.c b/src/manager/manager36.c index 7dcf71c4..c05df49b 100644 --- a/src/manager/manager36.c +++ b/src/manager/manager36.c @@ -7,11 +7,12 @@ typedef struct { u16 sound; } Manager36_unk; -extern Manager36_unk gUnk_08108DA8[]; - // Repeatedly plays the same sound with a fixed wait time void Manager36_Main(Manager* manager) { - Manager36_unk* unk = &gUnk_08108DA8[manager->unk_0a]; + static const Manager36_unk gUnk_08108DA8[] = { + { 0x10, SFX_ELEMENT_INFUSE }, { 0x20, SFX_1C8 }, { 0x20, SFX_1C8 }, { 0x40, SFX_1A9 }, { 0x20, SFX_21F } + }; + const Manager36_unk* unk = &gUnk_08108DA8[manager->unk_0a]; if (manager->action == 0) { manager->action += 1; manager->unk_0e = 0; From 6ca6b480b4ad4f0a2daa8dd5653c63b32881791a Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 18 Apr 2022 23:43:00 +0300 Subject: [PATCH 54/63] Put const data in manager37 --- data/const/manager/manager37.s | 20 -------------------- linker.ld | 2 +- src/manager/manager37.c | 32 +++++++++++++++++++++++--------- 3 files changed, 24 insertions(+), 30 deletions(-) delete mode 100644 data/const/manager/manager37.s diff --git a/data/const/manager/manager37.s b/data/const/manager/manager37.s deleted file mode 100644 index ce36ee57..00000000 --- a/data/const/manager/manager37.s +++ /dev/null @@ -1,20 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08108DBC:: @ 08108DBC - .4byte sub_0805DE50 - .4byte sub_0805DFE8 - -gUnk_08108DC4:: @ 08108DC4 - .4byte sub_0805DE68 - .4byte sub_0805DEB8 - .4byte sub_0805DF4C - .4byte sub_0805DF98 - .4byte sub_0805DFCC - -gUnk_08108DD8:: @ 08108DD8 - .4byte sub_0805E000 - .4byte sub_0805E078 diff --git a/linker.ld b/linker.ld index dc01e1ea..de116758 100644 --- a/linker.ld +++ b/linker.ld @@ -1144,7 +1144,7 @@ SECTIONS { src/manager/manager34.o(.rodata); src/manager/manager35.o(.rodata); src/manager/manager36.o(.rodata); - data/const/manager/manager37.o(.rodata); + src/manager/manager37.o(.rodata); data/const/manager/manager38.o(.rodata); data/const/manager/manager39.o(.rodata); data/data_08108E6C.o(.rodata); diff --git a/src/manager/manager37.c b/src/manager/manager37.c index e685a135..5bd9d594 100644 --- a/src/manager/manager37.c +++ b/src/manager/manager37.c @@ -12,20 +12,30 @@ extern ScreenTransitionData gUnk_0813AC34; -extern void (*const gUnk_08108DBC[])(Manager*); - -extern void (*const gUnk_08108DC4[])(Manager*); - -extern void (*const gUnk_08108DD8[])(Manager*); - void sub_0805E094(void); +void sub_0805DE50(Manager*); +void sub_0805DFE8(Manager*); +void sub_0805DE68(Manager*); +void sub_0805DEB8(Manager*); +void sub_0805DF4C(Manager*); +void sub_0805DF98(Manager*); +void sub_0805DFCC(Manager*); +void sub_0805E078(Manager*); +void sub_0805E000(Manager*); void Manager37_Main(Manager* this) { + static void (*const gUnk_08108DBC[])(Manager*) = { + sub_0805DE50, + sub_0805DFE8, + }; gUnk_08108DBC[this->unk_0a](this); } void sub_0805DE50(Manager* this) { - gUnk_08108DC4[this->action](this); + static void (*const actionFuncs[])(Manager*) = { + sub_0805DE68, sub_0805DEB8, sub_0805DF4C, sub_0805DF98, sub_0805DFCC, + }; + actionFuncs[this->action](this); } void sub_0805DE68(Manager* this) { @@ -95,7 +105,7 @@ void sub_0805DF98(Manager* this) { } } -void sub_0805DFCC(void) { +void sub_0805DFCC(Manager* this) { if (gFadeControl.active == 0) { ClearGlobalFlag(ZELDA_CHASE); sub_0805E094(); @@ -103,7 +113,11 @@ void sub_0805DFCC(void) { } void sub_0805DFE8(Manager* this) { - gUnk_08108DD8[this->action](this); + static void (*const actionFuncs[])(Manager*) = { + sub_0805E000, + sub_0805E078, + }; + actionFuncs[this->action](this); } void sub_0805E000(Manager* this) { From 6e38ea7c86a5ef05f685340fe602649ac0ad3da8 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 18 Apr 2022 23:44:06 +0300 Subject: [PATCH 55/63] Put const data in manager38 --- data/const/manager/manager38.s | 9 --------- linker.ld | 2 +- src/manager/manager38.c | 11 ++++++++--- 3 files changed, 9 insertions(+), 13 deletions(-) delete mode 100644 data/const/manager/manager38.s diff --git a/data/const/manager/manager38.s b/data/const/manager/manager38.s deleted file mode 100644 index 56ad6d03..00000000 --- a/data/const/manager/manager38.s +++ /dev/null @@ -1,9 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08108DE0:: @ 08108DE0 - .4byte sub_0805E0C0 - .4byte sub_0805E0F4 diff --git a/linker.ld b/linker.ld index de116758..5e7b9e8c 100644 --- a/linker.ld +++ b/linker.ld @@ -1145,7 +1145,7 @@ SECTIONS { src/manager/manager35.o(.rodata); src/manager/manager36.o(.rodata); src/manager/manager37.o(.rodata); - data/const/manager/manager38.o(.rodata); + src/manager/manager38.o(.rodata); data/const/manager/manager39.o(.rodata); data/data_08108E6C.o(.rodata); src/playerItem/playerItemSpiralBeam.o(.rodata); diff --git a/src/manager/manager38.c b/src/manager/manager38.c index 3bfae97f..081beb14 100644 --- a/src/manager/manager38.c +++ b/src/manager/manager38.c @@ -1,12 +1,17 @@ #include "entity.h" #include "room.h" -extern void (*const gUnk_08108DE0[])(Entity*); - extern Entity* LoadRoomEntity(EntityData*); +void sub_0805E0C0(Entity*); +void sub_0805E0F4(Entity*); + void Manager38_Main(Entity* this) { - gUnk_08108DE0[this->action](this); + static void (*const actionFuncs[])(Entity*) = { + sub_0805E0C0, + sub_0805E0F4, + }; + actionFuncs[this->action](this); } void sub_0805E0C0(Entity* this) { From 7239c05a1ac0c7c8e17c398f0543919575f5e658 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Tue, 19 Apr 2022 19:51:17 +0300 Subject: [PATCH 56/63] Put const data in cow --- assets/assets.json | 5 ----- data/const/npc/cow.s | 21 --------------------- linker.ld | 2 +- src/npc/cow.c | 35 ++++++++++++++++++++++++++--------- 4 files changed, 27 insertions(+), 36 deletions(-) delete mode 100644 data/const/npc/cow.s diff --git a/assets/assets.json b/assets/assets.json index 4cf6c012..8fb062be 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -37598,11 +37598,6 @@ "size": 8, "type": "animation" }, - { - "path": "cow/gUnk_08111938.bin", - "start": 1120568, - "size": 40 - }, { "path": "animations/gSpriteAnimations_Goron_0.bin", "start": 1120964, diff --git a/data/const/npc/cow.s b/data/const/npc/cow.s deleted file mode 100644 index 1d66d9e7..00000000 --- a/data/const/npc/cow.s +++ /dev/null @@ -1,21 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08111914:: @ 08111914 - .4byte sub_08068FC0 - .4byte sub_08069018 - .4byte sub_08069068 - .4byte sub_08069124 - .4byte sub_080691E0 - -gUnk_08111928:: @ 08111928 - .4byte sub_08069148 - .4byte sub_08069168 - .4byte sub_08069188 - .4byte sub_080691BC - -gUnk_08111938:: @ 08111938 - .incbin "cow/gUnk_08111938.bin" diff --git a/linker.ld b/linker.ld index 5e7b9e8c..db61337a 100644 --- a/linker.ld +++ b/linker.ld @@ -1234,7 +1234,7 @@ SECTIONS { data/animations/npc/melari.o(.rodata); data/const/npc/bladeBrothers.o(.rodata); data/animations/npc/bladeBrothers.o(.rodata); - data/const/npc/cow.o(.rodata); + src/npc/cow.o(.rodata); data/animations/npc/cow.o(.rodata); src/npc/goron.o(.rodata); data/animations/npc/goron.o(.rodata); diff --git a/src/npc/cow.c b/src/npc/cow.c index 4ebbf928..7333a0a0 100644 --- a/src/npc/cow.c +++ b/src/npc/cow.c @@ -7,13 +7,21 @@ void sub_0806920C(Entity* ent); void sub_0806924C(Entity* ent); - -extern void (*gUnk_08111914[])(Entity*); -extern void (*gUnk_08111928[])(Entity*); -extern Dialog gUnk_08111938[]; +void sub_08068FC0(Entity* ent); +void sub_08069018(Entity* ent); +void sub_08069068(Entity* ent); +void sub_08069124(Entity* ent); +void sub_080691E0(Entity* ent); +void sub_08069148(Entity* ent); +void sub_08069168(Entity* ent); +void sub_08069188(Entity* ent); +void sub_080691BC(Entity* ent); void Cow(Entity* ent) { - gUnk_08111914[ent->action](ent); + static void (*const actionFuncs[])(Entity*) = { + sub_08068FC0, sub_08069018, sub_08069068, sub_08069124, sub_080691E0, + }; + actionFuncs[ent->action](ent); sub_0806ED78(ent); sub_0806920C(ent); } @@ -127,8 +135,14 @@ void sub_08069068(Entity* ent) { } void sub_08069124(Entity* ent) { + static void (*const subActionFuncs[])(Entity*) = { + sub_08069148, + sub_08069168, + sub_08069188, + sub_080691BC, + }; UpdateAnimationSingleFrame(ent); - gUnk_08111928[ent->subAction](ent); + subActionFuncs[ent->subAction](ent); sub_0806924C(ent); } @@ -152,7 +166,7 @@ void sub_08069188(Entity* ent) { return; ent->frame = 0; - if (((s8)--ent->subtimer) != 0) + if (--ent->subtimer != 0) return; ent->subAction = 3; InitAnimationForceUpdate(ent, ent->animationState + 16); @@ -175,11 +189,15 @@ void sub_080691E0(Entity* ent) { // Show dialogue void Cow_ShowDialogue(Entity* ent) { + static const Dialog gUnk_08111938[] = { { 0x0, 0x0, 6, 1, { 0x2018, 0x3f34 } }, + { 0x0, 0x0, 6, 1, { 0x2018, 0x3f35 } }, + { 0x0, 0x0, 6, 1, { 0x2018, 0x3f36 } }, + { 0x0, 0x0, 6, 1, { 0x2018, 0x3f37 } }, + { 0x0, 0x0, 6, 1, { 0x2018, 0x3f38 } } }; ShowNPCDialogue(ent, &gUnk_08111938[ent->type]); } void sub_0806920C(Entity* ent) { - // TODO: figure out what bitfield flag this is u32 var0 = gPlayerState.flags & PL_MINISH; u32 var1 = -var0 >> 0x1F; @@ -198,7 +216,6 @@ void sub_0806920C(Entity* ent) { void sub_0806924C(Entity* ent) { s8 itype = ent->interactType; if (itype != 0) { - // TODO: figure out what bitfield flag this is if ((gPlayerState.flags & PL_MINISH) != 0) { if (itype == 2) { ent->action = 4; From d3a9d40206668379717bec4991e22d0ec5258552 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Tue, 19 Apr 2022 22:03:51 +0300 Subject: [PATCH 57/63] Put const data in windcrest --- assets/assets.json | 5 ----- data/const/object/windcrest.s | 9 --------- linker.ld | 2 +- src/object/windcrest.c | 5 ++--- 4 files changed, 3 insertions(+), 18 deletions(-) delete mode 100644 data/const/object/windcrest.s diff --git a/assets/assets.json b/assets/assets.json index 8fb062be..4520058a 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -43822,11 +43822,6 @@ "size": 83, "type": "animation" }, - { - "path": "windcrest/gUnk_08125010.bin", - "start": 1200144, - "size": 4 - }, { "path": "animations/gSpriteAnimations_Pinwheel_0.bin", "start": 1200232, diff --git a/data/const/object/windcrest.s b/data/const/object/windcrest.s deleted file mode 100644 index 192666fe..00000000 --- a/data/const/object/windcrest.s +++ /dev/null @@ -1,9 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08125010:: @ 08125010 - .incbin "windcrest/gUnk_08125010.bin" - diff --git a/linker.ld b/linker.ld index db61337a..e154e144 100644 --- a/linker.ld +++ b/linker.ld @@ -1556,7 +1556,7 @@ SECTIONS { src/object/windTribeTeleporter.o(.rodata); src/object/cuccoMinigame.o(.rodata); src/object/gyorgBossObject.o(.rodata); - data/const/object/windcrest.o(.rodata); + src/object/windcrest.o(.rodata); src/object/objectBD.o(.rodata); src/object/pinwheel.o(.rodata); data/animations/object/pinwheel.o(.rodata); diff --git a/src/object/windcrest.c b/src/object/windcrest.c index 97d88300..5fdeb9c0 100644 --- a/src/object/windcrest.c +++ b/src/object/windcrest.c @@ -6,8 +6,6 @@ #include "effects.h" #include "functions.h" -extern u8 gUnk_08125010; - void Windcrest(Entity* this) { if (this->action == 0) { this->action++; @@ -19,7 +17,8 @@ void Windcrest(Entity* this) { } void sub_080A2124(Entity* this) { - sub_08078850(this, 1, 0xe, &gUnk_08125010); + static const u8 gUnk_08125010[] = { 0, 0, 12, 12 }; + sub_08078850(this, 1, 0xe, gUnk_08125010); } void Windcrest_Unlock(Entity* this) { From e940c1cc5e61d6f3046bcda109d466a5340dee72 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Tue, 19 Apr 2022 22:33:22 +0300 Subject: [PATCH 58/63] Put const data in demo --- assets/assets.json | 20 -------------------- data/const/demo.s | 18 ------------------ linker.ld | 4 +++- src/demo.c | 27 ++++++++++++++++++++++----- 4 files changed, 25 insertions(+), 44 deletions(-) delete mode 100644 data/const/demo.s diff --git a/assets/assets.json b/assets/assets.json index 4520058a..0e0b3675 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -44376,26 +44376,6 @@ "start": 1216516, "size": 24 }, - { - "path": "demoScreen/gUnk_08127C98_DEMO_USA.bin", - "variants": [ - "DEMO_USA" - ], - "starts": { - "DEMO_USA": 1211544 - }, - "size": 48 - }, - { - "path": "demoScreen/gUnk_08127CC8_DEMO_USA.bin", - "variants": [ - "DEMO_USA" - ], - "starts": { - "DEMO_USA": 1211592 - }, - "size": 8 - }, { "path": "playerItemSword/gUnk_08129068.bin", "start": 1216616, diff --git a/data/const/demo.s b/data/const/demo.s deleted file mode 100644 index 92e56fb8..00000000 --- a/data/const/demo.s +++ /dev/null @@ -1,18 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -.ifdef DEMO_USA -@ TODO choose demo screen -demoFunctions:: - .4byte sub_080A2E40 - .4byte sub_080A2FD0 - .4byte sub_080A2F8C - -gUnk_08127C98:: - .incbin "demoScreen/gUnk_08127C98_DEMO_USA.bin" -gUnk_08127CC8:: - .incbin "demoScreen/gUnk_08127CC8_DEMO_USA.bin" -.endif diff --git a/linker.ld b/linker.ld index e154e144..e0631d40 100644 --- a/linker.ld +++ b/linker.ld @@ -122,8 +122,10 @@ SECTIONS { . = 0x00034CF0; gUnk_02034CF0 = .; . = 0x00034D30; gUnk_02034D30 = .; . = 0x00034DF0; gUnk_02034DF0 = .; + . = 0x0003508E; gUnk_0203508E = .; . = 0x000350E2; gUnk_020350E2 = .; . = 0x000350F0; gUnk_020350F0 = .; + . = 0x0003510E; gUnk_0203510E = .; . = 0x00035160; gUnk_02035160 = .; . = 0x000354B0; gUnk_020354B0 = .; . = 0x000354B4; gManagerCount = .; @@ -1567,7 +1569,7 @@ SECTIONS { data/const/playerItem/playerItemShield.o(.rodata); data/const/playerItem/playerItemFireRodProjectile.o(.rodata); #ifdef DEMO_USA - data/const/demo.o(.rodata); + src/demo.o(.rodata); #endif src/staffroll.o(.rodata); data/data_08127280.o(.rodata); diff --git a/src/demo.c b/src/demo.c index 94f2434f..445294e6 100644 --- a/src/demo.c +++ b/src/demo.c @@ -14,8 +14,10 @@ #include "screen.h" #include "game.h" -extern void (*const demoFunctions[])(void); void sub_080A30AC(void); +void sub_080A2E40(void); +void sub_080A2FD0(void); +void sub_080A2F8C(void); extern u8 gUnk_02000004; void sub_080A3198(u32, u32); @@ -26,12 +28,17 @@ extern u8 gUnk_08A05751[]; // sprite_table extern void gUnk_089FD1B4; extern void gUnk_089FD2F4; +extern u16 gUnk_0203508E[]; +extern u16 gUnk_0203510E[]; -extern u16 gUnk_08127CC8[4]; -extern void* gUnk_08127C98; extern u8 gUnk_08A068BF[129]; void DemoTask(void) { + static void (*const demoFunctions[])(void) = { + sub_080A2E40, + sub_080A2FD0, + sub_080A2F8C, + }; FlushSprites(); demoFunctions[gMain.state](); sub_080A30AC(); @@ -209,14 +216,24 @@ NONMATCH("asm/non_matching/demoScreen/sub_080A30AC.inc", void sub_080A30AC(void) END_NONMATCH void sub_080A3198(u32 param_1, u32 param_2) { + static const Font gUnk_08127C98[] = { + { gUnk_0203508E, (void*)0x0600d000, (void*)0x02000d00, 0, 0x1080, 0xd0, 1, 0, 0, 1, 9, 0, 0, 1, 1 }, + { gUnk_0203510E, (void*)0x0600d000, (void*)0x02000d00, 0, 0x80, 0xd0, 1, 0, 0, 1, 9, 0, 0, 1, 1 }, + }; + static const u16 gUnk_08127CC8[4] = { + 0x71c, + 0x720, + 0x721, + 0x0, + }; u16 r4 = gUnk_08127CC8[param_1]; if (gChooseFileState.unk_0x12 != r4) { gChooseFileState.unk_0x12 = r4; - MemClear(gUnk_08127C98 - 0x1e, 0x180); + MemClear(gUnk_08127C98[0].dest - 0xf, 0x180); if (r4 != 0) { - sub_0805F46C(r4, (Font*)&gUnk_08127C98); // TODO + sub_0805F46C(r4, gUnk_08127C98); } gScreen.bg0.updated = 1; From 1208153d2524d1b8107750915d3a78634e0fe8d4 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Tue, 19 Apr 2022 23:12:29 +0300 Subject: [PATCH 59/63] Match functions and put const data in playerItemSword --- .../playerItemSword/sub_080A758C.inc | 156 ------------- .../playerItemSword/sub_080A76CC.inc | 180 --------------- assets/assets.json | 30 --- data/const/playerItem/playerItemSword.s | 28 --- linker.ld | 2 +- src/playerItem/playerItemSword.c | 207 +++++++++++++++++- 6 files changed, 199 insertions(+), 404 deletions(-) delete mode 100644 asm/non_matching/playerItemSword/sub_080A758C.inc delete mode 100644 asm/non_matching/playerItemSword/sub_080A76CC.inc delete mode 100644 data/const/playerItem/playerItemSword.s diff --git a/asm/non_matching/playerItemSword/sub_080A758C.inc b/asm/non_matching/playerItemSword/sub_080A758C.inc deleted file mode 100644 index ea464702..00000000 --- a/asm/non_matching/playerItemSword/sub_080A758C.inc +++ /dev/null @@ -1,156 +0,0 @@ - .syntax unified - push {r4, r5, lr} - adds r5, r0, #0 - ldrb r0, [r5, #0xa] - cmp r0, #0 - bne _080A75AC - ldr r1, _080A7654 @ =gPlayerState - ldrb r0, [r1, #4] - cmp r0, #0 - bne _080A75AC - ldrb r1, [r1, #2] - movs r0, #0x20 - ands r0, r1 - cmp r0, #0 - bne _080A75AC - bl DeleteThisEntity -_080A75AC: - adds r0, r5, #0 - bl AllocMutableHitbox - cmp r0, #0 - bne _080A75BA - bl DeleteThisEntity -_080A75BA: - adds r0, r5, #0 - movs r1, #1 - movs r2, #3 - bl LoadSwapGFX - ldr r1, _080A7658 @ =gPlayerEntity - adds r0, r1, #0 - adds r0, #0x3c - ldrb r0, [r0] - adds r0, #1 - movs r2, #0x20 - adds r3, r5, #0 - adds r3, #0x3c - movs r4, #0 - orrs r0, r2 - strb r0, [r3] - adds r1, #0x3b - ldrb r0, [r1] - adds r1, r5, #0 - adds r1, #0x3b - strb r0, [r1] - ldrb r1, [r5, #0x11] - movs r0, #0x10 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #6 - orrs r0, r1 - strb r0, [r5, #0x11] - adds r0, r5, #0 - adds r0, #0x41 - strb r4, [r0] - subs r0, #4 - strb r4, [r0] - adds r0, #5 - strb r4, [r0] - ldrb r0, [r5, #0xc] - adds r0, #1 - strb r0, [r5, #0xc] - movs r0, #0xff - strb r0, [r5, #0x1e] - adds r0, r5, #0 - bl sub_0801766C - ldrb r0, [r5, #0xa] - cmp r0, #0 - bne _080A76BC - ldr r2, _080A7654 @ =gPlayerState - ldrb r1, [r2, #2] - movs r0, #0x20 - ands r0, r1 - cmp r0, #0 - beq _080A767A - ldrb r1, [r5, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r5, #0x10] - movs r0, #2 - strb r0, [r5, #0xb] - adds r0, r2, #0 - adds r0, #0x3e - ldrb r0, [r0] - lsls r0, r0, #0x1e - lsrs r0, r0, #0x1d - adds r0, #8 - adds r1, r5, #0 - adds r1, #0x44 - strb r0, [r1] - adds r0, r5, #0 - adds r0, #0x68 - ldrb r0, [r0] - cmp r0, #1 - beq _080A765C - cmp r0, #6 - bne _080A7664 - subs r1, #4 - movs r0, #0x1a - b _080A766A - .align 2, 0 -_080A7654: .4byte gPlayerState -_080A7658: .4byte gPlayerEntity -_080A765C: - adds r1, r5, #0 - adds r1, #0x40 - movs r0, #0x18 - b _080A766A -_080A7664: - adds r1, r5, #0 - adds r1, #0x40 - movs r0, #0x19 -_080A766A: - strb r0, [r1] - ldrb r0, [r5, #0xc] - adds r0, #1 - strb r0, [r5, #0xc] - adds r0, r5, #0 - bl sub_080A7824 - b _080A7692 -_080A767A: - adds r0, r2, #0 - adds r0, #0x3e - ldrb r0, [r0] - lsls r0, r0, #0x1e - lsrs r0, r0, #0x1d - adds r0, #4 - adds r1, r5, #0 - adds r1, #0x44 - strb r0, [r1] - adds r0, r5, #0 - bl sub_080A76CC -_080A7692: - ldr r0, _080A76B0 @ =gPlayerState - str r5, [r0, #0x2c] - adds r0, r5, #0 - bl sub_08079BD8 - ldr r4, _080A76B4 @ =gUnk_0812906C - ldr r0, _080A76B8 @ =gUnk_08129068 - bl GetRandomByWeight - lsls r0, r0, #1 - adds r0, r0, r4 - ldrh r0, [r0] - bl SoundReq - b _080A76C2 - .align 2, 0 -_080A76B0: .4byte gPlayerState -_080A76B4: .4byte gUnk_0812906C -_080A76B8: .4byte gUnk_08129068 -_080A76BC: - adds r0, r5, #0 - bl sub_080A76CC -_080A76C2: - movs r0, #0x87 - lsls r0, r0, #1 - bl SoundReq - pop {r4, r5, pc} - .syntax divided diff --git a/asm/non_matching/playerItemSword/sub_080A76CC.inc b/asm/non_matching/playerItemSword/sub_080A76CC.inc deleted file mode 100644 index db126d8b..00000000 --- a/asm/non_matching/playerItemSword/sub_080A76CC.inc +++ /dev/null @@ -1,180 +0,0 @@ - .syntax unified - push {r4, r5, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xa] - cmp r0, #0 - beq _080A76D8 - b _080A77DC -_080A76D8: - ldr r5, _080A771C @ =gPlayerState - ldr r0, [r5, #0x2c] - cmp r0, r4 - beq _080A76E4 - bl DeleteThisEntity -_080A76E4: - ldrb r0, [r5, #4] - cmp r0, #0 - bne _080A76F2 - str r0, [r5, #0x2c] - strb r0, [r5, #0x1b] - bl DeleteThisEntity -_080A76F2: - ldrb r2, [r5, #0x1b] - cmp r2, #0 - beq _080A7744 - adds r1, r4, #0 - adds r1, #0x40 - movs r0, #0xd - strb r0, [r1] - movs r0, #0x40 - ands r0, r2 - cmp r0, #0 - beq _080A7728 - adds r0, r4, #0 - adds r0, #0x68 - ldrb r0, [r0] - cmp r0, #1 - beq _080A7720 - cmp r0, #6 - bne _080A7724 - movs r0, #0xa - b _080A7726 - .align 2, 0 -_080A771C: .4byte gPlayerState -_080A7720: - movs r0, #8 - b _080A7726 -_080A7724: - movs r0, #9 -_080A7726: - strb r0, [r1] -_080A7728: - ldr r0, _080A7740 @ =gPlayerEntity - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x20 - ands r0, r1 - cmp r0, #0 - beq _080A77C4 - movs r0, #0x8b - lsls r0, r0, #1 - bl SoundReq - b _080A77C4 - .align 2, 0 -_080A7740: .4byte gPlayerEntity -_080A7744: - ldr r0, [r5, #0x30] - movs r1, #0x80 - lsls r1, r1, #0x14 - ands r0, r1 - cmp r0, #0 - beq _080A776A - adds r0, r4, #0 - adds r0, #0x68 - ldrb r0, [r0] - cmp r0, #6 - bne _080A7762 - adds r1, r4, #0 - adds r1, #0x40 - movs r0, #0xc - b _080A7768 -_080A7762: - adds r1, r4, #0 - adds r1, #0x40 - movs r0, #0xb -_080A7768: - strb r0, [r1] -_080A776A: - ldr r0, _080A77D0 @ =gPlayerState - adds r0, #0x3e - ldrb r0, [r0] - movs r2, #3 - ands r2, r0 - cmp r2, #0 - beq _080A77C4 - ldr r0, _080A77D4 @ =gPlayerEntity - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x40 - ands r0, r1 - cmp r0, #0 - beq _080A77C4 - movs r1, #0x12 - cmp r2, #1 - bne _080A778E - movs r1, #0x14 -_080A778E: - adds r0, r4, #0 - movs r2, #0 - bl CreateFx - adds r2, r0, #0 - cmp r2, #0 - beq _080A77C4 - ldrb r1, [r4, #0x1e] - lsls r1, r1, #1 - ldr r0, _080A77D8 @ =gUnk_081292E2 - adds r1, r1, r0 - movs r0, #1 - ldrsb r0, [r1, r0] - ldrh r3, [r4, #0x32] - adds r0, r0, r3 - strh r0, [r2, #0x32] - ldrb r1, [r1] - lsls r1, r1, #0x18 - asrs r1, r1, #0x18 - ldrb r0, [r4, #0x18] - lsls r0, r0, #0x19 - cmp r0, #0 - bge _080A77BE - rsbs r1, r1, #0 -_080A77BE: - ldrh r0, [r4, #0x2e] - adds r0, r0, r1 - strh r0, [r2, #0x2e] -_080A77C4: - ldr r1, _080A77D4 @ =gPlayerEntity - adds r0, r4, #0 - bl sub_080A78B8 - b _080A7806 - .align 2, 0 -_080A77D0: .4byte gPlayerState -_080A77D4: .4byte gPlayerEntity -_080A77D8: .4byte gUnk_081292E2 -_080A77DC: - ldr r1, _080A7810 @ =gPlayerState - ldrb r0, [r1, #4] - cmp r0, #0 - beq _080A7814 - ldr r0, [r1, #0x2c] - adds r2, r0, #0 - adds r2, #0x40 - ldrb r0, [r2] - cmp r0, #0 - beq _080A7814 - ldrb r1, [r4, #0x10] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r4, #0x10] - ldrb r1, [r2] - adds r0, r4, #0 - adds r0, #0x40 - strb r1, [r0] - adds r0, r4, #0 - bl sub_080A7A54 -_080A7806: - adds r0, r4, #0 - bl sub_080A7A84 - b _080A7820 - .align 2, 0 -_080A7810: .4byte gPlayerState -_080A7814: - movs r0, #0xff - strb r0, [r4, #0x1e] - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] -_080A7820: - pop {r4, r5, pc} - .align 2, 0 - .syntax divided diff --git a/assets/assets.json b/assets/assets.json index 0e0b3675..df4d5f82 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -44376,36 +44376,6 @@ "start": 1216516, "size": 24 }, - { - "path": "playerItemSword/gUnk_08129068.bin", - "start": 1216616, - "size": 4 - }, - { - "path": "playerItemSword/gUnk_0812906C.bin", - "start": 1216620, - "size": 6 - }, - { - "path": "playerItemSword/gUnk_08129072.bin", - "start": 1216626, - "size": 28 - }, - { - "path": "playerItemSword/gUnk_0812908E.bin", - "start": 1216654, - "size": 8 - }, - { - "path": "playerItemSword/gUnk_08129096.bin", - "start": 1216662, - "size": 588 - }, - { - "path": "playerItemSword/gUnk_081292E2.bin", - "start": 1217250, - "size": 62 - }, { "path": "animations/gSpriteAnimations_RockProjectile_0.bin", "start": 1218036, diff --git a/data/const/playerItem/playerItemSword.s b/data/const/playerItem/playerItemSword.s deleted file mode 100644 index 3a930629..00000000 --- a/data/const/playerItem/playerItemSword.s +++ /dev/null @@ -1,28 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_0812905C:: @ 0812905C - .4byte sub_080A758C - .4byte sub_080A76CC - .4byte sub_080A7824 - -gUnk_08129068:: @ 08129068 - .incbin "playerItemSword/gUnk_08129068.bin" - -gUnk_0812906C:: @ 0812906C - .incbin "playerItemSword/gUnk_0812906C.bin" - -gUnk_08129072:: @ 08129072 - .incbin "playerItemSword/gUnk_08129072.bin" - -gUnk_0812908E:: @ 0812908E - .incbin "playerItemSword/gUnk_0812908E.bin" - -gUnk_08129096:: @ 08129096 - .incbin "playerItemSword/gUnk_08129096.bin" - -gUnk_081292E2:: @ 081292E2 - .incbin "playerItemSword/gUnk_081292E2.bin" diff --git a/linker.ld b/linker.ld index e0631d40..994aba5c 100644 --- a/linker.ld +++ b/linker.ld @@ -1579,7 +1579,7 @@ SECTIONS { data/data_08128A38.o(.rodata); src/menu/pause_menu.o(.rodata); data/data_08128BF4.o(.rodata); - data/const/playerItem/playerItemSword.o(.rodata); + src/playerItem/playerItemSword.o(.rodata); data/projectile_functions.o(.rodata); src/projectile/darkNutSwordSlash.o(.rodata); src/projectile/rockProjectile.o(.rodata); diff --git a/src/playerItem/playerItemSword.c b/src/playerItem/playerItemSword.c index 6a0bd260..5f6ed69a 100644 --- a/src/playerItem/playerItemSword.c +++ b/src/playerItem/playerItemSword.c @@ -2,10 +2,8 @@ #include "entity.h" #include "functions.h" #include "sound.h" - -extern void (*const gUnk_0812905C[])(Entity*); - -extern u8 gUnk_08129096[]; +#include "asm.h" +#include "effects.h" typedef struct { Entity base; @@ -16,9 +14,18 @@ void sub_080A78B8(PlayerItemSwordEntity*, Entity*); void sub_080A7B98(PlayerItemSwordEntity*); void sub_080A7A54(PlayerItemSwordEntity*); +void sub_080A7824(PlayerItemSwordEntity*); +void sub_080A76CC(PlayerItemSwordEntity*); +void sub_080A758C(PlayerItemSwordEntity*); +void sub_080A7A84(PlayerItemSwordEntity*); void PlayerItemSword(Entity* this) { - gUnk_0812905C[this->action](this); + static void (*const gUnk_0812905C[])(PlayerItemSwordEntity*) = { + sub_080A758C, + sub_080A76CC, + sub_080A7824, + }; + gUnk_0812905C[this->action]((PlayerItemSwordEntity*)this); if (this->type == 0) { sub_08078E84(this, &gPlayerEntity); this->hitbox->offset_x += this->spriteOffsetX; @@ -26,9 +33,191 @@ void PlayerItemSword(Entity* this) { } } -ASM_FUNC("asm/non_matching/playerItemSword/sub_080A758C.inc", void sub_080A758C(Entity* this)) +void sub_080A758C(PlayerItemSwordEntity* this) { + static const u8 gUnk_08129068[] = { + 0x56, + 0x55, + 0x55, + 0x0, + }; + static const u16 gUnk_0812906C[] = { + SFX_PLY_VO1, + SFX_PLY_VO4, + SFX_PLY_VO5, + }; + if (((super->type == 0) && (gPlayerState.field_0x3[1] == 0)) && ((gPlayerState.jump_status & 0x20) == 0)) { + DeleteThisEntity(); + } + if (AllocMutableHitbox(super) == NULL) { + DeleteThisEntity(); + } + LoadSwapGFX(super, 1, 3); + super->collisionFlags = (gPlayerEntity.collisionFlags + 1) | 0x20; + super->flags2 = gPlayerEntity.flags2; + super->updatePriority = 6; + super->contactFlags = 0; + super->iframes = 0; + super->knockbackDuration = 0; + super->action++; + super->frameIndex = 0xff; + sub_0801766C(super); + if (super->type == 0) { + if ((gPlayerState.jump_status & 0x20) != 0) { + super->flags &= ~ENT_COLLIDE; + super->type2 = 2; + super->damage = gPlayerState.swordDamage * 2 + 8; + switch (this->unk_68) { + case 6: + super->hurtType = 0x1a; + break; + case 1: + super->hurtType = 0x18; + break; + default: + super->hurtType = 0x19; + break; + } + super->action++; + sub_080A7824(this); + } else { + super->damage = gPlayerState.swordDamage * 2 + 4; + sub_080A76CC(this); + } + gPlayerState.item = super; + sub_08079BD8(super); + SoundReq(gUnk_0812906C[GetRandomByWeight(gUnk_08129068)]); + } else { + sub_080A76CC(this); + } + SoundReq(SFX_10E); +} -ASM_FUNC("asm/non_matching/playerItemSword/sub_080A76CC.inc", void sub_080A76CC(Entity* this)) +static const s8 gUnk_08129072[] = { 0x0, 0xd, 0xf, -0x3, 0x0, -0x16, -0x10, 0xd, 0x10, 0xd, + 0x10, -0x13, -0x10, -0x13, 0x0, -0x3, 0x10, -0x3, -0x10, -0x3, + -0xc, 0x7, 0xc, 0x7, 0xc, -0xf, -0xc, -0xf }; + +static const s8 gUnk_0812908E[] = { -0x2, -0xf, 0xb, -0x3, 0x2, 0x7, -0xb, -0x3 }; + +static const s8 gUnk_08129096[] = { + -0x10, 0x0, 0x6, 0x3, -0x8, 0x8, 0x8, 0x8, -0x8, 0x8, 0x8, 0x8, 0x0, 0xc, 0xb, 0xb, + 0x6, 0xc, 0x8, 0x8, 0xa, 0xb, 0x6, 0x6, 0xa, 0x8, 0x6, 0x6, 0xc, 0x4, 0x6, 0x6, + 0xc, 0x4, 0x6, 0x6, 0x0, 0x0, 0x0, 0x0, 0x2, 0xb, 0x4, 0x8, 0x2, 0xb, 0x4, 0x8, + 0x0, -0x10, 0x5, 0x6, -0xc, -0xc, 0x8, 0x8, -0x10, -0xc, 0x8, 0x8, -0x14, 0x0, 0xa, 0xa, + -0x12, 0x4, 0x8, 0x8, -0x10, 0x8, 0x6, 0x6, -0xc, 0x6, 0x6, 0x6, -0x8, 0x6, 0x6, 0x6, + -0x8, 0x6, 0x6, 0x6, 0x0, 0x0, 0x0, 0x0, -0x10, 0x0, 0x8, 0x4, -0x10, 0x0, 0x8, 0x4, + 0xe, -0x6, 0x6, 0x6, 0x10, -0x10, 0x8, 0x8, 0x10, -0x10, 0x8, 0x8, 0x0, -0x14, 0xa, 0xa, + 0x0, -0x14, 0x8, 0x8, -0xc, -0x12, 0x6, 0x6, -0xc, -0xe, 0x6, 0x6, -0xc, -0xa, 0x6, 0x6, + -0xc, -0xa, 0x6, 0x6, 0x0, 0x0, 0x0, 0x0, 0x0, -0x12, 0x4, 0x8, 0x0, -0x12, 0x4, 0x8, + 0x2, 0xb, 0x4, 0x8, 0x2, 0xb, 0x4, 0x8, 0x2, 0xb, 0x4, 0x8, 0x2, 0xb, 0x4, 0x8, + 0x2, 0xb, 0x4, 0x8, -0x10, 0x0, 0x8, 0x4, -0x10, 0x0, 0x8, 0x4, -0x10, 0x0, 0x8, 0x4, + -0x10, 0x0, 0x8, 0x4, -0x10, 0x0, 0x8, 0x4, 0x0, -0x12, 0x4, 0x8, 0x0, -0x12, 0x4, 0x8, + 0x0, -0x12, 0x4, 0x8, 0x0, -0x12, 0x4, 0x8, 0x0, -0x12, 0x4, 0x8, 0x2, 0xb, 0x4, 0x8, + 0x2, 0xb, 0x4, 0x8, 0x2, 0xb, 0x4, 0x8, -0x10, 0x0, 0x8, 0x4, -0x10, 0x0, 0x8, 0x4, + -0x10, 0x0, 0x8, 0x4, 0x0, -0x12, 0x4, 0x8, 0x0, -0x12, 0x4, 0x8, 0x0, -0x12, 0x4, 0x8, + 0xe, 0xa, 0xc, 0xc, 0x4, 0xc, 0xc, 0xc, -0x4, 0xc, 0xc, 0xc, -0xe, 0x4, 0xc, 0xc, + -0xe, -0x6, 0xc, 0xc, -0x4, -0x15, 0xc, 0xc, 0x6, -0x14, 0xc, 0xc, 0xc, -0x8, 0xc, 0xc, + 0x5, 0x10, 0x4, 0x8, 0x8, -0x12, 0x6, 0x8, -0x4, -0x12, 0x8, 0x8, 0x8, -0x8, 0xc, 0xc, + 0x8, -0x4, 0xc, 0xc, 0xa, 0x4, 0xc, 0xc, 0x4, 0xc, 0xc, 0xc, 0x4, 0xc, 0x4, 0xc, + 0x0, -0x8, 0x4, 0xc, -0x6, 0x8, 0xc, 0xc, 0x4, 0x6, 0xc, 0xc, -0xe, 0x8, 0xc, 0xc, + -0xc, 0x8, 0xa, 0xa, -0xa, -0x4, 0xc, 0xc, -0x2, -0x12, 0xc, 0xc, 0x0, -0x12, 0x4, 0xc, + -0x8, 0x0, 0x8, 0x4, 0x4, 0x8, 0xa, 0xa, 0x8, -0x8, 0xc, 0xc, 0x4, 0x8, 0xc, 0xc, + 0x4, 0x8, 0xc, 0xc, -0x4, 0x8, 0xc, 0xc, -0x8, 0x2, 0xc, 0xc, -0x8, 0x0, 0x8, 0x4, + 0x8, 0x0, 0x8, 0x4, -0x4, -0x8, 0xa, 0xa, -0x8, 0x8, 0xc, 0xc, -0x4, -0x8, 0xc, 0xc, + -0x4, -0x8, 0xc, 0xc, 0x4, -0x8, 0xc, 0xc, 0x8, -0x2, 0xc, 0xc, 0x8, 0x0, 0x8, 0x4, + -0x4, -0x12, 0x8, 0x8, -0x4, -0x12, 0x8, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x18, 0x18, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x18, 0x18, + 0x0, 0x8, 0x18, 0x18, 0x0, 0x8, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x18, 0x18, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0xb, 0x4, 0x8, 0x2, 0xb, 0x4, 0x8, + 0x2, 0xb, 0x4, 0x8, 0x2, 0xb, 0x4, 0x8, 0x2, 0xb, 0x4, 0x8, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, -0x10, 0x0, 0x8, 0x4, -0x10, 0x0, 0x8, 0x4, -0x10, 0x0, 0x8, 0x4, + -0x10, 0x0, 0x8, 0x4, -0x10, 0x0, 0x8, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, -0x12, 0x4, 0x8, 0x0, -0x12, 0x4, 0x8, 0x0, -0x12, 0x4, 0x8, 0x0, -0x12, 0x4, 0x8, + 0x0, -0x12, 0x4, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 +}; + +static const s8 gUnk_081292E2[] = { 0x0, 0x2, -0x8, 0xa, -0x8, 0xa, 0x0, 0xe, 0x6, 0xe, 0xa, + 0xd, 0xa, 0xa, 0xc, 0x6, 0x0, 0x2, 0x2, 0xb, 0x2, 0xb, + -0x2, 0x0, -0xe, -0xc, -0x12, -0xc, -0x16, 0x0, -0x14, 0x4, -0x12, + 0x8, -0xe, 0x6, -0xa, 0xa, -0x2, 0x0, -0x10, 0x0, -0x10, 0x0, + 0x0, -0x2, 0x10, -0x12, 0x10, -0x12, 0x0, -0x16, 0x0, -0x16, -0xc, + -0x14, -0xc, -0x10, -0xc, -0xc, 0x0, -0x2 }; + +void sub_080A76CC(PlayerItemSwordEntity* this) { + Entity* effect; + Effect type; + const s8* ptr; + s32 tmp; + + if (super->type == 0) { + if ((PlayerItemSwordEntity*)gPlayerState.item != this) { + DeleteThisEntity(); + } + if (gPlayerState.field_0x3[1] == 0) { + gPlayerState.item = NULL; + gPlayerState.sword_state = 0; + DeleteThisEntity(); + } + if (gPlayerState.sword_state != 0) { + super->hurtType = 0xd; + if ((gPlayerState.sword_state & 0x40) != 0) { + switch (this->unk_68) { + case 6: + super->hurtType = 0xa; + break; + case 1: + super->hurtType = 8; + break; + default: + super->hurtType = 9; + break; + } + } + if ((gPlayerEntity.frame & 0x20) != 0) { + SoundReq(SFX_116); + } + } else { + + if ((gPlayerState.flags & 0x8000000) != 0) { + if (this->unk_68 == 6) { + super->hurtType = 0xc; + } else { + super->hurtType = 0xb; + } + } + if (((gPlayerState.swordDamage) != 0) && ((gPlayerEntity.frame & 0x40) != 0)) { + type = FX_BLUE_SPARKLE; + if ((gPlayerState.swordDamage) == 1) { + type = FX_SPARKLE2; + } + effect = CreateFx(super, type, 0); + if (effect != NULL) { + ptr = &gUnk_081292E2[super->frameIndex * 2]; + effect->y.HALF.HI = super->y.HALF.HI + ptr[1]; + tmp = ptr[0]; + if ((*(u8*)&super->spriteSettings * 0x2000000) < 0) { // TODO + tmp = -tmp; + } + effect->x.HALF.HI = super->x.HALF.HI + tmp; + } + } + } + sub_080A78B8(this, &gPlayerEntity); + sub_080A7A84(this); + } else { + if (!((gPlayerState.field_0x3[1] == 0) || (gPlayerState.item->hurtType == 0))) { + super->flags |= ENT_COLLIDE; + super->hurtType = gPlayerState.item->hurtType; + sub_080A7A54(this); + sub_080A7A84(this); + } else { + super->frameIndex = 0xff; + super->flags &= ~ENT_COLLIDE; + } + } +} void sub_080A7824(PlayerItemSwordEntity* this) { if (gPlayerState.item != super) { @@ -137,7 +326,7 @@ void sub_080A78B8(PlayerItemSwordEntity* this, Entity* param_2) { } void sub_080A7A54(PlayerItemSwordEntity* this) { - u8* tmp; + const u8* tmp; tmp = &gUnk_08129096[(gPlayerEntity.frameIndex - 0x6a) * 4]; super->hitbox->offset_x = tmp[0]; @@ -146,6 +335,6 @@ void sub_080A7A54(PlayerItemSwordEntity* this) { super->hitbox->height = tmp[3]; } -ASM_FUNC("asm/non_matching/playerItemSword/sub_080A7A84.inc", void sub_080A7A84(Entity* this)) +ASM_FUNC("asm/non_matching/playerItemSword/sub_080A7A84.inc", void sub_080A7A84(PlayerItemSwordEntity* this)) ASM_FUNC("asm/non_matching/playerItemSword/sub_080A7B98.inc", void sub_080A7B98(PlayerItemSwordEntity* this)) From 26b911018054f02d42374c1931164d727ab6057f Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Wed, 20 Apr 2022 22:09:14 +0300 Subject: [PATCH 60/63] Match sub_080ACF2C and put const data in playerItemHeldObject --- .../playerItem13/sub_080ACF2C.inc | 81 ------------------- assets/assets.json | 25 ------ data/const/playerItem/playerItemHeldObject.s | 26 ------ include/player.h | 1 + linker.ld | 2 +- src/playerItem/playerItemHeldObject.c | 73 ++++++++++++++--- 6 files changed, 66 insertions(+), 142 deletions(-) delete mode 100644 asm/non_matching/playerItem13/sub_080ACF2C.inc delete mode 100644 data/const/playerItem/playerItemHeldObject.s diff --git a/asm/non_matching/playerItem13/sub_080ACF2C.inc b/asm/non_matching/playerItem13/sub_080ACF2C.inc deleted file mode 100644 index 687cb92d..00000000 --- a/asm/non_matching/playerItem13/sub_080ACF2C.inc +++ /dev/null @@ -1,81 +0,0 @@ - .syntax unified - push {r4, r5, r6, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xd] - adds r0, #1 - strb r0, [r4, #0xd] - ldr r0, _080ACF60 @ =gUnk_081320E4 - str r0, [r4, #0x48] - ldr r5, [r4, #0x54] - adds r6, r5, #0 - cmp r5, #0 - beq _080ACF64 - ldr r0, [r5, #0x2c] - str r0, [r4, #0x2c] - ldr r0, [r5, #0x30] - str r0, [r4, #0x30] - ldr r0, [r5, #0x34] - str r0, [r4, #0x34] - adds r0, r5, #0 - adds r0, #0x38 - ldrb r1, [r0] - adds r0, r4, #0 - adds r0, #0x38 - strb r1, [r0] - ldrb r0, [r5, #0x16] - strb r0, [r4, #0x16] - b _080ACFB6 - .align 2, 0 -_080ACF60: .4byte gUnk_081320E4 -_080ACF64: - adds r5, r4, #0 - str r4, [r4, #0x54] - movs r0, #2 - strb r0, [r4, #0xc] - ldr r3, _080ACFC8 @ =gUnk_081320B8 - ldrb r0, [r4, #0xf] - lsls r0, r0, #2 - adds r0, r0, r3 - ldrb r1, [r0, #1] - movs r0, #0xf - ands r1, r0 - ldrb r2, [r4, #0x1a] - movs r0, #0x10 - rsbs r0, r0, #0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, #0x1a] - ldrb r1, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r4, #0x18] - strb r6, [r4, #0x16] - ldrb r0, [r4, #0xf] - lsls r0, r0, #2 - adds r0, r0, r3 - ldrb r1, [r0, #2] - adds r0, r4, #0 - adds r0, #0x60 - strh r1, [r0] - ldrb r0, [r4, #0xf] - lsls r0, r0, #2 - adds r0, r0, r3 - ldrb r1, [r0] - adds r0, r4, #0 - bl InitializeAnimation - bl sub_08078D60 -_080ACFB6: - ldrb r1, [r5, #8] - adds r0, r4, #0 - adds r0, #0x6c - strh r1, [r0] - ldrb r1, [r5, #9] - adds r0, #2 - strh r1, [r0] - pop {r4, r5, r6, pc} - .align 2, 0 -_080ACFC8: .4byte gUnk_081320B8 - .syntax divided diff --git a/assets/assets.json b/assets/assets.json index df4d5f82..16282cb7 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -45161,31 +45161,6 @@ "DEMO_JP": -2268 } }, - { - "path": "playerItemHeldObject/gUnk_081320B8.bin", - "start": 1253560, - "size": 12 - }, - { - "path": "playerItemHeldObject/gUnk_081320C4.bin", - "start": 1253572, - "size": 8 - }, - { - "path": "playerItemHeldObject/gUnk_081320CC.bin", - "start": 1253580, - "size": 8 - }, - { - "path": "playerItemHeldObject/gUnk_081320D4.bin", - "start": 1253588, - "size": 16 - }, - { - "path": "playerItemHeldObject/gUnk_081320E4.bin", - "start": 1253604, - "size": 12 - }, { "offsets": { "DEMO_JP": -988 diff --git a/data/const/playerItem/playerItemHeldObject.s b/data/const/playerItem/playerItemHeldObject.s deleted file mode 100644 index 3df0b29b..00000000 --- a/data/const/playerItem/playerItemHeldObject.s +++ /dev/null @@ -1,26 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_081320A8:: @ 081320A8 - .4byte sub_080ACF2C - .4byte sub_080ACFCC - .4byte sub_080AD040 - .4byte sub_080AD274 - -gUnk_081320B8:: @ 081320B8 - .incbin "playerItemHeldObject/gUnk_081320B8.bin" - -gUnk_081320C4:: @ 081320C4 - .incbin "playerItemHeldObject/gUnk_081320C4.bin" - -gUnk_081320CC:: @ 081320CC - .incbin "playerItemHeldObject/gUnk_081320CC.bin" - -gUnk_081320D4:: @ 081320D4 - .incbin "playerItemHeldObject/gUnk_081320D4.bin" - -gUnk_081320E4:: @ 081320E4 - .incbin "playerItemHeldObject/gUnk_081320E4.bin" diff --git a/include/player.h b/include/player.h index e91c92f5..e3db0845 100644 --- a/include/player.h +++ b/include/player.h @@ -403,6 +403,7 @@ u32 sub_0807AC54(Entity*); void sub_080792D8(void); u32 sub_08078F74(Entity*); void sub_0807879C(Entity*); +void sub_08078D60(void); void PlayerSetNormalAndCollide(void); bool32 PlayerTryDropObject(ItemBehavior* arg0, u32 unk); void InitItemGetSequence(u32, u32, u32); diff --git a/linker.ld b/linker.ld index 994aba5c..e63e2ea2 100644 --- a/linker.ld +++ b/linker.ld @@ -1639,7 +1639,7 @@ SECTIONS { src/projectile/v3TennisBallProjectile.o(.rodata); src/playerItem/playerItemGust.o(.rodata); src/flagDebug.o(.rodata); - data/const/playerItem/playerItemHeldObject.o(.rodata); + src/playerItem/playerItemHeldObject.o(.rodata); src/title.o(.rodata); src/projectile.o(.rodata); src/playerItem/playerItemGustJar.o(.rodata); diff --git a/src/playerItem/playerItemHeldObject.c b/src/playerItem/playerItemHeldObject.c index 5cc41771..8f8c42d2 100644 --- a/src/playerItem/playerItemHeldObject.c +++ b/src/playerItem/playerItemHeldObject.c @@ -13,8 +13,6 @@ #include "new_player.h" #include "player.h" -extern void (*const gUnk_081320A8[])(Entity*); - typedef struct { Entity base; u8 unk_68[4]; @@ -23,20 +21,65 @@ typedef struct { } PlayerItemHeldObjectEntity; extern bool32 ProcessMovement10(Entity*); -extern const s8 gUnk_081320C4[]; +typedef struct { + u8 unk0; + u8 unk1; + u8 unk2; + u8 unk3; +} struct_gUnk_081320B8; bool32 sub_080AD32C(PlayerItemHeldObjectEntity*); void sub_080AD27C(PlayerItemHeldObjectEntity*); +void sub_080ACF2C(PlayerItemHeldObjectEntity*); +void sub_080ACFCC(PlayerItemHeldObjectEntity*); +void sub_080AD040(PlayerItemHeldObjectEntity*); +void sub_080AD274(PlayerItemHeldObjectEntity*); u32 sub_0806F8DC(Entity*); -extern const u16 gUnk_081320CC[]; -extern const u32 gUnk_081320D4[]; - void PlayerItemHeldObject(Entity* this) { - gUnk_081320A8[this->subAction](this); + static void (*const subActionFuncs[])(PlayerItemHeldObjectEntity*) = { + sub_080ACF2C, + sub_080ACFCC, + sub_080AD040, + sub_080AD274, + }; + subActionFuncs[this->subAction]((PlayerItemHeldObjectEntity*)this); } -ASM_FUNC("asm/non_matching/playerItem13/sub_080ACF2C.inc", void sub_080ACF2C(Entity* this)) +static const Hitbox3D gUnk_081320E4; + +void sub_080ACF2C(PlayerItemHeldObjectEntity* this) { + static const struct_gUnk_081320B8 gUnk_081320B8[] = { { 0, 2, 0xe8, 0 }, { 0, 5, 0xe0, 0 }, { 0, 5, 0xf2, 0 } }; + PlayerItemHeldObjectEntity* child; + PlayerItemHeldObjectEntity* child2; + const struct_gUnk_081320B8* ptr; + u32 temp; + + super->subAction++; + super->hitbox = (Hitbox*)&gUnk_081320E4; + child = (PlayerItemHeldObjectEntity*)super->child; + child2 = child; + if (child != NULL) { + super->x = (child->base).x; + super->y = (child->base).y; + super->z = (child->base).z; + super->collisionLayer = (child->base).collisionLayer; + super->carryFlags = (child->base).carryFlags; + } else { + child = this; + super->child = super; + super->action = 2; + ptr = gUnk_081320B8; + super->palette.b.b0 = temp = ptr[super->subtimer].unk1; + super->spriteSettings.draw = 1; + super->carryFlags = (int)child2; + super->spriteVramOffset = ptr[super->subtimer].unk2; + InitializeAnimation(super, ptr[super->subtimer].unk0); + sub_08078D60(); + } + this->unk_6c = (child->base).kind; + this->unk_6e = (child->base).id; +} void sub_080ACFCC(PlayerItemHeldObjectEntity* this) { Entity* child = super->child; @@ -60,6 +103,9 @@ void sub_080ACFCC(PlayerItemHeldObjectEntity* this) { } void sub_080AD040(PlayerItemHeldObjectEntity* this) { + static const s8 gUnk_081320C4[] = { + 0, -6, 6, 0, 0, 6, -6, 0, + }; PlayerItemHeldObjectEntity* child; u32 tile; u32 tmp; @@ -177,11 +223,18 @@ void sub_080AD040(PlayerItemHeldObjectEntity* this) { } } -void sub_080AD274(Entity* this) { +void sub_080AD274(PlayerItemHeldObjectEntity* this) { DeleteThisEntity(); } void sub_080AD27C(PlayerItemHeldObjectEntity* this) { + static const u16 gUnk_081320CC[] = { + 0x400, + 0x200, + 0x200, + 0x200, + }; + static const u32 gUnk_081320D4[] = { Q_16_16(0), Q_16_16(0.5), Q_16_16(1.25), Q_16_16(1.25) }; u32 tmp; PlayerItemHeldObjectEntity* child = (PlayerItemHeldObjectEntity*)super->child; gNewPlayerEntity.unk_74 = NULL; @@ -217,3 +270,5 @@ bool32 sub_080AD32C(PlayerItemHeldObjectEntity* this) { } return result; } + +static const Hitbox3D gUnk_081320E4 = { 0, 0, { 6, 3, 3, 6 }, 4, 4, 0x10, { 0, 0, 0 } }; From 1ac2d10b8d9666569f232f6b963741425eea406c Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Thu, 21 Apr 2022 09:18:38 +0300 Subject: [PATCH 61/63] Put const data in playerItemFireRodProjectile --- assets/assets.json | 5 ----- data/const/playerItem/playerItemFireRodProjectile.s | 13 ------------- linker.ld | 2 +- src/playerItem/playerItemFireRodProjectile.c | 13 ++++++++----- 4 files changed, 9 insertions(+), 24 deletions(-) delete mode 100644 data/const/playerItem/playerItemFireRodProjectile.s diff --git a/assets/assets.json b/assets/assets.json index 16282cb7..d0a11d9f 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -44064,11 +44064,6 @@ "start": 1208936, "size": 8 }, - { - "path": "playerItemFireRodProjectile/gUnk_08127278.bin", - "start": 1208952, - "size": 8 - }, { "offsets": { "DEMO_USA": 2640 diff --git a/data/const/playerItem/playerItemFireRodProjectile.s b/data/const/playerItem/playerItemFireRodProjectile.s deleted file mode 100644 index d38fda70..00000000 --- a/data/const/playerItem/playerItemFireRodProjectile.s +++ /dev/null @@ -1,13 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08127270:: @ 08127270 - .4byte sub_080A3084 - .4byte sub_080A310C - -gUnk_08127278:: @ 08127278 - .incbin "playerItemFireRodProjectile/gUnk_08127278.bin" - diff --git a/linker.ld b/linker.ld index e63e2ea2..57580ef3 100644 --- a/linker.ld +++ b/linker.ld @@ -1567,7 +1567,7 @@ SECTIONS { src/playerItemDefinitions.o(.rodata); data/data_08125104.o(.rodata); data/const/playerItem/playerItemShield.o(.rodata); - data/const/playerItem/playerItemFireRodProjectile.o(.rodata); + src/playerItem/playerItemFireRodProjectile.o(.rodata); #ifdef DEMO_USA src/demo.o(.rodata); #endif diff --git a/src/playerItem/playerItemFireRodProjectile.c b/src/playerItem/playerItemFireRodProjectile.c index 9e29cf46..072bedf1 100644 --- a/src/playerItem/playerItemFireRodProjectile.c +++ b/src/playerItem/playerItemFireRodProjectile.c @@ -15,22 +15,25 @@ typedef struct { extern u8 gUnk_08003E44; -extern void (*const gUnk_08127270[])(FireRodProjectileEntity*); - -extern Hitbox gUnk_08127278; +void sub_080A3084(FireRodProjectileEntity*); void sub_080A310C(FireRodProjectileEntity*); void PlayerItemFireRodProjectile(Entity* this) { - gUnk_08127270[this->action]((FireRodProjectileEntity*)this); + static void (*const actionFuncs[])(FireRodProjectileEntity*) = { + sub_080A3084, + sub_080A310C, + }; + actionFuncs[this->action]((FireRodProjectileEntity*)this); } void sub_080A3084(FireRodProjectileEntity* this) { + static const Hitbox gUnk_08127278 = { 0, 0, { 4, 2, 2, 4 }, 6, 6 }; super->spriteSettings.draw = 1; super->action = 0x01; CopyPosition(super->parent, super); if (super->type == 0) { super->collisionFlags = gPlayerEntity.collisionFlags + 1; - super->hitbox = &gUnk_08127278; + super->hitbox = (Hitbox*)&gUnk_08127278; super->speed = 0x400; if (super->collisionLayer == 0x02) { super->type2 = 0x01; From 476bc3311c79eb81895f3a5fc7e7a4ab985cdfbf Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Thu, 21 Apr 2022 09:54:22 +0300 Subject: [PATCH 62/63] Put const data in windTribesPeople --- assets/assets.json | 118 ---------------------- data/const/npc/windTribespeople.s | 83 ---------------- linker.ld | 2 +- src/npc/windTribespeople.c | 158 ++++++++++++++++++++++-------- 4 files changed, 117 insertions(+), 244 deletions(-) delete mode 100644 data/const/npc/windTribespeople.s diff --git a/assets/assets.json b/assets/assets.json index d0a11d9f..404c0f1b 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -39314,124 +39314,6 @@ "size": 17, "type": "animation" }, - { - "path": "windTribespeople/gUnk_08113A1C.bin", - "start": 1128988, - "size": 96 - }, - { - "path": "windTribespeople/gUnk_08113ABC.bin", - "start": 1129148, - "size": 80 - }, - { - "path": "windTribespeople/gUnk_08113B0C.bin", - "start": 1129228, - "size": 6 - }, - { - "path": "windTribespeople/gUnk_08113B12.bin", - "start": 1129234, - "size": 4 - }, - { - "path": "windTribespeople/gUnk_08113B16.bin", - "start": 1129238, - "size": 8 - }, - { - "path": "windTribespeople/gUnk_08113B1E.bin", - "start": 1129246, - "size": 4 - }, - { - "path": "windTribespeople/gUnk_08113B22.bin", - "start": 1129250, - "size": 6 - }, - { - "path": "windTribespeople/gUnk_08113B28_JP.bin", - "variants": [ - "JP" - ], - "starts": { - "JP": 1128428 - }, - "size": 8 - }, - { - "path": "windTribespeople/gUnk_08113B28_1_DEMO_JP.bin", - "variants": [ - "DEMO_JP" - ], - "starts": { - "DEMO_JP": 1127204 - }, - "size": 8 - }, - { - "path": "windTribespeople/gUnk_08113B28_2_EU.bin", - "variants": [ - "EU" - ], - "starts": { - "EU": 1127032 - }, - "size": 8 - }, - { - "path": "windTribespeople/gUnk_08113B28_3_USA-DEMO_USA.bin", - "variants": [ - "USA", - "DEMO_USA" - ], - "start": 1129256, - "size": 8 - }, - { - "path": "windTribespeople/gUnk_08113B30_JP.bin", - "variants": [ - "JP" - ], - "starts": { - "JP": 1128436 - }, - "size": 8 - }, - { - "path": "windTribespeople/gUnk_08113B30_1_DEMO_JP.bin", - "variants": [ - "DEMO_JP" - ], - "starts": { - "DEMO_JP": 1127212 - }, - "size": 8 - }, - { - "path": "windTribespeople/gUnk_08113B30_2_EU.bin", - "variants": [ - "EU" - ], - "starts": { - "EU": 1127040 - }, - "size": 8 - }, - { - "path": "windTribespeople/gUnk_08113B30_3_USA-DEMO_USA.bin", - "variants": [ - "USA", - "DEMO_USA" - ], - "start": 1129264, - "size": 8 - }, - { - "path": "windTribespeople/gUnk_08113B38.bin", - "start": 1129272, - "size": 7 - }, { "path": "animations/gSpriteAnimations_Gregal_0.bin", "start": 1129884, diff --git a/data/const/npc/windTribespeople.s b/data/const/npc/windTribespeople.s deleted file mode 100644 index f6a115a7..00000000 --- a/data/const/npc/windTribespeople.s +++ /dev/null @@ -1,83 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08113A1C:: @ 08113A1C - .incbin "windTribespeople/gUnk_08113A1C.bin" - -gUnk_08113A7C:: @ 08113A7C - .4byte sub_0806C798 - .4byte sub_0806C7D4 - .4byte sub_0806C834 - .4byte sub_0806C85C - -gUnk_08113A8C:: @ 08113A8C - .4byte sub_0806C928 - .4byte sub_0806C944 - .4byte sub_0806C978 - .4byte sub_0806C99C - .4byte sub_0806C9D0 - .4byte sub_0806C928 - .4byte sub_0806C9F8 - .4byte sub_0806C99C - .4byte sub_0806CA1C - .4byte sub_0806CA2C - .4byte sub_0806CA3C - .4byte sub_0806CA4C - -gUnk_08113ABC:: @ 08113ABC - .incbin "windTribespeople/gUnk_08113ABC.bin" - -gUnk_08113B0C:: @ 08113B0C - .incbin "windTribespeople/gUnk_08113B0C.bin" - -gUnk_08113B12:: @ 08113B12 - .incbin "windTribespeople/gUnk_08113B12.bin" - -gUnk_08113B16:: @ 08113B16 - .incbin "windTribespeople/gUnk_08113B16.bin" - -gUnk_08113B1E:: @ 08113B1E - .incbin "windTribespeople/gUnk_08113B1E.bin" - -gUnk_08113B22:: @ 08113B22 - .incbin "windTribespeople/gUnk_08113B22.bin" - -gUnk_08113B28:: @ 08113B28 -.ifdef JP - @ TODO only small differences - .incbin "windTribespeople/gUnk_08113B28_JP.bin" -.else -.ifdef DEMO_JP - @ TODO only small differences - .incbin "windTribespeople/gUnk_08113B28_1_DEMO_JP.bin" -.else -.ifdef EU - .incbin "windTribespeople/gUnk_08113B28_2_EU.bin" -.else - .incbin "windTribespeople/gUnk_08113B28_3_USA-DEMO_USA.bin" -.endif -.endif -.endif - -gUnk_08113B30:: @ 08113B30 -.ifdef JP - @ TODO only small differences - .incbin "windTribespeople/gUnk_08113B30_JP.bin" -.else -.ifdef DEMO_JP - @ TODO only small differences - .incbin "windTribespeople/gUnk_08113B30_1_DEMO_JP.bin" -.else -.ifdef EU - .incbin "windTribespeople/gUnk_08113B30_2_EU.bin" -.else - .incbin "windTribespeople/gUnk_08113B30_3_USA-DEMO_USA.bin" -.endif -.endif -.endif - -gUnk_08113B38:: @ 08113B38 - .incbin "windTribespeople/gUnk_08113B38.bin" diff --git a/linker.ld b/linker.ld index 57580ef3..f0f4bc20 100644 --- a/linker.ld +++ b/linker.ld @@ -1277,7 +1277,7 @@ SECTIONS { data/animations/npc/emma.o(.rodata); src/npc/teachers.o(.rodata); data/animations/npc/teachers.o(.rodata); - data/const/npc/windTribespeople.o(.rodata); + src/npc/windTribespeople.o(.rodata); data/animations/npc/windTribespeople.o(.rodata); src/npc/gregal.o(.rodata); data/animations/npc/gregal.o(.rodata); diff --git a/src/npc/windTribespeople.c b/src/npc/windTribespeople.c index 54ea46a9..6db0a78f 100644 --- a/src/npc/windTribespeople.c +++ b/src/npc/windTribespeople.c @@ -3,32 +3,39 @@ #include "entity.h" #include "npc.h" -extern void sub_0806C7D4(Entity*); +void sub_0806C798(Entity*); +void sub_0806C7D4(Entity*); +void sub_0806C834(Entity*); +void sub_0806C85C(Entity*); +void sub_0806CA4C(Entity*, ScriptExecutionContext*); +void sub_0806CA3C(Entity*, ScriptExecutionContext*); +void sub_0806CA2C(Entity*, ScriptExecutionContext*); +void sub_0806CA1C(Entity*, ScriptExecutionContext*); +void sub_0806C99C(Entity*, ScriptExecutionContext*); +void sub_0806C9F8(Entity*, ScriptExecutionContext*); +void sub_0806C9D0(Entity*, ScriptExecutionContext*); +void sub_0806C99C(Entity*, ScriptExecutionContext*); +void sub_0806C978(Entity*, ScriptExecutionContext*); +void sub_0806C944(Entity*, ScriptExecutionContext*); +void sub_0806C928(Entity*, ScriptExecutionContext*); -extern void (*const gUnk_08113A7C[])(Entity*); -extern void (*const gUnk_08113A8C[])(Entity*, ScriptExecutionContext*); - -extern SpriteLoadData gUnk_08113A1C[]; +static const SpriteLoadData gUnk_08113A1C[] = { + { 0x106, 0x51, 0x4 }, { 0x2107, 0x51, 0x4 }, { 0x0, 0x0, 0x0 }, { 0x0, 0x0, 0x0 }, { 0x2107, 0x52, 0x4 }, + { 0x106, 0x52, 0x4 }, { 0x0, 0x0, 0x0 }, { 0x0, 0x0, 0x0 }, { 0x104, 0x53, 0x4 }, { 0x2107, 0x53, 0x4 }, + { 0x0, 0x0, 0x0 }, { 0x0, 0x0, 0x0 }, { 0x105, 0x54, 0x4 }, { 0x2108, 0x54, 0x4 }, { 0x0, 0x0, 0x0 }, + { 0x0, 0x0, 0x0 }, { 0x104, 0x55, 0x4 }, { 0xd04, 0x55, 0x4 }, { 0x2508, 0x55, 0x4 }, { 0x0, 0x0, 0x0 }, + { 0x104, 0x56, 0x4 }, { 0x2107, 0x56, 0x4 }, { 0x0, 0x0, 0x0 }, { 0x0, 0x0, 0x0 } +}; extern u16 script_WindTribespeople6; -extern Dialog gUnk_08113ABC[]; -extern u16 gUnk_08113B0C[]; - -extern Dialog gUnk_08113B28; - -extern Dialog gUnk_08113B30; - -extern u16 gUnk_08113B12[]; - -extern u16 gUnk_08113B22[]; - -extern u16 gUnk_08113B1E[]; - -extern u16 gUnk_08113B16[]; - -extern u8 gUnk_08113B38[]; void WindTribespeople(Entity* this) { - gUnk_08113A7C[this->action](this); + static void (*const actionFuncs[])(Entity*) = { + sub_0806C798, + sub_0806C7D4, + sub_0806C834, + sub_0806C85C, + }; + actionFuncs[this->action](this); } void sub_0806C798(Entity* this) { @@ -111,15 +118,31 @@ void WindTribespeople_Head(Entity* this) { } void sub_0806C90C(Entity* this, ScriptExecutionContext* context) { + static void (*const typeScriptFuncs[])(Entity*, ScriptExecutionContext*) = { + sub_0806C928, sub_0806C944, sub_0806C978, sub_0806C99C, sub_0806C9D0, sub_0806C928, + sub_0806C9F8, sub_0806C99C, sub_0806CA1C, sub_0806CA2C, sub_0806CA3C, sub_0806CA4C, + }; context->condition = 0; - gUnk_08113A8C[this->type2](this, context); + typeScriptFuncs[this->type2](this, context); } -void sub_0806C928(Entity* this) { +void sub_0806C928(Entity* this, ScriptExecutionContext* context) { + static const Dialog gUnk_08113ABC[] = { + { 0x0, 0x0, 3, 1, { 0x4e20, 0x4e1f } }, { 0x0, 0x0, 3, 1, { 0x4e20, 0x4e1f } }, + { 0x0, 0x0, 3, 1, { 0x4e20, 0x4e1f } }, { 0x0, 0x0, 3, 1, { 0x4e20, 0x4e1f } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4e21 } }, { 0x0, 0x0, 1, 1, { 0x0, 0x4e22 } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4e23 } }, { 0x0, 0x0, 1, 1, { 0x0, 0x4e23 } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4e24 } }, { 0x0, 0x0, 1, 1, { 0x0, 0x4e24 } } + }; ShowNPCDialogue(this, &gUnk_08113ABC[gSave.global_progress]); } -void sub_0806C944(Entity* this) { +void sub_0806C944(Entity* this, ScriptExecutionContext* context) { + static const u16 messageIndices[] = { + 0x2f02, + 0x2f0e, + 0x2f14, + }; int iVar1; int iVar2; @@ -133,65 +156,116 @@ void sub_0806C944(Entity* this) { iVar2 = 1; } } - MessageNoOverlap(gUnk_08113B0C[iVar2], this); + MessageNoOverlap(messageIndices[iVar2], this); } -void sub_0806C978(Entity* this) { +void sub_0806C978(Entity* this, ScriptExecutionContext* context) { + static const u16 messageIndices[] = { + 0x2f05, + 0x2f11, + }; u32 flagAsBool = 0; - if (CheckGlobalFlag(0x58)) { + if (CheckGlobalFlag(WARP_EVENT_END)) { flagAsBool = 1; } - MessageNoOverlap(gUnk_08113B12[flagAsBool], this); + MessageNoOverlap(messageIndices[flagAsBool], this); } -void sub_0806C99C(Entity* this) { +void sub_0806C99C(Entity* this, ScriptExecutionContext* context) { + static const u16 messageIndices[] = { + 0x2f03, + 0x2f0a, + 0x2f15, + 0x2f0f, + }; u32 flagAsBool = 0; - if (CheckGlobalFlag(0x58)) { + if (CheckGlobalFlag(WARP_EVENT_END)) { flagAsBool = 2; } if (CheckLocalFlag(99) != 0) { flagAsBool += 1; } - MessageNoOverlap(gUnk_08113B16[flagAsBool], this); + MessageNoOverlap(messageIndices[flagAsBool], this); } -void sub_0806C9D0(Entity* this) { +void sub_0806C9D0(Entity* this, ScriptExecutionContext* context) { + static const u16 messageIndices[] = { + 0x2f12, + 0x2f13, + }; u32 tmp = 0; if (CheckLocalFlag(100) == 0) { tmp = 1; } - MessageNoOverlap(gUnk_08113B1E[tmp], this); + MessageNoOverlap(messageIndices[tmp], this); } -void sub_0806C9F8(Entity* this) { +void sub_0806C9F8(Entity* this, ScriptExecutionContext* context) { + static const u16 messageIndices[] = { + 0x2f04, + 0x2f10, + 0x0, + }; u32 flagAsBool = 0; - if (CheckGlobalFlag(0x58)) { + if (CheckGlobalFlag(WARP_EVENT_END)) { flagAsBool = 1; } - MessageNoOverlap(gUnk_08113B22[flagAsBool], this); + MessageNoOverlap(messageIndices[flagAsBool], this); } -void sub_0806CA1C(Entity* this) { +void sub_0806CA1C(Entity* this, ScriptExecutionContext* context) { MessageNoOverlap(0x251b, this); } -void sub_0806CA2C(Entity* this) { +void sub_0806CA2C(Entity* this, ScriptExecutionContext* context) { MessageNoOverlap(0x2527, this); } -void sub_0806CA3C(Entity* this) { +void sub_0806CA3C(Entity* this, ScriptExecutionContext* context) { + static const Dialog gUnk_08113B28 = { +#if defined(DEMO_JP) || defined(EU) || defined(JP) + 0xf5, + 1, + 2, + 1, + { 0x2f19, 0x2f16 } +#else + 0xf8, + 1, + 2, + 1, + { 0x2f19, 0x2f16 } +#endif + + }; ShowNPCDialogue(this, &gUnk_08113B28); } -void sub_0806CA4C(Entity* this) { +void sub_0806CA4C(Entity* this, ScriptExecutionContext* context) { + static const Dialog gUnk_08113B30 = { +#if defined(DEMO_JP) || defined(EU) || defined(JP) + 0xf4, + 0x1, + 2, + 1, + { 0x2f18, 0x2f17 } +#else + 0xf7, + 0x1, + 2, + 1, + { 0x2f18, 0x2f17 } +#endif + }; ShowNPCDialogue(this, &gUnk_08113B30); } void sub_0806CA5C(Entity* this, ScriptExecutionContext* context) { + static const u8 gUnk_08113B38[] = { 30, 25, 20, 15, 10, 5, 0 }; context->wait = gUnk_08113B38[context->unk_18++]; if (this->type2 == 10) { - EnqueueSFX(0xe8); + EnqueueSFX(SFX_WIND2); } if (context->wait != 0) { gActiveScriptInfo.commandSize = 0; From 0ab1dec741fa0d671a2dd32457c6a95fbe37901b Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Thu, 21 Apr 2022 15:55:21 +0300 Subject: [PATCH 63/63] Put const data in townMinish --- assets/assets.json | 290 ---------------------------- data/const/npc/townMinish.s | 158 ---------------- linker.ld | 2 +- src/npc/townMinish.c | 363 ++++++++++++++++++++++++++++++++---- 4 files changed, 331 insertions(+), 482 deletions(-) delete mode 100644 data/const/npc/townMinish.s diff --git a/assets/assets.json b/assets/assets.json index 404c0f1b..2571a08d 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -38304,296 +38304,6 @@ "size": 5, "type": "animation" }, - { - "path": "townMinish/gUnk_081125F4.bin", - "start": 1123828, - "size": 128 - }, - { - "path": "townMinish/gUnk_08112674.bin", - "start": 1123956, - "size": 96 - }, - { - "path": "townMinish/gUnk_081126D4.bin", - "start": 1124052, - "size": 16 - }, - { - "path": "townMinish/gUnk_081126E4.bin", - "start": 1124068, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0.bin", - "start": 1124080, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0_1.bin", - "start": 1124088, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0_2.bin", - "start": 1124096, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0_3.bin", - "start": 1124104, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0_4.bin", - "start": 1124112, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0_5.bin", - "start": 1124120, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0_6.bin", - "start": 1124128, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0_7.bin", - "start": 1124136, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0_8.bin", - "start": 1124144, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0_9.bin", - "start": 1124152, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0_10.bin", - "start": 1124160, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0_11.bin", - "start": 1124168, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0_12.bin", - "start": 1124176, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0_13.bin", - "start": 1124184, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0_14.bin", - "start": 1124192, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0_15.bin", - "start": 1124200, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0_16.bin", - "start": 1124208, - "size": 324 - }, - { - "path": "townMinish/gUnk_081126F0_17.bin", - "start": 1124536, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0_18.bin", - "start": 1124544, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0_19.bin", - "start": 1124552, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0_20.bin", - "start": 1124560, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0_21.bin", - "start": 1124568, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0_22.bin", - "start": 1124576, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0_23.bin", - "start": 1124584, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0_24.bin", - "start": 1124592, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0_25.bin", - "start": 1124600, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0_26.bin", - "start": 1124608, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0_27.bin", - "start": 1124616, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0_28.bin", - "start": 1124624, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0_29.bin", - "start": 1124632, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0_30.bin", - "start": 1124640, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0_31.bin", - "start": 1124648, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0_32.bin", - "start": 1124656, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0_33.bin", - "start": 1124664, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0_34.bin", - "start": 1124672, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0_35.bin", - "start": 1124680, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0_36.bin", - "start": 1124688, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0_37.bin", - "start": 1124696, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0_38.bin", - "start": 1124704, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0_39.bin", - "start": 1124712, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0_40.bin", - "start": 1124720, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0_41.bin", - "start": 1124728, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0_42.bin", - "start": 1124736, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0_43.bin", - "start": 1124744, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0_44.bin", - "start": 1124752, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0_45.bin", - "start": 1124760, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0_46.bin", - "start": 1124768, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0_47.bin", - "start": 1124776, - "size": 4 - }, - { - "path": "townMinish/gUnk_081126F0_48.bin", - "start": 1124784, - "size": 576 - }, - { - "path": "townMinish/gUnk_08112C40.bin", - "start": 1125440, - "size": 10 - }, - { - "path": "townMinish/gUnk_08112C4A.bin", - "start": 1125450, - "size": 6 - }, - { - "path": "townMinish/gUnk_08112C50.bin", - "start": 1125456, - "size": 12 - }, - { - "path": "townMinish/gUnk_08112C5C.bin", - "start": 1125468, - "size": 4 - }, - { - "path": "townMinish/gUnk_08112C60.bin", - "start": 1125472, - "size": 8 - }, { "path": "animations/gSpriteAnimations_Librari_0.bin", "start": 1125722, diff --git a/data/const/npc/townMinish.s b/data/const/npc/townMinish.s deleted file mode 100644 index c7730ab1..00000000 --- a/data/const/npc/townMinish.s +++ /dev/null @@ -1,158 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_081125F4:: @ 081125F4 - .incbin "townMinish/gUnk_081125F4.bin" - -gUnk_08112674:: @ 08112674 - .incbin "townMinish/gUnk_08112674.bin" - -gUnk_081126D4:: @ 081126D4 - .incbin "townMinish/gUnk_081126D4.bin" - -gUnk_081126E4:: @ 081126E4 - .incbin "townMinish/gUnk_081126E4.bin" - -gUnk_081126E8:: @ 081126E8 - .4byte sub_0806ABFC - .4byte sub_0806AC3C - -gUnk_081126F0:: @ 081126F0 - .incbin "townMinish/gUnk_081126F0.bin" - .4byte sub_0806B004 - .incbin "townMinish/gUnk_081126F0_1.bin" - .4byte sub_0806B004 - .incbin "townMinish/gUnk_081126F0_2.bin" - .4byte sub_0806B004 - .incbin "townMinish/gUnk_081126F0_3.bin" - .4byte sub_0806B004 - .incbin "townMinish/gUnk_081126F0_4.bin" - .4byte sub_0806B004 - .incbin "townMinish/gUnk_081126F0_5.bin" - .4byte sub_0806B004 - .incbin "townMinish/gUnk_081126F0_6.bin" - .4byte sub_0806B004 - .incbin "townMinish/gUnk_081126F0_7.bin" - .4byte sub_0806B004 - .incbin "townMinish/gUnk_081126F0_8.bin" - .4byte sub_0806B064 - .incbin "townMinish/gUnk_081126F0_9.bin" - .4byte sub_0806B064 - .incbin "townMinish/gUnk_081126F0_10.bin" - .4byte sub_0806B064 - .incbin "townMinish/gUnk_081126F0_11.bin" - .4byte sub_0806B064 - .incbin "townMinish/gUnk_081126F0_12.bin" - .4byte sub_0806B064 - .incbin "townMinish/gUnk_081126F0_13.bin" - .4byte sub_0806B064 - .incbin "townMinish/gUnk_081126F0_14.bin" - .4byte sub_0806B064 - .incbin "townMinish/gUnk_081126F0_15.bin" - .4byte sub_0806B064 - .incbin "townMinish/gUnk_081126F0_16.bin" - .4byte sub_0806B098 - .incbin "townMinish/gUnk_081126F0_17.bin" - .4byte sub_0806B098 - .incbin "townMinish/gUnk_081126F0_18.bin" - .4byte sub_0806B098 - .incbin "townMinish/gUnk_081126F0_19.bin" - .4byte sub_0806B098 - .incbin "townMinish/gUnk_081126F0_20.bin" - .4byte sub_0806B098 - .incbin "townMinish/gUnk_081126F0_21.bin" - .4byte sub_0806B098 - .incbin "townMinish/gUnk_081126F0_22.bin" - .4byte sub_0806B098 - .incbin "townMinish/gUnk_081126F0_23.bin" - .4byte sub_0806B098 - .incbin "townMinish/gUnk_081126F0_24.bin" - .4byte sub_0806B098 - .incbin "townMinish/gUnk_081126F0_25.bin" - .4byte sub_0806B098 - .incbin "townMinish/gUnk_081126F0_26.bin" - .4byte sub_0806B098 - .incbin "townMinish/gUnk_081126F0_27.bin" - .4byte sub_0806B098 - .incbin "townMinish/gUnk_081126F0_28.bin" - .4byte sub_0806B098 - .incbin "townMinish/gUnk_081126F0_29.bin" - .4byte sub_0806B098 - .incbin "townMinish/gUnk_081126F0_30.bin" - .4byte sub_0806B098 - .incbin "townMinish/gUnk_081126F0_31.bin" - .4byte sub_0806B098 - .incbin "townMinish/gUnk_081126F0_32.bin" - .4byte sub_0806B0E0 - .incbin "townMinish/gUnk_081126F0_33.bin" - .4byte sub_0806B0E0 - .incbin "townMinish/gUnk_081126F0_34.bin" - .4byte sub_0806B0E0 - .incbin "townMinish/gUnk_081126F0_35.bin" - .4byte sub_0806B0E0 - .incbin "townMinish/gUnk_081126F0_36.bin" - .4byte sub_0806B0E0 - .incbin "townMinish/gUnk_081126F0_37.bin" - .4byte sub_0806B0E0 - .incbin "townMinish/gUnk_081126F0_38.bin" - .4byte sub_0806B0E0 - .incbin "townMinish/gUnk_081126F0_39.bin" - .4byte sub_0806B0E0 - .incbin "townMinish/gUnk_081126F0_40.bin" - .4byte sub_0806B134 - .incbin "townMinish/gUnk_081126F0_41.bin" - .4byte sub_0806B134 - .incbin "townMinish/gUnk_081126F0_42.bin" - .4byte sub_0806B134 - .incbin "townMinish/gUnk_081126F0_43.bin" - .4byte sub_0806B134 - .incbin "townMinish/gUnk_081126F0_44.bin" - .4byte sub_0806B134 - .incbin "townMinish/gUnk_081126F0_45.bin" - .4byte sub_0806B134 - .incbin "townMinish/gUnk_081126F0_46.bin" - .4byte sub_0806B134 - .incbin "townMinish/gUnk_081126F0_47.bin" - .4byte sub_0806B134 - .incbin "townMinish/gUnk_081126F0_48.bin" - -gUnk_08112BF0:: @ 08112BF0 - .4byte sub_0806B004 - .4byte sub_0806B064 - .4byte sub_0806AFBC - .4byte sub_0806AFBC - .4byte sub_0806AFBC - .4byte sub_0806AFBC - .4byte sub_0806AFBC - .4byte sub_0806B098 - .4byte sub_0806B098 - .4byte sub_0806B0E0 - .4byte sub_0806B134 - .4byte sub_0806AFBC - .4byte sub_0806AFBC - .4byte sub_0806AFBC - .4byte sub_0806AFBC - .4byte sub_0806AFBC - .4byte sub_0806AFBC - .4byte sub_0806AFBC - .4byte sub_0806AFBC - .4byte sub_0806AFBC - -gUnk_08112C40:: @ 08112C40 - .incbin "townMinish/gUnk_08112C40.bin" - -gUnk_08112C4A:: @ 08112C4A - .incbin "townMinish/gUnk_08112C4A.bin" - -gUnk_08112C50:: @ 08112C50 - .incbin "townMinish/gUnk_08112C50.bin" - -gUnk_08112C5C:: @ 08112C5C - .incbin "townMinish/gUnk_08112C5C.bin" - -gUnk_08112C60:: @ 08112C60 - .incbin "townMinish/gUnk_08112C60.bin" - diff --git a/linker.ld b/linker.ld index f0f4bc20..0b57a0d3 100644 --- a/linker.ld +++ b/linker.ld @@ -1250,7 +1250,7 @@ SECTIONS { data/animations/npc/syrup.o(.rodata); src/npc/rem.o(.rodata); data/animations/npc/rem.o(.rodata); - data/const/npc/townMinish.o(.rodata); + src/npc/townMinish.o(.rodata); data/animations/npc/townMinish.o(.rodata); src/npc/librari.o(.rodata); data/animations/npc/librari.o(.rodata); diff --git a/src/npc/townMinish.c b/src/npc/townMinish.c index d8b01c3e..213fa8c7 100644 --- a/src/npc/townMinish.c +++ b/src/npc/townMinish.c @@ -5,27 +5,145 @@ #include "item.h" extern u32 sub_080B1AC8(u32, u32, u32); -extern void sub_0806ACC4(Entity*); -extern void sub_0806AEA8(Entity*); -extern void sub_0806AEE4(Entity*); -extern void sub_0806AFE8(Entity*, ScriptExecutionContext*); +void sub_0806ACC4(Entity*); +void sub_0806ABFC(Entity*); +void sub_0806AC3C(Entity*); +void sub_0806AEA8(Entity*); +void sub_0806AEE4(Entity*); +void sub_0806AFE8(Entity*, ScriptExecutionContext*); +void sub_0806B004(Entity*, ScriptExecutionContext*); +void sub_0806B098(Entity*, ScriptExecutionContext*); +void sub_0806B0E0(Entity*, ScriptExecutionContext*); +void sub_0806B064(Entity*, ScriptExecutionContext*); +void sub_0806B134(Entity*, ScriptExecutionContext*); -extern u8 gUnk_081125F4[12]; -extern SpriteLoadData gUnk_08112674[]; -extern u32 gUnk_081126D4[4]; -extern u8 gUnk_081126E4[4]; -extern void (*gUnk_081126E8[])(Entity*); -extern Dialog gUnk_081126F0[0x10]; -extern void (*gUnk_08112BF0[])(Entity*, ScriptExecutionContext*); -extern u16 gUnk_08112C40[5]; -extern u16 gUnk_08112C4A[3]; -extern u16 gUnk_08112C50[6]; -extern u16 gUnk_08112C5C[2]; -extern u16 gUnk_08112C60[4]; +static const u8 gUnk_081125F4[][0x10][2] = { + { + { 0x24, 0x1a }, + { 0x25, 0x1a }, + { 0x26, 0x1a }, + { 0x27, 0x9b }, + { 0x28, 0x9b }, + { 0x29, 0x9b }, + { 0x2a, 0x9b }, + { 0x2b, 0x98 }, + { 0x1c, 0x98 }, + { 0x1d, 0x98 }, + { 0x1e, 0x99 }, + { 0x1f, 0x99 }, + { 0x20, 0x99 }, + { 0x21, 0x99 }, + { 0x22, 0x1a }, + { 0x23, 0x1a }, + }, + { + { 0x24, 0x9a }, + { 0x25, 0x9a }, + { 0x26, 0x1b }, + { 0x27, 0x1b }, + { 0x28, 0x1b }, + { 0x29, 0x1b }, + { 0x2a, 0x1b }, + { 0x2b, 0x98 }, + { 0x1c, 0x98 }, + { 0x1d, 0x98 }, + { 0x1e, 0x98 }, + { 0x1f, 0x99 }, + { 0x20, 0x99 }, + { 0x21, 0x99 }, + { 0x22, 0x9a }, + { 0x23, 0x9a }, + }, + { + { 0x24, 0x9a }, + { 0x25, 0x9a }, + { 0x26, 0x9b }, + { 0x27, 0x9b }, + { 0x28, 0x9b }, + { 0x29, 0x9b }, + { 0x2a, 0x18 }, + { 0x2b, 0x18 }, + { 0x1c, 0x18 }, + { 0x1d, 0x18 }, + { 0x1e, 0x18 }, + { 0x1f, 0x99 }, + { 0x20, 0x99 }, + { 0x21, 0x99 }, + { 0x22, 0x99 }, + { 0x23, 0x9a }, + }, + { + { 0x24, 0x9a }, + { 0x25, 0x9a }, + { 0x26, 0x9a }, + { 0x27, 0x9b }, + { 0x28, 0x9b }, + { 0x29, 0x9b }, + { 0x2a, 0x98 }, + { 0x2b, 0x98 }, + { 0x1c, 0x98 }, + { 0x1d, 0x98 }, + { 0x1e, 0x19 }, + { 0x1f, 0x19 }, + { 0x20, 0x19 }, + { 0x21, 0x19 }, + { 0x22, 0x19 }, + { 0x23, 0x9a }, + }, +}; +static const SpriteLoadData gUnk_08112674[][4] = { + { + { 0xea, 0x1d, 0x4 }, + { 0x20ea, 0x1d, 0x4 }, + { 0x0, 0x0, 0x0 }, + { 0x0, 0x0, 0x0 }, + }, + { + { 0xea, 0x1d, 0x4 }, + { 0x20ea, 0x1d, 0x4 }, + { 0x0, 0x0, 0x0 }, + { 0x0, 0x0, 0x0 }, + }, + { + { 0xeb, 0x1d, 0x4 }, + { 0x20eb, 0x1d, 0x4 }, + { 0x0, 0x0, 0x0 }, + { 0x0, 0x0, 0x0 }, + }, + { + { 0xec, 0x1d, 0x4 }, + { 0x20ec, 0x1d, 0x4 }, + { 0x0, 0x0, 0x0 }, + { 0x0, 0x0, 0x0 }, + }, + { + { 0xed, 0x1d, 0x4 }, + { 0x20ed, 0x1d, 0x4 }, + { 0x0, 0x0, 0x0 }, + { 0x0, 0x0, 0x0 }, + }, + { + { 0xee, 0x1d, 0x4 }, + { 0x20ee, 0x1d, 0x4 }, + { 0x0, 0x0, 0x0 }, + { 0x0, 0x0, 0x0 }, + }, +}; +static const u8 gUnk_081126D4[][4] = { + { 0x0, 0x8, 0x8, 0x10 }, + { 0xf8, 0xfe, 0x10, 0x8 }, + { 0x0, 0x8, 0x8, 0x10 }, + { 0x8, 0xfe, 0x10, 0x8 }, +}; +static const u8 gUnk_081126E4[4] = { 14, 13, 11, 7 }; void TownMinish(Entity* this) { + static void (*const scriptedActionFuncs[])(Entity*) = { + sub_0806ABFC, + sub_0806AC3C, + }; if ((this->flags & ENT_SCRIPTED) == 0) { - gUnk_081126E8[this->action](this); + scriptedActionFuncs[this->action](this); sub_0806ED78(this); } else { sub_0806ACC4(this); @@ -33,7 +151,7 @@ void TownMinish(Entity* this) { } void sub_0806ABFC(Entity* this) { - SpriteLoadData* SpriteLoadData = &gUnk_08112674[this->type * 4]; + const SpriteLoadData* SpriteLoadData = gUnk_08112674[this->type]; if (!LoadExtraSpriteData(this, SpriteLoadData)) { return; } @@ -81,7 +199,7 @@ void sub_0806ACC4(Entity* this) { u8 delay; switch (this->action) { case 0: - if (LoadExtraSpriteData(this, &gUnk_08112674[this->type * 4]) == 0) + if (LoadExtraSpriteData(this, gUnk_08112674[this->type]) == 0) return; this->action = 1; @@ -110,7 +228,7 @@ void sub_0806ACC4(Entity* this) { } if (this->type == 1) { u8 idx = gPlayerEntity.animationState >> 1; - sub_08078850(this, 1, gUnk_081126E4[idx], &gUnk_081126D4[idx]); + sub_08078850(this, 1, gUnk_081126E4[idx], gUnk_081126D4[idx]); } } break; @@ -181,7 +299,7 @@ void sub_0806AED8(Entity* this) { void sub_0806AEE4(Entity* this) { int index; - u8* idx3; + const u8* idx3; u8 tmp1, tmp2; if (this->timer) { @@ -195,7 +313,7 @@ void sub_0806AEE4(Entity* this) { index = state * 8; } - idx3 = gUnk_081125F4 + (this->animationState / 2) * 0x20 + (index >> 1) * 2; + idx3 = gUnk_081125F4[this->animationState / 2][index >> 1]; tmp1 = idx3[0]; tmp2 = idx3[1]; @@ -233,20 +351,188 @@ void sub_0806AFA0(Entity* this) { } } -void sub_0806AFBC(Entity* this) { +void sub_0806AFBC(Entity* this, ScriptExecutionContext* context) { + //! @bug sub_0806B004 uses context but ShowNPCDialogue doesn't pass it. + // In fact r1 contains sub_0806B004's address. + static const Dialog dialogs[][8] = { { { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B004 } }, + { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B004 } }, + { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B004 } }, + { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B004 } }, + { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B004 } }, + { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B004 } }, + { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B004 } }, + { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B004 } } }, + { { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B064 } }, + { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B064 } }, + { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B064 } }, + { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B064 } }, + { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B064 } }, + { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B064 } }, + { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B064 } }, + { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B064 } } }, + { { 0x46, 0x4, 4, 1, { 0x4b0a, 0x4b04 } }, + { 0x46, 0x4, 4, 1, { 0x4b0a, 0x4b04 } }, + { 0x46, 0x4, 4, 1, { 0x4b0a, 0x4b04 } }, + { 0x46, 0x4, 4, 1, { 0x4b0a, 0x4b04 } }, + { 0x46, 0x4, 4, 1, { 0x4b0a, 0x4b04 } }, + { 0x46, 0x4, 4, 1, { 0x4b0a, 0x4b04 } }, + { 0x46, 0x4, 4, 1, { 0x4b0a, 0x4b04 } }, + { 0x46, 0x4, 4, 1, { 0x4b0a, 0x4b04 } } }, + { { 0x46, 0x4, 4, 1, { 0x4b07, 0x4b01 } }, + { 0x46, 0x4, 4, 1, { 0x4b07, 0x4b01 } }, + { 0x46, 0x4, 4, 1, { 0x4b07, 0x4b01 } }, + { 0x46, 0x4, 4, 1, { 0x4b07, 0x4b01 } }, + { 0x46, 0x4, 4, 1, { 0x4b07, 0x4b01 } }, + { 0x46, 0x4, 4, 1, { 0x4b07, 0x4b01 } }, + { 0x46, 0x4, 4, 1, { 0x4b07, 0x4b01 } }, + { 0x46, 0x4, 4, 1, { 0x4b07, 0x4b01 } } }, + { { 0x46, 0x4, 4, 1, { 0x4b08, 0x4b02 } }, + { 0x46, 0x4, 4, 1, { 0x4b08, 0x4b02 } }, + { 0x46, 0x4, 4, 1, { 0x4b08, 0x4b02 } }, + { 0x46, 0x4, 4, 1, { 0x4b08, 0x4b02 } }, + { 0x46, 0x4, 4, 1, { 0x4b08, 0x4b02 } }, + { 0x46, 0x4, 4, 1, { 0x4b08, 0x4b02 } }, + { 0x46, 0x4, 4, 1, { 0x4b08, 0x4b02 } }, + { 0x46, 0x4, 4, 1, { 0x4b08, 0x4b02 } } }, + { { 0x0, 0x0, 1, 1, { 0x0, 0x4c05 } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4c05 } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4c05 } }, + { 0x46, 0x4, 4, 1, { 0x4c0a, 0x4c05 } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4c05 } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4c05 } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4c05 } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4c05 } } }, + { { 0x0, 0x0, 1, 1, { 0x0, 0x4c06 } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4c06 } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4c06 } }, + { 0x46, 0x4, 4, 1, { 0x4c0b, 0x4c06 } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4c06 } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4c06 } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4c06 } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4c06 } } }, + { { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B098 } }, + { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B098 } }, + { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B098 } }, + { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B098 } }, + { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B098 } }, + { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B098 } }, + { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B098 } }, + { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B098 } } }, + { { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B098 } }, + { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B098 } }, + { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B098 } }, + { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B098 } }, + { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B098 } }, + { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B098 } }, + { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B098 } }, + { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B098 } } }, + { { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B0E0 } }, + { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B0E0 } }, + { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B0E0 } }, + { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B0E0 } }, + { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B0E0 } }, + { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B0E0 } }, + { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B0E0 } }, + { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B0E0 } } }, + { { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B134 } }, + { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B134 } }, + { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B134 } }, + { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B134 } }, + { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B134 } }, + { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B134 } }, + { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B134 } }, + { 0x0, 0x0, 5, 0, { .func = (EntityActionPtr)sub_0806B134 } } }, + { { 0x0, 0x0, 1, 1, { 0x0, 0x4e2f } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4e2f } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4e2f } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4e2f } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4e30 } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4e31 } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4e32 } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4e33 } } }, + { { 0x0, 0x0, 3, 1, { 0x4f15, 0x4f14 } }, + { 0x0, 0x0, 3, 1, { 0x4f15, 0x4f14 } }, + { 0x0, 0x0, 3, 1, { 0x4f15, 0x4f14 } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4f22 } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4f2e } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4f3a } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4f3a } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4f3a } } }, + { { 0x1, 0x0, 3, 1, { 0x4f17, 0x4f16 } }, + { 0x1, 0x0, 3, 1, { 0x4f17, 0x4f16 } }, + { 0x1, 0x0, 3, 1, { 0x4f17, 0x4f16 } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4f23 } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4f2f } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4f3b } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4f3b } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4f3b } } }, + { { 0x0, 0x0, 1, 1, { 0x0, 0x4b0d } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4b0d } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4b0d } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4b0d } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4b11 } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4b11 } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4b15 } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4b15 } } }, + { { 0x0, 0x0, 1, 1, { 0x0, 0x4b0e } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4b0e } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4b0e } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4b0e } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4b12 } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4b12 } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4b16 } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4b16 } } }, + { { 0x0, 0x0, 1, 1, { 0x0, 0x4b0f } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4b0f } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4b0f } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4b0f } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4b13 } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4b13 } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4b17 } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4b17 } } }, + { { 0x0, 0x0, 1, 1, { 0x0, 0x4b10 } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4b10 } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4b10 } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4b10 } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4b14 } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4b14 } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4b18 } }, + { 0x0, 0x0, 1, 1, { 0x0, 0x4b18 } } }, + { { 0x0, 0x0, 3, 1, { 0x4e26, 0x4e25 } }, + { 0x0, 0x0, 3, 1, { 0x4e26, 0x4e25 } }, + { 0x0, 0x0, 3, 1, { 0x4e26, 0x4e25 } }, + { 0x0, 0x0, 3, 1, { 0x4e26, 0x4e25 } }, + { 0x0, 0x0, 3, 1, { 0x4e26, 0x4e25 } }, + { 0x0, 0x0, 3, 1, { 0x4e26, 0x4e25 } }, + { 0x0, 0x0, 3, 1, { 0x4e26, 0x4e25 } }, + { 0x0, 0x0, 3, 1, { 0x4e26, 0x4e25 } } }, + { { 0x9c, 0x1, 2, 1, { 0x4e28, 0x4e27 } }, + { 0x9c, 0x1, 2, 1, { 0x4e28, 0x4e27 } }, + { 0x9c, 0x1, 2, 1, { 0x4e28, 0x4e27 } }, + { 0x9c, 0x1, 2, 1, { 0x4e28, 0x4e27 } }, + { 0x9c, 0x1, 2, 1, { 0x4e28, 0x4e27 } }, + { 0x9c, 0x1, 2, 1, { 0x4e28, 0x4e27 } }, + { 0x9c, 0x1, 2, 1, { 0x4e28, 0x4e27 } }, + { 0x9c, 0x1, 2, 1, { 0x4e28, 0x4e27 } } } }; int idx = gSave.global_progress - 2; if (idx < 0) idx = 0; - ShowNPCDialogue(this, gUnk_081126F0 + this->type2 * 8 + idx); + ShowNPCDialogue(this, &dialogs[this->type2][idx]); } void sub_0806AFE8(Entity* this, ScriptExecutionContext* context) { + static void (*const typeFuncs[])(Entity*, ScriptExecutionContext*) = { + sub_0806B004, sub_0806B064, sub_0806AFBC, sub_0806AFBC, sub_0806AFBC, sub_0806AFBC, sub_0806AFBC, + sub_0806B098, sub_0806B098, sub_0806B0E0, sub_0806B134, sub_0806AFBC, sub_0806AFBC, sub_0806AFBC, + sub_0806AFBC, sub_0806AFBC, sub_0806AFBC, sub_0806AFBC, sub_0806AFBC, sub_0806AFBC, + }; context->condition = 0; - gUnk_08112BF0[this->type2](this, context); + typeFuncs[this->type2](this, context); } void sub_0806B004(Entity* this, ScriptExecutionContext* context) { + static const u16 messageIndices[5] = { 0x4a11, 0x4a01, 0x4a03, 0x4a05, 0x4a13 }; int idx = 0; if (CheckGlobalFlag(MIZUKAKI_START)) { @@ -266,10 +552,15 @@ void sub_0806B004(Entity* this, ScriptExecutionContext* context) { SetLocalFlag(MIZUKAKI_KOBITO); } } - MessageNoOverlap(gUnk_08112C40[idx], this); + MessageNoOverlap(messageIndices[idx], this); } -void sub_0806B064(Entity* this) { +void sub_0806B064(Entity* this, ScriptExecutionContext* context) { + static const u16 messageIndices[3] = { + 0x4a09, + 0x4a0b, + 0x4a0c, + }; int idx = 0; if (CheckGlobalFlag(MIZUKAKI_START)) { @@ -278,10 +569,14 @@ void sub_0806B064(Entity* this) { idx = 2; } } - MessageNoOverlap(gUnk_08112C4A[idx], this); + MessageNoOverlap(messageIndices[idx], this); } -void sub_0806B098(Entity* this) { +void sub_0806B098(Entity* this, ScriptExecutionContext* context) { + static const u16 messageIndices[][3] = { + { 0x4b1f, 0x4b20, 0x4b21 }, + { 0x4b22, 0x4b23, 0x4b24 }, + }; int idx = 2; if (GetInventoryValue(ITEM_FLIPPERS) == 0) { @@ -292,10 +587,11 @@ void sub_0806B098(Entity* this) { } } } - MessageNoOverlap(gUnk_08112C50[(this->type2 - 7) * 3 + idx], this); + MessageNoOverlap(messageIndices[this->type2 - 7][idx], this); } -void sub_0806B0E0(Entity* this) { +void sub_0806B0E0(Entity* this, ScriptExecutionContext* context) { + static const u16 gUnk_08112C5C[2] = { 0x4b25, 0x4b26 }; int idx = 0; if (sub_080B1AC8(0x38, 0xb8, 1) == 0x57 && sub_080B1AC8(0x48, 0xb8, 1) == 0x57 && @@ -306,7 +602,8 @@ void sub_0806B0E0(Entity* this) { MessageNoOverlap(gUnk_08112C5C[idx], this); } -void sub_0806B134(Entity* this) { +void sub_0806B134(Entity* this, ScriptExecutionContext* context) { + static const u16 gUnk_08112C60[4] = { 0x4d0b, 0x4d0c, 0x4d0d, 0x4d0e }; int idx; if (GetInventoryValue(ITEM_POWER_BRACELETS)) { @@ -327,7 +624,7 @@ void sub_0806B134(Entity* this) { void TownMinish_Fusion(Entity* this) { if (this->action == 0) { - if (LoadExtraSpriteData(this, &gUnk_08112674[this->type * 4])) { + if (LoadExtraSpriteData(this, gUnk_08112674[this->type])) { this->action++; this->spriteSettings.draw = 1; InitializeAnimation(this, 6);