mirror of
https://github.com/pret/pokeruby.git
synced 2026-08-23 19:04:35 -05:00
start decompiling rom3 (#198)
* start decompiling rom3 * newline * decompile sub_800BA78
This commit is contained in:
@@ -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
|
||||
|
||||
619
asm/rom3.s
619
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}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
257
src/rom3.c
Normal 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;
|
||||
}
|
||||
Reference in New Issue
Block a user