diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/battle_2.c | 61 |
1 files changed, 61 insertions, 0 deletions
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 |