diff options
-rw-r--r-- | asm/contest.s | 2 | ||||
-rw-r--r-- | asm/rom3.s | 619 | ||||
-rw-r--r-- | asm/rom_800D42C.s | 2 | ||||
-rw-r--r-- | include/link.h | 6 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | src/battle_anim.c | 2 | ||||
-rw-r--r-- | src/rom3.c | 257 |
7 files changed, 264 insertions, 625 deletions
diff --git a/asm/contest.s b/asm/contest.s index c98f5db0d..8a8a65edb 100644 --- a/asm/contest.s +++ b/asm/contest.s @@ -15034,7 +15034,7 @@ sub_80B2790: @ 80B2790 movs r1, 0 movs r2, 0x14 bl memset - bl sub_8075624 + bl battle_anim_clear_some_data ldr r1, _080B27F8 @ =gUnknown_02024E84 movs r2, 0 adds r0, r1, 0x3 diff --git a/asm/rom3.s b/asm/rom3.s index 94862459b..1717e3688 100644 --- a/asm/rom3.s +++ b/asm/rom3.s @@ -6,625 +6,6 @@ .text - thumb_func_start sub_800B858 -sub_800B858: @ 800B858 - push {lr} - ldr r0, _0800B87C @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0800B876 - bl OpenLink - ldr r0, _0800B880 @ =sub_8083C50 - movs r1, 0 - bl CreateTask - bl sub_800BF28 -_0800B876: - pop {r0} - bx r0 - .align 2, 0 -_0800B87C: .4byte gBattleTypeFlags -_0800B880: .4byte sub_8083C50 - thumb_func_end sub_800B858 - - thumb_func_start sub_800B884 -sub_800B884: @ 800B884 - push {r4-r7,lr} - sub sp, 0x14 - ldr r0, _0800B920 @ =gUnknown_030042D4 - ldr r1, _0800B924 @ =nullsub_41 - str r1, [r0] - movs r0, 0 - str r0, [sp, 0x10] - movs r1, 0 - ldr r7, _0800B928 @ =gUnknown_03004330 - ldr r6, _0800B92C @ =gUnknown_02024E60 - movs r2, 0 - ldr r5, _0800B930 @ =gUnknown_02024E64 - ldr r4, _0800B934 @ =nullsub_91 - ldr r3, _0800B938 @ =gUnknown_02024A72 -_0800B8A0: - lsls r0, r1, 2 - adds r0, r7 - str r4, [r0] - adds r1, r3 - movs r0, 0xFF - strb r0, [r1] - ldr r0, [sp, 0x10] - adds r0, r6 - strb r2, [r0] - ldr r0, [sp, 0x10] - adds r0, r5 - strb r2, [r0] - ldr r0, [sp, 0x10] - adds r0, 0x1 - str r0, [sp, 0x10] - adds r1, r0, 0 - cmp r1, 0x3 - ble _0800B8A0 - bl sub_800B858 - ldr r0, _0800B93C @ =gUnknown_02024A64 - movs r5, 0 - str r5, [r0] - bl sub_8075624 - bl sub_8040710 - bl BattleAI_HandleItemUseBeforeAISetup - ldr r0, _0800B940 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0800B90E - bl ZeroEnemyPartyMons - ldr r4, _0800B944 @ =gEnemyParty - movs r1, 0x8F - lsls r1, 1 - str r5, [sp] - str r5, [sp, 0x4] - str r5, [sp, 0x8] - str r5, [sp, 0xC] - adds r0, r4, 0 - movs r2, 0x2 - movs r3, 0x20 - bl CreateMon - str r5, [sp, 0x10] - adds r0, r4, 0 - movs r1, 0xC - add r2, sp, 0x10 - bl SetMonData -_0800B90E: - ldr r0, _0800B948 @ =gUnknown_020239FC - str r5, [r0] - ldr r0, _0800B94C @ =gUnknown_02024C78 - strb r5, [r0] - add sp, 0x14 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800B920: .4byte gUnknown_030042D4 -_0800B924: .4byte nullsub_41 -_0800B928: .4byte gUnknown_03004330 -_0800B92C: .4byte gUnknown_02024E60 -_0800B930: .4byte gUnknown_02024E64 -_0800B934: .4byte nullsub_91 -_0800B938: .4byte gUnknown_02024A72 -_0800B93C: .4byte gUnknown_02024A64 -_0800B940: .4byte gBattleTypeFlags -_0800B944: .4byte gEnemyParty -_0800B948: .4byte gUnknown_020239FC -_0800B94C: .4byte gUnknown_02024C78 - thumb_func_end sub_800B884 - - thumb_func_start sub_800B950 -sub_800B950: @ 800B950 - push {r4,r5,lr} - ldr r0, _0800B964 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0800B968 - bl sub_800BA78 - b _0800B96C - .align 2, 0 -_0800B964: .4byte gBattleTypeFlags -_0800B968: - bl sub_800B9A8 -_0800B96C: - bl sub_800BD54 - ldr r0, _0800B9A0 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _0800B99A - movs r4, 0 - ldr r0, _0800B9A4 @ =gUnknown_02024A68 - ldrb r1, [r0] - cmp r4, r1 - bge _0800B99A - adds r5, r0, 0 -_0800B988: - lsls r0, r4, 24 - lsrs r0, 24 - movs r1, 0 - bl sub_8094978 - adds r4, 0x1 - ldrb r0, [r5] - cmp r4, r0 - blt _0800B988 -_0800B99A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0800B9A0: .4byte gBattleTypeFlags -_0800B9A4: .4byte gUnknown_02024A68 - thumb_func_end sub_800B950 - - thumb_func_start sub_800B9A8 -sub_800B9A8: @ 800B9A8 - push {r4,lr} - ldr r0, _0800B9CC @ =gBattleTypeFlags - ldrh r2, [r0] - movs r0, 0x1 - ands r0, r2 - cmp r0, 0 - bne _0800BA28 - ldr r1, _0800B9D0 @ =gUnknown_030042D4 - ldr r0, _0800B9D4 @ =sub_8010800 - str r0, [r1] - movs r0, 0x80 - ands r0, r2 - cmp r0, 0 - beq _0800B9E0 - ldr r1, _0800B9D8 @ =gUnknown_03004330 - ldr r0, _0800B9DC @ =sub_812B468 - b _0800B9FC - .align 2, 0 -_0800B9CC: .4byte gBattleTypeFlags -_0800B9D0: .4byte gUnknown_030042D4 -_0800B9D4: .4byte sub_8010800 -_0800B9D8: .4byte gUnknown_03004330 -_0800B9DC: .4byte sub_812B468 -_0800B9E0: - movs r0, 0x80 - lsls r0, 2 - ands r0, r2 - cmp r0, 0 - beq _0800B9F8 - ldr r1, _0800B9F0 @ =gUnknown_03004330 - ldr r0, _0800B9F4 @ =sub_8137224 - b _0800B9FC - .align 2, 0 -_0800B9F0: .4byte gUnknown_03004330 -_0800B9F4: .4byte sub_8137224 -_0800B9F8: - ldr r1, _0800BA14 @ =gUnknown_03004330 - ldr r0, _0800BA18 @ =sub_802BF74 -_0800B9FC: - str r0, [r1] - adds r2, r1, 0 - ldr r1, _0800BA1C @ =gUnknown_02024A72 - movs r0, 0 - strb r0, [r1] - ldr r0, _0800BA20 @ =sub_8032AE0 - str r0, [r2, 0x4] - movs r0, 0x1 - strb r0, [r1, 0x1] - ldr r1, _0800BA24 @ =gUnknown_02024A68 - movs r0, 0x2 - b _0800BA52 - .align 2, 0 -_0800BA14: .4byte gUnknown_03004330 -_0800BA18: .4byte sub_802BF74 -_0800BA1C: .4byte gUnknown_02024A72 -_0800BA20: .4byte sub_8032AE0 -_0800BA24: .4byte gUnknown_02024A68 -_0800BA28: - ldr r1, _0800BA5C @ =gUnknown_030042D4 - ldr r0, _0800BA60 @ =sub_8010800 - str r0, [r1] - ldr r2, _0800BA64 @ =gUnknown_03004330 - ldr r4, _0800BA68 @ =sub_802BF74 - str r4, [r2] - ldr r1, _0800BA6C @ =gUnknown_02024A72 - movs r0, 0 - strb r0, [r1] - ldr r3, _0800BA70 @ =sub_8032AE0 - str r3, [r2, 0x4] - movs r0, 0x1 - strb r0, [r1, 0x1] - str r4, [r2, 0x8] - movs r0, 0x2 - strb r0, [r1, 0x2] - str r3, [r2, 0xC] - movs r0, 0x3 - strb r0, [r1, 0x3] - ldr r1, _0800BA74 @ =gUnknown_02024A68 - movs r0, 0x4 -_0800BA52: - strb r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800BA5C: .4byte gUnknown_030042D4 -_0800BA60: .4byte sub_8010800 -_0800BA64: .4byte gUnknown_03004330 -_0800BA68: .4byte sub_802BF74 -_0800BA6C: .4byte gUnknown_02024A72 -_0800BA70: .4byte sub_8032AE0 -_0800BA74: .4byte gUnknown_02024A68 - thumb_func_end sub_800B9A8 - - thumb_func_start sub_800BA78 -sub_800BA78: @ 800BA78 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r6, _0800BAB8 @ =gBattleTypeFlags - ldrh r1, [r6] - movs r5, 0x1 - movs r4, 0x1 - ands r4, r1 - cmp r4, 0 - bne _0800BB04 - movs r0, 0x4 - ands r0, r1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0 - beq _0800BAD8 - ldr r1, _0800BABC @ =gUnknown_030042D4 - ldr r0, _0800BAC0 @ =sub_8010800 - str r0, [r1] - ldr r2, _0800BAC4 @ =gUnknown_03004330 - ldr r0, _0800BAC8 @ =sub_802BF74 - str r0, [r2] - ldr r1, _0800BACC @ =gUnknown_02024A72 - strb r4, [r1] - ldr r0, _0800BAD0 @ =sub_8037510 - str r0, [r2, 0x4] - strb r5, [r1, 0x1] - ldr r1, _0800BAD4 @ =gUnknown_02024A68 - movs r0, 0x2 - b _0800BD3E - .align 2, 0 -_0800BAB8: .4byte gBattleTypeFlags -_0800BABC: .4byte gUnknown_030042D4 -_0800BAC0: .4byte sub_8010800 -_0800BAC4: .4byte gUnknown_03004330 -_0800BAC8: .4byte sub_802BF74 -_0800BACC: .4byte gUnknown_02024A72 -_0800BAD0: .4byte sub_8037510 -_0800BAD4: .4byte gUnknown_02024A68 -_0800BAD8: - ldr r2, _0800BAF0 @ =gUnknown_03004330 - ldr r0, _0800BAF4 @ =sub_802BF74 - str r0, [r2, 0x4] - ldr r1, _0800BAF8 @ =gUnknown_02024A72 - strb r3, [r1, 0x1] - ldr r0, _0800BAFC @ =sub_8037510 - str r0, [r2] - strb r5, [r1] - ldr r1, _0800BB00 @ =gUnknown_02024A68 - movs r0, 0x2 - b _0800BD3E - .align 2, 0 -_0800BAF0: .4byte gUnknown_03004330 -_0800BAF4: .4byte sub_802BF74 -_0800BAF8: .4byte gUnknown_02024A72 -_0800BAFC: .4byte sub_8037510 -_0800BB00: .4byte gUnknown_02024A68 -_0800BB04: - movs r0, 0x41 - ands r0, r1 - cmp r0, 0x1 - bne _0800BB90 - movs r6, 0x4 - movs r0, 0x4 - ands r0, r1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0 - beq _0800BB58 - ldr r1, _0800BB40 @ =gUnknown_030042D4 - ldr r0, _0800BB44 @ =sub_8010800 - str r0, [r1] - ldr r2, _0800BB48 @ =gUnknown_03004330 - ldr r4, _0800BB4C @ =sub_802BF74 - str r4, [r2] - ldr r1, _0800BB50 @ =gUnknown_02024A72 - movs r0, 0 - strb r0, [r1] - ldr r3, _0800BB54 @ =sub_8037510 - str r3, [r2, 0x4] - strb r5, [r1, 0x1] - str r4, [r2, 0x8] - movs r0, 0x2 - strb r0, [r1, 0x2] - str r3, [r2, 0xC] - movs r0, 0x3 - strb r0, [r1, 0x3] - b _0800BB74 - .align 2, 0 -_0800BB40: .4byte gUnknown_030042D4 -_0800BB44: .4byte sub_8010800 -_0800BB48: .4byte gUnknown_03004330 -_0800BB4C: .4byte sub_802BF74 -_0800BB50: .4byte gUnknown_02024A72 -_0800BB54: .4byte sub_8037510 -_0800BB58: - ldr r2, _0800BB7C @ =gUnknown_03004330 - ldr r0, _0800BB80 @ =sub_802BF74 - str r0, [r2, 0x4] - ldr r1, _0800BB84 @ =gUnknown_02024A72 - strb r3, [r1, 0x1] - ldr r3, _0800BB88 @ =sub_8037510 - str r3, [r2] - strb r5, [r1] - str r0, [r2, 0xC] - movs r0, 0x2 - strb r0, [r1, 0x3] - str r3, [r2, 0x8] - movs r0, 0x3 - strb r0, [r1, 0x2] -_0800BB74: - ldr r0, _0800BB8C @ =gUnknown_02024A68 - strb r6, [r0] - b _0800BD40 - .align 2, 0 -_0800BB7C: .4byte gUnknown_03004330 -_0800BB80: .4byte sub_802BF74 -_0800BB84: .4byte gUnknown_02024A72 -_0800BB88: .4byte sub_8037510 -_0800BB8C: .4byte gUnknown_02024A68 -_0800BB90: - bl GetMultiplayerId - lsls r0, 24 - lsrs r5, r0, 24 - ldrh r1, [r6] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0800BBA8 - ldr r1, _0800BBD0 @ =gUnknown_030042D4 - ldr r0, _0800BBD4 @ =sub_8010800 - str r0, [r1] -_0800BBA8: - movs r0, 0 - mov r10, r0 - ldr r1, _0800BBD8 @ =gLinkPlayers - mov r12, r1 - ldr r7, _0800BBDC @ =gUnknown_02024A72 - mov r8, r0 - ldr r6, _0800BBE0 @ =gUnknown_02024A6A - movs r4, 0 - movs r2, 0x3 - mov r9, r2 -_0800BBBC: - mov r1, r12 - adds r0, r4, r1 - ldrh r0, [r0, 0x18] - cmp r0, 0x2 - bgt _0800BBE4 - cmp r0, 0x1 - bge _0800BBFC - cmp r0, 0 - beq _0800BBE8 - b _0800BC06 - .align 2, 0 -_0800BBD0: .4byte gUnknown_030042D4 -_0800BBD4: .4byte sub_8010800 -_0800BBD8: .4byte gLinkPlayers -_0800BBDC: .4byte gUnknown_02024A72 -_0800BBE0: .4byte gUnknown_02024A6A -_0800BBE4: - cmp r0, 0x3 - bne _0800BC06 -_0800BBE8: - ldr r0, _0800BBF8 @ =gLinkPlayers - adds r0, r4, r0 - ldrb r0, [r0, 0x18] - movs r1, 0 - bl sub_8094978 - b _0800BC06 - .align 2, 0 -_0800BBF8: .4byte gLinkPlayers -_0800BBFC: - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x1 - bl sub_8094978 -_0800BC06: - cmp r10, r5 - bne _0800BC56 - ldr r0, _0800BC2C @ =gLinkPlayers - adds r3, r4, r0 - ldrh r1, [r3, 0x18] - lsls r1, 2 - ldr r2, _0800BC30 @ =gUnknown_03004330 - adds r1, r2 - ldr r2, _0800BC34 @ =sub_802BF74 - str r2, [r1] - ldrh r1, [r3, 0x18] - mov r12, r0 - cmp r1, 0x2 - bgt _0800BC38 - cmp r1, 0x1 - bge _0800BC4C - cmp r1, 0 - beq _0800BC3C - b _0800BD2C - .align 2, 0 -_0800BC2C: .4byte gLinkPlayers -_0800BC30: .4byte gUnknown_03004330 -_0800BC34: .4byte sub_802BF74 -_0800BC38: - cmp r1, 0x3 - bne _0800BD2C -_0800BC3C: - mov r1, r12 - adds r0, r4, r1 - ldrh r1, [r0, 0x18] - adds r1, r7 - mov r2, r8 - strb r2, [r1] - ldrh r0, [r0, 0x18] - b _0800BD12 -_0800BC4C: - adds r1, r7 - movs r0, 0x2 - strb r0, [r1] - ldrh r0, [r3, 0x18] - b _0800BD24 -_0800BC56: - ldr r2, _0800BC7C @ =gLinkPlayers - adds r0, r4, r2 - ldrh r1, [r0, 0x18] - movs r3, 0x1 - adds r0, r3, 0 - ands r0, r1 - mov r12, r2 - cmp r0, 0 - bne _0800BC80 - lsls r0, r5, 3 - subs r0, r5 - lsls r0, 2 - add r0, r12 - ldrh r1, [r0, 0x18] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _0800BC92 - b _0800BCD8 - .align 2, 0 -_0800BC7C: .4byte gLinkPlayers -_0800BC80: - lsls r0, r5, 3 - subs r0, r5 - lsls r0, 2 - add r0, r12 - ldrh r1, [r0, 0x18] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _0800BCD8 -_0800BC92: - mov r0, r12 - adds r2, r4, r0 - ldrh r0, [r2, 0x18] - lsls r0, 2 - ldr r1, _0800BCB4 @ =gUnknown_03004330 - adds r0, r1 - ldr r1, _0800BCB8 @ =sub_811DA78 - str r1, [r0] - ldrh r1, [r2, 0x18] - cmp r1, 0x2 - bgt _0800BCBC - cmp r1, 0x1 - bge _0800BCD0 - cmp r1, 0 - beq _0800BCC0 - b _0800BD2C - .align 2, 0 -_0800BCB4: .4byte gUnknown_03004330 -_0800BCB8: .4byte sub_811DA78 -_0800BCBC: - cmp r1, 0x3 - bne _0800BD2C -_0800BCC0: - mov r2, r12 - adds r0, r4, r2 - ldrh r1, [r0, 0x18] - adds r1, r7 - mov r2, r8 - strb r2, [r1] - ldrh r0, [r0, 0x18] - b _0800BD12 -_0800BCD0: - adds r1, r7 - movs r0, 0x2 - strb r0, [r1] - b _0800BD22 -_0800BCD8: - mov r0, r12 - adds r2, r4, r0 - ldrh r0, [r2, 0x18] - lsls r0, 2 - ldr r1, _0800BCF8 @ =gUnknown_03004330 - adds r0, r1 - ldr r1, _0800BCFC @ =sub_8037510 - str r1, [r0] - ldrh r0, [r2, 0x18] - cmp r0, 0x2 - bgt _0800BD00 - cmp r0, 0x1 - bge _0800BD1C - cmp r0, 0 - beq _0800BD04 - b _0800BD2C - .align 2, 0 -_0800BCF8: .4byte gUnknown_03004330 -_0800BCFC: .4byte sub_8037510 -_0800BD00: - cmp r0, 0x3 - bne _0800BD2C -_0800BD04: - mov r0, r12 - adds r2, r4, r0 - ldrh r0, [r2, 0x18] - adds r0, r7 - movs r1, 0x1 - strb r1, [r0] - ldrh r0, [r2, 0x18] -_0800BD12: - lsls r0, 1 - adds r0, r6 - mov r1, r8 - strh r1, [r0] - b _0800BD2C -_0800BD1C: - adds r0, r7 - mov r1, r9 - strb r1, [r0] -_0800BD22: - ldrh r0, [r2, 0x18] -_0800BD24: - lsls r0, 1 - adds r0, r6 - mov r2, r9 - strh r2, [r0] -_0800BD2C: - adds r4, 0x1C - movs r0, 0x1 - add r10, r0 - mov r1, r10 - cmp r1, 0x3 - bgt _0800BD3A - b _0800BBBC -_0800BD3A: - ldr r1, _0800BD50 @ =gUnknown_02024A68 - movs r0, 0x4 -_0800BD3E: - strb r0, [r1] -_0800BD40: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800BD50: .4byte gUnknown_02024A68 - thumb_func_end sub_800BA78 - thumb_func_start sub_800BD54 sub_800BD54: @ 800BD54 push {r4-r7,lr} diff --git a/asm/rom_800D42C.s b/asm/rom_800D42C.s index 57beffdbd..24e845abb 100644 --- a/asm/rom_800D42C.s +++ b/asm/rom_800D42C.s @@ -2271,7 +2271,7 @@ _0800E868: strb r0, [r1] ldr r0, _0800E96C @ =sub_800FCFC bl SetVBlankCallback - bl sub_800B884 + bl setup_poochyena_battle ldr r0, _0800E970 @ =gBattleTypeFlags ldrh r1, [r0] movs r0, 0x40 diff --git a/include/link.h b/include/link.h index 49dff6547..f88cf8f5a 100644 --- a/include/link.h +++ b/include/link.h @@ -65,11 +65,11 @@ struct LinkPlayer /* 0x00 */ u16 version; /* 0x02 */ u16 lp_field_2; /* 0x04 */ u32 trainerId; - /* 0x05 */ u8 name[11]; - /* 0x10 */ u8 gender; + /* 0x08 */ u8 name[11]; + /* 0x13 */ u8 gender; /* 0x14 */ u32 linkType; /* 0x18 */ u16 lp_field_18; - /* 0x20 */ u16 language; + /* 0x1A */ u16 language; }; struct LinkPlayerBlock diff --git a/ld_script.txt b/ld_script.txt index f379dc74d..8367bc1d6 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -46,6 +46,7 @@ SECTIONS { src/link.o(.text); src/rtc.o(.text); src/main_menu.o(.text); + src/rom3.o(.text); asm/rom3.o(.text); src/decompress.o(.text); asm/rom_800D42C.o(.text); diff --git a/src/battle_anim.c b/src/battle_anim.c index 90a53a412..264a1dd9e 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -232,7 +232,7 @@ static void (*const sScriptCmdTable[])(void) = { ScriptCmd_stopsound, }; -void sub_8075624(void) +void battle_anim_clear_some_data(void) { s32 i; diff --git a/src/rom3.c b/src/rom3.c new file mode 100644 index 000000000..9bd2674c5 --- /dev/null +++ b/src/rom3.c @@ -0,0 +1,257 @@ +#include "global.h" +#include "asm.h" +#include "battle.h" +#include "items.h" +#include "link.h" +#include "pokemon.h" +#include "species.h" +#include "task.h" + +extern u16 gBattleTypeFlags; + +extern u32 gUnknown_020239FC; +extern u32 gUnknown_02024A64; +extern u8 gUnknown_02024A68; +extern u16 gUnknown_02024A6A[]; +extern u8 gUnknown_02024A72[]; +extern u8 gUnknown_02024C78; +extern u8 gUnknown_02024E60[]; +extern u8 gUnknown_02024E64[]; +extern void (*gUnknown_030042D4)(void); +extern void (*gUnknown_03004330[])(void); + +extern void sub_800BF28(void); +extern void sub_8083C50(u8); +extern void nullsub_41(void); +extern void nullsub_91(void); +extern void battle_anim_clear_some_data(void); +extern void sub_8040710(void); +extern void BattleAI_HandleItemUseBeforeAISetup(void); +extern void sub_8094978(u8, int); +extern void sub_800BA78(void); +extern void sub_800B9A8(void); +extern void sub_800BD54(void); +extern void sub_8010800(void); +extern void sub_812B468(void); +extern void sub_8137224(void); +extern void sub_802BF74(void); +extern void sub_8032AE0(void); +extern void sub_8037510(void); +extern void sub_811DA78(void); + +void sub_800B858(void) +{ + if (gBattleTypeFlags & 2) + { + OpenLink(); + CreateTask(sub_8083C50, 0); + sub_800BF28(); + } +} + +void setup_poochyena_battle(void) +{ + s32 i; + + gUnknown_030042D4 = nullsub_41; + for (i = 0; i < 4; i++) + { + gUnknown_03004330[i] = nullsub_91; + gUnknown_02024A72[i] = 0xFF; + gUnknown_02024E60[i] = 0; + gUnknown_02024E64[i] = 0; + } + sub_800B858(); + gUnknown_02024A64 = 0; + battle_anim_clear_some_data(); + sub_8040710(); + BattleAI_HandleItemUseBeforeAISetup(); + if (gBattleTypeFlags & 0x10) + { + ZeroEnemyPartyMons(); + CreateMon(&gEnemyParty[0], SPECIES_POOCHYENA, 2, 32, 0, 0, 0, 0); + i = ITEM_NONE; + SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, (u8 *)&i); + } + gUnknown_020239FC = 0; + gUnknown_02024C78 = 0; +} + +void sub_800B950(void) +{ + s32 i; + + if (gBattleTypeFlags & 2) + sub_800BA78(); + else + sub_800B9A8(); + sub_800BD54(); + if (!(gBattleTypeFlags & 0x40)) + { + for (i = 0; i < gUnknown_02024A68; i++) + sub_8094978(i, 0); + } +} + +void sub_800B9A8(void) +{ + if (!(gBattleTypeFlags & 1)) + { + gUnknown_030042D4 = sub_8010800; + if (gBattleTypeFlags & 0x80) + gUnknown_03004330[0] = sub_812B468; + else if (gBattleTypeFlags & 0x200) + gUnknown_03004330[0] = sub_8137224; + else + gUnknown_03004330[0] = sub_802BF74; + gUnknown_02024A72[0] = 0; + gUnknown_03004330[1] = sub_8032AE0; + gUnknown_02024A72[1] = 1; + gUnknown_02024A68 = 2; + } + else + { + gUnknown_030042D4 = sub_8010800; + gUnknown_03004330[0] = sub_802BF74; + gUnknown_02024A72[0] = 0; + gUnknown_03004330[1] = sub_8032AE0; + gUnknown_02024A72[1] = 1; + gUnknown_03004330[2] = sub_802BF74; + gUnknown_02024A72[2] = 2; + gUnknown_03004330[3] = sub_8032AE0; + gUnknown_02024A72[3] = 3; + gUnknown_02024A68 = 4; + } +} + +void sub_800BA78(void) +{ + u8 multiplayerId; + int i; + + if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + { + if (gBattleTypeFlags & BATTLE_TYPE_WILD) + { + gUnknown_030042D4 = sub_8010800; + gUnknown_03004330[0] = sub_802BF74; + gUnknown_02024A72[0] = 0; + gUnknown_03004330[1] = sub_8037510; + gUnknown_02024A72[1] = 1; + gUnknown_02024A68 = 2; + } + else + { + gUnknown_03004330[1] = sub_802BF74; + gUnknown_02024A72[1] = 0; + gUnknown_03004330[0] = sub_8037510; + gUnknown_02024A72[0] = 1; + gUnknown_02024A68 = 2; + } + return; + } + if ((gBattleTypeFlags & (BATTLE_TYPE_40 | BATTLE_TYPE_DOUBLE)) == BATTLE_TYPE_DOUBLE) + { + if (gBattleTypeFlags & BATTLE_TYPE_WILD) + { + gUnknown_030042D4 = sub_8010800; + gUnknown_03004330[0] = sub_802BF74; + gUnknown_02024A72[0] = 0; + gUnknown_03004330[1] = sub_8037510; + gUnknown_02024A72[1] = 1; + gUnknown_03004330[2] = sub_802BF74; + gUnknown_02024A72[2] = 2; + gUnknown_03004330[3] = sub_8037510; + gUnknown_02024A72[3] = 3; + gUnknown_02024A68 = 4; + } + else + { + gUnknown_03004330[1] = sub_802BF74; + gUnknown_02024A72[1] = 0; + gUnknown_03004330[0] = sub_8037510; + gUnknown_02024A72[0] = 1; + gUnknown_03004330[3] = sub_802BF74; + gUnknown_02024A72[3] = 2; + gUnknown_03004330[2] = sub_8037510; + gUnknown_02024A72[2] = 3; + gUnknown_02024A68 = 4; + + } + return; + } + multiplayerId = GetMultiplayerId(); + if (gBattleTypeFlags & BATTLE_TYPE_WILD) + gUnknown_030042D4 = sub_8010800; + for (i = 0; i < 4; i++) + { + switch (gLinkPlayers[i].lp_field_18) + { + case 0: + case 3: + sub_8094978(gLinkPlayers[i].lp_field_18, 0); + break; + case 1: + case 2: + sub_8094978(gLinkPlayers[i].lp_field_18, 1); + break; + } + + if (i == multiplayerId) + { + gUnknown_03004330[gLinkPlayers[i].lp_field_18] = sub_802BF74; + switch (gLinkPlayers[i].lp_field_18) + { + case 0: + case 3: + gUnknown_02024A72[gLinkPlayers[i].lp_field_18] = 0; + gUnknown_02024A6A[gLinkPlayers[i].lp_field_18] = 0; + break; + case 1: + case 2: + gUnknown_02024A72[gLinkPlayers[i].lp_field_18] = 2; + gUnknown_02024A6A[gLinkPlayers[i].lp_field_18] = 3; + break; + } + } + else + { + if ((!(gLinkPlayers[i].lp_field_18 & 1) && !(gLinkPlayers[multiplayerId].lp_field_18 & 1)) + || ((gLinkPlayers[i].lp_field_18 & 1) && (gLinkPlayers[multiplayerId].lp_field_18 & 1))) + { + gUnknown_03004330[gLinkPlayers[i].lp_field_18] = sub_811DA78; + switch (gLinkPlayers[i].lp_field_18) + { + case 0: + case 3: + gUnknown_02024A72[gLinkPlayers[i].lp_field_18] = 0; + gUnknown_02024A6A[gLinkPlayers[i].lp_field_18] = 0; + break; + case 1: + case 2: + gUnknown_02024A72[gLinkPlayers[i].lp_field_18] = 2; + gUnknown_02024A6A[gLinkPlayers[i].lp_field_18] = 3; + break; + } + } + else + { + gUnknown_03004330[gLinkPlayers[i].lp_field_18] = sub_8037510; + switch (gLinkPlayers[i].lp_field_18) + { + case 0: + case 3: + gUnknown_02024A72[gLinkPlayers[i].lp_field_18] = 1; + gUnknown_02024A6A[gLinkPlayers[i].lp_field_18] = 0; + break; + case 1: + case 2: + gUnknown_02024A72[gLinkPlayers[i].lp_field_18] = 3; + gUnknown_02024A6A[gLinkPlayers[i].lp_field_18] = 3; + break; + } + } + } + } + gUnknown_02024A68 = 4; +} |