diff --git a/asm/non_matching/objectB9/sub_080A1270.inc b/asm/non_matching/objectB9/sub_080A1270.inc new file mode 100644 index 00000000..5079781b --- /dev/null +++ b/asm/non_matching/objectB9/sub_080A1270.inc @@ -0,0 +1,144 @@ + .syntax unified + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + mov sb, r0 + movs r6, #0 + ldr r0, [r0, #0x64] + str r0, [sp, #4] + mov r4, sb + adds r4, #0x70 + ldr r0, _080A12F8 @ =gRoomControls + movs r2, #0xd8 + lsls r2, r2, #2 + adds r1, r2, #0 + ldrh r3, [r0, #6] + adds r1, r1, r3 + movs r7, #0xd4 + lsls r7, r7, #2 + adds r2, r7, #0 + ldrh r0, [r0, #8] + adds r2, r2, r0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + mov r8, r1 + lsls r2, r2, #0x10 + asrs r3, r2, #0x10 + movs r0, #9 + mov sl, r0 + movs r1, #1 + rsbs r1, r1, #0 + adds r5, r1, #0 +_080A12B2: + ldr r7, [sp, #4] + ldr r2, [r7] + movs r0, #0 + ldrsb r0, [r4, r0] + cmp r0, #0 + bne _080A1300 + ldr r0, [r2, #4] + cmp r0, #0 + beq _080A132C + cmp r2, #0 + beq _080A132C + movs r1, #0x2e + ldrsh r0, [r2, r1] + cmp r8, r0 + bgt _080A132E + movs r7, #0x32 + ldrsh r0, [r2, r7] + cmp r3, r0 + bgt _080A132E + ldrb r0, [r2, #0xa] + adds r0, #1 + strb r0, [r4] + movs r0, #1 + strb r0, [r2, #0xb] + adds r6, #1 + ldr r1, _080A12FC @ =CuccoMinigame_Sounds + ldrb r0, [r2, #0xa] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + str r3, [sp] + bl SoundReq + ldr r3, [sp] + b _080A132E + .align 2, 0 +_080A12F8: .4byte gRoomControls +_080A12FC: .4byte CuccoMinigame_Sounds +_080A1300: + cmp r0, #0 + ble _080A132E + adds r6, #1 + ldr r0, [r2, #4] + cmp r0, #0 + beq _080A132C + cmp r2, #0 + beq _080A132C + mov r1, r8 + adds r1, #4 + movs r7, #0x2e + ldrsh r0, [r2, r7] + cmp r1, r0 + ble _080A131E + strh r1, [r2, #0x2e] +_080A131E: + adds r1, r3, #4 + movs r7, #0x32 + ldrsh r0, [r2, r7] + cmp r1, r0 + ble _080A132E + strh r1, [r2, #0x32] + b _080A132E +_080A132C: + strb r5, [r4] +_080A132E: + movs r0, #1 + rsbs r0, r0, #0 + add sl, r0 + adds r4, #1 + ldr r1, [sp, #4] + adds r1, #4 + str r1, [sp, #4] + mov r2, sl + cmp r2, #0 + bge _080A12B2 + mov r0, sb + adds r0, #0x6a + strh r6, [r0] + ldr r0, _080A136C @ =gPlayerState + adds r0, #0x27 + movs r1, #0xff + strb r1, [r0] + mov r1, sb + adds r1, #0x68 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bgt _080A1370 + movs r0, #0xe2 + bl SoundReq + bl sub_08050384 + b _080A1376 + .align 2, 0 +_080A136C: .4byte gPlayerState +_080A1370: + ldr r1, _080A1384 @ =gActiveScriptInfo + movs r0, #0 + strb r0, [r1, #6] +_080A1376: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + _080A1384: .4byte gActiveScriptInfo + .syntax divided diff --git a/asm/object/object96.s b/asm/object/object96.s deleted file mode 100644 index 62c8674d..00000000 --- a/asm/object/object96.s +++ /dev/null @@ -1,288 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start Object96 -Object96: @ 0x0809D784 - push {lr} - ldr r1, _0809D7A0 @ =gUnk_081240B0 - ldrb r3, [r0, #0xc] - lsls r3, r3, #2 - adds r3, r3, r1 - ldrb r1, [r0, #0xa] - lsls r1, r1, #5 - ldr r2, _0809D7A4 @ =gUnk_08123FB0 - adds r1, r1, r2 - ldr r2, [r3] - bl _call_via_r2 - pop {pc} - .align 2, 0 -_0809D7A0: .4byte gUnk_081240B0 -_0809D7A4: .4byte gUnk_08123FB0 - - thumb_func_start sub_0809D7A8 -sub_0809D7A8: @ 0x0809D7A8 - push {r4, r5, lr} - adds r5, r0, #0 - ldrb r0, [r5, #0xc] - adds r0, #1 - movs r4, #0 - strb r0, [r5, #0xc] - adds r2, r5, #0 - adds r2, #0x38 - movs r0, #2 - strb r0, [r2] - ldrb r2, [r5, #0x19] - movs r0, #0x3f - ands r0, r2 - movs r2, #0x40 - orrs r0, r2 - strb r0, [r5, #0x19] - ldr r0, [r1, #0x10] - str r0, [r5, #0x20] - ldrb r3, [r1, #0xf] - strb r3, [r5, #0x15] - ldrh r0, [r1, #0x18] - strh r0, [r5, #0x24] - ldrh r0, [r5, #0x32] - ldrh r2, [r1, #0x1a] - subs r0, r0, r2 - strh r0, [r5, #0x32] - str r4, [r5, #0x34] - ldrb r0, [r1, #0x1e] - strb r0, [r5, #0xe] - movs r0, #0x80 - ands r0, r3 - cmp r0, #0 - beq _0809D80C - ldrb r0, [r5, #0x15] - cmp r0, #0x81 - bne _0809D80C - bl Random - ldr r1, _0809D820 @ =gPlayerEntity - ldrb r1, [r1, #0x14] - lsls r1, r1, #2 - movs r2, #3 - ands r0, r2 - adds r1, r1, r0 - subs r1, #2 - movs r0, #0x1f - ands r1, r0 - movs r0, #0x10 - eors r1, r0 - strb r1, [r5, #0x15] -_0809D80C: - adds r0, r5, #0 - bl UpdateSpriteForCollisionLayer - ldrb r4, [r5, #0xa] - adds r0, r5, #0 - bl sub_08080CB4 - strb r4, [r5, #0xa] - pop {r4, r5, pc} - .align 2, 0 -_0809D820: .4byte gPlayerEntity - - thumb_func_start sub_0809D824 -sub_0809D824: @ 0x0809D824 - push {r4, r5, r6, lr} - adds r5, r0, #0 - adds r6, r1, #0 - movs r0, #1 - ldr r2, [r6, #4] - cmp r2, #0 - beq _0809D838 - adds r0, r5, #0 - bl _call_via_r2 -_0809D838: - cmp r0, #0 - beq _0809D850 - ldrb r0, [r5, #0xc] - adds r0, #1 - strb r0, [r5, #0xc] - ldrh r1, [r6, #0x1a] - ldrh r2, [r5, #0x32] - adds r0, r1, r2 - strh r0, [r5, #0x32] - ldrh r0, [r5, #0x36] - subs r0, r0, r1 - strh r0, [r5, #0x36] -_0809D850: - ldrb r4, [r5, #0xa] - ldrb r0, [r6, #0xd] - strb r0, [r5, #0xa] - adds r0, r5, #0 - bl sub_08080CB4 - strb r4, [r5, #0xa] - pop {r4, r5, r6, pc} - - thumb_func_start sub_0809D860 -sub_0809D860: @ 0x0809D860 - push {r4, r5, r6, lr} - adds r5, r0, #0 - adds r6, r1, #0 - bl LinearMoveUpdate - ldr r1, [r6, #0x14] - adds r0, r5, #0 - bl sub_080044EC - cmp r0, #1 - bhi _0809D8B2 - ldrb r0, [r5, #0xe] - cmp r0, #0 - beq _0809D888 - subs r0, #1 - strb r0, [r5, #0xe] - ldr r0, [r6, #0x14] - lsls r0, r0, #3 - str r0, [r5, #0x20] - b _0809D8AC -_0809D888: - ldrb r0, [r5, #0xc] - adds r0, #1 - strb r0, [r5, #0xc] - ldr r0, _0809D8C4 @ =gPlayerEntity - adds r0, #0x38 - ldrb r1, [r0] - adds r0, r5, #0 - adds r0, #0x38 - strb r1, [r0] - adds r0, r5, #0 - bl UpdateSpriteForCollisionLayer - ldr r1, [r6] - cmp r1, #0 - beq _0809D8AC - adds r0, r5, #0 - bl _call_via_r1 -_0809D8AC: - movs r0, #0x6e - bl SoundReq -_0809D8B2: - ldrb r4, [r5, #0xa] - ldrb r0, [r6, #0xd] - strb r0, [r5, #0xa] - adds r0, r5, #0 - bl sub_08080CB4 - strb r4, [r5, #0xa] - pop {r4, r5, r6, pc} - .align 2, 0 -_0809D8C4: .4byte gPlayerEntity - - thumb_func_start sub_0809D8C8 -sub_0809D8C8: @ 0x0809D8C8 - push {r4, r5, r6, lr} - adds r5, r0, #0 - adds r6, r1, #0 - ldr r0, _0809D8E4 @ =gPlayerState - ldr r0, [r0, #0x30] - movs r1, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0809D8E8 - adds r0, r5, #0 - bl sub_0800445C - b _0809D90A - .align 2, 0 -_0809D8E4: .4byte gPlayerState -_0809D8E8: - adds r0, r5, #0 - bl IsCollidingPlayer - cmp r0, #0 - beq _0809D90A - ldrb r0, [r6, #0xd] - ldrb r1, [r5, #0xb] - movs r2, #0 - bl CreateItemEntity - ldrh r0, [r6, #0x1c] - cmp r0, #0 - beq _0809D906 - bl SetFlag -_0809D906: - bl DeleteThisEntity -_0809D90A: - ldrb r4, [r5, #0xa] - ldrb r0, [r6, #0xd] - strb r0, [r5, #0xa] - adds r0, r5, #0 - bl sub_08080CB4 - strb r4, [r5, #0xa] - pop {r4, r5, r6, pc} - .align 2, 0 - - thumb_func_start sub_0809D91C -sub_0809D91C: @ 0x0809D91C - push {r4, lr} - adds r4, r0, #0 - movs r1, #0x11 - movs r2, #0 - bl CreateFx - adds r1, r0, #0 - cmp r1, #0 - beq _0809D934 - adds r0, r4, #0 - bl SortEntityBelow -_0809D934: - movs r0, #0x72 - bl SoundReq - pop {r4, pc} - - thumb_func_start sub_0809D93C -sub_0809D93C: @ 0x0809D93C - push {r4, r5, lr} - adds r4, r0, #0 - adds r3, r1, #0 - ldr r2, _0809D9A0 @ =gPlayerEntity - ldrb r0, [r2, #0xc] - cmp r0, #6 - bne _0809D9A4 - ldrb r0, [r3, #0xc] - ldrb r1, [r2, #0x14] - asrs r0, r1 - movs r1, #1 - ands r0, r1 - cmp r0, #0 - beq _0809D9A4 - movs r5, #0x2e - ldrsh r0, [r2, r5] - movs r5, #0x2e - ldrsh r1, [r4, r5] - subs r0, r0, r1 - movs r1, #8 - ldrsb r1, [r3, r1] - adds r0, r0, r1 - ldrb r1, [r3, #0xa] - adds r0, r0, r1 - lsls r1, r1, #1 - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - cmp r1, r0 - ble _0809D9A4 - movs r0, #0x32 - ldrsh r2, [r2, r0] - movs r1, #0x32 - ldrsh r0, [r4, r1] - movs r4, #0x1a - ldrsh r1, [r3, r4] - adds r0, r0, r1 - subs r2, r2, r0 - movs r0, #9 - ldrsb r0, [r3, r0] - adds r2, r2, r0 - ldrb r1, [r3, #0xb] - adds r0, r2, r1 - lsls r1, r1, #1 - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - cmp r1, r0 - ble _0809D9A4 - movs r0, #1 - b _0809D9A6 - .align 2, 0 -_0809D9A0: .4byte gPlayerEntity -_0809D9A4: - movs r0, #0 -_0809D9A6: - pop {r4, r5, pc} diff --git a/asm/object/object98.s b/asm/object/object98.s deleted file mode 100644 index 97ecdf3b..00000000 --- a/asm/object/object98.s +++ /dev/null @@ -1,128 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start Object98 -Object98: @ 0x0809E348 - push {lr} - ldr r2, _0809E35C @ =gUnk_0812418C - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_0809E35C: .4byte gUnk_0812418C - - thumb_func_start sub_0809E360 -sub_0809E360: @ 0x0809E360 - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - adds r4, r0, #0 - ldrb r0, [r4, #0xe] - cmp r0, #8 - bls _0809E372 - movs r0, #8 - strb r0, [r4, #0xe] -_0809E372: - ldrb r2, [r4, #0xe] - movs r0, #0x48 - subs r0, r0, r2 - ldr r1, _0809E3E0 @ =gEntCount - ldrb r1, [r1] - cmp r0, r1 - ble _0809E3D8 - movs r5, #0 - adds r7, r4, #0 - adds r7, #0x7e - movs r0, #0x76 - adds r0, r0, r4 - mov r8, r0 - cmp r5, r2 - bhs _0809E3A6 - movs r6, #0xe -_0809E392: - movs r0, #0x17 - bl CreateProjectile - strb r6, [r0, #0xe] - str r4, [r0, #0x50] - adds r6, #0xc - adds r5, #1 - ldrb r2, [r4, #0xe] - cmp r5, r2 - blo _0809E392 -_0809E3A6: - movs r0, #1 - strb r0, [r4, #0xc] - ldrb r0, [r7] - lsls r1, r0, #8 - mov r2, r8 - strh r1, [r2] - lsls r0, r0, #6 - strb r0, [r4, #0x14] - adds r0, r4, #0 - movs r1, #0 - bl SetDefaultPriority - ldrb r0, [r4, #0xa] - cmp r0, #0 - beq _0809E3D8 - bl GetCurrentRoomProperty - str r0, [r4, #0x54] - adds r1, r4, #0 - adds r1, #0x54 - adds r2, r4, #0 - adds r2, #0x74 - adds r0, r4, #0 - bl sub_080A2CC0 -_0809E3D8: - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_0809E3E0: .4byte gEntCount - - thumb_func_start sub_0809E3E4 -sub_0809E3E4: @ 0x0809E3E4 - push {r4, lr} - adds r4, r0, #0 - adds r2, r4, #0 - adds r2, #0x76 - ldrb r0, [r4, #0xb] - ldrh r1, [r2] - adds r1, r1, r0 - strh r1, [r2] - lsrs r1, r1, #2 - strb r1, [r4, #0x14] - ldrb r0, [r4, #0xa] - cmp r0, #0 - beq _0809E428 - ldrb r1, [r4, #0x15] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - bne _0809E40E - adds r0, r4, #0 - bl LinearMoveUpdate -_0809E40E: - adds r2, r4, #0 - adds r2, #0x74 - ldrh r0, [r2] - subs r0, #1 - strh r0, [r2] - lsls r0, r0, #0x10 - cmp r0, #0 - bne _0809E428 - adds r1, r4, #0 - adds r1, #0x54 - adds r0, r4, #0 - bl sub_080A2CC0 -_0809E428: - pop {r4, pc} - .align 2, 0 diff --git a/asm/object/object99.s b/asm/object/object99.s deleted file mode 100644 index b3b78e2f..00000000 --- a/asm/object/object99.s +++ /dev/null @@ -1,117 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start Object99 -Object99: @ 0x0809E42C - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - adds r4, r0, #0 - ldr r6, [r4, #0x50] - ldr r0, [r6, #4] - cmp r0, #0 - bne _0809E444 - bl DeleteThisEntity -_0809E444: - ldrb r0, [r4, #0xc] - movs r1, #0x76 - adds r1, r1, r4 - mov r8, r1 - adds r7, r4, #0 - adds r7, #0x62 - movs r2, #0x74 - adds r2, r2, r4 - mov sb, r2 - adds r5, r4, #0 - adds r5, #0x63 - movs r1, #0x75 - adds r1, r1, r4 - mov sl, r1 - cmp r0, #0 - bne _0809E482 - movs r0, #1 - strb r0, [r4, #0xc] - ldrb r0, [r6, #0x14] - mov r2, r8 - strb r0, [r2] - ldrb r0, [r7] - mov r1, sb - strb r0, [r1] - ldrb r0, [r5] - mov r2, sl - strb r0, [r2] - ldrb r1, [r4, #0x14] - adds r0, r4, #0 - bl InitializeAnimation -_0809E482: - ldrb r0, [r6, #0x14] - mov r1, r8 - ldrb r1, [r1] - cmp r0, r1 - beq _0809E490 - bl DeleteThisEntity -_0809E490: - ldrb r1, [r6, #0x18] - lsls r1, r1, #0x1e - lsrs r1, r1, #0x1e - ldrb r2, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, #0x18] - adds r0, r6, #0 - adds r1, r4, #0 - bl CopyPositionAndSpriteOffset - mov r2, sb - ldrb r0, [r2] - ldrb r1, [r7] - adds r0, r0, r1 - strb r0, [r7] - mov r2, sl - ldrb r0, [r2] - ldrb r1, [r5] - adds r0, r0, r1 - strb r0, [r5] - ldrb r0, [r4, #0x14] - cmp r0, #2 - beq _0809E4D0 - ldrh r0, [r4, #0x32] - adds r0, #1 - strh r0, [r4, #0x32] - ldrb r0, [r5] - subs r0, #1 - b _0809E4DA -_0809E4D0: - ldrh r0, [r4, #0x32] - subs r0, #1 - strh r0, [r4, #0x32] - ldrb r0, [r5] - adds r0, #1 -_0809E4DA: - strb r0, [r5] - adds r0, r4, #0 - bl GetNextFrame - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0809E4F4 - bl DeleteThisEntity -_0809E4F4: - pop {r3, r4, r5} - mov r8, r3 - mov sb, r4 - mov sl, r5 - pop {r4, r5, r6, r7, pc} - .align 2, 0 diff --git a/asm/object/objectA6.s b/asm/object/objectA6.s deleted file mode 100644 index 6a4dc1f4..00000000 --- a/asm/object/objectA6.s +++ /dev/null @@ -1,95 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start ObjectA6 -ObjectA6: @ 0x0809F908 - push {lr} - ldr r2, _0809F91C @ =gUnk_08124800 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_0809F91C: .4byte gUnk_08124800 - - thumb_func_start sub_0809F920 -sub_0809F920: @ 0x0809F920 - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x86 - ldrh r0, [r0] - bl CheckFlags - cmp r0, #0 - beq _0809F934 - bl DeleteThisEntity -_0809F934: - movs r2, #1 - strb r2, [r4, #0xc] - ldrb r1, [r4, #0x10] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r4, #0x10] - adds r1, r4, #0 - adds r1, #0x3c - movs r0, #7 - strb r0, [r1] - adds r1, #4 - movs r0, #0x48 - strb r0, [r1] - adds r0, r4, #0 - adds r0, #0x3f - strb r2, [r0] - subs r1, #5 - movs r0, #2 - strb r0, [r1] - ldr r0, _0809F960 @ =gHitbox_0 - str r0, [r4, #0x48] - pop {r4, pc} - .align 2, 0 -_0809F960: .4byte gHitbox_0 - - thumb_func_start sub_0809F964 -sub_0809F964: @ 0x0809F964 - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x41 - ldrb r0, [r0] - cmp r0, #0xa1 - bne _0809F9A8 - adds r0, r4, #0 - movs r1, #0x4e - movs r2, #0 - bl CreateFx - adds r2, r0, #0 - cmp r2, #0 - beq _0809F99A - adds r3, r2, #0 - adds r3, #0x29 - ldrb r1, [r3] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #3 - orrs r0, r1 - strb r0, [r3] - adds r1, r2, #0 - adds r1, #0x63 - movs r0, #0xfb - strb r0, [r1] -_0809F99A: - adds r0, r4, #0 - adds r0, #0x86 - ldrh r0, [r0] - bl SetFlag - bl DeleteThisEntity -_0809F9A8: - pop {r4, pc} - .align 2, 0 diff --git a/asm/object/objectA9.s b/asm/object/objectA9.s deleted file mode 100644 index 5a290a2d..00000000 --- a/asm/object/objectA9.s +++ /dev/null @@ -1,79 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start ObjectA9 -ObjectA9: @ 0x0809FEE0 - push {lr} - ldr r2, _0809FEF4 @ =gUnk_08124850 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_0809FEF4: .4byte gUnk_08124850 - - thumb_func_start sub_0809FEF8 -sub_0809FEF8: @ 0x0809FEF8 - push {r4, lr} - adds r4, r0, #0 - movs r0, #1 - strb r0, [r4, #0xc] - ldr r1, _0809FF20 @ =gUnk_0812485C - ldrb r0, [r4, #0xa] - adds r0, r0, r1 - ldrb r1, [r0] - adds r0, r4, #0 - bl InitializeAnimation - ldr r1, _0809FF24 @ =gUnk_08124860 - ldrb r0, [r4, #0xa] - lsls r0, r0, #1 - adds r0, r0, r1 - ldrh r0, [r0] - bl SoundReq - pop {r4, pc} - .align 2, 0 -_0809FF20: .4byte gUnk_0812485C -_0809FF24: .4byte gUnk_08124860 - - thumb_func_start sub_0809FF28 -sub_0809FF28: @ 0x0809FF28 - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0809FF64 - movs r0, #2 - strb r0, [r4, #0xc] - ldr r1, [r4, #0x50] - ldrb r0, [r4, #0xe] - strb r0, [r1, #0x10] - ldrb r2, [r4, #0xf] - movs r0, #3 - ands r2, r0 - ldrb r3, [r1, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r3 - orrs r0, r2 - strb r0, [r1, #0x18] - adds r1, #0x6d - ldrb r2, [r1] - movs r0, #0xef - ands r0, r2 - strb r0, [r1] -_0809FF64: - pop {r4, pc} - .align 2, 0 diff --git a/asm/object/objectAB.s b/asm/object/objectAB.s deleted file mode 100644 index cbecc43b..00000000 --- a/asm/object/objectAB.s +++ /dev/null @@ -1,124 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start ObjectAB -ObjectAB: @ 0x080A00E0 - push {lr} - ldr r2, _080A00F4 @ =gUnk_0812486C - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_080A00F4: .4byte gUnk_0812486C - - thumb_func_start sub_080A00F8 -sub_080A00F8: @ 0x080A00F8 - push {lr} - ldrb r1, [r0, #0xc] - adds r1, #1 - movs r3, #0 - strb r1, [r0, #0xc] - adds r2, r0, #0 - adds r2, #0x38 - movs r1, #1 - strb r1, [r2] - ldrb r1, [r0, #0x19] - movs r2, #0xc0 - orrs r1, r2 - strb r1, [r0, #0x19] - movs r1, #0x29 - adds r1, r1, r0 - mov ip, r1 - ldrb r1, [r1] - movs r2, #7 - orrs r1, r2 - mov r2, ip - strb r1, [r2] - strb r3, [r0, #0xd] - movs r1, #0 - bl InitializeAnimation - pop {pc} - - thumb_func_start sub_080A012C -sub_080A012C: @ 0x080A012C - push {r4, lr} - adds r4, r0, #0 - movs r0, #0 - bl CheckRoomFlag - cmp r0, #0 - beq _080A0154 - adds r0, r4, #0 - bl GetNextFrame - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080A0154 - ldrb r0, [r4, #0xc] - adds r0, #1 - strb r0, [r4, #0xc] -_080A0154: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080A0158 -sub_080A0158: @ 0x080A0158 - push {r4, lr} - adds r4, r0, #0 - movs r0, #1 - bl CheckRoomFlag - cmp r0, #0 - beq _080A018A - adds r0, r4, #0 - bl sub_080A0190 - adds r0, r4, #0 - movs r1, #0x1e - bl RequestPriorityDuration - ldr r1, _080A018C @ =gPlayerEntity - adds r0, r4, #0 - movs r2, #0x10 - movs r3, #0x10 - bl EntityInRectRadius - cmp r0, #0 - beq _080A018A - movs r0, #0x37 - bl sub_0805B390 -_080A018A: - pop {r4, pc} - .align 2, 0 -_080A018C: .4byte gPlayerEntity - - thumb_func_start sub_080A0190 -sub_080A0190: @ 0x080A0190 - push {r4, lr} - movs r4, #0 - movs r1, #1 - strb r1, [r0, #0xd] - ldr r1, _080A01B8 @ =gPlayerEntity - bl CopyPosition - ldr r2, _080A01BC @ =gPlayerState - movs r0, #3 - strb r0, [r2, #0xc] - adds r0, r2, #0 - adds r0, #0x38 - strb r4, [r0] - ldr r0, [r2, #0x30] - movs r1, #0x80 - lsls r1, r1, #8 - orrs r0, r1 - str r0, [r2, #0x30] - pop {r4, pc} - .align 2, 0 -_080A01B8: .4byte gPlayerEntity -_080A01BC: .4byte gPlayerState diff --git a/asm/object/objectAD.s b/asm/object/objectAD.s deleted file mode 100644 index fac47835..00000000 --- a/asm/object/objectAD.s +++ /dev/null @@ -1,117 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start ObjectAD -ObjectAD: @ 0x080A048C - push {lr} - ldr r2, _080A04A0 @ =gUnk_081248BC - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_080A04A0: .4byte gUnk_081248BC - - thumb_func_start sub_080A04A4 -sub_080A04A4: @ 0x080A04A4 - push {r4, lr} - movs r3, #0 - movs r1, #1 - strb r1, [r0, #0xc] - movs r4, #4 - movs r1, #4 - strb r1, [r0, #0x1e] - strb r3, [r0, #0xe] - ldrb r1, [r0, #0x19] - movs r2, #0xc0 - orrs r1, r2 - strb r1, [r0, #0x19] - movs r1, #0x29 - adds r1, r1, r0 - mov ip, r1 - ldrb r1, [r1] - movs r2, #7 - orrs r1, r2 - mov r2, ip - strb r1, [r2] - str r3, [r0, #0x34] - ldrb r2, [r0, #0x19] - movs r1, #0xd - rsbs r1, r1, #0 - ands r1, r2 - orrs r1, r4 - strb r1, [r0, #0x19] - bl sub_080A04E8 - pop {r4, pc} - - thumb_func_start sub_080A04E0 -sub_080A04E0: @ 0x080A04E0 - push {lr} - bl sub_080A04E8 - pop {pc} - - thumb_func_start sub_080A04E8 -sub_080A04E8: @ 0x080A04E8 - push {r4, r5, lr} - adds r5, r0, #0 - ldr r0, [r5, #0x50] - movs r1, #0x36 - ldrsh r0, [r0, r1] - cmp r0, #0 - bge _080A04F8 - rsbs r0, r0, #0 -_080A04F8: - movs r1, #0x80 - lsls r1, r1, #1 - adds r4, r0, r1 - adds r0, r5, #0 - adds r1, r4, #0 - adds r2, r4, #0 - movs r3, #0 - bl SetAffineInfo - movs r1, #0xe0 - lsls r1, r1, #1 - subs r1, r1, r4 - lsls r0, r1, #2 - adds r0, r0, r1 - lsls r0, r0, #1 - adds r1, r4, #0 - bl __divsi3 - adds r4, r0, #0 - ldr r0, [r5, #0x50] - ldrb r0, [r0, #0xa] - cmp r0, #0x41 - bne _080A0538 - lsls r3, r4, #1 - cmp r3, #0xc - bls _080A052E - movs r3, #0xc -_080A052E: - movs r0, #0x10 - subs r0, r0, r4 - lsls r4, r0, #8 - orrs r4, r3 - b _080A0540 -_080A0538: - movs r0, #0x10 - subs r0, r0, r4 - lsls r0, r0, #8 - orrs r4, r0 -_080A0540: - ldr r0, _080A054C @ =0x0000FFFF - ands r4, r0 - ldr r0, _080A0550 @ =gScreen - adds r0, #0x68 - strh r4, [r0] - pop {r4, r5, pc} - .align 2, 0 -_080A054C: .4byte 0x0000FFFF -_080A0550: .4byte gScreen diff --git a/asm/object/objectB4.s b/asm/object/objectB4.s deleted file mode 100644 index 27adbace..00000000 --- a/asm/object/objectB4.s +++ /dev/null @@ -1,352 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start ObjectB4 -ObjectB4: @ 0x080A0B90 - push {lr} - ldr r2, _080A0BA4 @ =gUnk_08124B20 - ldrb r1, [r0, #0xa] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_080A0BA4: .4byte gUnk_08124B20 - - thumb_func_start sub_080A0BA8 -sub_080A0BA8: @ 0x080A0BA8 - push {r4, r5, lr} - adds r5, r0, #0 - ldrb r2, [r5, #0xc] - cmp r2, #0 - beq _080A0BB8 - cmp r2, #1 - beq _080A0C08 - b _080A0CE0 -_080A0BB8: - movs r0, #1 - strb r0, [r5, #0xc] - ldrb r1, [r5, #0x18] - subs r0, #5 - ands r0, r1 - movs r1, #2 - orrs r0, r1 - strb r0, [r5, #0x18] - movs r0, #9 - strb r0, [r5, #0x1e] - movs r0, #8 - strb r0, [r5, #0xe] - strb r2, [r5, #0xf] - ldrb r1, [r5, #0x19] - movs r2, #0x3f - adds r0, r2, #0 - ands r0, r1 - movs r3, #0x40 - orrs r0, r3 - strb r0, [r5, #0x19] - adds r4, r5, #0 - adds r4, #0x29 - ldrb r1, [r4] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #4 - orrs r0, r1 - strb r0, [r4] - ldrb r0, [r5, #0x1b] - ands r2, r0 - orrs r2, r3 - strb r2, [r5, #0x1b] - adds r0, r5, #0 - movs r1, #0xbf - movs r2, #0x48 - movs r3, #0x1e - bl sub_0806FB00 - b _080A0CE0 -_080A0C08: - ldrb r0, [r5, #0xf] - cmp r0, #6 - bhi _080A0C46 - ldrb r0, [r5, #0xe] - subs r0, #1 - strb r0, [r5, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080A0C46 - strb r2, [r5, #0xe] - ldrb r2, [r5, #0xf] - movs r0, #0xb4 - movs r1, #1 - bl CreateObject - adds r4, r0, #0 - cmp r4, #0 - beq _080A0C40 - adds r0, r5, #0 - adds r1, r4, #0 - bl CopyPosition - movs r0, #0x68 - strh r0, [r4, #0x32] - adds r0, r5, #0 - adds r1, r4, #0 - bl SortEntityBelow -_080A0C40: - ldrb r0, [r5, #0xf] - adds r0, #1 - strb r0, [r5, #0xf] -_080A0C46: - adds r0, r5, #0 - bl sub_0806FB38 - cmp r0, #0 - bne _080A0C58 - ldr r0, _080A0CE4 @ =gMenu - ldrb r0, [r0, #5] - cmp r0, #1 - bls _080A0CE0 -_080A0C58: - movs r0, #0xbf - strh r0, [r5, #0x2e] - movs r0, #0x48 - strh r0, [r5, #0x32] - movs r0, #0xa - strb r0, [r5, #0x1e] - movs r0, #2 - strb r0, [r5, #0xc] - ldrb r0, [r5, #0xf] - cmp r0, #6 - bhi _080A0CA0 -_080A0C6E: - ldrb r2, [r5, #0xf] - movs r0, #0xb4 - movs r1, #1 - bl CreateObject - adds r4, r0, #0 - cmp r4, #0 - beq _080A0C92 - adds r0, r5, #0 - adds r1, r4, #0 - bl CopyPosition - movs r0, #0x68 - strh r0, [r4, #0x32] - adds r0, r5, #0 - adds r1, r4, #0 - bl SortEntityBelow -_080A0C92: - ldrb r0, [r5, #0xf] - adds r0, #1 - strb r0, [r5, #0xf] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #6 - bls _080A0C6E -_080A0CA0: - movs r0, #0xb4 - movs r1, #2 - movs r2, #0 - bl CreateObject - adds r4, r0, #0 - cmp r4, #0 - beq _080A0CC0 - movs r0, #0xc4 - strh r0, [r4, #0x2e] - movs r0, #0x2c - strh r0, [r4, #0x32] - adds r0, r5, #0 - adds r1, r4, #0 - bl SortEntityAbove -_080A0CC0: - movs r0, #0xb4 - movs r1, #3 - movs r2, #0 - bl CreateObject - adds r4, r0, #0 - cmp r4, #0 - beq _080A0CE0 - movs r0, #0xb4 - strh r0, [r4, #0x2e] - movs r0, #0x19 - strh r0, [r4, #0x32] - adds r0, r5, #0 - adds r1, r4, #0 - bl SortEntityAbove -_080A0CE0: - pop {r4, r5, pc} - .align 2, 0 -_080A0CE4: .4byte gMenu - - thumb_func_start sub_080A0CE8 -sub_080A0CE8: @ 0x080A0CE8 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #0 - beq _080A0CF8 - cmp r0, #1 - beq _080A0D28 - b _080A0D66 -_080A0CF8: - movs r0, #1 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x18] - subs r0, #5 - ands r0, r1 - movs r1, #2 - orrs r0, r1 - strb r0, [r4, #0x18] - ldrb r0, [r4, #0xb] - adds r0, #2 - strb r0, [r4, #0x1e] - ldr r1, _080A0D24 @ =gUnk_08124B10 - ldrb r0, [r4, #0xb] - lsls r0, r0, #1 - adds r0, r0, r1 - ldrh r1, [r0] - adds r0, r4, #0 - movs r2, #0x68 - movs r3, #0x14 - bl sub_0806FB00 - b _080A0D66 - .align 2, 0 -_080A0D24: .4byte gUnk_08124B10 -_080A0D28: - adds r0, r4, #0 - bl sub_0806FB38 - cmp r0, #0 - bne _080A0D3A - ldr r0, _080A0D68 @ =gMenu - ldrb r0, [r0, #5] - cmp r0, #1 - bls _080A0D66 -_080A0D3A: - ldr r1, _080A0D6C @ =gUnk_08124B10 - ldrb r0, [r4, #0xb] - lsls r0, r0, #1 - adds r0, r0, r1 - ldrh r0, [r0] - strh r0, [r4, #0x2e] - movs r0, #0x68 - strh r0, [r4, #0x32] - ldrb r1, [r4, #0xb] - movs r0, #7 - subs r1, r0, r1 - adds r3, r4, #0 - adds r3, #0x29 - ands r1, r0 - ldrb r2, [r3] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - movs r0, #2 - strb r0, [r4, #0xc] -_080A0D66: - pop {r4, pc} - .align 2, 0 -_080A0D68: .4byte gMenu -_080A0D6C: .4byte gUnk_08124B10 - - thumb_func_start sub_080A0D70 -sub_080A0D70: @ 0x080A0D70 - push {r4, r5, r6, lr} - adds r5, r0, #0 - ldrb r6, [r5, #0xc] - cmp r6, #0 - bne _080A0DC4 - movs r0, #1 - strb r0, [r5, #0xc] - ldrb r1, [r5, #0x18] - subs r0, #5 - ands r0, r1 - movs r1, #2 - orrs r0, r1 - strb r0, [r5, #0x18] - ldrb r2, [r5, #0x19] - movs r4, #0x3f - movs r1, #0x3f - adds r0, r1, #0 - ands r0, r2 - movs r3, #0x40 - orrs r0, r3 - strb r0, [r5, #0x19] - movs r0, #0x29 - adds r0, r0, r5 - mov ip, r0 - ldrb r2, [r0] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r2 - mov r2, ip - strb r0, [r2] - ldrb r0, [r5, #0x1b] - ands r1, r0 - orrs r1, r3 - strb r1, [r5, #0x1b] - movs r0, #0xb - strb r0, [r5, #0x1e] - bl Random - ands r0, r4 - adds r0, #0x40 - strb r0, [r5, #0xe] - strb r6, [r5, #0xf] -_080A0DC4: - ldrb r0, [r5, #0xe] - subs r0, #1 - strb r0, [r5, #0xe] - lsls r0, r0, #0x18 - lsrs r4, r0, #0x18 - cmp r4, #0 - bne _080A0E02 - movs r0, #4 - strb r0, [r5, #0xe] - ldr r2, _080A0E04 @ =gUnk_08124B30 - ldrb r0, [r5, #0xf] - adds r1, r0, #1 - strb r1, [r5, #0xf] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - adds r0, r0, r2 - ldrb r0, [r0] - adds r0, #2 - strb r0, [r5, #0x1e] - ldrb r0, [r5, #0xf] - adds r0, r0, r2 - ldrb r0, [r0] - cmp r0, #0xff - bne _080A0E02 - bl Random - movs r1, #0x3f - ands r0, r1 - adds r0, #0x40 - strb r0, [r5, #0xe] - strb r4, [r5, #0xf] -_080A0E02: - pop {r4, r5, r6, pc} - .align 2, 0 -_080A0E04: .4byte gUnk_08124B30 - - thumb_func_start sub_080A0E08 -sub_080A0E08: @ 0x080A0E08 - push {lr} - adds r2, r0, #0 - ldrb r0, [r2, #0xc] - cmp r0, #0 - bne _080A0E26 - movs r0, #1 - strb r0, [r2, #0xc] - ldrb r1, [r2, #0x18] - subs r0, #5 - ands r0, r1 - movs r1, #2 - orrs r0, r1 - strb r0, [r2, #0x18] - movs r0, #0xf - strb r0, [r2, #0x1e] -_080A0E26: - pop {pc} diff --git a/asm/object/objectB9.s b/asm/object/objectB9.s deleted file mode 100644 index 4741530f..00000000 --- a/asm/object/objectB9.s +++ /dev/null @@ -1,638 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start ObjectB9 -ObjectB9: @ 0x080A1204 - push {r4, r5, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - adds r5, r0, #0 - cmp r5, #0 - bne _080A1260 - adds r0, #1 - strb r0, [r4, #0xc] - bl sub_080A1514 - lsls r0, r0, #2 - ldr r1, _080A126C @ =gUnk_08124C20 - adds r0, r0, r1 - ldrh r2, [r0] - lsls r1, r2, #4 - subs r1, r1, r2 - lsls r1, r1, #2 - adds r2, r4, #0 - adds r2, #0x68 - strh r1, [r2] - adds r1, r4, #0 - adds r1, #0x6a - strh r5, [r1] - ldrh r1, [r0, #2] - adds r0, r4, #0 - adds r0, #0x6c - strh r1, [r0] - adds r1, r4, #0 - adds r1, #0x6e - movs r0, #1 - strh r0, [r1] - adds r0, r4, #0 - adds r0, #0x70 - movs r2, #0 - movs r1, #9 -_080A124A: - strb r2, [r0] - adds r0, #1 - subs r1, #1 - cmp r1, #0 - bge _080A124A - adds r0, r4, #0 - bl sub_0807DD64 - adds r0, r4, #0 - bl sub_0806EC20 -_080A1260: - adds r0, r4, #0 - movs r1, #0 - bl sub_0807DD94 - pop {r4, r5, pc} - .align 2, 0 -_080A126C: .4byte gUnk_08124C20 - - thumb_func_start sub_080A1270 -sub_080A1270: @ 0x080A1270 - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - sub sp, #8 - mov sb, r0 - movs r6, #0 - ldr r0, [r0, #0x64] - str r0, [sp, #4] - mov r4, sb - adds r4, #0x70 - ldr r0, _080A12F8 @ =gRoomControls - movs r2, #0xd8 - lsls r2, r2, #2 - adds r1, r2, #0 - ldrh r3, [r0, #6] - adds r1, r1, r3 - movs r7, #0xd4 - lsls r7, r7, #2 - adds r2, r7, #0 - ldrh r0, [r0, #8] - adds r2, r2, r0 - lsls r1, r1, #0x10 - asrs r1, r1, #0x10 - mov r8, r1 - lsls r2, r2, #0x10 - asrs r3, r2, #0x10 - movs r0, #9 - mov sl, r0 - movs r1, #1 - rsbs r1, r1, #0 - adds r5, r1, #0 -_080A12B2: - ldr r7, [sp, #4] - ldr r2, [r7] - movs r0, #0 - ldrsb r0, [r4, r0] - cmp r0, #0 - bne _080A1300 - ldr r0, [r2, #4] - cmp r0, #0 - beq _080A132C - cmp r2, #0 - beq _080A132C - movs r1, #0x2e - ldrsh r0, [r2, r1] - cmp r8, r0 - bgt _080A132E - movs r7, #0x32 - ldrsh r0, [r2, r7] - cmp r3, r0 - bgt _080A132E - ldrb r0, [r2, #0xa] - adds r0, #1 - strb r0, [r4] - movs r0, #1 - strb r0, [r2, #0xb] - adds r6, #1 - ldr r1, _080A12FC @ =gUnk_08124EC8 - ldrb r0, [r2, #0xa] - lsls r0, r0, #1 - adds r0, r0, r1 - ldrh r0, [r0] - str r3, [sp] - bl SoundReq - ldr r3, [sp] - b _080A132E - .align 2, 0 -_080A12F8: .4byte gRoomControls -_080A12FC: .4byte gUnk_08124EC8 -_080A1300: - cmp r0, #0 - ble _080A132E - adds r6, #1 - ldr r0, [r2, #4] - cmp r0, #0 - beq _080A132C - cmp r2, #0 - beq _080A132C - mov r1, r8 - adds r1, #4 - movs r7, #0x2e - ldrsh r0, [r2, r7] - cmp r1, r0 - ble _080A131E - strh r1, [r2, #0x2e] -_080A131E: - adds r1, r3, #4 - movs r7, #0x32 - ldrsh r0, [r2, r7] - cmp r1, r0 - ble _080A132E - strh r1, [r2, #0x32] - b _080A132E -_080A132C: - strb r5, [r4] -_080A132E: - movs r0, #1 - rsbs r0, r0, #0 - add sl, r0 - adds r4, #1 - ldr r1, [sp, #4] - adds r1, #4 - str r1, [sp, #4] - mov r2, sl - cmp r2, #0 - bge _080A12B2 - mov r0, sb - adds r0, #0x6a - strh r6, [r0] - ldr r0, _080A136C @ =gPlayerState - adds r0, #0x27 - movs r1, #0xff - strb r1, [r0] - mov r1, sb - adds r1, #0x68 - ldrh r0, [r1] - subs r0, #1 - strh r0, [r1] - lsls r0, r0, #0x10 - cmp r0, #0 - bgt _080A1370 - movs r0, #0xe2 - bl SoundReq - bl sub_08050384 - b _080A1376 - .align 2, 0 -_080A136C: .4byte gPlayerState -_080A1370: - ldr r1, _080A1384 @ =gActiveScriptInfo - movs r0, #0 - strb r0, [r1, #6] -_080A1376: - add sp, #8 - pop {r3, r4, r5} - mov r8, r3 - mov sb, r4 - mov sl, r5 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_080A1384: .4byte gActiveScriptInfo - - thumb_func_start sub_080A1388 -sub_080A1388: @ 0x080A1388 - push {r4, r5, r6, lr} - adds r5, r0, #0 - adds r5, #0x70 - ldr r4, [r0, #0x64] - movs r6, #9 -_080A1392: - ldr r1, [r4] - movs r0, #0 - ldrsb r0, [r5, r0] - cmp r0, #0 - blt _080A13A6 - cmp r1, #0 - beq _080A13A6 - adds r0, r1, #0 - bl DeleteEntityAny -_080A13A6: - subs r6, #1 - adds r5, #1 - adds r4, #4 - cmp r6, #0 - bge _080A1392 - pop {r4, r5, r6, pc} - .align 2, 0 - - thumb_func_start sub_080A13B4 -sub_080A13B4: @ 0x080A13B4 - push {r4, lr} - adds r4, r1, #0 - adds r1, r0, #0 - adds r1, #0x6a - adds r0, #0x6c - movs r2, #0 - ldrsh r1, [r1, r2] - movs r2, #0 - ldrsh r0, [r0, r2] - cmp r1, r0 - blt _080A13D8 - ldr r0, _080A13D4 @ =0x0000300C - bl MessageFromTarget - movs r0, #1 - b _080A13E0 - .align 2, 0 -_080A13D4: .4byte 0x0000300C -_080A13D8: - ldr r0, _080A13E4 @ =0x00003005 - bl MessageFromTarget - movs r0, #0 -_080A13E0: - str r0, [r4, #0x14] - pop {r4, pc} - .align 2, 0 -_080A13E4: .4byte 0x00003005 - - thumb_func_start sub_080A13E8 -sub_080A13E8: @ 0x080A13E8 - push {r4, r5, r6, lr} - adds r5, r0, #0 - bl sub_080A1514 - lsls r0, r0, #2 - ldr r1, _080A1408 @ =gUnk_08124EA0 - adds r4, r0, r1 - movs r6, #0 - ldrb r0, [r4] - cmp r0, #0x5c - beq _080A141C - cmp r0, #0x5c - bgt _080A140C - cmp r0, #0x3f - beq _080A1412 - b _080A1444 - .align 2, 0 -_080A1408: .4byte gUnk_08124EA0 -_080A140C: - cmp r0, #0x63 - beq _080A1430 - b _080A1444 -_080A1412: - ldr r0, _080A1418 @ =gSave - adds r0, #0xbb - b _080A1424 - .align 2, 0 -_080A1418: .4byte gSave -_080A141C: - ldr r0, _080A142C @ =gSave - movs r1, #0x8b - lsls r1, r1, #1 - adds r0, r0, r1 -_080A1424: - ldrb r0, [r0] - cmp r0, #0 - beq _080A1444 - b _080A1454 - .align 2, 0 -_080A142C: .4byte gSave -_080A1430: - movs r0, #0x4f - bl CheckGlobalFlag - cmp r0, #0 - bne _080A1442 - movs r0, #0x4f - bl SetGlobalFlag - b _080A1444 -_080A1442: - movs r6, #1 -_080A1444: - cmp r6, #0 - bne _080A1454 - ldrb r0, [r4] - ldrb r1, [r4, #1] - movs r2, #0 - bl sub_080A7C18 - b _080A145C -_080A1454: - adds r1, r5, #0 - adds r1, #0x6e - movs r0, #2 - strh r0, [r1] -_080A145C: - pop {r4, r5, r6, pc} - .align 2, 0 - - thumb_func_start sub_080A1460 -sub_080A1460: @ 0x080A1460 - push {r4, r5, lr} - adds r5, r0, #0 - bl sub_080A1514 - adds r1, r5, #0 - adds r1, #0x70 - movs r4, #0 - ldr r3, _080A149C @ =gUnk_08124ECC - movs r2, #9 -_080A1472: - movs r0, #0 - ldrsb r0, [r1, r0] - adds r0, r0, r3 - ldrb r0, [r0] - adds r4, r4, r0 - adds r1, #1 - subs r2, #1 - cmp r2, #0 - bge _080A1472 - adds r0, r4, #0 - bl ModRupees - ldr r0, _080A14A0 @ =0x00003007 - adds r1, r5, #0 - bl MessageNoOverlap - ldr r1, _080A14A4 @ =gMessage - lsls r0, r4, #0x10 - lsrs r0, r0, #0x10 - str r0, [r1, #0x10] - pop {r4, r5, pc} - .align 2, 0 -_080A149C: .4byte gUnk_08124ECC -_080A14A0: .4byte 0x00003007 -_080A14A4: .4byte gMessage - - thumb_func_start sub_080A14A8 -sub_080A14A8: @ 0x080A14A8 - push {r4, lr} - bl sub_080A1514 - adds r4, r0, #0 - adds r4, #1 - cmp r4, #9 - ble _080A14B8 - movs r4, #9 -_080A14B8: - movs r0, #1 - ands r0, r4 - cmp r0, #0 - beq _080A14C8 - movs r0, #0x4b - bl SetGlobalFlag - b _080A14CE -_080A14C8: - movs r0, #0x4b - bl ClearGlobalFlag -_080A14CE: - movs r0, #2 - ands r0, r4 - cmp r0, #0 - beq _080A14DE - movs r0, #0x4c - bl SetGlobalFlag - b _080A14E4 -_080A14DE: - movs r0, #0x4c - bl ClearGlobalFlag -_080A14E4: - movs r0, #4 - ands r0, r4 - cmp r0, #0 - beq _080A14F4 - movs r0, #0x4d - bl SetGlobalFlag - b _080A14FA -_080A14F4: - movs r0, #0x4d - bl ClearGlobalFlag -_080A14FA: - movs r0, #8 - ands r0, r4 - cmp r0, #0 - beq _080A150A - movs r0, #0x4e - bl SetGlobalFlag - b _080A1510 -_080A150A: - movs r0, #0x4e - bl ClearGlobalFlag -_080A1510: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080A1514 -sub_080A1514: @ 0x080A1514 - push {r4, lr} - movs r0, #0x4b - bl CheckGlobalFlag - rsbs r1, r0, #0 - orrs r1, r0 - lsrs r4, r1, #0x1f - movs r0, #0x4c - bl CheckGlobalFlag - cmp r0, #0 - beq _080A1530 - movs r0, #2 - orrs r4, r0 -_080A1530: - movs r0, #0x4d - bl CheckGlobalFlag - cmp r0, #0 - beq _080A153E - movs r0, #4 - orrs r4, r0 -_080A153E: - movs r0, #0x4e - bl CheckGlobalFlag - cmp r0, #0 - beq _080A154C - movs r0, #8 - orrs r4, r0 -_080A154C: - adds r0, r4, #0 - pop {r4, pc} - - thumb_func_start sub_080A1550 -sub_080A1550: @ 0x080A1550 - push {r4, r5, r6, r7, lr} - mov r7, sb - mov r6, r8 - push {r6, r7} - mov r8, r1 - movs r0, #0 - str r0, [r1, #0x14] - movs r0, #0xb9 - movs r1, #0 - movs r2, #0 - bl CreateObject - adds r4, r0, #0 - cmp r4, #0 - beq _080A15FE - movs r0, #0x28 - bl zMalloc - str r0, [r4, #0x64] - cmp r0, #0 - bne _080A1582 - adds r0, r4, #0 - bl DeleteEntityAny - b _080A15FE -_080A1582: - mov r0, r8 - ldr r1, [r0, #4] - adds r0, r4, #0 - bl StartCutscene - adds r1, r4, #0 - adds r1, #0x84 - str r0, [r1] - bl sub_080A1514 - lsls r1, r0, #4 - subs r1, r1, r0 - lsls r1, r1, #2 - ldr r0, _080A15B4 @ =gUnk_08124C48 - adds r5, r1, r0 - ldr r4, [r4, #0x64] - mov sb, r4 - ldr r7, _080A15B8 @ =gRoomControls - movs r6, #9 -_080A15A8: - movs r1, #0 - ldrsh r0, [r5, r1] - cmp r0, #0 - bgt _080A15BC - movs r4, #0 - b _080A15E6 - .align 2, 0 -_080A15B4: .4byte gUnk_08124C48 -_080A15B8: .4byte gRoomControls -_080A15BC: - movs r0, #0 - ldrsh r1, [r5, r0] - subs r1, #1 - movs r0, #0x41 - bl CreateEnemy - adds r4, r0, #0 - cmp r4, #0 - beq _080A15E6 - ldrh r0, [r5, #2] - ldrh r1, [r7, #6] - adds r0, r0, r1 - strh r0, [r4, #0x2e] - ldrh r0, [r5, #4] - ldrh r1, [r7, #8] - adds r0, r0, r1 - strh r0, [r4, #0x32] - adds r1, r4, #0 - adds r1, #0x38 - movs r0, #1 - strb r0, [r1] -_080A15E6: - mov r0, sb - adds r0, #4 - mov sb, r0 - subs r0, #4 - stm r0!, {r4} - subs r6, #1 - adds r5, #6 - cmp r6, #0 - bge _080A15A8 - movs r0, #1 - mov r1, r8 - str r0, [r1, #0x14] -_080A15FE: - pop {r3, r4} - mov r8, r3 - mov sb, r4 - pop {r4, r5, r6, r7, pc} - .align 2, 0 - - thumb_func_start sub_080A1608 -sub_080A1608: @ 0x080A1608 - push {r4, lr} - ldr r4, _080A163C @ =0x00003002 - movs r0, #1 - bl CheckRoomFlag - cmp r0, #0 - beq _080A1618 - adds r4, #4 -_080A1618: - adds r0, r4, #0 - bl MessageFromTarget - ldr r4, _080A1640 @ =gMessage - movs r1, #0 - movs r0, #1 - strb r0, [r4, #6] - strb r1, [r4, #7] - bl sub_080A1514 - lsls r0, r0, #2 - ldr r1, _080A1644 @ =gUnk_08124C20 - adds r0, r0, r1 - ldrh r1, [r0] - str r1, [r4, #0x10] - ldrh r0, [r0, #2] - str r0, [r4, #0x14] - pop {r4, pc} - .align 2, 0 -_080A163C: .4byte 0x00003002 -_080A1640: .4byte gMessage -_080A1644: .4byte gUnk_08124C20 - - thumb_func_start sub_080A1648 -sub_080A1648: @ 0x080A1648 - push {r4, lr} - ldr r4, _080A1684 @ =0x0000407F - ldr r1, _080A1688 @ =0x00000D36 - adds r0, r4, #0 - movs r2, #1 - bl SetTileType - ldr r1, _080A168C @ =0x00000D37 - adds r0, r4, #0 - movs r2, #1 - bl SetTileType - ldr r1, _080A1690 @ =0x00000D38 - adds r0, r4, #0 - movs r2, #1 - bl SetTileType - subs r4, #1 - ldr r1, _080A1694 @ =0x00000D75 - adds r0, r4, #0 - movs r2, #1 - bl SetTileType - ldr r1, _080A1698 @ =0x00000E75 - adds r0, r4, #0 - movs r2, #1 - bl SetTileType - pop {r4, pc} - .align 2, 0 -_080A1684: .4byte 0x0000407F -_080A1688: .4byte 0x00000D36 -_080A168C: .4byte 0x00000D37 -_080A1690: .4byte 0x00000D38 -_080A1694: .4byte 0x00000D75 -_080A1698: .4byte 0x00000E75 - - thumb_func_start sub_080A169C -sub_080A169C: @ 0x080A169C - push {lr} - ldr r0, _080A16C8 @ =0x00000D36 - movs r1, #1 - bl sub_0807BA8C - ldr r0, _080A16CC @ =0x00000D37 - movs r1, #1 - bl sub_0807BA8C - ldr r0, _080A16D0 @ =0x00000D38 - movs r1, #1 - bl sub_0807BA8C - ldr r0, _080A16D4 @ =0x00000D75 - movs r1, #1 - bl sub_0807BA8C - ldr r0, _080A16D8 @ =0x00000E75 - movs r1, #1 - bl sub_0807BA8C - pop {pc} - .align 2, 0 -_080A16C8: .4byte 0x00000D36 -_080A16CC: .4byte 0x00000D37 -_080A16D0: .4byte 0x00000D38 -_080A16D4: .4byte 0x00000D75 -_080A16D8: .4byte 0x00000E75 diff --git a/assets/assets.json b/assets/assets.json index 09cb8862..72b7e899 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -44743,11 +44743,6 @@ "size": 4, "type": "animation" }, - { - "path": "object96/gUnk_08123FB0.bin", - "start": 1196172, - "size": 36 - }, { "path": "animations/gSpriteAnimations_Object98_0.bin", "start": 1196436, @@ -44907,16 +44902,6 @@ "size": 20, "type": "animation" }, - { - "path": "objectA9/gUnk_0812485C.bin", - "start": 1198172, - "size": 4 - }, - { - "path": "objectA9/gUnk_08124860.bin", - "start": 1198176, - "size": 8 - }, { "path": "animations/gSpriteAnimations_ObjectAB_0.bin", "start": 1198200, @@ -45058,41 +45043,6 @@ "size": 83, "type": "animation" }, - { - "path": "objectB4/gUnk_08124B10.bin", - "start": 1198864, - "size": 16 - }, - { - "path": "objectB4/gUnk_08124B30.bin", - "start": 1198896, - "size": 8 - }, - { - "path": "objectB9/gUnk_08124C20.bin", - "start": 1199136, - "size": 40 - }, - { - "path": "objectB9/gUnk_08124C48.bin", - "start": 1199176, - "size": 600 - }, - { - "path": "objectB9/gUnk_08124EA0.bin", - "start": 1199776, - "size": 40 - }, - { - "path": "objectB9/gUnk_08124EC8.bin", - "start": 1199816, - "size": 4 - }, - { - "path": "objectB9/gUnk_08124ECC.bin", - "start": 1199820, - "size": 4 - }, { "path": "windcrest/gUnk_08125010.bin", "start": 1200144, diff --git a/data/const/object/object96.s b/data/const/object/object96.s deleted file mode 100644 index 88aad895..00000000 --- a/data/const/object/object96.s +++ /dev/null @@ -1,83 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08123FB0:: @ 08123FB0 - .4byte sub_0809D91C - .4byte sub_0809D93C - .4byte 0x30300000 - .4byte 0x133c3c01 - .4byte 0x00010000 - .4byte 0x00001800 - .4byte 0x00400060 - .4byte 0x00014021 - .4byte sub_0809D91C - .4byte 00000000 - .4byte 00000000 - .4byte 0x10636300 - .4byte 00000000 - .4byte 0x00001800 - .4byte 0x00180000 -.ifdef JP - .4byte 0x000000CD -.else -.ifdef DEMO_JP - .4byte 0x000000CD -.else -.ifdef EU - .4byte 0x000000CD @ TODO deduplicate -.else - .4byte 0x000000d0 -.endif -.endif -.endif - .4byte sub_0809D91C - .4byte 00000000 - .4byte 00000000 - .4byte 0x0f3c3c00 - .4byte 0x00010000 - .4byte 0x00001800 - .4byte 0x00400060 - .4byte 0x00014021 - .4byte sub_0809D91C - .4byte 00000000 - .4byte 00000000 - .4byte 0x023c3c00 - .4byte 0x00010000 - .4byte 0x00001800 - .4byte 0x00400140 - .4byte 0x00014021 - .4byte sub_0809D91C - .4byte 00000000 - .4byte 00000000 - .4byte 0x0d3c3c00 - .4byte 0x00010000 - .4byte 0x00001800 - .4byte 0x00400060 - .4byte 0x00014021 - .4byte sub_0809D91C - .4byte 00000000 - .4byte 00000000 - .4byte 0x1a3c3c00 - .4byte 0x00010000 - .4byte 0x00001800 - .4byte 0x00400100 - .4byte 0x00014021 - .4byte sub_0809D91C - .4byte 00000000 - .4byte 00000000 - .4byte 0x133c3c00 - .4byte 0x00010000 - .4byte 0x00001800 - .4byte 0x00400060 - - .incbin "object96/gUnk_08123FB0.bin" - -gUnk_081240B0:: @ 081240B0 - .4byte sub_0809D7A8 - .4byte sub_0809D824 - .4byte sub_0809D860 - .4byte sub_0809D8C8 - diff --git a/data/const/object/object98.s b/data/const/object/object98.s deleted file mode 100644 index 732233be..00000000 --- a/data/const/object/object98.s +++ /dev/null @@ -1,9 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_0812418C:: @ 0812418C - .4byte sub_0809E360 - .4byte sub_0809E3E4 diff --git a/data/const/object/objectA6.s b/data/const/object/objectA6.s deleted file mode 100644 index 112174af..00000000 --- a/data/const/object/objectA6.s +++ /dev/null @@ -1,9 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08124800:: @ 08124800 - .4byte sub_0809F920 - .4byte sub_0809F964 diff --git a/data/const/object/objectA9.s b/data/const/object/objectA9.s deleted file mode 100644 index 50217af0..00000000 --- a/data/const/object/objectA9.s +++ /dev/null @@ -1,16 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08124850:: @ 08124850 - .4byte sub_0809FEF8 - .4byte sub_0809FF28 - .4byte DeleteEntity - -gUnk_0812485C:: @ 0812485C - .incbin "objectA9/gUnk_0812485C.bin" - -gUnk_08124860:: @ 08124860 - .incbin "objectA9/gUnk_08124860.bin" diff --git a/data/const/object/objectAB.s b/data/const/object/objectAB.s deleted file mode 100644 index 3ac4b9fb..00000000 --- a/data/const/object/objectAB.s +++ /dev/null @@ -1,10 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_0812486C:: @ 0812486C - .4byte sub_080A00F8 - .4byte sub_080A012C - .4byte sub_080A0158 diff --git a/data/const/object/objectAD.s b/data/const/object/objectAD.s deleted file mode 100644 index a569ed91..00000000 --- a/data/const/object/objectAD.s +++ /dev/null @@ -1,9 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_081248BC:: @ 081248BC - .4byte sub_080A04A4 - .4byte sub_080A04E0 diff --git a/data/const/object/objectB4.s b/data/const/object/objectB4.s deleted file mode 100644 index cc9159af..00000000 --- a/data/const/object/objectB4.s +++ /dev/null @@ -1,17 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08124B10:: @ 08124B10 - .incbin "objectB4/gUnk_08124B10.bin" - -gUnk_08124B20:: @ 08124B20 - .4byte sub_080A0BA8 - .4byte sub_080A0CE8 - .4byte sub_080A0D70 - .4byte sub_080A0E08 - -gUnk_08124B30:: @ 08124B30 - .incbin "objectB4/gUnk_08124B30.bin" diff --git a/data/const/object/objectB9.s b/data/const/object/objectB9.s deleted file mode 100644 index 7a5da340..00000000 --- a/data/const/object/objectB9.s +++ /dev/null @@ -1,21 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08124C20:: @ 08124C20 - .incbin "objectB9/gUnk_08124C20.bin" - -gUnk_08124C48:: @ 08124C48 - .incbin "objectB9/gUnk_08124C48.bin" - -gUnk_08124EA0:: @ 08124EA0 - .incbin "objectB9/gUnk_08124EA0.bin" - -gUnk_08124EC8:: @ 08124EC8 - .incbin "objectB9/gUnk_08124EC8.bin" - -gUnk_08124ECC:: @ 08124ECC - .incbin "objectB9/gUnk_08124ECC.bin" - diff --git a/data/scripts/hyruleTown/script_Anju.inc b/data/scripts/hyruleTown/script_Anju.inc index 627bc9b1..b6cb6bb4 100644 --- a/data/scripts/hyruleTown/script_Anju.inc +++ b/data/scripts/hyruleTown/script_Anju.inc @@ -19,7 +19,7 @@ script_0801015A: Call sub_080A1608 WaitUntilTextboxCloses EnablePlayerControl - CallWithArg sub_080A1550, script_080101AC + CallWithArg CuccoMinigame_Init, script_080101AC JumpIfNot script_0801015A PlayBgm BGM_CUCCO_MINIGAME SetRoomFlag 0x0001 @@ -49,7 +49,7 @@ script_080101AC: Call sub_0807FB74 _0807E8E4_1 Call SetPlayerCollisionLayer1 - Call sub_080A1388 + Call CuccoMinigame_Cleanup Call sub_0806EC38 BeginBlock MoveEntityToPlayer diff --git a/include/message.h b/include/message.h index c0164810..d0fc84a9 100644 --- a/include/message.h +++ b/include/message.h @@ -17,7 +17,7 @@ typedef struct { u16 textIndex; u16 unk2; // HI? u32 field_0xc; - u32 field_0x10; + u32 rupees; u32 field_0x14; u32 field_0x18; u32 field_0x1c; diff --git a/include/object.h b/include/object.h index 5d6cb713..ef3d2d08 100644 --- a/include/object.h +++ b/include/object.h @@ -215,7 +215,7 @@ typedef enum { OBJECT_B6, WELL, WIND_TRIBE_TELEPORTER, - OBJECT_B9, + CUCCO_MINIGAME, GYORG_BOSS_OBJECT, WINDCREST, LIT_AREA, diff --git a/linker.ld b/linker.ld index 5a4fb8b2..06492e9c 100644 --- a/linker.ld +++ b/linker.ld @@ -775,10 +775,10 @@ SECTIONS { src/object/windTribeFlag.o(.text); src/object/bird.o(.text); asm/object/bird.o(.text); - asm/object/object96.o(.text); + src/object/object96.o(.text); src/object/keyStealingTakkuri.o(.text); - asm/object/object98.o(.text); - asm/object/object99.o(.text); + src/object/object98.o(.text); + src/object/object99.o(.text); src/object/macroAcorn.o(.text); src/object/object9B.o(.text); src/object/treeHidingPortal.o(.text); @@ -791,26 +791,26 @@ SECTIONS { src/object/cloud.o(.text); src/object/minishLight.o(.text); asm/object/fireballChain.o(.text); - asm/object/objectA6.o(.text); + src/object/objectA6.o(.text); src/object/objectA7.o(.text); src/object/objectA8.o(.text); - asm/object/objectA9.o(.text); + src/object/objectA9.o(.text); src/object/waterfallOpening.o(.text); - asm/object/objectAB.o(.text); + src/object/objectAB.o(.text); src/object/fourElements.o(.text); - asm/object/objectAD.o(.text); + src/object/objectAD.o(.text); src/object/floatingBlock.o(.text); src/object/objectAF.o(.text); src/object/metalDoor.o(.text); src/object/jailBars.o(.text); src/object/objectB2.o(.text); src/object/objectB3.o(.text); - asm/object/objectB4.o(.text); + src/object/objectB4.o(.text); src/object/objectB5.o(.text); src/object/objectB6.o(.text); src/object/well.o(.text); src/object/windTribeTeleporter.o(.text); - asm/object/objectB9.o(.text); + src/object/cuccoMinigame.o(.text); src/object/gyorgBossObject.o(.text); src/object/windcrest.o(.text); src/object/litArea.o(.text); @@ -1526,9 +1526,9 @@ SECTIONS { data/animations/object/lamp.o(.rodata); data/const/object/bird.o(.rodata); data/animations/object/bird.o(.rodata); - data/const/object/object96.o(.rodata); + src/object/object96.o(.rodata); src/object/keyStealingTakkuri.o(.rodata); - data/const/object/object98.o(.rodata); + src/object/object98.o(.rodata); data/animations/object/object98.o(.rodata); src/object/macroAcorn.o(.rodata); src/object/object9B.o(.rodata); @@ -1544,15 +1544,15 @@ SECTIONS { data/animations/object/objectA2.o(.rodata); data/const/object/cloud.o(.rodata); data/const/object/minishLight.o(.rodata); - data/const/object/objectA6.o(.rodata); + src/object/objectA6.o(.rodata); data/animations/object/objectA6.o(.rodata); src/object/objectA8.o(.rodata); - data/const/object/objectA9.o(.rodata); + src/object/objectA9.o(.rodata); src/object/waterfallOpening.o(.rodata); - data/const/object/objectAB.o(.rodata); + src/object/objectAB.o(.rodata); data/animations/object/objectAB.o(.rodata); src/object/fourElements.o(.rodata); - data/const/object/objectAD.o(.rodata); + src/object/objectAD.o(.rodata); data/const/object/objectAF.o(.rodata); data/animations/object/objectAF.o(.rodata); data/const/object/metalDoor.o(.rodata); @@ -1561,11 +1561,11 @@ SECTIONS { data/animations/object/objectB2.o(.rodata); src/object/objectB3.o(.rodata); data/animations/object/objectB3.o(.rodata); - data/const/object/objectB4.o(.rodata); + src/object/objectB4.o(.rodata); data/animations/object/objectB4.o(.rodata); data/const/object/well.o(.rodata); src/object/windTribeTeleporter.o(.rodata); - data/const/object/objectB9.o(.rodata); + src/object/cuccoMinigame.o(.rodata); src/object/gyorgBossObject.o(.rodata); data/const/object/windcrest.o(.rodata); src/object/objectBD.o(.rodata); diff --git a/src/enemy/businessScrub.c b/src/enemy/businessScrub.c index 8283894b..45cf55b8 100644 --- a/src/enemy/businessScrub.c +++ b/src/enemy/businessScrub.c @@ -384,7 +384,7 @@ void sub_08028F0C(Entity* this) { SetPlayerControl(1); } MessageFromTarget(dialog); - gMessage.field_0x10 = offer->price; + gMessage.rupees = offer->price; } } diff --git a/src/message.c b/src/message.c index b10d00a1..d19e9f9f 100644 --- a/src/message.c +++ b/src/message.c @@ -818,7 +818,7 @@ void sub_08056F88(u32 unk_1, u32 unk_2) { } static void sub_08056FBC(TextRender* ctb) { - sub_08056FEC(ctb->message.field_0x10, &ctb->_66[0x2]); + sub_08056FEC(ctb->message.rupees, &ctb->_66[0x2]); sub_08056FEC(ctb->message.field_0x14, &ctb->_66[0xa]); sub_08056FEC(ctb->message.field_0x18, &ctb->_77[0x1]); sub_08056FEC(ctb->message.field_0x1c, &ctb->_77[0x9]); diff --git a/src/npc/goronMerchant.c b/src/npc/goronMerchant.c index 9a0cf266..3cb1a668 100644 --- a/src/npc/goronMerchant.c +++ b/src/npc/goronMerchant.c @@ -77,7 +77,7 @@ void sub_08069654(Entity* this) { void sub_08069660(Entity* this) { MessageNoOverlap(0x2c1c, this); - gMessage.field_0x10 = (u16)GoronMerchant_GetSalePrice(this); + gMessage.rupees = (u16)GoronMerchant_GetSalePrice(this); } void sub_08069684(void) { diff --git a/src/npc/picolyteBottle.c b/src/npc/picolyteBottle.c index 6dbf5010..dec3e542 100644 --- a/src/npc/picolyteBottle.c +++ b/src/npc/picolyteBottle.c @@ -175,7 +175,7 @@ void sub_0806E140(PicolyteBottleEntity* this, ScriptExecutionContext* context) { MessageFromTarget(0x421b); } else { MessageFromTarget(0x4218); - gMessage.field_0x10 = this->unk76; + gMessage.rupees = this->unk76; } } else { context->condition = 0; @@ -201,7 +201,7 @@ void sub_0806E1FC(PicolyteBottleEntity* this) { void sub_0806E20C(void) { if (gRoomTransition.field_0x6 != 0) { MessageFromTarget(0x421f); - gMessage.field_0x10 = gRoomTransition.field_0x6; + gMessage.rupees = gRoomTransition.field_0x6; } else { MessageFromTarget(0x4220); } diff --git a/src/npc/stockwell.c b/src/npc/stockwell.c index e72cb9c0..d305d835 100644 --- a/src/npc/stockwell.c +++ b/src/npc/stockwell.c @@ -66,7 +66,7 @@ void sub_080650CC(Entity* this) { MessageNoOverlap(confirmMsgId, this); //! @bug itemPrice (r8) is not initialized if gRoomVars.shopItemType == 0 - gMessage.field_0x10 = (u16)itemPrice; + gMessage.rupees = (u16)itemPrice; } else if ((this->frame & 0x40)) { InitializeAnimation(this, gUnk_0810FDB8[Random() & 0xf]); } else { diff --git a/src/npc/tingleSiblings.c b/src/npc/tingleSiblings.c index 82eb9ee2..d7628afe 100644 --- a/src/npc/tingleSiblings.c +++ b/src/npc/tingleSiblings.c @@ -171,7 +171,7 @@ void sub_08064F28(Entity* this, ScriptExecutionContext* context) { } MessageNoOverlap(TingleSiblings_MessageIndices[this->type][uVar5], this); if (iVar4 > 0) { - gMessage.field_0x10 = (u16)iVar4; + gMessage.rupees = (u16)iVar4; } if (CheckRoomFlag(roomFlag) == 0) { diff --git a/src/object.c b/src/object.c index da1eb312..060876d7 100644 --- a/src/object.c +++ b/src/object.c @@ -187,7 +187,7 @@ void (*const gObjectFunctions[])(Entity*) = { [OBJECT_B6] = ObjectB6, [WELL] = Well, [WIND_TRIBE_TELEPORTER] = WindTribeTeleporter, - [OBJECT_B9] = ObjectB9, + [CUCCO_MINIGAME] = ObjectB9, [GYORG_BOSS_OBJECT] = GyorgBossObject, [WINDCREST] = Windcrest, [LIT_AREA] = LitArea, diff --git a/src/object/cuccoMinigame.c b/src/object/cuccoMinigame.c new file mode 100644 index 00000000..19f63c3f --- /dev/null +++ b/src/object/cuccoMinigame.c @@ -0,0 +1,358 @@ +#define NENT_DEPRECATED +#include "entity.h" +#include "script.h" +#include "npc.h" +#include "fileselect.h" +#include "functions.h" +#include "object.h" +#include "enemy.h" + +typedef struct { + Entity base; + s16 unk68; + s16 unk6a; + s16 unk6c; + u16 unk6e; + u8 unk70[0x18]; +} ObjectB9Entity; + +typedef Entity* ObjectB9Heap[10]; + +u32 sub_080A1514(); + +const u16 gUnk_08124C20[] = { + 25, 0x2, 25, 0x3, 30, 0x4, 45, 0x5, 50, 0x5, 45, 0x5, 50, 0x6, 60, 0x7, 55, 0x2, 55, 0x3, +}; + +static const u16 pObjectB9_MinigameCuccoDefs[][30] = { + { 0x0001, 0x02E9, 0x0318, 0x0001, 0x0280, 0x0380, 0x0002, 0x0277, 0x0314, 0x0001, + 0x0332, 0x0248, 0x0001, 0x0257, 0x028C, 0x0001, 0x0199, 0x031B, 0x0001, 0x0321, + 0x01B4, 0x0002, 0x02DF, 0x01D8, 0x0001, 0x03AD, 0x02DE, 0x0001, 0x0216, 0x01CC }, + { 0x0001, 0x02E9, 0x0318, 0x0001, 0x0280, 0x0380, 0x0002, 0x0277, 0x0314, 0x0001, + 0x0332, 0x0248, 0x0001, 0x0257, 0x028C, 0x0001, 0x0199, 0x031B, 0x0001, 0x0321, + 0x01B4, 0x0002, 0x02DF, 0x01D8, 0x0001, 0x03AD, 0x02DE, 0x0001, 0x0216, 0x01CC }, + { 0x0001, 0x02E9, 0x0318, 0x0001, 0x0280, 0x0380, 0x0002, 0x0277, 0x0314, 0x0001, + 0x0332, 0x0248, 0x0001, 0x0257, 0x028C, 0x0001, 0x0199, 0x031B, 0x0001, 0x0321, + 0x01B4, 0x0002, 0x02DF, 0x01D8, 0x0001, 0x03AD, 0x02DE, 0x0001, 0x0216, 0x01CC }, + { + 0x0002, 0x02F6, 0x0346, 0x0001, 0x0266, 0x033C, 0x0001, 0x0319, 0x0296, 0x0001, + 0x0284, 0x0284, 0x0002, 0x0216, 0x0284, 0x0001, 0x0142, 0x0330, 0x0002, 0x0179, + 0x039F, 0x0001, 0x03A6, 0x0280, 0x0001, 0x039A, 0x015D, 0x0001, 0x031E, 0x01E5, + }, + { 0x0001, 0x0296, 0x0314, 0x0001, 0x02E6, 0x0231, 0x0001, 0x0254, 0x0290, 0x0001, + 0x01F8, 0x0325, 0x0001, 0x0185, 0x0367, 0x0001, 0x0320, 0x01D6, 0x0002, 0x01F8, + 0x0287, 0x0002, 0x029D, 0x01B1, 0x0002, 0x01F9, 0x022D, 0x0002, 0x0114, 0x0321 }, + { 0x0002, 0x02F6, 0x0346, 0x0001, 0x0266, 0x033C, 0x0001, 0x0319, 0x0296, 0x0001, + 0x0284, 0x0284, 0x0002, 0x0216, 0x0284, 0x0001, 0x0142, 0x0330, 0x0002, 0x0179, + 0x039F, 0x0002, 0x022D, 0x01CB, 0x0001, 0x039A, 0x015D, 0x0001, 0x031E, 0x01E5 }, + { 0x0001, 0x02E9, 0x0318, 0x0001, 0x0280, 0x0380, 0x0002, 0x0277, 0x0314, 0x0001, + 0x0332, 0x0248, 0x0001, 0x0257, 0x028C, 0x0001, 0x0199, 0x031B, 0x0001, 0x0321, + 0x01B4, 0x0002, 0x02DF, 0x01D8, 0x0001, 0x03AD, 0x02DE, 0x0001, 0x0216, 0x01CC }, + { 0x0001, 0x02E9, 0x0318, 0x0002, 0x0280, 0x0380, 0x0002, 0x0277, 0x0314, 0x0001, + 0x0332, 0x0248, 0x0001, 0x0257, 0x028C, 0x0001, 0x0199, 0x031B, 0x0001, 0x0321, + 0x01B4, 0x0002, 0x02DF, 0x01D8, 0x0002, 0x03AD, 0x02DE, 0x0001, 0x0216, 0x01CC }, + { 0x0001, 0x004D, 0x00F3, 0x0001, 0x011A, 0x0247, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, + { 0x0001, 0x0051, 0x0328, 0x0002, 0x0114, 0x0321, 0x0002, 0x0332, 0x0248, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 } +}; + +static const u8 gUnk_08124EA0[] = { 0x3F, 0x0A, 0x01, 0x00, 0x3F, 0x0A, 0x01, 0x00, 0x3F, 0x14, 0x01, 0x00, 0x3F, 0x14, + 0x01, 0x00, 0x3F, 0x1E, 0x01, 0x00, 0x3F, 0x1E, 0x01, 0x00, 0x5C, 0x6E, 0x01, 0x00, + 0x5C, 0x6F, 0x01, 0x00, 0x5C, 0x70, 0x01, 0x00, 0x63, 0x00, 0x01, 0x00 }; + +static const u16 CuccoMinigame_Sounds[] = { SFX_VO_CUCCO5, SFX_VO_CUCCO_CALL }; + +static const u8 CuccoMinigameRupees[] = { 0, 10, 50, 0 }; + +void ObjectB9(ObjectB9Entity* this) { + int index; + u32 val; + u8* puVar2; + const u16* ptr; + + if (super->action == 0) { + super->action++; + ptr = gUnk_08124C20 + sub_080A1514() * 2; + this->unk68 = ptr[0] * 0x3c; + this->unk6a = 0; + this->unk6c = ptr[1]; + this->unk6e = 1; + + for (puVar2 = this->unk70, val = 0, index = 9; index >= 0; index--) { + *puVar2++ = val; + } + sub_0807DD64(super); + sub_0806EC20(super); + } + sub_0807DD94(super, 0); +} + +NONMATCH("asm/non_matching/objectB9/sub_080A1270.inc", void sub_080A1270(ObjectB9Entity* this)) { + s32 iVar1; + int iVar2; + s32 iVar4; + s32 sVar6; + int iVar7; + s8* ptr; + s32 val; + Entity* pEnt; + Entity** entArray; + + sVar6 = 0; + entArray = ((Entity**)super->myHeap); + ptr = this->unk70; + iVar1 = (gRoomControls.origin_x + 0x360); + iVar4 = (gRoomControls.origin_y + 0x350); + iVar1 = (iVar1 << 16) >> 16; + iVar4 = (iVar4 << 16) >> 16; + val = -1; + + for (iVar7 = 0; iVar7 < 9; iVar7++) { + pEnt = entArray[iVar7]; + if (((s8*)ptr)[iVar7] == 0) { + if (pEnt->next != NULL && pEnt != NULL) { + if ((iVar1 <= pEnt->x.HALF.HI) && (iVar4 <= pEnt->y.HALF.HI)) { + ptr[iVar7] = pEnt->type + 1; + pEnt->type2 = 1; + sVar6++; + SoundReq(CuccoMinigame_Sounds[pEnt->type]); + } + } else { + ((s8*)ptr)[iVar7] = val; + } + } else if (0 < (s8)ptr[iVar7]) { + sVar6++; + if (pEnt->next != NULL && pEnt != NULL) { + iVar2 = iVar1 + 4; + if (iVar2 > pEnt->x.HALF.HI) { + pEnt->x.HALF.HI = iVar2; + } + iVar2 = iVar4 + 4; + if (iVar2 > pEnt->y.HALF.HI) { + pEnt->y.HALF.HI = iVar2; + } + } else { + ((s8*)ptr)[iVar7] = val; + } + } + } + + this->unk6a = sVar6; + gPlayerState.field_0x27[0] = 0xff; + if (--this->unk68 < 1) { + SoundReq(SFX_CUCCO_MINIGAME_BELL); + sub_08050384(); + } else { + gActiveScriptInfo.commandSize = 0; + } +} +END_NONMATCH + +void CuccoMinigame_Cleanup(ObjectB9Entity* this) { + Entity** puVar1; + s8* pcVar2; + int index; + + pcVar2 = this->unk70; + puVar1 = super->myHeap; + + for (index = 9; index >= 0; index--, pcVar2++, puVar1++) { + Entity* pEnt = *puVar1; + if (*pcVar2 >= 0 && pEnt != NULL) { + DeleteEntityAny(pEnt); + } + } +} + +void sub_080A13B4(ObjectB9Entity* this, ScriptExecutionContext* context) { + if (this->unk6a >= this->unk6c) { + MessageFromTarget(0x300c); + context->condition = 1; + } else { + MessageFromTarget(0x3005); + context->condition = 0; + } +} + +void sub_080A13E8(ObjectB9Entity* this) { + bool32 bVar2; + const u8* ptr = &gUnk_08124EA0[sub_080A1514() * 4]; + + bVar2 = 0; + switch (ptr[0]) { + case 0x3f: + if (gSave.stats.hasAllFigurines) { + bVar2 = 1; + } + break; + case 0x5c: + if (gSave.didAllFusions) { + bVar2 = 1; + } + break; + case 0x63: + if (!CheckGlobalFlag(0x4f)) { + SetGlobalFlag(0x4f); + break; + } + bVar2 = 1; + break; + } + + if (!bVar2) { + sub_080A7C18(ptr[0], ptr[1], 0); + } else { + this->unk6e = 2; + } +} + +void sub_080A1460(ObjectB9Entity* this) { + s8* pcVar1; + int iVar2; + s32 rupees; + const u8* ptr; + + sub_080A1514(); + pcVar1 = this->unk70; + rupees = 0; + ptr = CuccoMinigameRupees; + + for (iVar2 = 9; iVar2 >= 0; iVar2--) { + // Weird register addition + // ptr[*pcVar1] translates to add r0,r3,r0 but should be add r0,r3 + u32 temp = *pcVar1; + temp += (int)ptr; + rupees += *(u8*)temp; + pcVar1++; + } + ModRupees(rupees); + MessageNoOverlap(0x3007, super); + gMessage.rupees = (u16)rupees; +} + +void sub_080A14A8(void) { + int iVar1; + + iVar1 = sub_080A1514(); + iVar1++; + if (iVar1 > 9) { + iVar1 = 9; + } + + if (iVar1 & 1) { + SetGlobalFlag(0x4b); + } else { + ClearGlobalFlag(0x4b); + } + + if (iVar1 & 2) { + SetGlobalFlag(0x4c); + } else { + ClearGlobalFlag(0x4c); + } + + if (iVar1 & 4) { + SetGlobalFlag(0x4d); + } else { + ClearGlobalFlag(0x4d); + } + + if (iVar1 & 8) { + SetGlobalFlag(0x4e); + } else { + ClearGlobalFlag(0x4e); + } +} + +u32 sub_080A1514(void) { + u32 rv = 0; + + if (CheckGlobalFlag(0x4b)) { + rv = 1; + } + + if (CheckGlobalFlag(0x4c)) { + rv |= 2; + } + + if (CheckGlobalFlag(0x4d)) { + rv |= 4; + } + + if (CheckGlobalFlag(0x4e)) { + rv |= 8; + } + return rv; +} + +void CuccoMinigame_Init(Entity* this, ScriptExecutionContext* context) { + Entity* pEnt; + const short* pCuccoMinigameDef; + int index; + Entity** ppEVar5; + RoomControls* room; + + context->condition = 0; + pEnt = CreateObject(CUCCO_MINIGAME, 0, 0); + if (pEnt != NULL) { + pEnt->myHeap = (u32*)zMalloc(sizeof(ObjectB9Heap)); + if (pEnt->myHeap == NULL) { + DeleteEntityAny(pEnt); + } else { + *(ScriptExecutionContext**)&((GenericEntity*)pEnt)->cutsceneBeh = + (ScriptExecutionContext*)StartCutscene(pEnt, (u16*)context->intVariable); + pCuccoMinigameDef = pObjectB9_MinigameCuccoDefs[sub_080A1514()]; + ppEVar5 = (Entity**)pEnt->myHeap; + room = &gRoomControls; + for (index = 9; index >= 0; index--, pCuccoMinigameDef += 3) { + if (pCuccoMinigameDef[0] < 1) { + pEnt = NULL; + } else { + pEnt = (Entity*)CreateEnemy(CUCCO_AGGR, pCuccoMinigameDef[0] - 1); + if (pEnt != NULL) { + pEnt->x.HALF.HI = room->origin_x + pCuccoMinigameDef[1]; + pEnt->y.HALF.HI = room->origin_y + pCuccoMinigameDef[2]; + pEnt->collisionLayer = 1; + } + } + *ppEVar5++ = pEnt; + } + context->condition = 1; + } + } +} + +void sub_080A1608(void) { + u16 messageIndex; + const u16* ptr; + + messageIndex = 0x3002; + if (CheckRoomFlag(1)) { + messageIndex = 0x3006; + } + MessageFromTarget(messageIndex); + gMessage.textWindowPosX = 1; + gMessage.textWindowPosY = 0; + ptr = &gUnk_08124C20[sub_080A1514() * 2]; + gMessage.rupees = ptr[0]; + gMessage.field_0x14 = ptr[1]; +} + +void sub_080A1648(void) { + SetTileType(0x407f, 0xd36, 1); + SetTileType(0x407f, 0xd37, 1); + SetTileType(0x407f, 0xd38, 1); + SetTileType(0x407e, 0xd75, 1); + SetTileType(0x407e, 0xe75, 1); +} + +void sub_080A169C(void) { + sub_0807BA8C(0xd36, 1); + sub_0807BA8C(0xd37, 1); + sub_0807BA8C(0xd38, 1); + sub_0807BA8C(0xd75, 1); + sub_0807BA8C(0xe75, 1); +} diff --git a/src/object/figurineDevice.c b/src/object/figurineDevice.c index df7dbdc5..22c63ddc 100644 --- a/src/object/figurineDevice.c +++ b/src/object/figurineDevice.c @@ -303,7 +303,7 @@ void FigurineDevice_Action4(FigurineDeviceEntity* this) { gMessage.textWindowPosX = 1; gMessage.textWindowPosY = 0xc; #endif - gMessage.field_0x10 = this->unk_81; + gMessage.rupees = this->unk_81; break; } } @@ -477,7 +477,7 @@ void sub_08088478(void) { gMessage.textWindowPosX = 1; gMessage.textWindowPosY = 0xc; if (set0x10) { - gMessage.field_0x10 = 5; + gMessage.rupees = 5; } #ifndef EU gPlayerEntity.animationState = 6; diff --git a/src/object/object96.c b/src/object/object96.c new file mode 100644 index 00000000..2ffac509 --- /dev/null +++ b/src/object/object96.c @@ -0,0 +1,181 @@ +#define NENT_DEPRECATED +#include "entity.h" +#include "player.h" +#include "asm.h" +#include "functions.h" +#include "sound.h" +#include "item.h" +#include "flags.h" +#include "effects.h" + +typedef struct _struct_gUnk_08123FB0 { + void (*const funcEnt)(Entity*); + bool32 (*const func)(Entity*, const struct _struct_gUnk_08123FB0*); + s8 unk08; + s8 unk09; + u8 unk0a; + u8 unk0b; + u8 unk0c; + u8 type; + u8 unk0e; + u8 unk0f; + s32 zVelocity; + u32 unk14; + s16 speed; + s16 y; + u16 flag; + u8 actionDelay; + u8 unk1f; +} struct_gUnk_08123FB0; + +static_assert(sizeof(struct_gUnk_08123FB0) == 0x20); + +void sub_0809D91C(Entity*); +bool32 sub_0809D93C(Entity*, const struct_gUnk_08123FB0*); +void Object96_Init(Entity*, const struct_gUnk_08123FB0*); +void Object96_Action1(Entity*, const struct_gUnk_08123FB0*); +void Object96_Action2(Entity*, const struct_gUnk_08123FB0*); +void Object96_Action3(Entity*, const struct_gUnk_08123FB0*); + +static const struct_gUnk_08123FB0 gUnk_08123FB0[] = { + { sub_0809D91C, sub_0809D93C, 0, 0, 0x30, 0x30, 0x1, 0x3c, 0x3c, 0x13, 0x10000, 0x1800, 0x60, 0x40, 0x4021, 0x1, + 0x0 }, + { sub_0809D91C, NULL, 0, 0, 0, 0, 0, 0x63, 0x63, 0x10, 0, 0x1800, 0, 0x18, +#if defined(JP) || defined(DEMO_JP) || defined(EU) + 0xCD, +#else + 0xd0, +#endif + 0, 0 }, + { sub_0809D91C, NULL, 0, 0, 0, 0, 0, 0x3c, 0x3c, 0xf, 0x10000, 0x1800, 0x60, 0x40, 0x4021, 0x1, 0x0 }, + { sub_0809D91C, NULL, 0, 0, 0, 0, 0, 0x3c, 0x3c, 0x2, 0x10000, 0x1800, 0x140, 0x40, 0x4021, 0x1, 0x0 }, + { sub_0809D91C, NULL, 0, 0, 0, 0, 0x0, 0x3c, 0x3c, 0xd, 0x10000, 0x1800, 0x60, 0x40, 0x4021, 0x1, 0x0 }, + { sub_0809D91C, NULL, 0, 0, 0, 0, 0x0, 0x3c, 0x3c, 0x1a, 0x10000, 0x1800, 0x100, 0x40, 0x4021, 0x1, 0x0 }, + { sub_0809D91C, NULL, 0, 0, 0, 0, 0x0, 0x3c, 0x3c, 0x13, 0x10000, 0x1800, 0x60, 0x40, 0x4021, 0x1, 0x0 }, + { NULL, NULL, 0, 0, 0, 0, 0x0, 0x5c, 0x5c, 0x81, 0, 0x1800, 0x100, 0x20, 0x0, 0x1, 0x0 }, +}; + +void Object96(Entity* this) { + static void (*const actionFuncs[])(Entity*, const struct_gUnk_08123FB0*) = { + Object96_Init, + Object96_Action1, + Object96_Action2, + Object96_Action3, + }; + actionFuncs[this->action](this, &gUnk_08123FB0[this->type]); +} + +void Object96_Init(Entity* this, const struct_gUnk_08123FB0* param_2) { + u32 type; + u32 dir; + + this->action++; + this->collisionLayer = 2; + this->spriteRendering.b3 = 1; + this->zVelocity = param_2->zVelocity; + this->direction = param_2->unk0f; + this->speed = param_2->speed; + this->y.HALF.HI -= param_2->y; + this->z.WORD = 0; + this->actionDelay = param_2->actionDelay; + if ((this->direction & 0x80)) { + dir = this->direction; + if (dir == 0x81) { + this->direction = (((gPlayerEntity.animationState * 4 + (Random() & 3)) - 2) & 0x1f) ^ 0x10; + } + } + UpdateSpriteForCollisionLayer(this); + type = this->type; + sub_08080CB4(this); + this->type = type; +} + +void Object96_Action1(Entity* this, const struct_gUnk_08123FB0* param_2) { + u32 type; + s32 iVar3; + + iVar3 = 1; + if (param_2->func != NULL) { + iVar3 = param_2->func(this, param_2); + } + if (iVar3 != 0) { + this->action++; + this->y.HALF.HI += param_2->y; + this->z.HALF.HI -= param_2->y; + } + type = this->type; + this->type = param_2->type; + sub_08080CB4(this); + this->type = type; +} + +void Object96_Action2(Entity* this, const struct_gUnk_08123FB0* param_2) { + u8 type; + + LinearMoveUpdate(this); + if (sub_080044EC(this, param_2->unk14) < 2) { + if (this->actionDelay) { + this->actionDelay--; + this->zVelocity = param_2->unk14 << 3; + } else { + this->action++; + this->collisionLayer = gPlayerEntity.collisionLayer; + UpdateSpriteForCollisionLayer(this); + if (param_2->funcEnt != NULL) { + param_2->funcEnt(this); + } + } + SoundReq(SFX_RUPEE_BOUNCE); + } + type = this->type; + this->type = param_2->type; + sub_08080CB4(this); + this->type = type; +} + +void Object96_Action3(Entity* this, const struct_gUnk_08123FB0* param_2) { + u8 type; + + if (gPlayerState.flags & 0x80) { + sub_0800445C(this); + } else { + if (IsCollidingPlayer(this)) { + CreateItemEntity(param_2->type, this->type2, 0); + if (param_2->flag) { + SetFlag(param_2->flag); + } + DeleteThisEntity(); + } + } + type = this->type; + this->type = param_2->type; + sub_08080CB4(this); + this->type = type; +} + +void sub_0809D91C(Entity* this) { + Entity* fxEnt; + + fxEnt = CreateFx(this, FX_DASH, 0); + if (fxEnt != NULL) { + SortEntityBelow(this, fxEnt); + } + SoundReq(SFX_SECRET); +} + +bool32 sub_0809D93C(Entity* this, const struct_gUnk_08123FB0* param_2) { + u32 uVar1; + + if (gPlayerEntity.action == 6 && ((param_2->unk0c >> gPlayerEntity.animationState & 1) != 0)) { + uVar1 = (gPlayerEntity.x.HALF.HI - this->x.HALF.HI) + param_2->unk08 + param_2->unk0a; + if (param_2->unk0a * 2 <= (u16)uVar1) { + return 0; + } + + uVar1 = (gPlayerEntity.y.HALF.HI - (this->y.HALF.HI + param_2->y)) + param_2->unk09 + param_2->unk0b; + if (param_2->unk0b * 2 > (u16)uVar1) { + return 1; + } + } + return 0; +} diff --git a/src/object/object98.c b/src/object/object98.c new file mode 100644 index 00000000..798836dc --- /dev/null +++ b/src/object/object98.c @@ -0,0 +1,68 @@ +#define NENT_DEPRECATED +#include "entity.h" +#include "projectile.h" +#include "room.h" +#include "functions.h" + +typedef struct { + Entity base; + u8 filler[0xC]; + u16 unk74; + u16 unk76; + u8 filler2[0x6]; + u8 unk7e; +} Object98Entity; + +void sub_0809E360(Object98Entity*); +void sub_0809E3E4(Object98Entity*); + +void Object98(Entity* this) { + static void (*const actionFuncs[])(Object98Entity*) = { + sub_0809E360, + sub_0809E3E4, + }; + + actionFuncs[this->action]((Object98Entity*)this); +} + +void sub_0809E360(Object98Entity* this) { + u32 bVar1; + Entity* projEnt; + u32 index; + + if (8 < super->actionDelay) { + super->actionDelay = 8; + } + + if (0x48 - super->actionDelay > gEntCount) { + for (index = 0; index < super->actionDelay; index++) { + projEnt = CreateProjectile(GURUGURU_BAR_PROJECTILE); + projEnt->actionDelay = 14 + 12 * index; + projEnt->parent = super; + } + + super->action = 1; + bVar1 = this->unk7e; + this->unk76 = bVar1 << 8; + super->animationState = bVar1 << 6; + SetDefaultPriority(super, 0); + if (super->type != 0) { + super->child = (Entity*)GetCurrentRoomProperty(super->type); + sub_080A2CC0(super, (u16**)&super->child, &this->unk74); + } + } +} + +void sub_0809E3E4(Object98Entity* this) { + this->unk76 += super->type2; + super->animationState = this->unk76 >> 2; + if (super->type != 0) { + if ((super->direction & 0x80) == 0) { + LinearMoveUpdate(super); + } + + if (--this->unk74 == 0) { + sub_080A2CC0(super, (u16**)&super->child, &this->unk74); + } + } +} diff --git a/src/object/object99.c b/src/object/object99.c new file mode 100644 index 00000000..e8bf6a33 --- /dev/null +++ b/src/object/object99.c @@ -0,0 +1,39 @@ +#include "entity.h" +#include "coord.h" + +void Object99(Entity* this) { + Entity* parent; + + parent = this->parent; + if (parent->next == NULL) { + DeleteThisEntity(); + } + + if (this->action == 0) { + this->action = 1; + this->field_0x76.HALF.LO = parent->animationState; + this->field_0x74.HALF.LO = this->spriteOffsetX; + this->field_0x74.HALF.HI = this->spriteOffsetY; + InitializeAnimation(this, this->animationState); + } + + if (parent->animationState != this->field_0x76.HALF.LO) { + DeleteThisEntity(); + } + this->spriteSettings.draw = parent->spriteSettings.draw; + CopyPositionAndSpriteOffset(parent, this); + this->spriteOffsetX += this->field_0x74.HALF.LO; + this->spriteOffsetY += this->field_0x74.HALF.HI; + if (this->animationState != 2) { + this->y.HALF.HI++; + this->spriteOffsetY--; + } else { + this->y.HALF.HI--; + this->spriteOffsetY++; + } + + GetNextFrame(this); + if (this->frame & 0x80) { + DeleteThisEntity(); + } +} diff --git a/src/object/objectA6.c b/src/object/objectA6.c new file mode 100644 index 00000000..fc77a54e --- /dev/null +++ b/src/object/objectA6.c @@ -0,0 +1,51 @@ +#define NENT_DEPRECATED +#include "entity.h" +#include "flags.h" +#include "hitbox.h" +#include "effects.h" + +typedef struct { + Entity base; + u8 filler[0x1E]; + u16 objFlags; +} ObjectA6Entity; + +void sub_0809F920(ObjectA6Entity*); +void sub_0809F964(ObjectA6Entity*); + +void ObjectA6(Entity* this) { + static void (*const actionFuncs[])(ObjectA6Entity*) = { + sub_0809F920, + sub_0809F964, + }; + + actionFuncs[this->action]((ObjectA6Entity*)this); +} + +void sub_0809F920(ObjectA6Entity* this) { + if (CheckFlags(this->objFlags)) { + DeleteThisEntity(); + } + + super->action = 1; + COLLISION_ON(super); + super->field_0x3c = 7; + super->hurtType = 0x48; + super->hitType = 1; + super->flags2 = 2; + super->hitbox = (Hitbox*)&gHitbox_0; +} + +void sub_0809F964(ObjectA6Entity* this) { + Entity* fxEnt; + + if (super->bitfield == 0xa1) { + fxEnt = CreateFx(super, FX_MAGIC_STORM, 0); + if (fxEnt != NULL) { + fxEnt->spritePriority.b0 = 3; + fxEnt->spriteOffsetY = -5; + } + SetFlag(this->objFlags); + DeleteThisEntity(); + } +} diff --git a/src/object/objectA9.c b/src/object/objectA9.c new file mode 100644 index 00000000..6d9981ba --- /dev/null +++ b/src/object/objectA9.c @@ -0,0 +1,37 @@ +#define NENT_DEPRECATED +#include "entity.h" +#include "sound.h" + +void sub_0809FEF8(Entity*); +void sub_0809FF28(Entity*); + +void ObjectA9(Entity* this) { + static void (*const actionFuncs[])(Entity*) = { + sub_0809FEF8, + sub_0809FF28, + DeleteEntity, + }; + + actionFuncs[this->action]((Entity*)this); +} + +void sub_0809FEF8(Entity* this) { + static const u8 typeAnimationStates[] = { 0x2, 0x0, 0x43, 0x0 }; + static const u16 typeSounds[] = { SFX_124, SFX_197, SFX_11D, SFX_NONE }; + this->action = 1; + InitializeAnimation(this, typeAnimationStates[this->type]); + SoundReq(typeSounds[this->type]); +} + +void sub_0809FF28(Entity* this) { + Entity* pEVar1; + + GetNextFrame(this); + if (this->frame & 0x80) { + this->action = 2; + pEVar1 = this->parent; + pEVar1->flags = this->actionDelay; + pEVar1->spriteSettings.draw = this->field_0xf; + ((GenericEntity*)pEVar1)->field_0x6c.HALF.HI &= 0xef; + } +} diff --git a/src/object/objectAB.c b/src/object/objectAB.c new file mode 100644 index 00000000..767c5238 --- /dev/null +++ b/src/object/objectAB.c @@ -0,0 +1,59 @@ +#define NENT_DEPRECATED +#include "entity.h" +#include "flags.h" +#include "asm.h" +#include "player.h" +#include "coord.h" + +extern void sub_0805B390(u32); + +void ObjectAB_Init(Entity*); +void ObjectAB_Action1(Entity*); +void ObjectAB_Action2(Entity*); +void sub_080A0190(Entity*); + +void ObjectAB(Entity* this) { + static void (*const actionFuncs[])(Entity*) = { + ObjectAB_Init, + ObjectAB_Action1, + ObjectAB_Action2, + }; + + actionFuncs[this->action]((Entity*)this); +} + +void ObjectAB_Init(Entity* this) { + this->action++; + this->collisionLayer = 1; + this->spriteRendering.b3 = 3; + this->spritePriority.b0 = 7; + this->subAction = 0; + InitializeAnimation(this, 0); +} + +void ObjectAB_Action1(Entity* this) { + if (CheckRoomFlag(0)) { + GetNextFrame(this); + if (this->frame & 0x80) { + this->action++; + } + } +} + +void ObjectAB_Action2(Entity* this) { + if (CheckRoomFlag(1)) { + sub_080A0190(this); + RequestPriorityDuration(this, 0x1e); + if (EntityInRectRadius(this, &gPlayerEntity, 0x10, 0x10)) { + sub_0805B390(0x37); + } + } +} + +void sub_080A0190(Entity* this) { + this->subAction = 1; + CopyPosition(this, &gPlayerEntity); + gPlayerState.queued_action = 3; + gPlayerState.field_0x38 = 0; + gPlayerState.flags |= PL_PIT_IS_EXIT; +} diff --git a/src/object/objectAD.c b/src/object/objectAD.c new file mode 100644 index 00000000..ca73277e --- /dev/null +++ b/src/object/objectAD.c @@ -0,0 +1,54 @@ +#define NENT_DEPRECATED +#include "entity.h" +#include "functions.h" +#include "screen.h" + +void sub_080A04A4(Entity*); +void sub_080A04E0(Entity*); +void sub_080A04E8(); + +void ObjectAD(Entity* this) { + static void (*const actionFuncs[])(Entity*) = { + sub_080A04A4, + sub_080A04E0, + }; + + actionFuncs[this->action]((Entity*)this); +} + +void sub_080A04A4(Entity* this) { + this->action = 1; + this->frameIndex = 4; + this->actionDelay = 0; + this->spriteRendering.b3 = 3; + this->spritePriority.b0 = 7; + this->z.WORD = 0; + this->spriteRendering.alphaBlend = 1; + sub_080A04E8(); +} + +void sub_080A04E0(Entity* this) { + sub_080A04E8(); +} + +void sub_080A04E8(Entity* this) { + int iVar2; + u32 uVar3; + + iVar2 = (this->parent->z.HALF.HI < 0 ? -this->parent->z.HALF.HI : this->parent->z.HALF.HI) + 0x100; + SetAffineInfo(this, iVar2, iVar2, 0); + iVar2 = ((0x1c0 - iVar2) * 10) / iVar2; + if (this->parent->type == 0x41) { + uVar3 = iVar2 * 2; + if (0xc < uVar3) { + uVar3 = 0xc; + } + iVar2 = (0x10 - iVar2) * 0x100; + iVar2 |= uVar3; + iVar2 &= 0xffff; + } else { + iVar2 |= (0x10 - iVar2) * 0x100; + iVar2 &= 0xffff; + } + gScreen.controls.alphaBlend = iVar2; +} diff --git a/src/object/objectB.c b/src/object/objectB.c index f0cfc4e5..fbf4ef50 100644 --- a/src/object/objectB.c +++ b/src/object/objectB.c @@ -124,7 +124,7 @@ void ObjectB_Action2(ObjectBEntity* this) { break; } MessageFromTarget(messageIndex); - gMessage.field_0x10 = super->type2; + gMessage.rupees = super->type2; } } } diff --git a/src/object/objectB4.c b/src/object/objectB4.c new file mode 100644 index 00000000..90c3b287 --- /dev/null +++ b/src/object/objectB4.c @@ -0,0 +1,135 @@ +#define NENT_DEPRECATED +#include "entity.h" +#include "menu.h" +#include "coord.h" +#include "object.h" + +extern void sub_0806FB00(Entity*, u32, u32, u32); +extern bool32 sub_0806FB38(Entity*); + +void ObjectB4_Type0(Entity*); +void ObjectB4_Type1(Entity*); +void ObjectB4_Type2(Entity*); +void ObjectB4_Type3(Entity*); + +const u16 gUnk_08124B10[] = { 0x40, 0x58, 0x68, 0x80, 0x94, 0xA8, 0xB0, 0x0 }; + +void ObjectB4(Entity* this) { + static void (*const typeFuncs[])(Entity*) = { + ObjectB4_Type0, + ObjectB4_Type1, + ObjectB4_Type2, + ObjectB4_Type3, + }; + + typeFuncs[this->type]((Entity*)this); +} + +void ObjectB4_Type0(Entity* this) { + Entity* pEVar3; + + switch (this->action) { + case 0: + this->action = 1; + this->spriteSettings.draw = 2; + this->frameIndex = 9; + this->actionDelay = 8; + this->field_0xf = 0; + this->spriteRendering.b3 = 1; + this->spritePriority.b0 = 4; + this->spriteOrientation.flipY = 1; + sub_0806FB00(this, 0xbf, 0x48, 0x1e); + break; + case 1: + if ((this->field_0xf < 7) && (--this->actionDelay == 0)) { + this->actionDelay = 1; + pEVar3 = CreateObject(OBJECT_B4, 1, this->field_0xf); + if (pEVar3 != NULL) { + CopyPosition(this, pEVar3); + pEVar3->y.HALF.HI = 0x68; + SortEntityBelow(this, pEVar3); + } + this->field_0xf++; + } + + if (sub_0806FB38(this) || (1 < gMenu.menuType)) { + this->x.HALF.HI = 0xbf; + this->y.HALF.HI = 0x48; + this->frameIndex = 10; + this->action = 2; + while (this->field_0xf < 7) { + pEVar3 = CreateObject(OBJECT_B4, 1, this->field_0xf); + if (pEVar3 != NULL) { + CopyPosition(this, pEVar3); + pEVar3->y.HALF.HI = 0x68; + SortEntityBelow(this, pEVar3); + } + this->field_0xf++; + } + + pEVar3 = CreateObject(OBJECT_B4, 2, 0); + if (pEVar3 != NULL) { + pEVar3->x.HALF.HI = 0xc4; + pEVar3->y.HALF.HI = 0x2c; + SortEntityAbove(this, pEVar3); + } + + pEVar3 = CreateObject(OBJECT_B4, 3, 0); + if (pEVar3 != NULL) { + pEVar3->x.HALF.HI = 0xb4; + pEVar3->y.HALF.HI = 0x19; + SortEntityAbove(this, pEVar3); + } + } + } +} + +void ObjectB4_Type1(Entity* this) { + switch (this->action) { + case 0: + this->action = 1; + this->spriteSettings.draw = 2; + this->frameIndex = this->type2 + 2; + sub_0806FB00(this, gUnk_08124B10[this->type2], 0x68, 0x14); + break; + case 1: + if (sub_0806FB38(this) || 1 < gMenu.menuType) { + this->x.HALF.HI = gUnk_08124B10[this->type2]; + this->y.HALF.HI = 0x68; + this->spritePriority.b0 = 7 - this->type2; + this->action = 2; + } + break; + } +} + +void ObjectB4_Type2(Entity* this) { + static const u8 gUnk_08124B30[] = { 9, 10, 11, 12, 11, 10, 9, -1 }; + if (this->action == 0) { + this->action = 1; + this->spriteSettings.draw = 2; + this->spriteRendering.b3 = 1; + this->spritePriority.b0 = 0; + this->spriteOrientation.flipY = 1; + this->frameIndex = 11; + this->actionDelay = (Random() & 0x3f) + 0x40; + this->field_0xf = 0; + } + + if (--this->actionDelay == 0) { + this->actionDelay = 4; + this->frameIndex = gUnk_08124B30[this->field_0xf++] + 2; + if (gUnk_08124B30[this->field_0xf] == 0xff) { + this->actionDelay = (Random() & 0x3f) + 0x40; + this->field_0xf = 0; + } + } +} + +void ObjectB4_Type3(Entity* this) { + if (this->action == 0) { + this->action = 1; + this->spriteSettings.draw = 2; + this->frameIndex = 15; + } +} diff --git a/src/script.c b/src/script.c index a6a4e36c..8fb780b8 100644 --- a/src/script.c +++ b/src/script.c @@ -1884,7 +1884,7 @@ void sub_0807F78C(Entity* entity, ScriptExecutionContext* context) { msg = GetSaleItemConfirmMessageID(item); price = GetItemPrice(item); MessageNoOverlap(msg, entity); - gMessage.field_0x10 = (u16)price; + gMessage.rupees = (u16)price; } void sub_0807F7C4(Entity* entity, ScriptExecutionContext* context) { @@ -1929,7 +1929,7 @@ void sub_0807F854(Entity* entity, ScriptExecutionContext* context) { switch (idx) { case 0: case 1: - gMessage.field_0x10 = value; + gMessage.rupees = value; break; case 2: gMessage.field_0x14 = value;