diff options
author | camthesaxman <cameronghall@cox.net> | 2017-05-10 22:12:56 -0500 |
---|---|---|
committer | camthesaxman <cameronghall@cox.net> | 2017-05-10 22:12:56 -0500 |
commit | 00716b43945e530c5b58322c778c2c25d238e950 (patch) | |
tree | 2f0fdd3aa66694a8e9fe5bc5a29c2979b7eff93a | |
parent | 6f823c45c68df74b303a0533933db081746c4bee (diff) |
decompile more
-rw-r--r-- | asm/battle_2.s | 121 | ||||
-rw-r--r-- | src/battle_2.c | 61 |
2 files changed, 61 insertions, 121 deletions
diff --git a/asm/battle_2.s b/asm/battle_2.s index 22ede0c37..f21399d8c 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -6,127 +6,6 @@ .text - thumb_func_start sub_800F808 -sub_800F808: @ 800F808 - push {lr} - bl AnimateSprites - bl BuildOamBuffer - ldr r0, _0800F824 @ =gUnknown_03004210 - bl sub_800374C - bl UpdatePaletteFade - bl RunTasks - pop {r0} - bx r0 - .align 2, 0 -_0800F824: .4byte gUnknown_03004210 - thumb_func_end sub_800F808 - - thumb_func_start sub_800F828 -sub_800F828: @ 800F828 - movs r1, 0 - strh r1, [r0, 0x2E] - ldr r1, _0800F834 @ =sub_800F838 - str r1, [r0, 0x1C] - bx lr - .align 2, 0 -_0800F834: .4byte sub_800F838 - thumb_func_end sub_800F828 - - thumb_func_start sub_800F838 -sub_800F838: @ 800F838 - push {r4,r5,lr} - adds r3, r0, 0 - ldr r5, _0800F850 @ =0x02000000 - movs r0, 0x2E - ldrsh r1, [r3, r0] - cmp r1, 0x1 - beq _0800F86C - cmp r1, 0x1 - bgt _0800F854 - cmp r1, 0 - beq _0800F85A - b _0800F8DC - .align 2, 0 -_0800F850: .4byte 0x02000000 -_0800F854: - cmp r1, 0x2 - beq _0800F8C8 - b _0800F8DC -_0800F85A: - ldrh r0, [r3, 0x2E] - adds r0, 0x1 - strh r0, [r3, 0x2E] - strh r1, [r3, 0x30] - ldr r0, _0800F8C4 @ =0x00000281 - strh r0, [r3, 0x32] - strh r1, [r3, 0x34] - movs r0, 0x1 - strh r0, [r3, 0x36] -_0800F86C: - ldrh r0, [r3, 0x36] - subs r0, 0x1 - strh r0, [r3, 0x36] - lsls r0, 16 - cmp r0, 0 - bne _0800F8DC - movs r0, 0x2 - strh r0, [r3, 0x36] - movs r4, 0x30 - ldrsh r2, [r3, r4] - movs r0, 0x34 - ldrsh r1, [r3, r0] - lsls r1, 5 - adds r2, r1 - movs r4, 0x32 - ldrsh r0, [r3, r4] - subs r0, r1 - movs r4, 0x3D - lsls r0, 1 - adds r0, r5 - lsls r2, 1 - adds r2, r5 - movs r1, 0x1C -_0800F89A: - strh r4, [r2] - strh r4, [r0] - adds r0, 0x4 - adds r2, 0x4 - subs r1, 0x2 - cmp r1, 0 - bge _0800F89A - ldrh r0, [r3, 0x34] - adds r0, 0x1 - strh r0, [r3, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x15 - bne _0800F8DC - ldrh r0, [r3, 0x2E] - adds r0, 0x1 - strh r0, [r3, 0x2E] - movs r0, 0x20 - strh r0, [r3, 0x30] - b _0800F8DC - .align 2, 0 -_0800F8C4: .4byte 0x00000281 -_0800F8C8: - ldrh r0, [r3, 0x30] - subs r0, 0x1 - strh r0, [r3, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - bne _0800F8DC - ldr r0, _0800F8E4 @ =sub_800E7C4 - bl SetMainCallback2 -_0800F8DC: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0800F8E4: .4byte sub_800E7C4 - thumb_func_end sub_800F838 - thumb_func_start sub_800F8E8 sub_800F8E8: @ 800F8E8 push {r4-r7,lr} diff --git a/src/battle_2.c b/src/battle_2.c index 019d463fd..9a7011e35 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -109,6 +109,7 @@ void sub_800EC9C(void); void sub_800F104(void); void sub_800F298(void); void sub_800F808(void); +void sub_800F838(struct Sprite *); void sub_800F8E8(); void sub_800FCFC(void); void sub_8010824(void); @@ -816,3 +817,63 @@ void sub_800F298(void) break; } } + +void sub_800F808(void) +{ + AnimateSprites(); + BuildOamBuffer(); + sub_800374C(&gUnknown_03004210); + UpdatePaletteFade(); + RunTasks(); +} + +void sub_800F828(struct Sprite *sprite) +{ + sprite->data0 = 0; + sprite->callback = sub_800F838; +} + +void sub_800F838(struct Sprite *sprite) +{ + u16 *arr = (u16 *)ewram; + + switch (sprite->data0) + { + case 0: + sprite->data0++; + sprite->data1 = 0; + sprite->data2 = 0x281; + sprite->data3 = 0; + sprite->data4 = 1; + // fall through + case 1: + sprite->data4--; + if (sprite->data4 == 0) + { + s32 i; + s32 r2; + s32 r0; + + sprite->data4 = 2; + r2 = sprite->data1 + sprite->data3 * 32; + r0 = sprite->data2 - sprite->data3 * 32; + for (i = 0; i < 29; i += 2) + { + arr[r2 + i] = 0x3D; + arr[r0 + i] = 0x3D; + } + sprite->data3++; + if (sprite->data3 == 21) + { + sprite->data0++; + sprite->data1 = 32; + } + } + break; + case 2: + sprite->data1--; + if (sprite->data1 == 20) + SetMainCallback2(sub_800E7C4); + break; + } +}
\ No newline at end of file |