start decompiling rom3 (#198)

* start decompiling rom3

* newline

* decompile sub_800BA78
This commit is contained in:
Cameron Hall
2017-01-18 16:35:34 -06:00
committed by YamaArashi
parent 6bbdece4fb
commit 56f432fca2
7 changed files with 264 additions and 625 deletions

View File

@@ -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

View File

@@ -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}

View File

@@ -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

View File

@@ -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

View File

@@ -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);

View File

@@ -232,7 +232,7 @@ static void (*const sScriptCmdTable[])(void) = {
ScriptCmd_stopsound,
};
void sub_8075624(void)
void battle_anim_clear_some_data(void)
{
s32 i;

257
src/rom3.c Normal file
View File

@@ -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;
}