pokeemerald/asm/union_room_battle.s
2019-04-01 22:08:50 -05:00

637 lines
9.6 KiB
ArmAsm
Executable File

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_801AA08
sub_801AA08: @ 801AA08
push {r4,lr}
movs r4, 0
adds r3, r1, 0
adds r2, r0, 0
_0801AA10:
ldr r1, [r2]
ldr r0, [r3]
cmp r1, r0
beq _0801AA1C
movs r0, 0x1
b _0801AA28
_0801AA1C:
adds r3, 0x4
adds r2, 0x4
adds r4, 0x1
cmp r4, 0x3
ble _0801AA10
movs r0, 0
_0801AA28:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_801AA08
thumb_func_start sub_801AA30
sub_801AA30: @ 801AA30
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x10
adds r6, r0, 0
mov r9, r1
adds r5, r2, 0
lsls r4, r3, 24
lsrs r4, 24
movs r0, 0
mov r8, r0
mov r0, sp
movs r1, 0
movs r2, 0x10
bl memset
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
ldr r1, =gTasks + 0x8
adds r7, r0, r1
movs r4, 0
_0801AA5E:
lsls r1, r4, 5
ldr r0, [r7]
adds r0, r1
mov r1, sp
bl sub_801A960
adds r1, r0, 0
ldr r0, [r5]
cmp r1, r0
beq _0801AA78
str r1, [r5]
movs r2, 0x1
mov r8, r2
_0801AA78:
adds r5, 0x4
adds r4, 0x1
cmp r4, 0xF
ble _0801AA5E
mov r0, sp
mov r1, r9
bl sub_801AA08
cmp r0, 0
bne _0801AA9C
mov r3, r8
cmp r3, 0x1
beq _0801AAC4
movs r0, 0
b _0801AAC6
.pool
_0801AA9C:
adds r1, r6, 0
mov r0, sp
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
ldr r0, [r0]
str r0, [r1]
mov r1, r9
mov r0, sp
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
ldr r0, [r0]
str r0, [r1]
ldr r0, [r6]
ldr r1, [r6, 0x4]
adds r0, r1
ldr r1, [r6, 0x8]
adds r0, r1
ldr r1, [r6, 0xC]
adds r0, r1
str r0, [r6, 0xC]
_0801AAC4:
movs r0, 0x1
_0801AAC6:
add sp, 0x10
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_801AA30
thumb_func_start sub_801AAD4
sub_801AAD4: @ 801AAD4
push {r4-r7,lr}
movs r0, 0xA
bl sub_8014210
movs r4, 0
movs r7, 0x64
ldr r6, =gPlayerParty
ldr r5, =gEnemyParty
_0801AAE4:
ldr r0, =gSelectedOrderFromParty
adds r0, r4, r0
ldrb r0, [r0]
subs r0, 0x1
adds r1, r0, 0
muls r1, r7
adds r1, r6
adds r0, r5, 0
movs r2, 0x64
bl memcpy
adds r5, 0x64
adds r4, 0x1
cmp r4, 0x1
ble _0801AAE4
ldr r4, =gPlayerParty
movs r0, 0xFA
lsls r0, 1
adds r5, r4, r0
_0801AB0A:
adds r0, r4, 0
bl ZeroMonData
adds r4, 0x64
cmp r4, r5
ble _0801AB0A
ldr r4, =gPlayerParty
movs r5, 0
adds r6, r4, 0
adds r6, 0x64
_0801AB1E:
ldr r1, =gEnemyParty
adds r1, r5, r1
adds r0, r4, 0
movs r2, 0x64
bl memcpy
adds r4, 0x64
adds r5, 0x64
cmp r4, r6
ble _0801AB1E
movs r0, 0x32
bl IncrementGameStat
bl CalculatePlayerPartyCount
ldr r0, =gTrainerBattleOpponent_A
movs r2, 0xC0
lsls r2, 4
adds r1, r2, 0
strh r1, [r0]
ldr r0, =CB2_InitBattle
bl SetMainCallback2
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end sub_801AAD4
thumb_func_start sub_801AB68
sub_801AB68: @ 801AB68
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x18
adds r5, r0, 0
adds r7, r1, 0
adds r6, r2, 0
ldr r4, [sp, 0x38]
lsls r5, 24
lsrs r5, 24
lsls r6, 24
lsrs r6, 24
lsls r3, 24
lsrs r3, 24
movs r0, 0
mov r9, r0
movs r1, 0x1
mov r10, r1
ldr r0, =gUnknown_082F0DE4
mov r8, r0
ldrb r0, [r0]
lsls r1, r0, 4
orrs r1, r0
lsls r1, 24
lsrs r1, 24
adds r0, r5, 0
str r3, [sp, 0x14]
bl FillWindowPixelBuffer
mov r1, r9
str r1, [sp]
mov r0, r10
str r0, [sp, 0x4]
mov r1, r8
str r1, [sp, 0x8]
lsls r4, 24
asrs r4, 24
str r4, [sp, 0xC]
str r7, [sp, 0x10]
adds r0, r5, 0
movs r1, 0x1
adds r2, r6, 0
ldr r3, [sp, 0x14]
bl AddTextPrinterParameterized4
add sp, 0x18
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end sub_801AB68
thumb_func_start sub_801ABDC
sub_801ABDC: @ 801ABDC
push {r4-r6,lr}
sub sp, 0x4
adds r4, r0, 0
adds r6, r1, 0
adds r5, r2, 0
movs r1, 0
ldrsh r0, [r4, r1]
cmp r0, 0
beq _0801ABF4
cmp r0, 0x1
beq _0801AC22
b _0801AC36
_0801ABF4:
movs r0, 0
movs r1, 0x1
movs r2, 0xD
bl DrawTextBorderOuter
str r5, [sp]
movs r0, 0
adds r1, r6, 0
movs r2, 0
movs r3, 0x1
bl sub_801AB68
movs r0, 0
bl PutWindowTilemap
movs r0, 0
movs r1, 0x3
bl CopyWindowToVram
ldrh r0, [r4]
adds r0, 0x1
strh r0, [r4]
b _0801AC36
_0801AC22:
movs r0, 0
bl IsTextPrinterActive
lsls r0, 16
lsrs r0, 16
cmp r0, 0
bne _0801AC36
strh r0, [r4]
movs r0, 0x1
b _0801AC38
_0801AC36:
movs r0, 0
_0801AC38:
add sp, 0x4
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_801ABDC
thumb_func_start sub_801AC40
sub_801AC40: @ 801AC40
push {lr}
bl LoadOam
bl ProcessSpriteCopyRequests
bl TransferPlttBuffer
pop {r0}
bx r0
thumb_func_end sub_801AC40
thumb_func_start sub_801AC54
sub_801AC54: @ 801AC54
push {r4,lr}
sub sp, 0xC
ldr r1, =gMain
movs r2, 0x87
lsls r2, 3
adds r0, r1, r2
ldrb r0, [r0]
adds r2, r1, 0
cmp r0, 0x33
bls _0801AC6A
b _0801AFAE
_0801AC6A:
lsls r0, 2
ldr r1, =_0801AC7C
adds r0, r1
ldr r0, [r0]
mov pc, r0
.pool
.align 2, 0
_0801AC7C:
.4byte _0801AD4C
.4byte _0801ADFC
.4byte _0801AE24
.4byte _0801AE48
.4byte _0801AE98
.4byte _0801AFAE
.4byte _0801AF7C
.4byte _0801AF58
.4byte _0801AF7C
.4byte _0801AF98
.4byte _0801AFAE
.4byte _0801AFAE
.4byte _0801AFAE
.4byte _0801AFAE
.4byte _0801AFAE
.4byte _0801AFAE
.4byte _0801AFAE
.4byte _0801AFAE
.4byte _0801AFAE
.4byte _0801AFAE
.4byte _0801AFAE
.4byte _0801AFAE
.4byte _0801AFAE
.4byte _0801AFAE
.4byte _0801AFAE
.4byte _0801AFAE
.4byte _0801AFAE
.4byte _0801AFAE
.4byte _0801AFAE
.4byte _0801AFAE
.4byte _0801AFAE
.4byte _0801AFAE
.4byte _0801AFAE
.4byte _0801AFAE
.4byte _0801AFAE
.4byte _0801AFAE
.4byte _0801AFAE
.4byte _0801AFAE
.4byte _0801AFAE
.4byte _0801AFAE
.4byte _0801AFAE
.4byte _0801AFAE
.4byte _0801AFAE
.4byte _0801AFAE
.4byte _0801AFAE
.4byte _0801AFAE
.4byte _0801AFAE
.4byte _0801AFAE
.4byte _0801AFAE
.4byte _0801AFAE
.4byte _0801AF24
.4byte _0801AF40
_0801AD4C:
movs r0, 0
movs r1, 0
bl SetGpuReg
ldr r4, =gUnknown_02022C6C
movs r0, 0x4
bl AllocZeroed
str r0, [r4]
bl ResetSpriteData
bl FreeAllSpritePalettes
bl ResetTasks
movs r0, 0
bl ResetBgsAndClearDma3BusyFlags
ldr r1, =gUnknown_082F0DD0
movs r0, 0
movs r2, 0x1
bl InitBgsFromTemplates
bl reset_temp_tile_data_buffers
ldr r0, =gUnknown_082F0DD4
bl InitWindows
lsls r0, 16
cmp r0, 0
bne _0801AD8C
b _0801AFC2
_0801AD8C:
bl DeactivateAllTextPrinters
movs r0, 0
bl ClearWindowTilemap
movs r0, 0
movs r1, 0
bl FillWindowPixelBuffer
movs r0, 0
movs r1, 0x11
bl FillWindowPixelBuffer
movs r0, 0x1E
str r0, [sp]
movs r0, 0x14
str r0, [sp, 0x4]
movs r0, 0xF
str r0, [sp, 0x8]
movs r0, 0
movs r1, 0
movs r2, 0
movs r3, 0
bl FillBgTilemapBufferRect
movs r0, 0
movs r1, 0x1
movs r2, 0xD0
bl LoadUserWindowBorderGfx
movs r0, 0
movs r1, 0x1
movs r2, 0xD0
bl LoadUserWindowBorderGfx_
bl sub_819789C
ldr r0, =sub_801AC40
bl SetVBlankCallback
ldr r1, =gMain
movs r0, 0x87
lsls r0, 3
adds r1, r0
b _0801AF8A
.pool
_0801ADFC:
ldr r0, =gUnknown_02022C6C
ldr r0, [r0]
ldr r1, =gText_CommStandbyAwaitingOtherPlayer
movs r2, 0
bl sub_801ABDC
cmp r0, 0
bne _0801AE0E
b _0801AFAE
_0801AE0E:
ldr r1, =gMain
movs r2, 0x87
lsls r2, 3
adds r1, r2
b _0801AF8A
.pool
_0801AE24:
movs r0, 0x1
negs r0, r0
movs r1, 0
str r1, [sp]
movs r2, 0x10
movs r3, 0
bl BeginNormalPaletteFade
movs r0, 0
bl ShowBg
ldr r1, =gMain
movs r0, 0x87
lsls r0, 3
adds r1, r0
b _0801AF8A
.pool
_0801AE48:
bl UpdatePaletteFade
lsls r0, 24
cmp r0, 0
beq _0801AE54
b _0801AFAE
_0801AE54:
ldr r4, =gBlockSendBuffer
adds r0, r4, 0
movs r1, 0
movs r2, 0x20
bl memset
ldr r0, =gSelectedOrderFromParty
ldrb r1, [r0]
ldrb r0, [r0, 0x1]
cmn r1, r0
bne _0801AE78
movs r0, 0x52
b _0801AE7A
.pool
_0801AE78:
movs r0, 0x51
_0801AE7A:
strb r0, [r4]
ldr r1, =gBlockSendBuffer
movs r0, 0
movs r2, 0x20
bl SendBlock
ldr r1, =gMain
movs r2, 0x87
lsls r2, 3
adds r1, r2
b _0801AF8A
.pool
_0801AE98:
bl GetBlockReceivedStatus
lsls r0, 24
lsrs r0, 24
cmp r0, 0x3
beq _0801AEA6
b _0801AFAE
_0801AEA6:
ldr r1, =gBlockRecvBuffer
ldrh r0, [r1]
cmp r0, 0x51
bne _0801AEE0
movs r2, 0x80
lsls r2, 1
adds r0, r1, r2
ldrh r0, [r0]
cmp r0, 0x51
bne _0801AEE0
movs r0, 0x1
negs r0, r0
movs r1, 0
str r1, [sp]
movs r2, 0
movs r3, 0x10
bl BeginNormalPaletteFade
ldr r0, =gMain
movs r1, 0x87
lsls r1, 3
adds r0, r1
movs r1, 0x32
b _0801AF16
.pool
_0801AEE0:
bl sub_800AC34
ldr r4, =gBlockRecvBuffer
bl GetMultiplayerId
lsls r0, 24
lsrs r0, 16
adds r0, r4
ldrh r0, [r0]
cmp r0, 0x52
bne _0801AF0C
ldr r0, =gMain
movs r2, 0x87
lsls r2, 3
adds r0, r2
movs r1, 0x6
b _0801AF16
.pool
_0801AF0C:
ldr r0, =gMain
movs r1, 0x87
lsls r1, 3
adds r0, r1
movs r1, 0x8
_0801AF16:
strb r1, [r0]
bl ResetBlockReceivedFlags
b _0801AFAE
.pool
_0801AF24:
bl UpdatePaletteFade
lsls r0, 24
cmp r0, 0
bne _0801AFAE
bl sub_800ADF8
ldr r1, =gMain
movs r2, 0x87
lsls r2, 3
adds r1, r2
b _0801AF8A
.pool
_0801AF40:
bl IsLinkTaskFinished
lsls r0, 24
cmp r0, 0
beq _0801AFAE
ldr r0, =sub_801AAD4
bl SetMainCallback2
b _0801AFAE
.pool
_0801AF58:
ldr r0, =gUnknown_02022C6C
ldr r0, [r0]
ldr r1, =gText_RefusedBattle
movs r2, 0x1
bl sub_801ABDC
cmp r0, 0
beq _0801AFAE
ldr r0, =CB2_ReturnToField
bl SetMainCallback2
b _0801AFAE
.pool
_0801AF7C:
ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _0801AFAE
movs r0, 0x87
lsls r0, 3
adds r1, r2, r0
_0801AF8A:
ldrb r0, [r1]
adds r0, 0x1
strb r0, [r1]
b _0801AFAE
.pool
_0801AF98:
ldr r0, =gUnknown_02022C6C
ldr r0, [r0]
ldr r1, =gText_BattleWasRefused
movs r2, 0x1
bl sub_801ABDC
cmp r0, 0
beq _0801AFAE
ldr r0, =CB2_ReturnToField
bl SetMainCallback2
_0801AFAE:
bl RunTasks
bl RunTextPrinters
bl AnimateSprites
bl BuildOamBuffer
bl UpdatePaletteFade
_0801AFC2:
add sp, 0xC
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_801AC54