diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/ghost.c | 95 |
1 files changed, 94 insertions, 1 deletions
diff --git a/src/ghost.c b/src/ghost.c index fdb2e52fa..16f4241c0 100644 --- a/src/ghost.c +++ b/src/ghost.c @@ -249,4 +249,97 @@ void sub_80DDFE8(struct Sprite *sprite) { void sub_80DE0FC(struct Sprite *sprite) { sub_8078764(sprite, 1); sprite->callback = &sub_80DE114; -}
\ No newline at end of file +} + +#ifdef NONMATCHING /* I couldn't do this one. */ +void sub_80DE114(struct Sprite *sprite) {} +#else +NAKED +void sub_80DE114(struct Sprite *sprite) { + asm_unified("\tpush {r4-r6,lr}\n" + "\tadds r3, r0, 0\n" + "\tmovs r5, 0\n" + "\tmovs r6, 0\n" + "\tadds r0, 0x3F\n" + "\tldrb r1, [r0]\n" + "\tmovs r0, 0x10\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbeq _080DE1AA\n" + "\tadds r1, r3, 0\n" + "\tadds r1, 0x3E\n" + "\tldrb r2, [r1]\n" + "\tmovs r0, 0x4\n" + "\tands r0, r2\n" + "\tadds r4, r1, 0\n" + "\tcmp r0, 0\n" + "\tbne _080DE13E\n" + "\tmovs r0, 0x4\n" + "\torrs r0, r2\n" + "\tstrb r0, [r4]\n" + "_080DE13E:\n" + "\tmovs r1, 0x2E\n" + "\tldrsh r0, [r3, r1]\n" + "\tcmp r0, 0\n" + "\tbeq _080DE14E\n" + "\tcmp r0, 0x1\n" + "\tbeq _080DE158\n" + "\tmovs r6, 0x1\n" + "\tb _080DE162\n" + "_080DE14E:\n" + "\tmovs r1, 0x30\n" + "\tldrsh r0, [r3, r1]\n" + "\tcmp r0, 0x2\n" + "\tbne _080DE162\n" + "\tb _080DE166\n" + "_080DE158:\n" + "\tmovs r1, 0x30\n" + "\tldrsh r0, [r3, r1]\n" + "\tcmp r0, 0x4\n" + "\tbne _080DE162\n" + "\tmovs r5, 0x1\n" + "_080DE162:\n" + "\tcmp r5, 0\n" + "\tbeq _080DE198\n" + "_080DE166:\n" + "\tldrb r2, [r4]\n" + "\tlsls r0, r2, 29\n" + "\tlsrs r0, 31\n" + "\tmovs r1, 0x1\n" + "\teors r1, r0\n" + "\tlsls r1, 2\n" + "\tmovs r0, 0x5\n" + "\tnegs r0, r0\n" + "\tands r0, r2\n" + "\torrs r0, r1\n" + "\tstrb r0, [r4]\n" + "\tldrh r0, [r3, 0x32]\n" + "\tadds r0, 0x1\n" + "\tmovs r1, 0\n" + "\tstrh r0, [r3, 0x32]\n" + "\tstrh r1, [r3, 0x30]\n" + "\tlsls r0, 16\n" + "\tasrs r0, 16\n" + "\tcmp r0, 0x5\n" + "\tbne _080DE1AA\n" + "\tstrh r1, [r3, 0x32]\n" + "\tldrh r0, [r3, 0x2E]\n" + "\tadds r0, 0x1\n" + "\tstrh r0, [r3, 0x2E]\n" + "\tb _080DE1AA\n" + "_080DE198:\n" + "\tcmp r6, 0\n" + "\tbeq _080DE1A4\n" + "\tadds r0, r3, 0\n" + "\tbl DestroyAnimSprite\n" + "\tb _080DE1AA\n" + "_080DE1A4:\n" + "\tldrh r0, [r3, 0x30]\n" + "\tadds r0, 0x1\n" + "\tstrh r0, [r3, 0x30]\n" + "_080DE1AA:\n" + "\tpop {r4-r6}\n" + "\tpop {r0}\n" + "\tbx r0\n"); +} +#endif
\ No newline at end of file |