diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/battle/anim/heated_rock.c | 92 |
1 files changed, 8 insertions, 84 deletions
diff --git a/src/battle/anim/heated_rock.c b/src/battle/anim/heated_rock.c index 51cfbd007..055960f40 100644 --- a/src/battle/anim/heated_rock.c +++ b/src/battle/anim/heated_rock.c @@ -50,101 +50,25 @@ void sub_80D5994(struct Sprite *sprite, s16 x, s16 y) sprite->data[5] = y * 8; } -#ifdef NONMATCHING void sub_80D59B0(struct Sprite *sprite) { int var1; - int var2; - if (++sprite->data[0] > 2) { sprite->data[0] = 0; ++sprite->data[1]; - sprite->data[3] += ((u16)sprite->data[1] * (u16)sprite->data[1]); + var1 = (u16)sprite->data[1] * (u16)sprite->data[1]; + sprite->data[3] += var1; } - var1 = (u16)sprite->data[4] + (u16)sprite->data[2]; - sprite->data[2] = var1; - var1 = (s16)var1 >> 3; - sprite->pos1.x = var1; - - var2 = (u16)sprite->data[5] + (u16)sprite->data[3]; - sprite->data[3] = var2; - var2 = (s16)var2 >> 3; - sprite->pos1.y = var2; + sprite->data[2] += sprite->data[4]; + sprite->pos1.x = sprite->data[2] >> 3; + sprite->data[3] += sprite->data[5]; + sprite->pos1.y = sprite->data[3] >> 3; - if ((u32)((var1 + 8) << 16) > 0x1000000 || var2 < -8 || var2 > 120) - { - sprite->invisible = 1; - } -} -#else -__attribute__((naked)) -void sub_80D59B0(struct Sprite *sprite) -{ - asm(".syntax unified\n\ - push {lr}\n\ - adds r2, r0, 0\n\ - ldrh r0, [r2, 0x2E]\n\ - adds r0, 0x1\n\ - strh r0, [r2, 0x2E]\n\ - lsls r0, 16\n\ - asrs r0, 16\n\ - cmp r0, 0x2\n\ - ble _080D59DA\n\ - movs r0, 0\n\ - strh r0, [r2, 0x2E]\n\ - ldrh r0, [r2, 0x30]\n\ - adds r0, 0x1\n\ - strh r0, [r2, 0x30]\n\ - ldrh r0, [r2, 0x30]\n\ - adds r1, r0, 0\n\ - muls r1, r0\n\ - adds r0, r1, 0\n\ - ldrh r3, [r2, 0x34]\n\ - adds r0, r3\n\ - strh r0, [r2, 0x34]\n\ -_080D59DA:\n\ - ldrh r0, [r2, 0x36]\n\ - ldrh r1, [r2, 0x32]\n\ - adds r0, r1\n\ - strh r0, [r2, 0x32]\n\ - lsls r0, 16\n\ - asrs r0, 19\n\ - strh r0, [r2, 0x20]\n\ - ldrh r1, [r2, 0x38]\n\ - ldrh r3, [r2, 0x34]\n\ - adds r1, r3\n\ - strh r1, [r2, 0x34]\n\ - lsls r1, 16\n\ - asrs r3, r1, 19\n\ - strh r3, [r2, 0x22]\n\ - adds r0, 0x8\n\ - lsls r0, 16\n\ - movs r1, 0x80\n\ - lsls r1, 17\n\ - cmp r0, r1\n\ - bhi _080D5A10\n\ - adds r1, r3, 0\n\ - movs r0, 0x8\n\ - negs r0, r0\n\ - cmp r1, r0\n\ - blt _080D5A10\n\ - cmp r1, 0x78\n\ - ble _080D5A1C\n\ -_080D5A10:\n\ - adds r0, r2, 0\n\ - adds r0, 0x3E\n\ - ldrb r1, [r0]\n\ - movs r2, 0x4\n\ - orrs r1, r2\n\ - strb r1, [r0]\n\ -_080D5A1C:\n\ - pop {r0}\n\ - bx r0\n\ - .syntax divided\n"); + if (sprite->pos1.x < -8 || sprite->pos1.x > 0xf8 || sprite->pos1.y < -8 || sprite->pos1.y > 120) + sprite->invisible = TRUE; } -#endif // NONMATCHING void sub_80D5A20(struct Sprite *sprite) { |