diff options
-rw-r--r-- | asm/battle_7.s | 625 | ||||
-rwxr-xr-x | include/asm.inc.h | 2 | ||||
-rw-r--r-- | src/battle_7.c | 173 |
3 files changed, 166 insertions, 634 deletions
diff --git a/asm/battle_7.s b/asm/battle_7.s index ad9f9c18a..080cb087e 100644 --- a/asm/battle_7.s +++ b/asm/battle_7.s @@ -6,631 +6,6 @@ .text - thumb_func_start sub_80327CC -sub_80327CC: @ 80327CC - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, _08032894 @ =gUnknown_081FAF24 - bl LoadCompressedObjectPic - movs r0, 0x1 - bl battle_get_side_with_given_state - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r0, _08032898 @ =gSpriteTemplate_81FAF34 - mov r8, r0 - adds r0, r5, 0 - movs r1, 0 - bl sub_8077ABC - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x1 - bl sub_8077ABC - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 8 - movs r0, 0x80 - lsls r0, 14 - adds r2, r0 - asrs r2, 16 - mov r0, r8 - adds r1, r4, 0 - movs r3, 0xC8 - bl CreateSprite - lsls r1, r5, 1 - adds r1, r5 - lsls r1, 2 - ldr r6, _0803289C @ =0x02017810 - adds r1, r6 - strb r0, [r1, 0x7] - ldr r7, _080328A0 @ =gSprites - ldrb r1, [r1, 0x7] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r7 - strh r5, [r0, 0x2E] - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _0803288A - movs r0, 0x3 - bl battle_get_side_with_given_state - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - adds r0, r5, 0 - movs r1, 0 - bl sub_8077ABC - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x1 - bl sub_8077ABC - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 8 - movs r0, 0x80 - lsls r0, 14 - adds r2, r0 - asrs r2, 16 - mov r0, r8 - adds r1, r4, 0 - movs r3, 0xC8 - bl CreateSprite - lsls r1, r5, 1 - adds r1, r5 - lsls r1, 2 - adds r1, r6 - strb r0, [r1, 0x7] - ldrb r1, [r1, 0x7] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r7 - strh r5, [r0, 0x2E] -_0803288A: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08032894: .4byte gUnknown_081FAF24 -_08032898: .4byte gSpriteTemplate_81FAF34 -_0803289C: .4byte 0x02017810 -_080328A0: .4byte gSprites - thumb_func_end sub_80327CC - - thumb_func_start sub_80328A4 -sub_80328A4: @ 80328A4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r5, r0, 0 - movs r0, 0 - mov r8, r0 - ldrh r0, [r5, 0x2E] - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080328E8 @ =gUnknown_02024BE0 - adds r0, r4, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080328EC @ =gSprites - adds r7, r0, r1 - adds r6, r7, 0 - adds r6, 0x3E - ldrb r1, [r6] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080328E0 - adds r0, r4, 0 - bl sub_8078874 - lsls r0, 24 - cmp r0, 0 - bne _080328F4 -_080328E0: - ldr r0, _080328F0 @ =sub_8032978 - str r0, [r5, 0x1C] - b _08032964 - .align 2, 0 -_080328E8: .4byte gUnknown_02024BE0 -_080328EC: .4byte gSprites -_080328F0: .4byte sub_8032978 -_080328F4: - ldr r0, _08032910 @ =gAnimScriptActive - ldrb r0, [r0] - cmp r0, 0 - bne _08032906 - ldrb r1, [r6] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08032918 -_08032906: - movs r0, 0x1 - mov r8, r0 - lsls r4, 2 - ldr r6, _08032914 @ =0x02017800 - b _08032938 - .align 2, 0 -_08032910: .4byte gAnimScriptActive -_08032914: .4byte 0x02017800 -_08032918: - lsls r0, r4, 2 - ldr r1, _08032970 @ =0x02017800 - adds r3, r0, r1 - ldrh r2, [r3, 0x2] - adds r4, r0, 0 - adds r6, r1, 0 - cmp r2, 0 - beq _08032938 - ldr r0, _08032974 @ =gEnemyMonElevation - adds r1, r2, 0 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0 - bne _08032938 - movs r0, 0x1 - mov r8, r0 -_08032938: - adds r0, r4, r6 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08032948 - movs r0, 0x1 - mov r8, r0 -_08032948: - ldrh r0, [r7, 0x20] - strh r0, [r5, 0x20] - ldrh r0, [r7, 0x24] - strh r0, [r5, 0x24] - adds r2, r5, 0 - adds r2, 0x3E - mov r0, r8 - lsls r3, r0, 2 - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - orrs r0, r3 - strb r0, [r2] -_08032964: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08032970: .4byte 0x02017800 -_08032974: .4byte gEnemyMonElevation - thumb_func_end sub_80328A4 - - thumb_func_start sub_8032978 -sub_8032978: @ 8032978 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - bx lr - thumb_func_end sub_8032978 - - thumb_func_start sub_8032984 -sub_8032984: @ 8032984 - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r6, r4, 0 - lsls r1, 16 - lsrs r5, r1, 16 - adds r0, r4, 0 - bl battle_side_get_owner - lsls r0, 24 - cmp r0, 0 - beq _080329FA - lsls r0, r4, 2 - ldr r3, _080329D0 @ =0x02017800 - adds r1, r0, r3 - ldrh r0, [r1, 0x2] - cmp r0, 0 - beq _080329AA - adds r5, r0, 0 -_080329AA: - ldr r0, _080329D4 @ =gEnemyMonElevation - adds r0, r5, r0 - ldrb r0, [r0] - cmp r0, 0 - beq _080329E0 - ldr r2, _080329D8 @ =gSprites - lsls r0, r4, 1 - adds r0, r4 - lsls r0, 2 - adds r0, r3, r0 - ldrb r1, [r0, 0x17] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _080329DC @ =sub_80328A4 - b _080329F8 - .align 2, 0 -_080329D0: .4byte 0x02017800 -_080329D4: .4byte gEnemyMonElevation -_080329D8: .4byte gSprites -_080329DC: .4byte sub_80328A4 -_080329E0: - ldr r2, _08032A00 @ =gSprites - lsls r0, r6, 1 - adds r0, r6 - lsls r0, 2 - adds r0, r3, r0 - ldrb r1, [r0, 0x17] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _08032A04 @ =sub_8032978 -_080329F8: - str r1, [r0] -_080329FA: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08032A00: .4byte gSprites -_08032A04: .4byte sub_8032978 - thumb_func_end sub_8032984 - - thumb_func_start sub_8032A08 -sub_8032A08: @ 8032A08 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08032A2C @ =gSprites - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - ldr r0, _08032A30 @ =0x02017810 - adds r1, r0 - ldrb r1, [r1, 0x7] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _08032A34 @ =sub_8032978 - str r1, [r0] - bx lr - .align 2, 0 -_08032A2C: .4byte gSprites -_08032A30: .4byte 0x02017810 -_08032A34: .4byte sub_8032978 - thumb_func_end sub_8032A08 - - thumb_func_start sub_8032A38 -sub_8032A38: @ 8032A38 - push {r4-r6,lr} - ldr r3, _08032AA4 @ =0x06000240 - movs r0, 0 - movs r6, 0xF0 - lsls r6, 8 -_08032A42: - adds r5, r0, 0x1 - movs r4, 0xF -_08032A46: - ldrh r1, [r3] - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - bne _08032A56 - adds r0, r6, 0 - orrs r0, r1 - strh r0, [r3] -_08032A56: - ldrh r1, [r3] - movs r2, 0xF0 - lsls r2, 4 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _08032A6A - adds r0, r2, 0 - orrs r0, r1 - strh r0, [r3] -_08032A6A: - ldrh r1, [r3] - movs r2, 0xF0 - movs r0, 0xF0 - ands r0, r1 - cmp r0, 0 - bne _08032A7C - adds r0, r1, 0 - orrs r0, r2 - strh r0, [r3] -_08032A7C: - ldrh r1, [r3] - movs r2, 0xF - movs r0, 0xF - ands r0, r1 - cmp r0, 0 - bne _08032A8E - adds r0, r1, 0 - orrs r0, r2 - strh r0, [r3] -_08032A8E: - adds r3, 0x2 - subs r4, 0x1 - cmp r4, 0 - bge _08032A46 - adds r0, r5, 0 - cmp r0, 0x8 - ble _08032A42 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08032AA4: .4byte 0x06000240 - thumb_func_end sub_8032A38 - - thumb_func_start sub_8032AA8 -sub_8032AA8: @ 8032AA8 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsls r2, r4, 2 - ldr r0, _08032AD4 @ =0x02017800 - adds r2, r0 - movs r3, 0 - movs r0, 0 - strh r0, [r2, 0x2] - ldr r0, _08032AD8 @ =gBattleMonForms - adds r0, r4, r0 - strb r3, [r0] - cmp r1, 0 - bne _08032ACC - adds r0, r4, 0 - bl sub_80324E0 -_08032ACC: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08032AD4: .4byte 0x02017800 -_08032AD8: .4byte gBattleMonForms - thumb_func_end sub_8032AA8 - - thumb_func_start nullsub_45 -nullsub_45: @ 8032ADC - bx lr - thumb_func_end nullsub_45 - - thumb_func_start sub_8032AE0 -sub_8032AE0: @ 8032AE0 - ldr r1, _08032AF0 @ =gUnknown_03004330 - ldr r0, _08032AF4 @ =gUnknown_02024A60 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _08032AF8 @ =sub_8032AFC - str r1, [r0] - bx lr - .align 2, 0 -_08032AF0: .4byte gUnknown_03004330 -_08032AF4: .4byte gUnknown_02024A60 -_08032AF8: .4byte sub_8032AFC - thumb_func_end sub_8032AE0 - - thumb_func_start sub_8032AFC -sub_8032AFC: @ 8032AFC - push {lr} - ldr r2, _08032B30 @ =gUnknown_02024A64 - ldr r1, _08032B34 @ =gBitTable - ldr r0, _08032B38 @ =gUnknown_02024A60 - ldrb r3, [r0] - lsls r0, r3, 2 - adds r0, r1 - ldr r1, [r2] - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _08032B48 - ldr r0, _08032B3C @ =gUnknown_02023A60 - lsls r1, r3, 9 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0x38 - bhi _08032B44 - ldr r0, _08032B40 @ =gUnknown_081FAF5C - ldrb r1, [r1] - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] - bl _call_via_r0 - b _08032B48 - .align 2, 0 -_08032B30: .4byte gUnknown_02024A64 -_08032B34: .4byte gBitTable -_08032B38: .4byte gUnknown_02024A60 -_08032B3C: .4byte gUnknown_02023A60 -_08032B40: .4byte gUnknown_081FAF5C -_08032B44: - bl sub_80334EC -_08032B48: - pop {r0} - bx r0 - thumb_func_end sub_8032AFC - - thumb_func_start sub_8032B4C -sub_8032B4C: @ 8032B4C - push {lr} - ldr r2, _08032B74 @ =gSprites - ldr r1, _08032B78 @ =gUnknown_02024BE0 - ldr r0, _08032B7C @ =gUnknown_02024A60 - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _08032B80 @ =SpriteCallbackDummy - cmp r1, r0 - bne _08032B70 - bl sub_80334EC -_08032B70: - pop {r0} - bx r0 - .align 2, 0 -_08032B74: .4byte gSprites -_08032B78: .4byte gUnknown_02024BE0 -_08032B7C: .4byte gUnknown_02024A60 -_08032B80: .4byte SpriteCallbackDummy - thumb_func_end sub_8032B4C - - thumb_func_start sub_8032B84 -sub_8032B84: @ 8032B84 - push {lr} - ldr r2, _08032BAC @ =gSprites - ldr r1, _08032BB0 @ =gUnknown_02024BE0 - ldr r0, _08032BB4 @ =gUnknown_02024A60 - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _08032BB8 @ =SpriteCallbackDummy - cmp r1, r0 - bne _08032BA8 - bl sub_80334EC -_08032BA8: - pop {r0} - bx r0 - .align 2, 0 -_08032BAC: .4byte gSprites -_08032BB0: .4byte gUnknown_02024BE0 -_08032BB4: .4byte gUnknown_02024A60 -_08032BB8: .4byte SpriteCallbackDummy - thumb_func_end sub_8032B84 - - thumb_func_start sub_8032BBC -sub_8032BBC: @ 8032BBC - push {r4-r6,lr} - ldr r4, _08032C34 @ =gSprites - ldr r6, _08032C38 @ =gUnknown_02024BE0 - ldr r5, _08032C3C @ =gUnknown_02024A60 - ldrb r0, [r5] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r2, r0, 2 - adds r0, r4, 0 - adds r0, 0x1C - adds r0, r2, r0 - ldr r1, [r0] - ldr r0, _08032C40 @ =SpriteCallbackDummy - cmp r1, r0 - bne _08032C2C - adds r0, r2, r4 - ldrh r0, [r0, 0x6] - bl sub_8031B74 - ldrb r0, [r5] - adds r0, r6 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrh r0, [r1, 0x38] - ldr r2, _08032C44 @ =0x000003ff - ands r2, r0 - ldrh r3, [r1, 0x4] - ldr r0, _08032C48 @ =0xfffffc00 - ands r0, r3 - orrs r0, r2 - strh r0, [r1, 0x4] - ldrb r0, [r5] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl FreeSpriteOamMatrix - ldrb r0, [r5] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - bl sub_80334EC -_08032C2C: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08032C34: .4byte gSprites -_08032C38: .4byte gUnknown_02024BE0 -_08032C3C: .4byte gUnknown_02024A60 -_08032C40: .4byte SpriteCallbackDummy -_08032C44: .4byte 0x000003ff -_08032C48: .4byte 0xfffffc00 - thumb_func_end sub_8032BBC - - thumb_func_start sub_8032C4C -sub_8032C4C: @ 8032C4C - push {lr} - ldr r3, _08032C80 @ =gUnknown_02024A60 - ldrb r0, [r3] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - ldr r2, _08032C84 @ =0x02017810 - adds r1, r2 - ldrb r0, [r1, 0x9] - subs r0, 0x1 - strb r0, [r1, 0x9] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _08032C7C - ldrb r0, [r3] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - movs r0, 0 - strb r0, [r1, 0x9] - bl sub_80334EC -_08032C7C: - pop {r0} - bx r0 - .align 2, 0 -_08032C80: .4byte gUnknown_02024A60 -_08032C84: .4byte 0x02017810 - thumb_func_end sub_8032C4C - thumb_func_start sub_8032C88 sub_8032C88: @ 8032C88 push {r4-r7,lr} diff --git a/include/asm.inc.h b/include/asm.inc.h index dbd3f0820..a63cf5635 100755 --- a/include/asm.inc.h +++ b/include/asm.inc.h @@ -24,7 +24,7 @@ void sub_802E3E4(u8, int); void nullsub_8(u8); // asm/battle_7.o -void sub_8032AA8(u8 index, int i); +void sub_8032AA8(u8, u8); // src/pokemon_3.o u16 SpeciesToNationalPokedexNum(u16); diff --git a/src/battle_7.c b/src/battle_7.c index 4288544cd..dad098192 100644 --- a/src/battle_7.c +++ b/src/battle_7.c @@ -29,14 +29,18 @@ struct Struct2019348 extern struct MusicPlayerInfo gMPlay_SE1; extern struct MusicPlayerInfo gMPlay_SE2; +extern u8 gUnknown_02023A60[][0x200]; extern u8 gUnknown_02024A60; +extern u32 gUnknown_02024A64; extern u8 gUnknown_02024A68; extern u16 gUnknown_02024A6A[]; extern u8 gUnknown_02024A72[]; extern u8 gUnknown_02024BE0[]; extern u16 gUnknown_02024DE8; extern u32 gUnknown_02024E70[]; +extern void (*gUnknown_03004330[])(void); extern u8 gUnknown_03004340[]; +extern u32 gBitTable[]; extern u16 gBattleTypeFlags; extern u8 gBattleMonForms[]; extern u8 gBattleAnimPlayerMonIndex; @@ -48,10 +52,13 @@ extern const u8 *const gBattleAnims_Unknown2[]; extern const struct SpriteSheet gTrainerFrontPicTable[]; extern const struct MonCoords gTrainerFrontPicCoords[]; extern const struct SpritePalette gTrainerFrontPicPaletteTable[]; -extern const struct SpriteSheet gUnknown_0820A47C; extern const u8 gSubstituteDollTilemap[]; extern const u8 gSubstituteDollGfx[]; extern const u8 gSubstituteDollPal[]; +extern const struct SpriteSheet gUnknown_081FAF24; +extern const struct SpriteTemplate gSpriteTemplate_81FAF34; +extern void (*const gUnknown_081FAF5C[])(void); +extern const struct SpriteSheet gUnknown_0820A47C; extern const struct SpriteSheet gUnknown_0820A484; extern const struct SpriteSheet gUnknown_0820A48C[]; extern const struct SpriteSheet gUnknown_0820A49C[]; @@ -62,6 +69,7 @@ extern const u8 gUnknown_08D09C48[]; #define ewram19348 (*(struct Struct2019348 *)(ewram + 0x19348)) +extern u8 sub_8077ABC(); extern u8 sub_8078874(u8); extern u8 sub_8077F68(u8); extern u8 sub_8077F7C(u8); @@ -77,8 +85,11 @@ void sub_80316CC(u8); void sub_8031F0C(void); void refresh_graphics_maybe(u8, u8, u8); void sub_80324E0(u8 a); - void sub_80327CC(void); +void sub_8032978(struct Sprite *); +void sub_80328A4(struct Sprite *); +void sub_8032AFC(void); +void sub_80334EC(void); void sub_80312F0(struct Sprite *sprite) { @@ -704,7 +715,7 @@ void sub_8032350(u8 a, u8 b) const u8 *gSubstituteDollPal_; void *src; s32 i; - + if (b == 0) { if (IsContest()) @@ -762,7 +773,7 @@ void sub_80324F8(struct Pokemon *pkmn, u8 b) { u16 hp = GetMonData(pkmn, MON_DATA_HP); u16 maxHP = GetMonData(pkmn, MON_DATA_MAX_HP); - + if (GetHPBarLevel(hp, maxHP) == 1) { if (!ewram17800[b].unk0_1) @@ -791,7 +802,7 @@ void sub_80324F8(struct Pokemon *pkmn, u8 b) void sub_80325B8(void) { u8 r4 = battle_get_side_with_given_state(0); - + ewram17800[r4].unk0_1 = 0; if (IsDoubleBattle()) ewram17800[r4 ^ 2].unk0_1 = 0; @@ -802,7 +813,7 @@ u8 unref_sub_8032604(struct Pokemon *pkmn) { u16 hp = GetMonData(pkmn, MON_DATA_HP); u16 maxHP = GetMonData(pkmn, MON_DATA_MAX_HP); - + return GetHPBarLevel(hp, maxHP); } @@ -814,7 +825,7 @@ void sub_8032638(void) u8 r9 = battle_get_side_with_given_state(2); u8 r4 = pokemon_order_func(gUnknown_02024A6A[r8]); u8 r5 = pokemon_order_func(gUnknown_02024A6A[r9]); - + if (GetMonData(&gPlayerParty[r4], MON_DATA_HP) != 0) sub_80324F8(&gPlayerParty[r4], r8); if (IsDoubleBattle()) @@ -828,7 +839,7 @@ void sub_8032638(void) void sub_80326EC(u8 a) { s32 i; - + for (i = 0; i < gUnknown_02024A68; i++) { if (sub_8078874(i) != 0) @@ -846,3 +857,149 @@ void sub_80326EC(u8 a) } } } + +void sub_80327CC(void) +{ + u8 r5; + + LoadCompressedObjectPic(&gUnknown_081FAF24); + r5 = battle_get_side_with_given_state(1); + ewram17810[r5].unk7 = CreateSprite(&gSpriteTemplate_81FAF34, sub_8077ABC(r5, 0), sub_8077ABC(r5, 1) + 32, 0xC8); + gSprites[ewram17810[r5].unk7].data0 = r5; + if (IsDoubleBattle()) + { + r5 = battle_get_side_with_given_state(3); + ewram17810[r5].unk7 = CreateSprite(&gSpriteTemplate_81FAF34, sub_8077ABC(r5, 0), sub_8077ABC(r5, 1) + 32, 0xC8); + gSprites[ewram17810[r5].unk7].data0 = r5; + } +} + +void sub_80328A4(struct Sprite *sprite) +{ + bool8 invisible = FALSE; + u8 r4 = sprite->data0; + struct Sprite *r7 = &gSprites[gUnknown_02024BE0[r4]]; + + if (!r7->inUse || sub_8078874(r4) == 0) + { + sprite->callback = sub_8032978; + return; + } + if (gAnimScriptActive || r7->invisible) + invisible = TRUE; + else if (ewram17800[r4].unk2 != 0 && gEnemyMonElevation[ewram17800[r4].unk2] == 0) + invisible = TRUE; + if (ewram17800[r4].unk0_2) + invisible = TRUE; + sprite->pos1.x = r7->pos1.x; + sprite->pos2.x = r7->pos2.x; + sprite->invisible = invisible; +} + +void sub_8032978(struct Sprite *sprite) +{ + sprite->invisible = TRUE; +} + +void sub_8032984(u8 a, u16 b) +{ + if (battle_side_get_owner(a) != 0) + { + if (ewram17800[a].unk2 != 0) + b = ewram17800[a].unk2; + if (gEnemyMonElevation[b] != 0) + gSprites[ewram17810[a].unk7].callback = sub_80328A4; + else + gSprites[ewram17810[a].unk7].callback = sub_8032978; + } +} + +void sub_8032A08(u8 a) +{ + gSprites[ewram17810[a].unk7].callback = sub_8032978; +} + +void sub_8032A38(void) +{ + u16 *ptr = (u16 *)(VRAM + 0x240); + s32 i; + s32 j; + + for (i = 0; i < 9; i++) + { + for (j = 0; j < 16; j++) + { + if (!(*ptr & 0xF000)) + *ptr |= 0xF000; + if (!(*ptr & 0x0F00)) + *ptr |= 0x0F00; + if (!(*ptr & 0x00F0)) + *ptr |= 0x00F0; + if (!(*ptr & 0x000F)) + *ptr |= 0x000F; + ptr++; + } + } +} + +void sub_8032AA8(u8 a, u8 b) +{ + ewram17800[a].unk2 = 0; + gBattleMonForms[a] = 0; + if (b == 0) + sub_80324E0(a); +} + +void nullsub_45(void) +{ +} + +void sub_8032AE0(void) +{ + gUnknown_03004330[gUnknown_02024A60] = sub_8032AFC; +} + +void sub_8032AFC(void) +{ + if (gUnknown_02024A64 & gBitTable[gUnknown_02024A60]) + { + if (gUnknown_02023A60[gUnknown_02024A60][0] <= 0x38) + gUnknown_081FAF5C[gUnknown_02023A60[gUnknown_02024A60][0]](); + else + sub_80334EC(); + } +} + +void sub_8032B4C(void) +{ + if (gSprites[gUnknown_02024BE0[gUnknown_02024A60]].callback == SpriteCallbackDummy) + sub_80334EC(); +} + +// Duplicate of sub_8032B4C +void sub_8032B84(void) +{ + if (gSprites[gUnknown_02024BE0[gUnknown_02024A60]].callback == SpriteCallbackDummy) + sub_80334EC(); +} + +void sub_8032BBC(void) +{ + if (gSprites[gUnknown_02024BE0[gUnknown_02024A60]].callback == SpriteCallbackDummy) + { + sub_8031B74(gSprites[gUnknown_02024BE0[gUnknown_02024A60]].oam.affineParam); + gSprites[gUnknown_02024BE0[gUnknown_02024A60]].oam.tileNum = gSprites[gUnknown_02024BE0[gUnknown_02024A60]].data5; + FreeSpriteOamMatrix(&gSprites[gUnknown_02024BE0[gUnknown_02024A60]]); + DestroySprite(&gSprites[gUnknown_02024BE0[gUnknown_02024A60]]); + sub_80334EC(); + } +} + +void sub_8032C4C(void) +{ + if ((--ewram17810[gUnknown_02024A60].unk9) == 0xFF) + { + ewram17810[gUnknown_02024A60].unk9 = 0; + sub_80334EC(); + } +} |