summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/non_matching/gyorg_female/sub_08046518.inc85
-rw-r--r--asm/non_matching/ropeGolden/sub_08038304.inc95
-rw-r--r--src/enemy/gyorgFemale.c38
-rw-r--r--src/enemy/ropeGolden.c44
4 files changed, 62 insertions, 200 deletions
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;