diff options
author | Thomas Winwood <twwinwood@gmail.com> | 2018-06-18 07:14:06 +0100 |
---|---|---|
committer | Thomas Winwood <twwinwood@gmail.com> | 2018-06-18 07:14:06 +0100 |
commit | 093d767eb6a943a5ef19fee69ab24398c3f7fa7b (patch) | |
tree | 6c6fb24cc67998a3760ae25bbd589450562d16e8 | |
parent | ba16882b301fa964207257648b2522bec6458341 (diff) |
Decompile sub_80DDC4C
(I didn't actually do this one, shinny did)
-rw-r--r-- | asm/ghost.s | 65 | ||||
-rw-r--r-- | src/ghost.c | 28 |
2 files changed, 28 insertions, 65 deletions
diff --git a/asm/ghost.s b/asm/ghost.s index acdc6c171..0ba071e60 100644 --- a/asm/ghost.s +++ b/asm/ghost.s @@ -7,71 +7,6 @@ @ ghost - thumb_func_start sub_80DDC4C -sub_80DDC4C: @ 80DDC4C - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x1 - strh r0, [r4, 0x2E] - adds r0, r4, 0 - bl TranslateAnimSpriteByDeltas - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r1, 0xA - bl Sin - ldrh r1, [r4, 0x24] - adds r0, r1 - strh r0, [r4, 0x24] - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r1, 0xF - bl Cos - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - ldrh r2, [r4, 0x38] - adds r0, r2, 0x5 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] - ldrh r0, [r4, 0x38] - lsls r2, 16 - asrs r2, 16 - cmp r2, 0 - beq _080DDC92 - cmp r2, 0xC4 - ble _080DDC9E -_080DDC92: - lsls r0, 16 - cmp r0, 0 - ble _080DDC9E - movs r0, 0xC4 - bl PlaySE -_080DDC9E: - movs r1, 0x3A - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080DDCBC - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _080DDCB8 @ =sub_807861C - str r0, [r4, 0x1C] - b _080DDCC2 - .align 2, 0 -_080DDCB8: .4byte sub_807861C -_080DDCBC: - adds r0, r4, 0 - bl sub_80DDCC8 -_080DDCC2: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80DDC4C - thumb_func_start sub_80DDCC8 sub_80DDCC8: @ 80DDCC8 push {r4,lr} diff --git a/src/ghost.c b/src/ghost.c index 6c3f11f61..042707bfb 100644 --- a/src/ghost.c +++ b/src/ghost.c @@ -45,4 +45,32 @@ void sub_80DDBD8(struct Sprite *sprite) { if (r0 <= 0) return; PlaySE12WithPanning(0xC4, gUnknown_0202F7D2); +} + +void sub_80DDC4C(struct Sprite *sprite) +{ + s16 r2; + s16 r0; + sprite->data[0] = 1; + TranslateAnimSpriteByDeltas(sprite); + sprite->pos2.x += Sin(sprite->data[5],10); + sprite->pos2.y += Cos(sprite->data[5],15); + + r2 = sprite->data[5]; + sprite->data[5] = (sprite->data[5] + 5) & 0xFF; + r0 = sprite->data[5]; + + if(r2 == 0 || r2 > 0xC4) + { + if(r0 > 0) + PlaySE(0xC4); + } + + if(sprite->data[6] == 0) + { + sprite->invisible = TRUE; + sprite->callback = sub_807861C; + } + else + sub_80DDCC8(sprite); }
\ No newline at end of file |