diff --git a/asm/non_matching/gyorg_female/sub_08046518.inc b/asm/non_matching/gyorg_female/sub_08046518.inc deleted file mode 100644 index 34dd8dc2..00000000 --- a/asm/non_matching/gyorg_female/sub_08046518.inc +++ /dev/null @@ -1,85 +0,0 @@ - .syntax unified - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - sub sp, #8 - ldr r1, _080465AC @ =gMapTop+0x5004 - ldr r2, _080465B0 @ =0xFFFFBCB0 - adds r0, r1, r2 - ldr r3, _080465B4 @ =0xFFFFECB0 - adds r2, r1, r3 - ldr r7, _080465B8 @ =0x00006658 - adds r7, r1, r7 - str r7, [sp, #4] - ldr r3, _080465BC @ =0xFFFFD658 - adds r6, r1, r3 - movs r1, #0x10 -_0804653A: - movs r5, #0x10 - movs r7, #0x80 - adds r7, r7, r0 - mov sl, r7 - adds r3, r2, #0 - adds r3, #0x80 - str r3, [sp] - ldr r7, [sp, #4] - adds r7, #0x40 - mov r8, r7 - movs r3, #0x40 - adds r3, r3, r6 - mov sb, r3 - subs r1, #1 - mov ip, r1 - adds r3, r0, #0 - adds r3, #0x20 - adds r4, r2, #0 - adds r4, #0x20 -_08046560: - ldrh r0, [r3] - strh r0, [r4] - ldrh r0, [r3] - lsls r0, r0, #1 - ldr r7, _080465AC @ =gMapTop+0x5004 - adds r0, r0, r7 - ldrh r1, [r0] - ldr r0, [sp, #4] - adds r2, r0, r5 - ldr r7, _080465C0 @ =gUnk_080B37A0 - adds r0, r1, r7 - ldrb r0, [r0] - strb r0, [r2] - adds r2, r6, r5 - ldr r0, _080465C4 @ =gUnk_080B3E80 - adds r1, r1, r0 - ldrb r0, [r1] - strb r0, [r2] - subs r3, #2 - subs r4, #2 - subs r5, #1 - cmp r5, #0 - bne _08046560 - mov r0, sl - ldr r2, [sp] - mov r1, r8 - str r1, [sp, #4] - mov r6, sb - mov r1, ip - cmp r1, #0 - bne _0804653A - 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 -_080465AC: .4byte gMapTop+0x5004 -_080465B0: .4byte 0xFFFFBCB0 -_080465B4: .4byte 0xFFFFECB0 -_080465B8: .4byte 0x00006658 -_080465BC: .4byte 0xFFFFD658 -_080465C0: .4byte gUnk_080B37A0 -_080465C4: .4byte gUnk_080B3E80 - .syntax divided diff --git a/asm/non_matching/ropeGolden/sub_08038304.inc b/asm/non_matching/ropeGolden/sub_08038304.inc deleted file mode 100644 index c0743c49..00000000 --- a/asm/non_matching/ropeGolden/sub_08038304.inc +++ /dev/null @@ -1,95 +0,0 @@ - - - .syntax unified - - .text - - push {r4, r5, r6, lr} - adds r4, r0, #0 - movs r1, #2 - bl UpdateAnimationVariableFrames - adds r0, r4, #0 - bl ProcessMovement0 - cmp r0, #0 - bne _08038334 - adds r0, r4, #0 - adds r0, #0x78 - ldrb r0, [r0] - ldrb r1, [r4, #0x15] - cmp r0, r1 - bne _08038330 -.ifdef EU - movs r0, #0x1e -.else - movs r0, #0x5a -.endif - strb r0, [r4, #0xf] - adds r0, r4, #0 - bl sub_080383AC - b _080383AA -_08038330: - strb r0, [r4, #0x15] - b _080383AA -_08038334: - ldrb r0, [r4, #0xe] - adds r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - movs r1, #0xa - bl __modsi3 - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0 - bne _080383AA - strb r0, [r4, #0xe] - adds r0, r4, #0 - adds r0, #0x78 - ldrb r0, [r0] - ldrb r3, [r4, #0x15] - cmp r0, r3 - bne _08038398 - bl Random - movs r1, #2 - ands r1, r0 - subs r1, #1 - lsls r1, r1, #0x1b - lsrs r1, r1, #0x18 - adds r0, r4, #0 - adds r0, #0x79 - lsls r5, r1, #0x18 - lsrs r3, r5, #0x18 - adds r2, r0, #0 - movs r6, #0x7a - adds r6, r6, r4 - mov ip, r6 - ldrb r0, [r2] - cmp r3, r0 - bne _08038388 - ldrb r6, [r6] - cmp r3, r6 - bne _08038388 - rsbs r0, r5, #0 - lsrs r1, r0, #0x18 -_08038388: - ldrb r0, [r2] - mov r3, ip - strb r0, [r3] - strb r1, [r2] - ldrb r0, [r4, #0x15] - adds r0, r0, r1 - movs r1, #0x18 - ands r0, r1 -_08038398: - strb r0, [r4, #0x15] - ldrb r0, [r4, #0x15] - lsrs r0, r0, #3 - strb r0, [r4, #0x14] - ldrb r1, [r4, #0x14] - adds r1, #4 - adds r0, r4, #0 - bl InitializeAnimation -_080383AA: - pop {r4, r5, r6, pc} - - .syntax divided diff --git a/src/enemy/gyorgFemale.c b/src/enemy/gyorgFemale.c index edd88119..6a8e11d8 100644 --- a/src/enemy/gyorgFemale.c +++ b/src/enemy/gyorgFemale.c @@ -240,30 +240,30 @@ void sub_080464C0(GyorgFemaleEntity* this) { gUpdateVisibleTiles = 1; } -NONMATCH("asm/non_matching/gyorg_female/sub_08046518.inc", void sub_08046518(void)) { - u32 r5; - u16* stack1; - u8* stack2; - u8* r6; +#define sub_08046518_offset 0x658 + +void sub_08046518(void) { + u16* ptr = gMapTop.metatileTypes; + u16* sl = &gMapTop.mapData[sub_08046518_offset]; + u16* stack1 = &gMapTop.mapDataClone[sub_08046518_offset]; + u8* stack2 = &gMapTop.unkData3[sub_08046518_offset]; + u8* r6 = &gMapTop.collisionData[sub_08046518_offset]; u32 i; - u16* sl; - sl = &gMapTop.metatileTypes[0xFFFFBCB0]; - stack1 = &gMapTop.metatileTypes[0xFFFFECB0]; - stack2 = (u8*)&gMapTop.metatileTypes[0x00006658]; - r6 = (u8*)&gMapTop.metatileTypes[0xFFFFD658]; - for (i = 0; i < 0x10; i++) { + for (i = 0x10; i != 0; i--) { + u32 j; + for (j = 0x10; j != 0; j--) { + u16 new_var; + stack1[j] = sl[j]; + new_var = ptr[sl[j]]; + stack2[j] = gUnk_080B37A0[new_var]; + r6[j] = gUnk_080B3E80[new_var]; + } sl += 0x40; stack1 += 0x40; - for (r5 = 0; r5 < 0x10; r5++) { - stack1[r5] = sl[r5]; - stack2[r5] = gUnk_080B37A0[gMapTop.metatileTypes[sl[r5]]]; - r6[r5] = gUnk_080B3E80[gMapTop.metatileTypes[sl[r5]]]; - } - stack2 = stack2 + 0x40; - r6 = r6 + 0x40; + stack2 += 0x40; + r6 += 0x40; } } -END_NONMATCH void sub_080465C8(void) { s32 x, y; diff --git a/src/enemy/ropeGolden.c b/src/enemy/ropeGolden.c index 025eaae1..b8921b9a 100644 --- a/src/enemy/ropeGolden.c +++ b/src/enemy/ropeGolden.c @@ -96,7 +96,49 @@ void sub_080382EC(Entity* this) { } } -ASM_FUNC("asm/non_matching/ropeGolden/sub_08038304.inc", void sub_08038304(Entity* this)) +void sub_08038304(Entity* this) { + u32 cVar2; + s32 tmp; + u32 tmp3; + u32 h; + + UpdateAnimationVariableFrames(this, 2); + if (!ProcessMovement0(this)) { + if (this->field_0x78.HALF.LO == this->direction) { +#ifdef EU + this->subtimer = 30; +#else + this->subtimer = 90; +#endif + sub_080383AC(this); + } else { + this->direction = this->field_0x78.HALF.LO; + } + } else { + tmp = 10; + if ((u8)((++this->timer) % tmp) == 0) { + this->timer = 0; + if (this->field_0x78.HALF.LO == this->direction) { + cVar2 = ((Random() & 2) - 1) << 27; + cVar2 = cVar2 >> 24; + h = this->field_0x78.HALF.HI; + tmp3 = (u8)cVar2 << 24; + if (tmp3 >> 24 == h) { + if (h == this->field_0x7a.HALF.LO) { + cVar2 = -tmp3 >> 24; + } + } + this->field_0x7a.HALF.LO = this->field_0x78.HALF.HI; + this->field_0x78.HALF.HI = cVar2; + this->direction = (this->direction + cVar2) & 0x18; + } else { + this->direction = this->field_0x78.HALF.LO; + } + this->animationState = this->direction >> 3; + InitializeAnimation(this, this->animationState + 4); + } + } +} void sub_080383AC(Entity* this) { u32 v;