summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/battle_bg.s1473
-rw-r--r--data/battle_bg.s583
-rw-r--r--include/battle_bg.h2
-rw-r--r--include/battle_message.h4
-rw-r--r--include/graphics.h6
-rw-r--r--include/overworld.h1
-rw-r--r--ld_script.txt4
-rw-r--r--src/battle_bg.c925
-rw-r--r--src/battle_main.c6
-rw-r--r--src/battle_message.c6
10 files changed, 945 insertions, 2065 deletions
diff --git a/asm/battle_bg.s b/asm/battle_bg.s
deleted file mode 100644
index 4962d17dc..000000000
--- a/asm/battle_bg.s
+++ /dev/null
@@ -1,1473 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_800F1E8
-sub_800F1E8: @ 800F1E8
- push {lr}
- bl ResetSpriteData
- ldr r0, _0800F21C @ =gUnknown_824EFF0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0800F220 @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r1]
- ldr r0, _0800F224 @ =sub_800F228
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_0800F21C: .4byte gUnknown_824EFF0
-_0800F220: .4byte gSprites
-_0800F224: .4byte sub_800F228
- thumb_func_end sub_800F1E8
-
- thumb_func_start sub_800F228
-sub_800F228: @ 800F228
- push {lr}
- bl AnimateSprites
- bl BuildOamBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_800F228
-
- thumb_func_start sub_800F238
-sub_800F238: @ 800F238
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0
- ldr r1, _0800F24C @ =gUnknown_824EFC4
-_0800F242:
- ldrb r3, [r1]
- cmp r0, r3
- bne _0800F250
- ldrb r0, [r1, 0x1]
- b _0800F25A
- .align 2, 0
-_0800F24C: .4byte gUnknown_824EFC4
-_0800F250:
- adds r1, 0x4
- adds r2, 0x1
- cmp r2, 0x7
- bls _0800F242
- movs r0, 0x9
-_0800F25A:
- pop {r1}
- bx r1
- thumb_func_end sub_800F238
-
- thumb_func_start sub_800F260
-sub_800F260: @ 800F260
- push {r4,r5,lr}
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x13
- bls _0800F26C
- movs r0, 0x9
-_0800F26C:
- ldr r5, _0800F2A0 @ =gUnknown_824EE34
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 2
- adds r0, r4, r5
- ldr r0, [r0]
- ldr r1, _0800F2A4 @ =0x06008000
- bl LZDecompressVram
- adds r0, r5, 0x4
- adds r0, r4, r0
- ldr r0, [r0]
- ldr r1, _0800F2A8 @ =0x0600d000
- bl LZDecompressVram
- adds r5, 0x10
- adds r4, r5
- ldr r0, [r4]
- movs r1, 0x20
- movs r2, 0x60
- bl LoadCompressedPalette
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0800F2A0: .4byte gUnknown_824EE34
-_0800F2A4: .4byte 0x06008000
-_0800F2A8: .4byte 0x0600d000
- thumb_func_end sub_800F260
-
- thumb_func_start sub_800F2AC
-sub_800F2AC: @ 800F2AC
- push {r4,r5,lr}
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x13
- bls _0800F2B8
- movs r0, 0x9
-_0800F2B8:
- ldr r5, _0800F2E0 @ =gUnknown_824EE34
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 2
- adds r0, r5, 0
- adds r0, 0x8
- adds r0, r4, r0
- ldr r0, [r0]
- ldr r1, _0800F2E4 @ =0x06004000
- bl LZDecompressVram
- adds r5, 0xC
- adds r4, r5
- ldr r0, [r4]
- ldr r1, _0800F2E8 @ =0x0600e000
- bl LZDecompressVram
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0800F2E0: .4byte gUnknown_824EE34
-_0800F2E4: .4byte 0x06004000
-_0800F2E8: .4byte 0x0600e000
- thumb_func_end sub_800F2AC
-
- thumb_func_start sub_800F2EC
-sub_800F2EC: @ 800F2EC
- push {r4,r5,lr}
- adds r4, r1, 0
- adds r5, r2, 0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x9
- bls _0800F2FC
- movs r0, 0x9
-_0800F2FC:
- ldr r2, _0800F320 @ =gUnknown_824EE34
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 2
- adds r0, r1, r2
- ldr r0, [r0]
- str r0, [r4]
- adds r0, r2, 0x4
- adds r0, r1, r0
- ldr r0, [r0]
- str r0, [r5]
- adds r2, 0x10
- adds r1, r2
- ldr r0, [r1]
- str r0, [r3]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0800F320: .4byte gUnknown_824EE34
- thumb_func_end sub_800F2EC
-
- thumb_func_start sub_800F324
-sub_800F324: @ 800F324
- push {lr}
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, _0800F344 @ =gBattleBgTemplates
- movs r0, 0
- movs r2, 0x4
- bl InitBgsFromTemplates
- ldr r0, _0800F348 @ =gUnknown_8248330
- bl InitWindows
- bl DeactivateAllTextPrinters
- pop {r0}
- bx r0
- .align 2, 0
-_0800F344: .4byte gBattleBgTemplates
-_0800F348: .4byte gUnknown_8248330
- thumb_func_end sub_800F324
-
- thumb_func_start InitBattleBgsVideo
-InitBattleBgsVideo: @ 800F34C
- push {lr}
- movs r0, 0xC5
- bl EnableInterrupts
- bl sub_800F324
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- ldr r1, _0800F37C @ =0x0000b040
- movs r0, 0
- bl SetGpuReg
- pop {r0}
- bx r0
- .align 2, 0
-_0800F37C: .4byte 0x0000b040
- thumb_func_end InitBattleBgsVideo
-
- thumb_func_start LoadBattleMenuWindowGfx
-LoadBattleMenuWindowGfx: @ 800F380
- push {r4,r5,lr}
- movs r0, 0x2
- movs r1, 0x12
- movs r2, 0x10
- bl TextWindow_SetUserSelectedFrame
- movs r0, 0x2
- movs r1, 0x22
- movs r2, 0x10
- bl TextWindow_SetUserSelectedFrame
- ldr r4, _0800F3F0 @ =gPlttBufferUnfaded
- adds r0, r4, 0
- adds r0, 0xB8
- ldr r1, _0800F3F4 @ =0x00002529
- strh r1, [r0]
- adds r2, r4, 0
- adds r2, 0xBA
- strh r1, [r2]
- adds r2, 0x2
- ldr r1, _0800F3F8 @ =0x00007fff
- strh r1, [r2]
- adds r2, 0x2
- ldr r1, _0800F3FC @ =0x0000675a
- strh r1, [r2]
- ldr r5, _0800F400 @ =gPlttBufferFaded + 0xB8
- adds r1, r5, 0
- movs r2, 0x4
- bl CpuSet
- ldr r0, _0800F404 @ =gBattleTypeFlags
- ldr r0, [r0]
- ldr r1, _0800F408 @ =0x00010010
- ands r0, r1
- cmp r0, 0
- beq _0800F3EA
- movs r0, 0x70
- bl Menu_LoadStdPalAt
- movs r0, 0
- movs r1, 0x30
- movs r2, 0x70
- bl TextWindow_LoadResourcesStdFrame0
- adds r0, r4, 0
- adds r0, 0xEC
- movs r1, 0
- strh r1, [r0]
- adds r1, r5, 0
- adds r1, 0x34
- movs r2, 0x1
- bl CpuSet
-_0800F3EA:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0800F3F0: .4byte gPlttBufferUnfaded
-_0800F3F4: .4byte 0x00002529
-_0800F3F8: .4byte 0x00007fff
-_0800F3FC: .4byte 0x0000675a
-_0800F400: .4byte gPlttBufferFaded + 0xB8
-_0800F404: .4byte gBattleTypeFlags
-_0800F408: .4byte 0x00010010
- thumb_func_end LoadBattleMenuWindowGfx
-
- thumb_func_start DrawMainBattleBackground
-DrawMainBattleBackground: @ 800F40C
- push {lr}
- bl sub_800FC2C
- lsls r0, 24
- lsrs r0, 24
- bl sub_800F260
- pop {r0}
- bx r0
- thumb_func_end DrawMainBattleBackground
-
- thumb_func_start LoadBattleTextboxAndBackground
-LoadBattleTextboxAndBackground: @ 800F420
- push {lr}
- ldr r0, _0800F454 @ =gBattleTextboxTiles
- movs r1, 0xC0
- lsls r1, 19
- bl LZDecompressVram
- ldr r1, _0800F458 @ =gBattleTextboxTilemap
- movs r0, 0
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBuffer
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- ldr r0, _0800F45C @ =gBattleTextboxPalette
- movs r1, 0
- movs r2, 0x40
- bl LoadCompressedPalette
- bl LoadBattleMenuWindowGfx
- bl DrawMainBattleBackground
- pop {r0}
- bx r0
- .align 2, 0
-_0800F454: .4byte gBattleTextboxTiles
-_0800F458: .4byte gBattleTextboxTilemap
-_0800F45C: .4byte gBattleTextboxPalette
- thumb_func_end LoadBattleTextboxAndBackground
-
- thumb_func_start sub_800F460
-sub_800F460: @ 800F460
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x18
- ldr r4, [sp, 0x34]
- lsls r0, 24
- lsrs r6, r0, 24
- adds r7, r6, 0
- lsls r1, 24
- lsrs r5, r1, 24
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- lsls r3, 24
- lsrs r3, 24
- mov r12, r3
- lsls r4, 24
- lsrs r4, 24
- mov r9, r4
- movs r4, 0
- ldr r0, _0800F4B8 @ =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0800F548
- ldr r0, _0800F4BC @ =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- movs r2, 0x12
- ldrsh r0, [r1, r2]
- cmp r0, 0
- beq _0800F4D2
- cmp r5, 0x1
- beq _0800F4FA
- cmp r5, 0x1
- bgt _0800F4C0
- cmp r5, 0
- beq _0800F4CA
- b _0800F504
- .align 2, 0
-_0800F4B8: .4byte gBattleTypeFlags
-_0800F4BC: .4byte gTasks
-_0800F4C0:
- cmp r5, 0x2
- beq _0800F4CE
- cmp r5, 0x3
- beq _0800F4EE
- b _0800F504
-_0800F4CA:
- ldrh r0, [r1, 0xE]
- b _0800F4F0
-_0800F4CE:
- ldrh r1, [r1, 0xE]
- b _0800F4FC
-_0800F4D2:
- cmp r5, 0x1
- beq _0800F4EE
- cmp r5, 0x1
- bgt _0800F4E0
- cmp r5, 0
- beq _0800F4EA
- b _0800F504
-_0800F4E0:
- cmp r5, 0x2
- beq _0800F4F6
- cmp r5, 0x3
- beq _0800F4FA
- b _0800F504
-_0800F4EA:
- ldrh r0, [r1, 0xE]
- b _0800F4F0
-_0800F4EE:
- ldrh r0, [r1, 0x10]
-_0800F4F0:
- movs r4, 0x3F
- ands r4, r0
- b _0800F504
-_0800F4F6:
- ldrh r1, [r1, 0xE]
- b _0800F4FC
-_0800F4FA:
- ldrh r1, [r1, 0x10]
-_0800F4FC:
- movs r0, 0xFC
- lsls r0, 4
- ands r0, r1
- lsrs r4, r0, 6
-_0800F504:
- movs r2, 0
- movs r6, 0x3
- ldr r0, _0800F544 @ =0x00006001
- adds r5, r0, 0
- add r3, sp, 0xC
-_0800F50E:
- lsls r1, r2, 1
- adds r0, r6, 0
- lsls r0, r1
- ands r0, r4
- asrs r0, r1
- adds r0, r5
- strh r0, [r3]
- adds r3, 0x2
- adds r2, 0x1
- cmp r2, 0x2
- ble _0800F50E
- movs r0, 0x3
- str r0, [sp]
- movs r0, 0x1
- str r0, [sp, 0x4]
- movs r0, 0x11
- str r0, [sp, 0x8]
- mov r0, r8
- add r1, sp, 0xC
- mov r2, r12
- mov r3, r9
- bl CopyToBgTilemapBufferRect_ChangePalette
- mov r0, r8
- bl CopyBgTilemapBufferToVram
- b _0800F5B6
- .align 2, 0
-_0800F544: .4byte 0x00006001
-_0800F548:
- ldr r0, _0800F564 @ =gBattleStruct
- ldr r0, [r0]
- adds r0, 0xB5
- ldrb r0, [r0]
- cmp r5, r0
- bne _0800F56C
- ldr r1, _0800F568 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- ldrh r4, [r0, 0xE]
- b _0800F578
- .align 2, 0
-_0800F564: .4byte gBattleStruct
-_0800F568: .4byte gTasks
-_0800F56C:
- ldr r1, _0800F5C4 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- ldrh r4, [r0, 0x10]
-_0800F578:
- movs r2, 0
- movs r6, 0x3
- ldr r0, _0800F5C8 @ =0x00006001
- adds r5, r0, 0
- add r3, sp, 0xC
-_0800F582:
- lsls r1, r2, 1
- adds r0, r6, 0
- lsls r0, r1
- ands r0, r4
- asrs r0, r1
- adds r0, r5
- strh r0, [r3]
- adds r3, 0x2
- adds r2, 0x1
- cmp r2, 0x5
- ble _0800F582
- movs r0, 0x6
- str r0, [sp]
- movs r0, 0x1
- str r0, [sp, 0x4]
- movs r0, 0x11
- str r0, [sp, 0x8]
- mov r0, r8
- add r1, sp, 0xC
- mov r2, r12
- mov r3, r9
- bl CopyToBgTilemapBufferRect_ChangePalette
- mov r0, r8
- bl CopyBgTilemapBufferToVram
-_0800F5B6:
- add sp, 0x18
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0800F5C4: .4byte gTasks
-_0800F5C8: .4byte 0x00006001
- thumb_func_end sub_800F460
-
- thumb_func_start sub_800F5CC
-sub_800F5CC: @ 800F5CC
- push {lr}
- ldr r0, _0800F5E0 @ =gBattleOutcome
- ldrb r2, [r0]
- cmp r2, 0x3
- bne _0800F5E8
- ldr r0, _0800F5E4 @ =gUnknown_83FE883
- movs r1, 0x15
- bl BattlePutTextOnWindow
- b _0800F6F0
- .align 2, 0
-_0800F5E0: .4byte gBattleOutcome
-_0800F5E4: .4byte gUnknown_83FE883
-_0800F5E8:
- ldr r0, _0800F61C @ =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0800F666
- cmp r2, 0x1
- bne _0800F632
- ldr r2, _0800F620 @ =gLinkPlayers
- ldr r0, _0800F624 @ =gBattleStruct
- ldr r0, [r0]
- adds r0, 0xB5
- ldrb r1, [r0]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r0, [r0, 0x18]
- cmp r0, 0x1
- beq _0800F682
- cmp r0, 0x1
- bgt _0800F628
- cmp r0, 0
- beq _0800F6BC
- b _0800F6F0
- .align 2, 0
-_0800F61C: .4byte gBattleTypeFlags
-_0800F620: .4byte gLinkPlayers
-_0800F624: .4byte gBattleStruct
-_0800F628:
- cmp r0, 0x2
- beq _0800F6BC
- cmp r0, 0x3
- bne _0800F6F0
- b _0800F682
-_0800F632:
- ldr r2, _0800F654 @ =gLinkPlayers
- ldr r0, _0800F658 @ =gBattleStruct
- ldr r0, [r0]
- adds r0, 0xB5
- ldrb r1, [r0]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r0, [r0, 0x18]
- cmp r0, 0x1
- beq _0800F6BC
- cmp r0, 0x1
- bgt _0800F65C
- cmp r0, 0
- beq _0800F682
- b _0800F6F0
- .align 2, 0
-_0800F654: .4byte gLinkPlayers
-_0800F658: .4byte gBattleStruct
-_0800F65C:
- cmp r0, 0x2
- beq _0800F682
- cmp r0, 0x3
- bne _0800F6F0
- b _0800F6BC
-_0800F666:
- cmp r2, 0x1
- bne _0800F6A4
- ldr r2, _0800F694 @ =gLinkPlayers
- ldr r0, _0800F698 @ =gBattleStruct
- ldr r0, [r0]
- adds r0, 0xB5
- ldrb r1, [r0]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r0, [r0, 0x18]
- cmp r0, 0
- beq _0800F6BC
-_0800F682:
- ldr r0, _0800F69C @ =gUnknown_83FE874
- movs r1, 0x17
- bl BattlePutTextOnWindow
- ldr r0, _0800F6A0 @ =gUnknown_83FE87B
- movs r1, 0x16
- bl BattlePutTextOnWindow
- b _0800F6F0
- .align 2, 0
-_0800F694: .4byte gLinkPlayers
-_0800F698: .4byte gBattleStruct
-_0800F69C: .4byte gUnknown_83FE874
-_0800F6A0: .4byte gUnknown_83FE87B
-_0800F6A4:
- ldr r2, _0800F6D0 @ =gLinkPlayers
- ldr r0, _0800F6D4 @ =gBattleStruct
- ldr r0, [r0]
- adds r0, 0xB5
- ldrb r1, [r0]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r0, [r0, 0x18]
- cmp r0, 0
- beq _0800F6E0
-_0800F6BC:
- ldr r0, _0800F6D8 @ =gUnknown_83FE874
- movs r1, 0x16
- bl BattlePutTextOnWindow
- ldr r0, _0800F6DC @ =gUnknown_83FE87B
- movs r1, 0x17
- bl BattlePutTextOnWindow
- b _0800F6F0
- .align 2, 0
-_0800F6D0: .4byte gLinkPlayers
-_0800F6D4: .4byte gBattleStruct
-_0800F6D8: .4byte gUnknown_83FE874
-_0800F6DC: .4byte gUnknown_83FE87B
-_0800F6E0:
- ldr r0, _0800F6F4 @ =gUnknown_83FE874
- movs r1, 0x17
- bl BattlePutTextOnWindow
- ldr r0, _0800F6F8 @ =gUnknown_83FE87B
- movs r1, 0x16
- bl BattlePutTextOnWindow
-_0800F6F0:
- pop {r0}
- bx r0
- .align 2, 0
-_0800F6F4: .4byte gUnknown_83FE874
-_0800F6F8: .4byte gUnknown_83FE87B
- thumb_func_end sub_800F5CC
-
- thumb_func_start sub_800F6FC
-sub_800F6FC: @ 800F6FC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r1, _0800F728 @ =gTasks
- lsls r0, r7, 2
- mov r8, r0
- adds r0, r7
- lsls r0, 3
- adds r5, r0, r1
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- bne _0800F71E
- b _0800F850
-_0800F71E:
- cmp r0, 0x1
- bgt _0800F72C
- cmp r0, 0
- beq _0800F734
- b _0800FAC4
- .align 2, 0
-_0800F728: .4byte gTasks
-_0800F72C:
- cmp r0, 0x2
- bne _0800F732
- b _0800F8F0
-_0800F732:
- b _0800FAC4
-_0800F734:
- ldr r0, _0800F75C @ =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0800F7CC
- movs r5, 0
- movs r6, 0x3
-_0800F744:
- ldr r0, _0800F760 @ =gLinkPlayers + 8
- adds r1, r5, r0
- subs r0, 0x8
- adds r4, r5, r0
- ldrh r0, [r4, 0x18]
- cmp r0, 0x1
- beq _0800F77C
- cmp r0, 0x1
- bgt _0800F764
- cmp r0, 0
- beq _0800F76E
- b _0800F7C2
- .align 2, 0
-_0800F75C: .4byte gBattleTypeFlags
-_0800F760: .4byte gLinkPlayers + 8
-_0800F764:
- cmp r0, 0x2
- beq _0800F790
- cmp r0, 0x3
- beq _0800F7AA
- b _0800F7C2
-_0800F76E:
- adds r0, r1, 0
- movs r1, 0x11
- bl BattlePutTextOnWindow
- ldrb r1, [r4, 0x18]
- movs r0, 0x4
- b _0800F79C
-_0800F77C:
- adds r0, r1, 0
- movs r1, 0x12
- bl BattlePutTextOnWindow
- ldrb r1, [r4, 0x18]
- movs r0, 0x4
- str r0, [sp]
- adds r0, r7, 0
- movs r2, 0x2
- b _0800F7A2
-_0800F790:
- adds r0, r1, 0
- movs r1, 0x13
- bl BattlePutTextOnWindow
- ldrb r1, [r4, 0x18]
- movs r0, 0x8
-_0800F79C:
- str r0, [sp]
- adds r0, r7, 0
- movs r2, 0x1
-_0800F7A2:
- movs r3, 0x2
- bl sub_800F460
- b _0800F7C2
-_0800F7AA:
- adds r0, r1, 0
- movs r1, 0x14
- bl BattlePutTextOnWindow
- ldrb r1, [r4, 0x18]
- movs r0, 0x8
- str r0, [sp]
- adds r0, r7, 0
- movs r2, 0x2
- movs r3, 0x2
- bl sub_800F460
-_0800F7C2:
- adds r5, 0x1C
- subs r6, 0x1
- cmp r6, 0
- bge _0800F744
- b _0800F830
-_0800F7CC:
- ldr r0, _0800F844 @ =gBattleStruct
- ldr r0, [r0]
- adds r0, 0xB5
- ldrb r5, [r0]
- movs r0, 0x1
- adds r6, r5, 0
- eors r6, r0
- adds r1, r6, 0
- ldr r4, _0800F848 @ =gLinkPlayers
- lsls r0, r5, 3
- subs r0, r5
- lsls r0, 2
- adds r0, r4
- ldrh r0, [r0, 0x18]
- cmp r0, 0
- beq _0800F7F0
- adds r6, r5, 0
- adds r5, r1, 0
-_0800F7F0:
- lsls r0, r5, 3
- subs r0, r5
- lsls r0, 2
- adds r4, 0x8
- adds r1, r0, r4
- adds r0, r1, 0
- movs r1, 0xF
- bl BattlePutTextOnWindow
- lsls r0, r6, 3
- subs r0, r6
- lsls r0, 2
- adds r1, r0, r4
- adds r0, r1, 0
- movs r1, 0x10
- bl BattlePutTextOnWindow
- movs r4, 0x7
- str r4, [sp]
- adds r0, r7, 0
- adds r1, r5, 0
- movs r2, 0x1
- movs r3, 0x2
- bl sub_800F460
- str r4, [sp]
- adds r0, r7, 0
- adds r1, r6, 0
- movs r2, 0x2
- movs r3, 0x2
- bl sub_800F460
-_0800F830:
- ldr r0, _0800F84C @ =gTasks
- mov r2, r8
- adds r1, r2, r7
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- b _0800FAC4
- .align 2, 0
-_0800F844: .4byte gBattleStruct
-_0800F848: .4byte gLinkPlayers
-_0800F84C: .4byte gTasks
-_0800F850:
- ldr r0, _0800F8CC @ =0x00002710
- bl AllocSpritePalette
- lsls r0, 24
- ldr r2, _0800F8D0 @ =gPlttBufferUnfaded
- lsrs r0, 19
- ldr r3, _0800F8D4 @ =0x0000021e
- adds r0, r3
- adds r2, r0, r2
- ldr r1, _0800F8D8 @ =gPlttBufferFaded
- adds r0, r1
- ldr r1, _0800F8DC @ =0x00007fff
- strh r1, [r0]
- strh r1, [r2]
- ldr r0, _0800F8E0 @ =gUnknown_82482E8
- movs r1, 0x6C
- movs r2, 0x50
- movs r3, 0
- bl CreateSprite
- ldr r4, _0800F8E4 @ =gBattleStruct
- ldr r1, [r4]
- adds r1, 0x7D
- strb r0, [r1]
- ldr r0, _0800F8E8 @ =gUnknown_8248300
- movs r1, 0x84
- movs r2, 0x50
- movs r3, 0
- bl CreateSprite
- ldr r1, [r4]
- adds r1, 0x7E
- strb r0, [r1]
- ldr r3, _0800F8EC @ =gSprites
- ldr r0, [r4]
- adds r0, 0x7D
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- ldr r0, [r4]
- adds r0, 0x7E
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x3E
- ldrb r1, [r0]
- orrs r1, r2
- strb r1, [r0]
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- b _0800FAC4
- .align 2, 0
-_0800F8CC: .4byte 0x00002710
-_0800F8D0: .4byte gPlttBufferUnfaded
-_0800F8D4: .4byte 0x0000021e
-_0800F8D8: .4byte gPlttBufferFaded
-_0800F8DC: .4byte 0x00007fff
-_0800F8E0: .4byte gUnknown_82482E8
-_0800F8E4: .4byte gBattleStruct
-_0800F8E8: .4byte gUnknown_8248300
-_0800F8EC: .4byte gSprites
-_0800F8F0:
- movs r1, 0x12
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _0800F958
- ldr r4, _0800F944 @ =gBattle_BG1_X
- ldrh r0, [r5, 0xA]
- bl Sin2
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bge _0800F90A
- adds r0, 0x1F
-_0800F90A:
- asrs r1, r0, 5
- movs r2, 0x14
- negs r2, r2
- adds r0, r2, 0
- subs r0, r1
- strh r0, [r4]
- ldr r4, _0800F948 @ =gBattle_BG2_X
- ldrh r0, [r5, 0xC]
- bl Sin2
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bge _0800F928
- adds r0, 0x1F
-_0800F928:
- asrs r1, r0, 5
- movs r3, 0x8C
- negs r3, r3
- adds r0, r3, 0
- subs r0, r1
- strh r0, [r4]
- ldr r0, _0800F94C @ =gBattle_BG1_Y
- ldr r2, _0800F950 @ =0x0000ffdc
- adds r1, r2, 0
- strh r1, [r0]
- ldr r0, _0800F954 @ =gBattle_BG2_Y
- strh r1, [r0]
- b _0800F9C4
- .align 2, 0
-_0800F944: .4byte gBattle_BG1_X
-_0800F948: .4byte gBattle_BG2_X
-_0800F94C: .4byte gBattle_BG1_Y
-_0800F950: .4byte 0x0000ffdc
-_0800F954: .4byte gBattle_BG2_Y
-_0800F958:
- ldr r4, _0800F9E8 @ =gBattle_BG1_X
- ldrh r0, [r5, 0xA]
- bl Sin2
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bge _0800F96A
- adds r0, 0x1F
-_0800F96A:
- asrs r1, r0, 5
- movs r3, 0x14
- negs r3, r3
- adds r0, r3, 0
- subs r0, r1
- strh r0, [r4]
- ldr r4, _0800F9EC @ =gBattle_BG1_Y
- ldrh r0, [r5, 0xA]
- bl Cos2
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bge _0800F988
- adds r0, 0x1F
-_0800F988:
- asrs r0, 5
- subs r0, 0xA4
- strh r0, [r4]
- ldr r4, _0800F9F0 @ =gBattle_BG2_X
- ldrh r0, [r5, 0xC]
- bl Sin2
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bge _0800F9A0
- adds r0, 0x1F
-_0800F9A0:
- asrs r1, r0, 5
- movs r2, 0x8C
- negs r2, r2
- adds r0, r2, 0
- subs r0, r1
- strh r0, [r4]
- ldr r4, _0800F9F4 @ =gBattle_BG2_Y
- ldrh r0, [r5, 0xC]
- bl Cos2
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bge _0800F9BE
- adds r0, 0x1F
-_0800F9BE:
- asrs r0, 5
- subs r0, 0xA4
- strh r0, [r4]
-_0800F9C4:
- ldr r1, _0800F9F8 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r1, r0, r1
- ldrh r0, [r1, 0xC]
- movs r2, 0xC
- ldrsh r3, [r1, r2]
- mov r8, r3
- cmp r3, 0
- beq _0800F9FC
- subs r0, 0x2
- strh r0, [r1, 0xC]
- ldrh r0, [r1, 0xA]
- adds r0, 0x2
- strh r0, [r1, 0xA]
- b _0800FAC4
- .align 2, 0
-_0800F9E8: .4byte gBattle_BG1_X
-_0800F9EC: .4byte gBattle_BG1_Y
-_0800F9F0: .4byte gBattle_BG2_X
-_0800F9F4: .4byte gBattle_BG2_Y
-_0800F9F8: .4byte gTasks
-_0800F9FC:
- movs r3, 0x12
- ldrsh r0, [r1, r3]
- cmp r0, 0
- beq _0800FA08
- bl sub_800F5CC
-_0800FA08:
- movs r0, 0x71
- bl PlaySE
- adds r0, r7, 0
- bl DestroyTask
- ldr r4, _0800FAD0 @ =gSprites
- ldr r5, _0800FAD4 @ =gBattleStruct
- ldr r0, [r5]
- adds r0, 0x7D
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- adds r1, 0x3E
- ldrb r3, [r1]
- movs r2, 0x5
- negs r2, r2
- adds r0, r2, 0
- ands r0, r3
- strb r0, [r1]
- ldr r0, [r5]
- adds r0, 0x7E
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x3E
- ldrb r1, [r0]
- ands r2, r1
- strb r2, [r0]
- ldr r5, [r5]
- adds r6, r5, 0
- adds r6, 0x7E
- ldrb r0, [r6]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r4
- ldrh r3, [r2, 0x4]
- lsls r1, r3, 22
- lsrs r1, 22
- adds r1, 0x40
- ldr r7, _0800FAD8 @ =0x000003ff
- adds r0, r7, 0
- ands r1, r0
- ldr r0, _0800FADC @ =0xfffffc00
- ands r0, r3
- orrs r0, r1
- strh r0, [r2, 0x4]
- adds r5, 0x7D
- ldrb r1, [r5]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- mov r1, r8
- strh r1, [r0, 0x2E]
- ldrb r1, [r6]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0x1
- strh r1, [r0, 0x2E]
- ldrb r1, [r5]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r0, 0x20]
- strh r1, [r0, 0x30]
- ldrb r1, [r6]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r0, 0x20]
- strh r1, [r0, 0x30]
- ldrb r1, [r5]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- mov r2, r8
- strh r2, [r0, 0x32]
- ldrb r1, [r6]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- strh r2, [r0, 0x32]
-_0800FAC4:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0800FAD0: .4byte gSprites
-_0800FAD4: .4byte gBattleStruct
-_0800FAD8: .4byte 0x000003ff
-_0800FADC: .4byte 0xfffffc00
- thumb_func_end sub_800F6FC
-
- thumb_func_start DrawBattleEntryBackground
-DrawBattleEntryBackground: @ 800FAE0
- push {r4,lr}
- ldr r0, _0800FB64 @ =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0800FB94
- ldr r0, _0800FB68 @ =gFile_graphics_battle_transitions_vs_frame_sheet
- ldr r1, _0800FB6C @ =0x06004000
- bl LZDecompressVram
- ldr r0, _0800FB70 @ =gFile_graphics_battle_transitions_vs_sheet
- ldr r1, _0800FB74 @ =0x06010000
- bl LZDecompressVram
- ldr r0, _0800FB78 @ =gFile_graphics_battle_transitions_vs_frame_palette
- movs r1, 0x60
- movs r2, 0x20
- bl LoadCompressedPalette
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0x1
- bl SetBgAttribute
- ldr r1, _0800FB7C @ =0x00005c04
- movs r0, 0xA
- bl SetGpuReg
- ldr r4, _0800FB80 @ =gFile_graphics_battle_transitions_vs_frame_tilemap
- movs r0, 0x1
- adds r1, r4, 0
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBuffer
- movs r0, 0x2
- adds r1, r4, 0
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBuffer
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- movs r0, 0x2
- bl CopyBgTilemapBufferToVram
- movs r0, 0x48
- movs r1, 0x36
- bl SetGpuReg
- movs r0, 0x4A
- movs r1, 0x36
- bl SetGpuReg
- ldr r0, _0800FB84 @ =gBattle_BG1_Y
- ldr r2, _0800FB88 @ =0x0000ff5c
- adds r1, r2, 0
- strh r1, [r0]
- ldr r0, _0800FB8C @ =gBattle_BG2_Y
- strh r1, [r0]
- ldr r0, _0800FB90 @ =gUnknown_8248318
- bl LoadCompressedSpriteSheetUsingHeap
- b _0800FC26
- .align 2, 0
-_0800FB64: .4byte gBattleTypeFlags
-_0800FB68: .4byte gFile_graphics_battle_transitions_vs_frame_sheet
-_0800FB6C: .4byte 0x06004000
-_0800FB70: .4byte gFile_graphics_battle_transitions_vs_sheet
-_0800FB74: .4byte 0x06010000
-_0800FB78: .4byte gFile_graphics_battle_transitions_vs_frame_palette
-_0800FB7C: .4byte 0x00005c04
-_0800FB80: .4byte gFile_graphics_battle_transitions_vs_frame_tilemap
-_0800FB84: .4byte gBattle_BG1_Y
-_0800FB88: .4byte 0x0000ff5c
-_0800FB8C: .4byte gBattle_BG2_Y
-_0800FB90: .4byte gUnknown_8248318
-_0800FB94:
- movs r0, 0x80
- lsls r0, 9
- ands r0, r1
- cmp r0, 0
- beq _0800FBA6
- movs r0, 0
- bl sub_800F2AC
- b _0800FC26
-_0800FBA6:
- ldr r0, _0800FBC8 @ =0x00080902
- ands r0, r1
- cmp r0, 0
- bne _0800FBF8
- movs r0, 0x80
- lsls r0, 5
- ands r0, r1
- cmp r0, 0
- beq _0800FBD8
- ldr r0, _0800FBCC @ =gGameVersion
- ldrb r0, [r0]
- cmp r0, 0x4
- bne _0800FBD0
- movs r0, 0x7
- bl sub_800F2AC
- b _0800FC26
- .align 2, 0
-_0800FBC8: .4byte 0x00080902
-_0800FBCC: .4byte gGameVersion
-_0800FBD0:
- movs r0, 0x4
- bl sub_800F2AC
- b _0800FC26
-_0800FBD8:
- movs r0, 0x8
- ands r1, r0
- cmp r1, 0
- beq _0800FC08
- ldr r2, _0800FC00 @ =gTrainers
- ldr r0, _0800FC04 @ =gTrainerBattleOpponent_A
- ldrh r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrb r0, [r0, 0x1]
- cmp r0, 0x54
- beq _0800FBF8
- cmp r0, 0x5A
- bne _0800FC08
-_0800FBF8:
- movs r0, 0x8
- bl sub_800F2AC
- b _0800FC26
- .align 2, 0
-_0800FC00: .4byte gTrainers
-_0800FC04: .4byte gTrainerBattleOpponent_A
-_0800FC08:
- bl GetCurrentMapBattleScene
- lsls r0, 24
- cmp r0, 0
- bne _0800FC20
- ldr r0, _0800FC1C @ =gBattleTerrain
- ldrb r0, [r0]
- bl sub_800F2AC
- b _0800FC26
- .align 2, 0
-_0800FC1C: .4byte gBattleTerrain
-_0800FC20:
- movs r0, 0x8
- bl sub_800F2AC
-_0800FC26:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end DrawBattleEntryBackground
-
- thumb_func_start sub_800FC2C
-sub_800FC2C: @ 800FC2C
- push {lr}
- ldr r0, _0800FC40 @ =gBattleTypeFlags
- ldr r1, [r0]
- ldr r2, _0800FC44 @ =0x00080902
- ands r2, r1
- cmp r2, 0
- beq _0800FC48
- movs r0, 0xA
- b _0800FCAA
- .align 2, 0
-_0800FC40: .4byte gBattleTypeFlags
-_0800FC44: .4byte 0x00080902
-_0800FC48:
- movs r0, 0x80
- lsls r0, 9
- ands r0, r1
- cmp r0, 0
- beq _0800FC60
- ldr r0, _0800FC5C @ =gBattleTerrain
- strb r2, [r0]
- movs r0, 0
- b _0800FCAA
- .align 2, 0
-_0800FC5C: .4byte gBattleTerrain
-_0800FC60:
- movs r0, 0x8
- ands r1, r0
- cmp r1, 0
- beq _0800FC90
- ldr r2, _0800FC80 @ =gTrainers
- ldr r0, _0800FC84 @ =gTrainerBattleOpponent_A
- ldrh r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrb r0, [r0, 0x1]
- cmp r0, 0x54
- bne _0800FC88
- movs r0, 0xC
- b _0800FCAA
- .align 2, 0
-_0800FC80: .4byte gTrainers
-_0800FC84: .4byte gTrainerBattleOpponent_A
-_0800FC88:
- cmp r0, 0x5A
- bne _0800FC90
- movs r0, 0x13
- b _0800FCAA
-_0800FC90:
- bl GetCurrentMapBattleScene
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _0800FCA6
- bl sub_800F238
- lsls r0, 24
- lsrs r0, 24
- b _0800FCAA
-_0800FCA6:
- ldr r0, _0800FCB0 @ =gBattleTerrain
- ldrb r0, [r0]
-_0800FCAA:
- pop {r1}
- bx r1
- .align 2, 0
-_0800FCB0: .4byte gBattleTerrain
- thumb_func_end sub_800FC2C
-
- thumb_func_start sub_800FCB4
-sub_800FCB4: @ 800FCB4
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- movs r4, 0
- cmp r0, 0x6
- bhi _0800FD92
- lsls r0, 2
- ldr r1, _0800FCCC @ =_0800FCD0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0800FCCC: .4byte _0800FCD0
- .align 2, 0
-_0800FCD0:
- .4byte _0800FCEC
- .4byte _0800FCFC
- .4byte _0800FD14
- .4byte _0800FD24
- .4byte _0800FD3E
- .4byte _0800FD68
- .4byte _0800FD8C
-_0800FCEC:
- ldr r0, _0800FCF8 @ =gBattleTextboxTiles
- movs r1, 0xC0
- lsls r1, 19
- bl LZDecompressVram
- b _0800FD94
- .align 2, 0
-_0800FCF8: .4byte gBattleTextboxTiles
-_0800FCFC:
- ldr r1, _0800FD10 @ =gBattleTextboxTilemap
- movs r0, 0
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBuffer
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- b _0800FD94
- .align 2, 0
-_0800FD10: .4byte gBattleTextboxTilemap
-_0800FD14:
- ldr r0, _0800FD20 @ =gBattleTextboxPalette
- movs r1, 0
- movs r2, 0x40
- bl LoadCompressedPalette
- b _0800FD94
- .align 2, 0
-_0800FD20: .4byte gBattleTextboxPalette
-_0800FD24:
- bl sub_800FC2C
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _0800FD5C @ =gUnknown_824EE34
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _0800FD60 @ =0x06008000
- bl LZDecompressVram
-_0800FD3E:
- bl sub_800FC2C
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _0800FD5C @ =gUnknown_824EE34
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 2
- adds r1, 0x4
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _0800FD64 @ =0x0600d000
- bl LZDecompressVram
- b _0800FD94
- .align 2, 0
-_0800FD5C: .4byte gUnknown_824EE34
-_0800FD60: .4byte 0x06008000
-_0800FD64: .4byte 0x0600d000
-_0800FD68:
- bl sub_800FC2C
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _0800FD88 @ =gUnknown_824EE34
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 2
- adds r1, 0x10
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x20
- movs r2, 0x60
- bl LoadCompressedPalette
- b _0800FD94
- .align 2, 0
-_0800FD88: .4byte gUnknown_824EE34
-_0800FD8C:
- bl LoadBattleMenuWindowGfx
- b _0800FD94
-_0800FD92:
- movs r4, 0x1
-_0800FD94:
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_800FCB4
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/data/battle_bg.s b/data/battle_bg.s
deleted file mode 100644
index a6c67612e..000000000
--- a/data/battle_bg.s
+++ /dev/null
@@ -1,583 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2, 0
-
-gUnknown_824829C:: @ 824829C
- .byte 1, 2, 0
-
- .align 2
-gOamData_82482A0::
- .4byte 0xc0000300, 0x00000000
-
-gOamData_82482A8::
- .4byte 0xc0000300, 0x00000040
-
-gUnknown_82482B0::
- obj_rot_scal_anim_frame 0x80, 0x80, 0, 0
- obj_rot_scal_anim_end
-
-gUnknown_82482C0::
- obj_rot_scal_anim_frame 0x80, 0x80, 0, 0
- obj_rot_scal_anim_frame 0x18, 0x18, 0, 0x80
- obj_rot_scal_anim_frame 0x18, 0x18, 0, 0x80
- obj_rot_scal_anim_end
-
-gAffineAnimTable_82482E0::
- .4byte gUnknown_82482B0
- .4byte gUnknown_82482C0
-
-gUnknown_82482E8:: @ 82482E8
- spr_template 10000, 10000, gOamData_82482A0, gDummySpriteAnimTable, NULL, gAffineAnimTable_82482E0, nullsub_9
-
-gUnknown_8248300:: @ 8248300
- spr_template 10000, 10000, gOamData_82482A8, gDummySpriteAnimTable, NULL, gAffineAnimTable_82482E0, nullsub_9
-
-gUnknown_8248318:: @ 8248318
- obj_tiles gFile_graphics_battle_transitions_vs_sheet, 0x1000, 10000
-
-gBattleBgTemplates:: @ 8248320
- .4byte 0x00000580
- @ {
- @ .bg = 0,
- @ .charBaseIndex = 0,
- @ .mapBaseIndex = 24,
- @ .screenSize = 2,
- @ .paletteMode = 0,
- @ .priority = 0,
- @ .baseTile = 0x0000
- @ }
- .4byte 0x000005c5
- @ {
- @ .bg = 1,
- @ .charBaseIndex = 1,
- @ .mapBaseIndex = 28,
- @ .screenSize = 2,
- @ .paletteMode = 0,
- @ .priority = 0,
- @ .baseTile = 0x0000
- @ }
- .4byte 0x000013e6
- @ {
- @ .bg = 2,
- @ .charBaseIndex = 1,
- @ .mapBaseIndex = 30,
- @ .screenSize = 1,
- @ .paletteMode = 0,
- @ .priority = 1,
- @ .baseTile = 0x0000
- @ }
- .4byte 0x000033ab
- @ {
- @ .bg = 3,
- @ .charBaseIndex = 2,
- @ .mapBaseIndex = 26,
- @ .screenSize = 1,
- @ .paletteMode = 0,
- @ .priority = 3,
- @ .baseTile = 0x0000
- @ }
-
-gUnknown_8248330:: @ 8248330
- .byte 0, 1, 15, 28, 4, 0
- .2byte 0x0090
- @ {
- @ .bg = 0,
- @ .tilemapLeft = 1,
- @ .tilemapTop = 15,
- @ .width = 28,
- @ .height = 4,
- @ .paletteNum = 0,
- @ .baseBlock = 0x0090
- @ }
- .byte 0, 1, 35, 14, 4, 0
- .2byte 0x01c0
- @ {
- @ .bg = 0,
- @ .tilemapLeft = 1,
- @ .tilemapTop = 35,
- @ .width = 14,
- @ .height = 4,
- @ .paletteNum = 0,
- @ .baseBlock = 0x01c0
- @ }
- .byte 0, 17, 35, 12, 4, 5
- .2byte 0x0190
- @ {
- @ .bg = 0,
- @ .tilemapLeft = 17,
- @ .tilemapTop = 35,
- @ .width = 12,
- @ .height = 4,
- @ .paletteNum = 5,
- @ .baseBlock = 0x0190
- @ }
- .byte 0, 2, 55, 8, 2, 5
- .2byte 0x0300
- @ {
- @ .bg = 0,
- @ .tilemapLeft = 2,
- @ .tilemapTop = 55,
- @ .width = 8,
- @ .height = 2,
- @ .paletteNum = 5,
- @ .baseBlock = 0x0300
- @ }
- .byte 0, 11, 55, 8, 2, 5
- .2byte 0x0310
- @ {
- @ .bg = 0,
- @ .tilemapLeft = 11,
- @ .tilemapTop = 55,
- @ .width = 8,
- @ .height = 2,
- @ .paletteNum = 5,
- @ .baseBlock = 0x0310
- @ }
- .byte 0, 2, 57, 8, 2, 5
- .2byte 0x0320
- @ {
- @ .bg = 0,
- @ .tilemapLeft = 2,
- @ .tilemapTop = 57,
- @ .width = 8,
- @ .height = 2,
- @ .paletteNum = 5,
- @ .baseBlock = 0x0320
- @ }
- .byte 0, 11, 57, 8, 2, 5
- .2byte 0x0330
- @ {
- @ .bg = 0,
- @ .tilemapLeft = 11,
- @ .tilemapTop = 57,
- @ .width = 8,
- @ .height = 2,
- @ .paletteNum = 5,
- @ .baseBlock = 0x0330
- @ }
- .byte 0, 21, 55, 3, 2, 5
- .2byte 0x0290
- @ {
- @ .bg = 0,
- @ .tilemapLeft = 21,
- @ .tilemapTop = 55,
- @ .width = 3,
- @ .height = 2,
- @ .paletteNum = 5,
- @ .baseBlock = 0x0290
- @ }
- .byte 0, 21, 57, 8, 2, 5
- .2byte 0x0296
- @ {
- @ .bg = 0,
- @ .tilemapLeft = 21,
- @ .tilemapTop = 57,
- @ .width = 8,
- @ .height = 2,
- @ .paletteNum = 5,
- @ .baseBlock = 0x0296
- @ }
- .byte 0, 24, 55, 5, 2, 5
- .2byte 0x02a6
- @ {
- @ .bg = 0,
- @ .tilemapLeft = 24,
- @ .tilemapTop = 55,
- @ .width = 5,
- @ .height = 2,
- @ .paletteNum = 5,
- @ .baseBlock = 0x02a6
- @ }
- .byte 0, 25, 57, 0, 0, 5
- .2byte 0x02b0
- @ {
- @ .bg = 0,
- @ .tilemapLeft = 25,
- @ .tilemapTop = 57,
- @ .width = 0,
- @ .height = 0,
- @ .paletteNum = 5,
- @ .baseBlock = 0x02b0
- @ }
- .byte 0, 21, 55, 8, 4, 5
- .2byte 0x02b0
- @ {
- @ .bg = 0,
- @ .tilemapLeft = 21,
- @ .tilemapTop = 55,
- @ .width = 8,
- @ .height = 4,
- @ .paletteNum = 5,
- @ .baseBlock = 0x02b0
- @ }
- .byte 1, 19, 8, 10, 11, 5
- .2byte 0x0100
- @ {
- @ .bg = 1,
- @ .tilemapLeft = 19,
- @ .tilemapTop = 8,
- @ .width = 10,
- @ .height = 11,
- @ .paletteNum = 5,
- @ .baseBlock = 0x0100
- @ }
- .byte 2, 18, 0, 12, 3, 6
- .2byte 0x016e
- @ {
- @ .bg = 2,
- @ .tilemapLeft = 18,
- @ .tilemapTop = 0,
- @ .width = 12,
- @ .height = 3,
- @ .paletteNum = 6,
- @ .baseBlock = 0x016e
- @ }
- .byte 0, 25, 9, 4, 4, 5
- .2byte 0x0100
- @ {
- @ .bg = 0,
- @ .tilemapLeft = 25,
- @ .tilemapTop = 9,
- @ .width = 4,
- @ .height = 4,
- @ .paletteNum = 5,
- @ .baseBlock = 0x0100
- @ }
- .byte 1, 2, 3, 7, 2, 5
- .2byte 0x0020
- @ {
- @ .bg = 1,
- @ .tilemapLeft = 2,
- @ .tilemapTop = 3,
- @ .width = 7,
- @ .height = 2,
- @ .paletteNum = 5,
- @ .baseBlock = 0x0020
- @ }
- .byte 2, 2, 3, 7, 2, 5
- .2byte 0x0040
- @ {
- @ .bg = 2,
- @ .tilemapLeft = 2,
- @ .tilemapTop = 3,
- @ .width = 7,
- @ .height = 2,
- @ .paletteNum = 5,
- @ .baseBlock = 0x0040
- @ }
- .byte 1, 2, 2, 7, 2, 5
- .2byte 0x0020
- @ {
- @ .bg = 1,
- @ .tilemapLeft = 2,
- @ .tilemapTop = 2,
- @ .width = 7,
- @ .height = 2,
- @ .paletteNum = 5,
- @ .baseBlock = 0x0020
- @ }
- .byte 2, 2, 2, 7, 2, 5
- .2byte 0x0040
- @ {
- @ .bg = 2,
- @ .tilemapLeft = 2,
- @ .tilemapTop = 2,
- @ .width = 7,
- @ .height = 2,
- @ .paletteNum = 5,
- @ .baseBlock = 0x0040
- @ }
- .byte 1, 2, 6, 7, 2, 5
- .2byte 0x0060
- @ {
- @ .bg = 1,
- @ .tilemapLeft = 2,
- @ .tilemapTop = 6,
- @ .width = 7,
- @ .height = 2,
- @ .paletteNum = 5,
- @ .baseBlock = 0x0060
- @ }
- .byte 2, 2, 6, 7, 2, 5
- .2byte 0x0080
- @ {
- @ .bg = 2,
- @ .tilemapLeft = 2,
- @ .tilemapTop = 6,
- @ .width = 7,
- @ .height = 2,
- @ .paletteNum = 5,
- @ .baseBlock = 0x0080
- @ }
- .byte 0, 11, 2, 8, 2, 0
- .2byte 0x00a0
- @ {
- @ .bg = 0,
- @ .tilemapLeft = 11,
- @ .tilemapTop = 2,
- @ .width = 8,
- @ .height = 2,
- @ .paletteNum = 0,
- @ .baseBlock = 0x00a0
- @ }
- .byte 0, 4, 2, 8, 2, 0
- .2byte 0x00a0
- @ {
- @ .bg = 0,
- @ .tilemapLeft = 4,
- @ .tilemapTop = 2,
- @ .width = 8,
- @ .height = 2,
- @ .paletteNum = 0,
- @ .baseBlock = 0x00a0
- @ }
- .byte 0, 19, 2, 8, 2, 0
- .2byte 0x00b0
- @ {
- @ .bg = 0,
- @ .tilemapLeft = 19,
- @ .tilemapTop = 2,
- @ .width = 8,
- @ .height = 2,
- @ .paletteNum = 0,
- @ .baseBlock = 0x00b0
- @ }
- .byte 0, 2, 15, 26, 4, 7
- .2byte 0x0090
- @ {
- @ .bg = 0,
- @ .tilemapLeft = 2,
- @ .tilemapTop = 15,
- @ .width = 26,
- @ .height = 4,
- @ .paletteNum = 7,
- @ .baseBlock = 0x0090
- @ }
- .byte 255, 0, 0, 0, 0, 0
- .2byte 0x0000
- @ {
- @ .bg = 255,
- @ .tilemapLeft = 0,
- @ .tilemapTop = 0,
- @ .width = 0,
- @ .height = 0,
- @ .paletteNum = 0,
- @ .baseBlock = 0x0000
- @ }
-
-gUnknown_8248400:: @ 8248400
- .incbin "graphics/battle/unk_8248400.gbapal.lz"
-
-gUnknown_824844C:: @ 824844C
- .incbin "graphics/battle/unk_824844C.4bpp.lz"
-
-gUnknown_82489A8:: @ 82489A8
- .incbin "graphics/battle/unk_82489A8.bin.lz"
-
-gUnknown_8248C68:: @ 8248C68
- .incbin "graphics/battle/unk_8248C68.4bpp.lz"
-
-gUnknown_8248F58:: @ 8248F58
- .incbin "graphics/battle/unk_8248F58.bin.lz"
-
-gUnknown_8249074:: @ 8249074
- .incbin "graphics/battle/unk_8249074.gbapal.lz"
-
-gUnknown_82490C4:: @ 82490C4
- .incbin "graphics/battle/unk_82490C4.4bpp.lz"
-
-gUnknown_8249620:: @ 8249620
- .incbin "graphics/battle/unk_8249620.bin.lz"
-
-gUnknown_82498DC:: @ 82498DC
- .incbin "graphics/battle/unk_82498DC.4bpp.lz"
-
-gUnknown_8249E10:: @ 8249E10
- .incbin "graphics/battle/unk_8249E10.bin.lz"
-
-gUnknown_8249F98:: @ 8249F98
- .incbin "graphics/battle/unk_8249F98.gbapal.lz"
-
-gUnknown_8249FE4:: @ 8249FE4
- .incbin "graphics/battle/unk_8249FE4.4bpp.lz"
-
-gUnknown_824A37C:: @ 824A37C
- .incbin "graphics/battle/unk_824A37C.bin.lz"
-
-gUnknown_824A618:: @ 824A618
- .incbin "graphics/battle/unk_824A618.4bpp.lz"
-
-gUnknown_824A844:: @ 824A844
- .incbin "graphics/battle/unk_824A844.bin.lz"
-
-gUnknown_824A940:: @ 824A940
- .incbin "graphics/battle/unk_824A940.gbapal.lz"
-
-gUnknown_824A990:: @ 824A990
- .incbin "graphics/battle/unk_824A990.4bpp.lz"
-
-gUnknown_824ACD0:: @ 824ACD0
- .incbin "graphics/battle/unk_824ACD0.bin.lz"
-
-gUnknown_824AF70:: @ 824AF70
- .incbin "graphics/battle/unk_824AF70.4bpp.lz"
-
-gUnknown_824B0DC:: @ 824B0DC
- .incbin "graphics/battle/unk_824B0DC.bin.lz"
-
-gUnknown_824B19C:: @ 824B19C
- .incbin "graphics/battle/unk_824B19C.gbapal.lz"
-
-gUnknown_824B1EC:: @ 824B1EC
- .incbin "graphics/battle/unk_824B1EC.4bpp.lz"
-
-gUnknown_824B608:: @ 824B608
- .incbin "graphics/battle/unk_824B608.bin.lz"
-
-gUnknown_824B8A8:: @ 824B8A8
- .incbin "graphics/battle/unk_824B8A8.4bpp.lz"
-
-gUnknown_824BBE0:: @ 824BBE0
- .incbin "graphics/battle/unk_824BBE0.bin.lz"
-
-gUnknown_824BCE0:: @ 824BCE0
- .incbin "graphics/battle/unk_824BCE0.gbapal.lz"
-
-gUnknown_824BD38:: @ 824BD38
- .incbin "graphics/battle/unk_824BD38.4bpp.lz"
-
-gUnknown_824C07C:: @ 824C07C
- .incbin "graphics/battle/unk_824C07C.bin.lz"
-
-gUnknown_824C314:: @ 824C314
- .incbin "graphics/battle/unk_824C314.4bpp.lz"
-
-gUnknown_824C520:: @ 824C520
- .incbin "graphics/battle/unk_824C520.bin.lz"
-
-gUnknown_824C5D8:: @ 824C5D8
- .incbin "graphics/battle/unk_824C5D8.gbapal.lz"
-
-gUnknown_824C624:: @ 824C624
- .incbin "graphics/battle/unk_824C624.4bpp.lz"
-
-gUnknown_824C958:: @ 824C958
- .incbin "graphics/battle/unk_824C958.bin.lz"
-
-gUnknown_824CBF8:: @ 824CBF8
- .incbin "graphics/battle/unk_824CBF8.4bpp.lz"
-
-gUnknown_824CEC8:: @ 824CEC8
- .incbin "graphics/battle/unk_824CEC8.bin.lz"
-
-gUnknown_824CF98:: @ 824CF98
- .incbin "graphics/battle/unk_824CF98.gbapal.lz"
-
-gUnknown_824CFEC:: @ 824CFEC
- .incbin "graphics/battle/unk_824CFEC.4bpp.lz"
-
-gUnknown_824D418:: @ 824D418
- .incbin "graphics/battle/unk_824D418.bin.lz"
-
-gUnknown_824D6B8:: @ 824D6B8
- .incbin "graphics/battle/unk_824D6B8.4bpp.lz"
-
-gUnknown_824DC98:: @ 824DC98
- .incbin "graphics/battle/unk_824DC98.bin.lz"
-
-gUnknown_824DDF0:: @ 824DDF0
- .incbin "graphics/battle/unk_824DDF0.gbapal.lz"
-
-gUnknown_824DE34:: @ 824DE34
- .incbin "graphics/battle/unk_824DE34.4bpp.lz"
-
-gUnknown_824E16C:: @ 824E16C
- .incbin "graphics/battle/unk_824E16C.bin.lz"
-
-gUnknown_824E410:: @ 824E410
- .incbin "graphics/battle/unk_824E410.4bpp.lz"
-
-gUnknown_824E490:: @ 824E490
- .incbin "graphics/battle/unk_824E490.bin.lz"
-
-gUnknown_824E528:: @ 824E528
- .incbin "graphics/battle/unk_824E528.gbapal.lz"
-
-gUnknown_824E56C:: @ 824E56C
- .incbin "graphics/battle/unk_824E56C.gbapal.lz"
-
-gUnknown_824E5B8:: @ 824E5B8
- .incbin "graphics/battle/unk_824E5B8.gbapal.lz"
-
-gUnknown_824E604:: @ 824E604
- .incbin "graphics/battle/unk_824E604.gbapal.lz"
-
-gUnknown_824E650:: @ 824E650
- .incbin "graphics/battle/unk_824E650.gbapal.lz"
-
-gUnknown_824E6A4:: @ 824E6A4
- .incbin "graphics/battle/unk_824E6A4.gbapal.lz"
-
-gUnknown_824E6F0:: @ 824E6F0
- .incbin "graphics/battle/unk_824E6F0.gbapal.lz"
-
-gUnknown_824E740:: @ 824E740
- .incbin "graphics/battle/unk_824E740.gbapal.lz"
-
-gUnknown_824E78C:: @ 824E78C
- .incbin "graphics/battle/unk_824E78C.gbapal.lz"
-
-gUnknown_824E7DC:: @ 824E7DC
- .incbin "graphics/battle/unk_824E7DC.gbapal.lz"
-
-gUnknown_824E81C:: @ 824E81C
- .incbin "graphics/battle/unk_824E81C.gbapal.lz"
-
-gUnknown_824E858:: @ 824E858
- .incbin "graphics/battle/unk_824E858.4bpp.lz"
-
-gUnknown_824EB90:: @ 824EB90
- .incbin "graphics/battle/unk_824EB90.bin.lz"
-
-gUnknown_824EE34:: @ 824EE34
- .4byte gUnknown_824844C, gUnknown_82489A8, gUnknown_8248C68, gUnknown_8248F58, gUnknown_8248400
- .4byte gUnknown_82490C4, gUnknown_8249620, gUnknown_82498DC, gUnknown_8249E10, gUnknown_8249074
- .4byte gUnknown_8249FE4, gUnknown_824A37C, gUnknown_824A618, gUnknown_824A844, gUnknown_8249F98
- .4byte gUnknown_824A990, gUnknown_824ACD0, gUnknown_824AF70, gUnknown_824B0DC, gUnknown_824A940
- .4byte gUnknown_824B1EC, gUnknown_824B608, gUnknown_824B8A8, gUnknown_824BBE0, gUnknown_824B19C
- .4byte gUnknown_824BD38, gUnknown_824C07C, gUnknown_824C314, gUnknown_824C520, gUnknown_824BCE0
- .4byte gUnknown_824C624, gUnknown_824C958, gUnknown_824CBF8, gUnknown_824CEC8, gUnknown_824C5D8
- .4byte gUnknown_824CFEC, gUnknown_824D418, gUnknown_824D6B8, gUnknown_824DC98, gUnknown_824CF98
- .4byte gUnknown_824DE34, gUnknown_824E16C, gUnknown_824E410, gUnknown_824E490, gUnknown_824DDF0
- .4byte gUnknown_824DE34, gUnknown_824E16C, gUnknown_824E410, gUnknown_824E490, gUnknown_824E81C
- .4byte gUnknown_824DE34, gUnknown_824E16C, gUnknown_824E410, gUnknown_824E490, gUnknown_824E528
- .4byte gUnknown_824DE34, gUnknown_824E16C, gUnknown_824E410, gUnknown_824E490, gUnknown_824E56C
- .4byte gUnknown_824DE34, gUnknown_824E16C, gUnknown_824E410, gUnknown_824E490, gUnknown_824E5B8
- .4byte gUnknown_824E858, gUnknown_824EB90, gUnknown_824E410, gUnknown_824E490, gUnknown_824E604
- .4byte gUnknown_824E858, gUnknown_824EB90, gUnknown_824E410, gUnknown_824E490, gUnknown_824E650
- .4byte gUnknown_824E858, gUnknown_824EB90, gUnknown_824E410, gUnknown_824E490, gUnknown_824E6A4
- .4byte gUnknown_824E858, gUnknown_824EB90, gUnknown_824E410, gUnknown_824E490, gUnknown_824E6F0
- .4byte gUnknown_824E858, gUnknown_824EB90, gUnknown_824E410, gUnknown_824E490, gUnknown_824E740
- .4byte gUnknown_824E858, gUnknown_824EB90, gUnknown_824E410, gUnknown_824E490, gUnknown_824E78C
- .4byte gUnknown_824E858, gUnknown_824EB90, gUnknown_824E410, gUnknown_824E490, gUnknown_824E7DC
-
-@ struct {u8; u8;}
-gUnknown_824EFC4:: @ 824EFC4
- .byte 0x01, 0x0b
- .align 2
- .byte 0x02, 0x0e
- .align 2
- .byte 0x03, 0x0d
- .align 2
- .byte 0x04, 0x0f
- .align 2
- .byte 0x05, 0x10
- .align 2
- .byte 0x06, 0x11
- .align 2
- .byte 0x07, 0x12
- .align 2
- .byte 0x08, 0x0a
- .align 2
diff --git a/include/battle_bg.h b/include/battle_bg.h
index 60a6de8f5..518c566dc 100644
--- a/include/battle_bg.h
+++ b/include/battle_bg.h
@@ -7,7 +7,7 @@ extern const struct BgTemplate gBattleBgTemplates[];
void InitBattleBgsVideo(void);
void DrawBattleEntryBackground(void);
-void sub_800F6FC(u8 taskId);
+void InitLinkBattleVsScreen(u8 taskId);
void LoadBattleMenuWindowGfx(void);
void LoadBattleTextboxAndBackground(void);
void sub_800F324(void);
diff --git a/include/battle_message.h b/include/battle_message.h
index 2e2baa278..5a16a4250 100644
--- a/include/battle_message.h
+++ b/include/battle_message.h
@@ -251,4 +251,8 @@ extern const u8 gUnknown_83FE864[];
extern const u8 gText_SafariBalls[];
extern const u8 gText_HighlightRed_Left[];
+extern const u8 gText_Win[];
+extern const u8 gText_Loss[];
+extern const u8 gText_Draw[];
+
#endif // GUARD_BATTLE_MESSAGE_H
diff --git a/include/graphics.h b/include/graphics.h
index 7d1d6e9c9..fdee97c82 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -4875,4 +4875,10 @@ extern const u32 gLinkMiscMenu_Tilemap[];
// union_room_chat_objects
extern const u32 gUnionRoomChatIcons[];
+//battle_bg
+extern const u32 gFile_graphics_battle_transitions_vs_frame_sheet[];
+extern const u32 gFile_graphics_battle_transitions_vs_sheet[];
+extern const u32 gFile_graphics_battle_transitions_vs_frame_palette[];
+extern const u32 gFile_graphics_battle_transitions_vs_frame_tilemap[];
+
#endif //GUARD_GRAPHICS_H
diff --git a/include/overworld.h b/include/overworld.h
index 8242615c7..f0a168052 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -176,6 +176,7 @@ void sub_8056078(void *, void *);
void sub_805546C(u8 a0);
bool32 sub_80582E0(void);
bool32 sub_8058274(void);
+u8 GetCurrentMapBattleScene(void);
extern u16 gHeldKeyCodeToSend;
diff --git a/ld_script.txt b/ld_script.txt
index fd9925b54..eb6f285e5 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -63,7 +63,7 @@ SECTIONS {
src/main_menu.o(.text);
src/battle_controllers.o(.text);
src/decompress.o(.text);
- asm/battle_bg.o(.text);
+ src/battle_bg.o(.text);
src/battle_main.o(.text);
src/battle_util.o(.text);
src/battle_script_commands.o(.text);
@@ -400,7 +400,7 @@ SECTIONS {
src/link.o(.rodata);
src/main_menu.o(.rodata);
src/data.o(.rodata);
- data/battle_bg.o(.rodata);
+ src/battle_bg.o(.rodata);
src/battle_main.o(.rodata);
src/battle_util.o(.rodata);
src/battle_script_commands.o(.rodata);
diff --git a/src/battle_bg.c b/src/battle_bg.c
new file mode 100644
index 000000000..affa4dfc6
--- /dev/null
+++ b/src/battle_bg.c
@@ -0,0 +1,925 @@
+#include "global.h"
+#include "gflib.h"
+#include "battle.h"
+#include "battle_bg.h"
+#include "battle_message.h"
+#include "decompress.h"
+#include "graphics.h"
+#include "link.h"
+#include "new_menu_helpers.h"
+#include "overworld.h"
+#include "text_window.h"
+#include "trig.h"
+#include "constants/maps.h"
+#include "constants/songs.h"
+#include "constants/trainer_classes.h"
+
+#define TAG_VS_LETTERS 10000
+
+static void sub_800F228(void);
+static u8 sub_800FC2C(void);
+
+static const u8 gUnknown_824829C[] = {1, 2};
+
+static const struct OamData gOamData_82482A0 = {
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = FALSE,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(64x64),
+ .x = 0,
+ .matrixNum = 0,
+ .size = SPRITE_SIZE(64x64),
+ .tileNum = 0x000,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+static const struct OamData gOamData_82482A8 = {
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = FALSE,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(64x64),
+ .x = 0,
+ .matrixNum = 0,
+ .size = SPRITE_SIZE(64x64),
+ .tileNum = 0x040,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+static const union AffineAnimCmd gUnknown_82482B0[] = {
+ AFFINEANIMCMD_FRAME(0x80, 0x80, 0, 0),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd gUnknown_82482C0[] = {
+ AFFINEANIMCMD_FRAME(0x80, 0x80, 0, 0),
+ AFFINEANIMCMD_FRAME(0x18, 0x18, 0x0, 0x80),
+ AFFINEANIMCMD_FRAME(0x18, 0x18, 0x0, 0x80),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd *const gAffineAnimTable_82482E0[] = {
+ gUnknown_82482B0,
+ gUnknown_82482C0
+};
+
+static const struct SpriteTemplate sVsLetter_V_SpriteTemplate = {
+ .tileTag = TAG_VS_LETTERS,
+ .paletteTag = TAG_VS_LETTERS,
+ .oam = &gOamData_82482A0,
+ .anims = gDummySpriteAnimTable,
+ .affineAnims = gAffineAnimTable_82482E0,
+ .callback = nullsub_9
+};
+
+static const struct SpriteTemplate sVsLetter_S_SpriteTemplate = {
+ .tileTag = TAG_VS_LETTERS,
+ .paletteTag = TAG_VS_LETTERS,
+ .oam = &gOamData_82482A8,
+ .anims = gDummySpriteAnimTable,
+ .affineAnims = gAffineAnimTable_82482E0,
+ .callback = nullsub_9
+};
+
+static const struct CompressedSpriteSheet sVsLettersSpriteSheet = {
+ gFile_graphics_battle_transitions_vs_sheet,
+ 0x1000,
+ TAG_VS_LETTERS
+};
+
+const struct BgTemplate gBattleBgTemplates[4] = {
+ {
+ .bg = 0,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 24,
+ .screenSize = 2,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0x000
+ }, {
+ .bg = 1,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 28,
+ .screenSize = 2,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0x000
+ }, {
+ .bg = 2,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 30,
+ .screenSize = 1,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0x000
+ }, {
+ .bg = 3,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 26,
+ .screenSize = 1,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0x000
+ }
+};
+
+static const struct WindowTemplate gUnknown_8248330[] = {
+ {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 15,
+ .width = 28,
+ .height = 4,
+ .paletteNum = 0,
+ .baseBlock = 0x090
+ }, {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 35,
+ .width = 14,
+ .height = 4,
+ .paletteNum = 0,
+ .baseBlock = 0x1c0
+ }, {
+ .bg = 0,
+ .tilemapLeft = 17,
+ .tilemapTop = 35,
+ .width = 12,
+ .height = 4,
+ .paletteNum = 5,
+ .baseBlock = 0x190
+ }, {
+ .bg = 0,
+ .tilemapLeft = 2,
+ .tilemapTop = 55,
+ .width = 8,
+ .height = 2,
+ .paletteNum = 5,
+ .baseBlock = 0x300
+ }, {
+ .bg = 0,
+ .tilemapLeft = 11,
+ .tilemapTop = 55,
+ .width = 8,
+ .height = 2,
+ .paletteNum = 5,
+ .baseBlock = 0x310
+ }, {
+ .bg = 0,
+ .tilemapLeft = 2,
+ .tilemapTop = 57,
+ .width = 8,
+ .height = 2,
+ .paletteNum = 5,
+ .baseBlock = 0x320
+ }, {
+ .bg = 0,
+ .tilemapLeft = 11,
+ .tilemapTop = 57,
+ .width = 8,
+ .height = 2,
+ .paletteNum = 5,
+ .baseBlock = 0x330
+ }, {
+ .bg = 0,
+ .tilemapLeft = 21,
+ .tilemapTop = 55,
+ .width = 3,
+ .height = 2,
+ .paletteNum = 5,
+ .baseBlock = 0x290
+ }, {
+ .bg = 0,
+ .tilemapLeft = 21,
+ .tilemapTop = 57,
+ .width = 8,
+ .height = 2,
+ .paletteNum = 5,
+ .baseBlock = 0x296
+ }, {
+ .bg = 0,
+ .tilemapLeft = 24,
+ .tilemapTop = 55,
+ .width = 5,
+ .height = 2,
+ .paletteNum = 5,
+ .baseBlock = 0x2a6
+ }, {
+ .bg = 0,
+ .tilemapLeft = 25,
+ .tilemapTop = 57,
+ .width = 0,
+ .height = 0,
+ .paletteNum = 5,
+ .baseBlock = 0x2b0
+ }, {
+ .bg = 0,
+ .tilemapLeft = 21,
+ .tilemapTop = 55,
+ .width = 8,
+ .height = 4,
+ .paletteNum = 5,
+ .baseBlock = 0x2b0
+ }, {
+ .bg = 1,
+ .tilemapLeft = 19,
+ .tilemapTop = 8,
+ .width = 10,
+ .height = 11,
+ .paletteNum = 5,
+ .baseBlock = 0x100
+ }, {
+ .bg = 2,
+ .tilemapLeft = 18,
+ .tilemapTop = 0,
+ .width = 12,
+ .height = 3,
+ .paletteNum = 6,
+ .baseBlock = 0x16e
+ }, {
+ .bg = 0,
+ .tilemapLeft = 25,
+ .tilemapTop = 9,
+ .width = 4,
+ .height = 4,
+ .paletteNum = 5,
+ .baseBlock = 0x100
+ }, {
+ .bg = 1,
+ .tilemapLeft = 2,
+ .tilemapTop = 3,
+ .width = 7,
+ .height = 2,
+ .paletteNum = 5,
+ .baseBlock = 0x020
+ }, {
+ .bg = 2,
+ .tilemapLeft = 2,
+ .tilemapTop = 3,
+ .width = 7,
+ .height = 2,
+ .paletteNum = 5,
+ .baseBlock = 0x040
+ }, {
+ .bg = 1,
+ .tilemapLeft = 2,
+ .tilemapTop = 2,
+ .width = 7,
+ .height = 2,
+ .paletteNum = 5,
+ .baseBlock = 0x020
+ }, {
+ .bg = 2,
+ .tilemapLeft = 2,
+ .tilemapTop = 2,
+ .width = 7,
+ .height = 2,
+ .paletteNum = 5,
+ .baseBlock = 0x040
+ }, {
+ .bg = 1,
+ .tilemapLeft = 2,
+ .tilemapTop = 6,
+ .width = 7,
+ .height = 2,
+ .paletteNum = 5,
+ .baseBlock = 0x060
+ }, {
+ .bg = 2,
+ .tilemapLeft = 2,
+ .tilemapTop = 6,
+ .width = 7,
+ .height = 2,
+ .paletteNum = 5,
+ .baseBlock = 0x080
+ }, {
+ .bg = 0,
+ .tilemapLeft = 11,
+ .tilemapTop = 2,
+ .width = 8,
+ .height = 2,
+ .paletteNum = 0,
+ .baseBlock = 0x0a0
+ }, {
+ .bg = 0,
+ .tilemapLeft = 4,
+ .tilemapTop = 2,
+ .width = 8,
+ .height = 2,
+ .paletteNum = 0,
+ .baseBlock = 0x0a0
+ }, {
+ .bg = 0,
+ .tilemapLeft = 19,
+ .tilemapTop = 2,
+ .width = 8,
+ .height = 2,
+ .paletteNum = 0,
+ .baseBlock = 0x0b0
+ }, {
+ .bg = 0,
+ .tilemapLeft = 2,
+ .tilemapTop = 15,
+ .width = 26,
+ .height = 4,
+ .paletteNum = 7,
+ .baseBlock = 0x090
+ }, DUMMY_WIN_TEMPLATE
+};
+
+static const u32 gUnknown_8248400[] = INCBIN_U32("graphics/battle/unk_8248400.gbapal.lz");
+static const u32 gUnknown_824844C[] = INCBIN_U32("graphics/battle/unk_824844C.4bpp.lz");
+static const u32 gUnknown_82489A8[] = INCBIN_U32("graphics/battle/unk_82489A8.bin.lz");
+static const u32 gUnknown_8248C68[] = INCBIN_U32("graphics/battle/unk_8248C68.4bpp.lz");
+static const u32 gUnknown_8248F58[] = INCBIN_U32("graphics/battle/unk_8248F58.bin.lz");
+static const u32 gUnknown_8249074[] = INCBIN_U32("graphics/battle/unk_8249074.gbapal.lz");
+static const u32 gUnknown_82490C4[] = INCBIN_U32("graphics/battle/unk_82490C4.4bpp.lz");
+static const u32 gUnknown_8249620[] = INCBIN_U32("graphics/battle/unk_8249620.bin.lz");
+static const u32 gUnknown_82498DC[] = INCBIN_U32("graphics/battle/unk_82498DC.4bpp.lz");
+static const u32 gUnknown_8249E10[] = INCBIN_U32("graphics/battle/unk_8249E10.bin.lz");
+static const u32 gUnknown_8249F98[] = INCBIN_U32("graphics/battle/unk_8249F98.gbapal.lz");
+static const u32 gUnknown_8249FE4[] = INCBIN_U32("graphics/battle/unk_8249FE4.4bpp.lz");
+static const u32 gUnknown_824A37C[] = INCBIN_U32("graphics/battle/unk_824A37C.bin.lz");
+static const u32 gUnknown_824A618[] = INCBIN_U32("graphics/battle/unk_824A618.4bpp.lz");
+static const u32 gUnknown_824A844[] = INCBIN_U32("graphics/battle/unk_824A844.bin.lz");
+static const u32 gUnknown_824A940[] = INCBIN_U32("graphics/battle/unk_824A940.gbapal.lz");
+static const u32 gUnknown_824A990[] = INCBIN_U32("graphics/battle/unk_824A990.4bpp.lz");
+static const u32 gUnknown_824ACD0[] = INCBIN_U32("graphics/battle/unk_824ACD0.bin.lz");
+static const u32 gUnknown_824AF70[] = INCBIN_U32("graphics/battle/unk_824AF70.4bpp.lz");
+static const u32 gUnknown_824B0DC[] = INCBIN_U32("graphics/battle/unk_824B0DC.bin.lz");
+static const u32 gUnknown_824B19C[] = INCBIN_U32("graphics/battle/unk_824B19C.gbapal.lz");
+static const u32 gUnknown_824B1EC[] = INCBIN_U32("graphics/battle/unk_824B1EC.4bpp.lz");
+static const u32 gUnknown_824B608[] = INCBIN_U32("graphics/battle/unk_824B608.bin.lz");
+static const u32 gUnknown_824B8A8[] = INCBIN_U32("graphics/battle/unk_824B8A8.4bpp.lz");
+static const u32 gUnknown_824BBE0[] = INCBIN_U32("graphics/battle/unk_824BBE0.bin.lz");
+static const u32 gUnknown_824BCE0[] = INCBIN_U32("graphics/battle/unk_824BCE0.gbapal.lz");
+static const u32 gUnknown_824BD38[] = INCBIN_U32("graphics/battle/unk_824BD38.4bpp.lz");
+static const u32 gUnknown_824C07C[] = INCBIN_U32("graphics/battle/unk_824C07C.bin.lz");
+static const u32 gUnknown_824C314[] = INCBIN_U32("graphics/battle/unk_824C314.4bpp.lz");
+static const u32 gUnknown_824C520[] = INCBIN_U32("graphics/battle/unk_824C520.bin.lz");
+static const u32 gUnknown_824C5D8[] = INCBIN_U32("graphics/battle/unk_824C5D8.gbapal.lz");
+static const u32 gUnknown_824C624[] = INCBIN_U32("graphics/battle/unk_824C624.4bpp.lz");
+static const u32 gUnknown_824C958[] = INCBIN_U32("graphics/battle/unk_824C958.bin.lz");
+static const u32 gUnknown_824CBF8[] = INCBIN_U32("graphics/battle/unk_824CBF8.4bpp.lz");
+static const u32 gUnknown_824CEC8[] = INCBIN_U32("graphics/battle/unk_824CEC8.bin.lz");
+static const u32 gUnknown_824CF98[] = INCBIN_U32("graphics/battle/unk_824CF98.gbapal.lz");
+static const u32 gUnknown_824CFEC[] = INCBIN_U32("graphics/battle/unk_824CFEC.4bpp.lz");
+static const u32 gUnknown_824D418[] = INCBIN_U32("graphics/battle/unk_824D418.bin.lz");
+static const u32 gUnknown_824D6B8[] = INCBIN_U32("graphics/battle/unk_824D6B8.4bpp.lz");
+static const u32 gUnknown_824DC98[] = INCBIN_U32("graphics/battle/unk_824DC98.bin.lz");
+static const u32 gUnknown_824DDF0[] = INCBIN_U32("graphics/battle/unk_824DDF0.gbapal.lz");
+static const u32 gUnknown_824DE34[] = INCBIN_U32("graphics/battle/unk_824DE34.4bpp.lz");
+static const u32 gUnknown_824E16C[] = INCBIN_U32("graphics/battle/unk_824E16C.bin.lz");
+static const u32 gUnknown_824E410[] = INCBIN_U32("graphics/battle/unk_824E410.4bpp.lz");
+static const u32 gUnknown_824E490[] = INCBIN_U32("graphics/battle/unk_824E490.bin.lz");
+static const u32 gUnknown_824E528[] = INCBIN_U32("graphics/battle/unk_824E528.gbapal.lz");
+static const u32 gUnknown_824E56C[] = INCBIN_U32("graphics/battle/unk_824E56C.gbapal.lz");
+static const u32 gUnknown_824E5B8[] = INCBIN_U32("graphics/battle/unk_824E5B8.gbapal.lz");
+static const u32 gUnknown_824E604[] = INCBIN_U32("graphics/battle/unk_824E604.gbapal.lz");
+static const u32 gUnknown_824E650[] = INCBIN_U32("graphics/battle/unk_824E650.gbapal.lz");
+static const u32 gUnknown_824E6A4[] = INCBIN_U32("graphics/battle/unk_824E6A4.gbapal.lz");
+static const u32 gUnknown_824E6F0[] = INCBIN_U32("graphics/battle/unk_824E6F0.gbapal.lz");
+static const u32 gUnknown_824E740[] = INCBIN_U32("graphics/battle/unk_824E740.gbapal.lz");
+static const u32 gUnknown_824E78C[] = INCBIN_U32("graphics/battle/unk_824E78C.gbapal.lz");
+static const u32 gUnknown_824E7DC[] = INCBIN_U32("graphics/battle/unk_824E7DC.gbapal.lz");
+static const u32 gUnknown_824E81C[] = INCBIN_U32("graphics/battle/unk_824E81C.gbapal.lz");
+static const u32 gUnknown_824E858[] = INCBIN_U32("graphics/battle/unk_824E858.4bpp.lz");
+static const u32 gUnknown_824EB90[] = INCBIN_U32("graphics/battle/unk_824EB90.bin.lz");
+
+static const u32 *const gUnknown_824EE34[][5] = {
+ {gUnknown_824844C, gUnknown_82489A8, gUnknown_8248C68, gUnknown_8248F58, gUnknown_8248400},
+ {gUnknown_82490C4, gUnknown_8249620, gUnknown_82498DC, gUnknown_8249E10, gUnknown_8249074},
+ {gUnknown_8249FE4, gUnknown_824A37C, gUnknown_824A618, gUnknown_824A844, gUnknown_8249F98},
+ {gUnknown_824A990, gUnknown_824ACD0, gUnknown_824AF70, gUnknown_824B0DC, gUnknown_824A940},
+ {gUnknown_824B1EC, gUnknown_824B608, gUnknown_824B8A8, gUnknown_824BBE0, gUnknown_824B19C},
+ {gUnknown_824BD38, gUnknown_824C07C, gUnknown_824C314, gUnknown_824C520, gUnknown_824BCE0},
+ {gUnknown_824C624, gUnknown_824C958, gUnknown_824CBF8, gUnknown_824CEC8, gUnknown_824C5D8},
+ {gUnknown_824CFEC, gUnknown_824D418, gUnknown_824D6B8, gUnknown_824DC98, gUnknown_824CF98},
+ {gUnknown_824DE34, gUnknown_824E16C, gUnknown_824E410, gUnknown_824E490, gUnknown_824DDF0},
+ {gUnknown_824DE34, gUnknown_824E16C, gUnknown_824E410, gUnknown_824E490, gUnknown_824E81C},
+ {gUnknown_824DE34, gUnknown_824E16C, gUnknown_824E410, gUnknown_824E490, gUnknown_824E528},
+ {gUnknown_824DE34, gUnknown_824E16C, gUnknown_824E410, gUnknown_824E490, gUnknown_824E56C},
+ {gUnknown_824DE34, gUnknown_824E16C, gUnknown_824E410, gUnknown_824E490, gUnknown_824E5B8},
+ {gUnknown_824E858, gUnknown_824EB90, gUnknown_824E410, gUnknown_824E490, gUnknown_824E604},
+ {gUnknown_824E858, gUnknown_824EB90, gUnknown_824E410, gUnknown_824E490, gUnknown_824E650},
+ {gUnknown_824E858, gUnknown_824EB90, gUnknown_824E410, gUnknown_824E490, gUnknown_824E6A4},
+ {gUnknown_824E858, gUnknown_824EB90, gUnknown_824E410, gUnknown_824E490, gUnknown_824E6F0},
+ {gUnknown_824E858, gUnknown_824EB90, gUnknown_824E410, gUnknown_824E490, gUnknown_824E740},
+ {gUnknown_824E858, gUnknown_824EB90, gUnknown_824E410, gUnknown_824E490, gUnknown_824E78C},
+ {gUnknown_824E858, gUnknown_824EB90, gUnknown_824E410, gUnknown_824E490, gUnknown_824E7DC}
+};
+
+static const struct {
+ u8 unk0;
+ u8 unk1;
+} gUnknown_824EFC4[] = {
+ {1, 11},
+ {2, 14},
+ {3, 13},
+ {4, 15},
+ {5, 16},
+ {6, 17},
+ {7, 18},
+ {8, 10}
+};
+
+UNUSED void sub_800F1E8(void)
+{
+ u8 spriteId;
+
+ ResetSpriteData();
+ spriteId = CreateSprite(&gUnknown_824EFF0, 0, 0, 0);
+ gSprites[spriteId].invisible = TRUE;
+ SetMainCallback2(sub_800F228);
+}
+
+static void sub_800F228(void)
+{
+ AnimateSprites();
+ BuildOamBuffer();
+}
+
+static u8 sub_800F238(u8 a0)
+{
+ int i;
+ for (i = 0; i < NELEMS(gUnknown_824EFC4); i++)
+ {
+ if (a0 == gUnknown_824EFC4[i].unk0)
+ return gUnknown_824EFC4[i].unk1;
+ }
+ return 9;
+}
+
+static void sub_800F260(u16 envId)
+{
+ if (envId >= NELEMS(gUnknown_824EE34))
+ envId = 9;
+ LZDecompressVram(gUnknown_824EE34[envId][0], (void *)BG_CHAR_ADDR(2));
+ LZDecompressVram(gUnknown_824EE34[envId][1], (void *)BG_SCREEN_ADDR(26));
+ LoadCompressedPalette(gUnknown_824EE34[envId][4], 0x20, 0x60);
+}
+
+static void sub_800F2AC(u16 envId)
+{
+ if (envId >= NELEMS(gUnknown_824EE34))
+ envId = 9;
+ LZDecompressVram(gUnknown_824EE34[envId][2], (void *)BG_CHAR_ADDR(1));
+ LZDecompressVram(gUnknown_824EE34[envId][3], (void *)BG_SCREEN_ADDR(28));
+}
+
+UNUSED void sub_800F2EC(u8 envId, const u32 **tilesPtr, const u32 **mapPtr, const u32 **palPtr)
+{
+ if (envId > 9)
+ envId = 9;
+ *tilesPtr = gUnknown_824EE34[envId][0];
+ *mapPtr = gUnknown_824EE34[envId][1];
+ *palPtr = gUnknown_824EE34[envId][4];
+}
+
+void sub_800F324(void)
+{
+ ResetBgsAndClearDma3BusyFlags(FALSE);
+ InitBgsFromTemplates(0, gBattleBgTemplates, NELEMS(gBattleBgTemplates));
+ InitWindows(gUnknown_8248330);
+ DeactivateAllTextPrinters();
+}
+
+void InitBattleBgsVideo(void)
+{
+ EnableInterrupts(INTR_FLAG_VBLANK | INTR_FLAG_VCOUNT | INTR_FLAG_TIMER3 | INTR_FLAG_SERIAL);
+ sub_800F324();
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON | DISPCNT_OBJWIN_ON);
+}
+
+void LoadBattleMenuWindowGfx(void)
+{
+ TextWindow_SetUserSelectedFrame(2, 0x012, 0x10);
+ TextWindow_SetUserSelectedFrame(2, 0x022, 0x10);
+ gPlttBufferUnfaded[0x5C] = RGB( 9, 9, 9);
+ gPlttBufferUnfaded[0x5D] = RGB( 9, 9, 9);
+ gPlttBufferUnfaded[0x5E] = RGB(31, 31, 31);
+ gPlttBufferUnfaded[0x5F] = RGB( 26, 26, 25);
+ CpuCopy16(&gPlttBufferUnfaded[0x5C], &gPlttBufferFaded[0x5C], 8);
+ if (gBattleTypeFlags & (BATTLE_TYPE_FIRST_BATTLE | BATTLE_TYPE_POKEDUDE))
+ {
+ Menu_LoadStdPalAt(0x70);
+ TextWindow_LoadResourcesStdFrame0(0, 0x030, 0x70);
+ gPlttBufferUnfaded[0x76] = RGB( 0, 0, 0);
+ CpuCopy16(&gPlttBufferUnfaded[0x76], &gPlttBufferFaded[0x76], 2);
+ }
+}
+
+void DrawMainBattleBackground(void)
+{
+ sub_800F260(sub_800FC2C());
+}
+
+void LoadBattleTextboxAndBackground(void)
+{
+ LZDecompressVram(gBattleTextboxTiles, (void *)BG_CHAR_ADDR(0));
+ CopyToBgTilemapBuffer(0, gBattleTextboxTilemap, 0, 0x000);
+ CopyBgTilemapBufferToVram(0);
+ LoadCompressedPalette(gBattleTextboxPalette, 0x00, 0x40);
+ LoadBattleMenuWindowGfx();
+ DrawMainBattleBackground();
+}
+
+static void DrawLinkBattleParticipantPokeballs(u8 taskId, u8 multiplayerId, u8 bgId, u8 destX, u8 destY)
+{
+ s32 i;
+ u16 pokeballStatuses = 0;
+ u16 tiles[6];
+
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ if (gTasks[taskId].data[5] != 0)
+ {
+ switch (multiplayerId)
+ {
+ case 0:
+ pokeballStatuses = 0x3F & gTasks[taskId].data[3];
+ break;
+ case 1:
+ pokeballStatuses = (0xFC0 & gTasks[taskId].data[4]) >> 6;
+ break;
+ case 2:
+ pokeballStatuses = (0xFC0 & gTasks[taskId].data[3]) >> 6;
+ break;
+ case 3:
+ pokeballStatuses = 0x3F & gTasks[taskId].data[4];
+ break;
+ }
+ }
+ else
+ {
+ switch (multiplayerId)
+ {
+ case 0:
+ pokeballStatuses = 0x3F & gTasks[taskId].data[3];
+ break;
+ case 1:
+ pokeballStatuses = 0x3F & gTasks[taskId].data[4];
+ break;
+ case 2:
+ pokeballStatuses = (0xFC0 & gTasks[taskId].data[3]) >> 6;
+ break;
+ case 3:
+ pokeballStatuses = (0xFC0 & gTasks[taskId].data[4]) >> 6;
+ break;
+ }
+ }
+
+ for (i = 0; i < 3; i++)
+ tiles[i] = ((pokeballStatuses & (3 << (i * 2))) >> (i * 2)) + 0x6001;
+
+ CopyToBgTilemapBufferRect_ChangePalette(bgId, tiles, destX, destY, 3, 1, 0x11);
+ CopyBgTilemapBufferToVram(bgId);
+ }
+ else
+ {
+ if (multiplayerId == gBattleStruct->multiplayerId)
+ pokeballStatuses = gTasks[taskId].data[3];
+ else
+ pokeballStatuses = gTasks[taskId].data[4];
+
+ for (i = 0; i < 6; i++)
+ tiles[i] = ((pokeballStatuses & (3 << (i * 2))) >> (i * 2)) + 0x6001;
+
+ CopyToBgTilemapBufferRect_ChangePalette(bgId, tiles, destX, destY, 6, 1, 0x11);
+ CopyBgTilemapBufferToVram(bgId);
+ }
+}
+
+static void DrawLinkBattleVsScreenOutcomeText(void)
+{
+ if (gBattleOutcome == B_OUTCOME_DREW)
+ {
+ BattlePutTextOnWindow(gText_Draw, 0x15);
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ if (gBattleOutcome == B_OUTCOME_WON)
+ {
+ switch (gLinkPlayers[gBattleStruct->multiplayerId].id)
+ {
+ case 0:
+ BattlePutTextOnWindow(gText_Win, 0x16);
+ BattlePutTextOnWindow(gText_Loss, 0x17);
+ break;
+ case 1:
+ BattlePutTextOnWindow(gText_Win, 0x17);
+ BattlePutTextOnWindow(gText_Loss, 0x16);
+ break;
+ case 2:
+ BattlePutTextOnWindow(gText_Win, 0x16);
+ BattlePutTextOnWindow(gText_Loss, 0x17);
+ break;
+ case 3:
+ BattlePutTextOnWindow(gText_Win, 0x17);
+ BattlePutTextOnWindow(gText_Loss, 0x16);
+ break;
+ }
+ }
+ else
+ {
+ switch (gLinkPlayers[gBattleStruct->multiplayerId].id)
+ {
+ case 0:
+ BattlePutTextOnWindow(gText_Win, 0x17);
+ BattlePutTextOnWindow(gText_Loss, 0x16);
+ break;
+ case 1:
+ BattlePutTextOnWindow(gText_Win, 0x16);
+ BattlePutTextOnWindow(gText_Loss, 0x17);
+ break;
+ case 2:
+ BattlePutTextOnWindow(gText_Win, 0x17);
+ BattlePutTextOnWindow(gText_Loss, 0x16);
+ break;
+ case 3:
+ BattlePutTextOnWindow(gText_Win, 0x16);
+ BattlePutTextOnWindow(gText_Loss, 0x17);
+ break;
+ }
+ }
+ }
+ else if (gBattleOutcome == B_OUTCOME_WON)
+ {
+ if (gLinkPlayers[gBattleStruct->multiplayerId].id != 0)
+ {
+ BattlePutTextOnWindow(gText_Win, 0x17);
+ BattlePutTextOnWindow(gText_Loss, 0x16);
+ }
+ else
+ {
+ BattlePutTextOnWindow(gText_Win, 0x16);
+ BattlePutTextOnWindow(gText_Loss, 0x17);
+ }
+ }
+ else
+ {
+ if (gLinkPlayers[gBattleStruct->multiplayerId].id != 0)
+ {
+ BattlePutTextOnWindow(gText_Win, 0x16);
+ BattlePutTextOnWindow(gText_Loss, 0x17);
+ }
+ else
+ {
+ BattlePutTextOnWindow(gText_Win, 0x17);
+ BattlePutTextOnWindow(gText_Loss, 0x16);
+ }
+ }
+}
+
+void InitLinkBattleVsScreen(u8 taskId)
+{
+ struct LinkPlayer *linkPlayer;
+ u8 *name;
+ s32 i, palId;
+
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ for (i = 0; i < MAX_BATTLERS_COUNT; i++)
+ {
+ name = gLinkPlayers[i].name;
+ linkPlayer = &gLinkPlayers[i];
+
+ switch (linkPlayer->id)
+ {
+ case 0:
+ BattlePutTextOnWindow(name, 0x11);
+ DrawLinkBattleParticipantPokeballs(taskId, linkPlayer->id, 1, 2, 4);
+ break;
+ case 1:
+ BattlePutTextOnWindow(name, 0x12);
+ DrawLinkBattleParticipantPokeballs(taskId, linkPlayer->id, 2, 2, 4);
+ break;
+ case 2:
+ BattlePutTextOnWindow(name, 0x13);
+ DrawLinkBattleParticipantPokeballs(taskId, linkPlayer->id, 1, 2, 8);
+ break;
+ case 3:
+ BattlePutTextOnWindow(name, 0x14);
+ DrawLinkBattleParticipantPokeballs(taskId, linkPlayer->id, 2, 2, 8);
+ break;
+ }
+ }
+ }
+ else
+ {
+ u8 playerId = gBattleStruct->multiplayerId;
+ u8 opponentId = playerId ^ BIT_SIDE;
+ u8 opponentId_copy = opponentId;
+
+ if (gLinkPlayers[playerId].id != 0)
+ opponentId = playerId, playerId = opponentId_copy;
+
+ name = gLinkPlayers[playerId].name;
+ BattlePutTextOnWindow(name, 0xF);
+
+ name = gLinkPlayers[opponentId].name;
+ BattlePutTextOnWindow(name, 0x10);
+
+ DrawLinkBattleParticipantPokeballs(taskId, playerId, 1, 2, 7);
+ DrawLinkBattleParticipantPokeballs(taskId, opponentId, 2, 2, 7);
+ }
+ gTasks[taskId].data[0]++;
+ break;
+ case 1:
+ palId = AllocSpritePalette(TAG_VS_LETTERS);
+ gPlttBufferUnfaded[palId * 16 + 0x10F] = gPlttBufferFaded[palId * 16 + 0x10F] = 0x7FFF;
+ gBattleStruct->linkBattleVsSpriteId_V = CreateSprite(&sVsLetter_V_SpriteTemplate, 108, 80, 0);
+ gBattleStruct->linkBattleVsSpriteId_S = CreateSprite(&sVsLetter_S_SpriteTemplate, 132, 80, 0);
+ gSprites[gBattleStruct->linkBattleVsSpriteId_V].invisible = TRUE;
+ gSprites[gBattleStruct->linkBattleVsSpriteId_S].invisible = TRUE;
+ gTasks[taskId].data[0]++;
+ break;
+ case 2:
+ if (gTasks[taskId].data[5] != 0)
+ {
+ gBattle_BG1_X = -(20) - (Sin2(gTasks[taskId].data[1]) / 32);
+ gBattle_BG2_X = -(140) - (Sin2(gTasks[taskId].data[2]) / 32);
+ gBattle_BG1_Y = -36;
+ gBattle_BG2_Y = -36;
+ }
+ else
+ {
+ gBattle_BG1_X = -(20) - (Sin2(gTasks[taskId].data[1]) / 32);
+ gBattle_BG1_Y = (Cos2(gTasks[taskId].data[1]) / 32) - 164;
+ gBattle_BG2_X = -(140) - (Sin2(gTasks[taskId].data[2]) / 32);
+ gBattle_BG2_Y = (Cos2(gTasks[taskId].data[2]) / 32) - 164;
+ }
+
+ if (gTasks[taskId].data[2] != 0)
+ {
+ gTasks[taskId].data[2] -= 2;
+ gTasks[taskId].data[1] += 2;
+ }
+ else
+ {
+ if (gTasks[taskId].data[5] != 0)
+ DrawLinkBattleVsScreenOutcomeText();
+
+ PlaySE(SE_W231);
+ DestroyTask(taskId);
+ gSprites[gBattleStruct->linkBattleVsSpriteId_V].invisible = FALSE;
+ gSprites[gBattleStruct->linkBattleVsSpriteId_S].invisible = FALSE;
+ gSprites[gBattleStruct->linkBattleVsSpriteId_S].oam.tileNum += 0x40;
+ gSprites[gBattleStruct->linkBattleVsSpriteId_V].data[0] = 0;
+ gSprites[gBattleStruct->linkBattleVsSpriteId_S].data[0] = 1;
+ gSprites[gBattleStruct->linkBattleVsSpriteId_V].data[1] = gSprites[gBattleStruct->linkBattleVsSpriteId_V].pos1.x;
+ gSprites[gBattleStruct->linkBattleVsSpriteId_S].data[1] = gSprites[gBattleStruct->linkBattleVsSpriteId_S].pos1.x;
+ gSprites[gBattleStruct->linkBattleVsSpriteId_V].data[2] = 0;
+ gSprites[gBattleStruct->linkBattleVsSpriteId_S].data[2] = 0;
+ }
+ break;
+ }
+}
+
+void DrawBattleEntryBackground(void)
+{
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ LZDecompressVram(gFile_graphics_battle_transitions_vs_frame_sheet, (void*)(BG_CHAR_ADDR(1)));
+ LZDecompressVram(gFile_graphics_battle_transitions_vs_sheet, (void*)(VRAM + 0x10000));
+ LoadCompressedPalette(gFile_graphics_battle_transitions_vs_frame_palette, 0x60, 0x20);
+ SetBgAttribute(1, BG_ATTR_SCREENSIZE, 1);
+ SetGpuReg(REG_OFFSET_BG1CNT, 0x5C04);
+ CopyToBgTilemapBuffer(1, gFile_graphics_battle_transitions_vs_frame_tilemap, 0, 0);
+ CopyToBgTilemapBuffer(2, gFile_graphics_battle_transitions_vs_frame_tilemap, 0, 0);
+ CopyBgTilemapBufferToVram(1);
+ CopyBgTilemapBufferToVram(2);
+ SetGpuReg(REG_OFFSET_WININ, 0x36);
+ SetGpuReg(REG_OFFSET_WINOUT, 0x36);
+ gBattle_BG1_Y = 0xFF5C;
+ gBattle_BG2_Y = 0xFF5C;
+ LoadCompressedSpriteSheetUsingHeap(&sVsLettersSpriteSheet);
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_POKEDUDE)
+ {
+ sub_800F2AC(0);
+ }
+ else if (gBattleTypeFlags & (BATTLE_TYPE_TRAINER_TOWER | BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER))
+ {
+ sub_800F2AC(8);
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON)
+ {
+ if (gGameVersion == VERSION_FIRE_RED)
+ {
+ sub_800F2AC(7);
+ }
+ else
+ {
+ sub_800F2AC(4);
+ }
+ }
+ else
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ {
+ u8 trainerClass = gTrainers[gTrainerBattleOpponent_A].trainerClass;
+ if (trainerClass == CLASS_LEADER_2)
+ {
+ sub_800F2AC(8);
+ return;
+ }
+ else if (trainerClass == CLASS_CHAMPION_2)
+ {
+ sub_800F2AC(8);
+ return;
+ }
+ }
+
+ if (GetCurrentMapBattleScene() == MAP_BATTLE_SCENE_NORMAL)
+ {
+ sub_800F2AC(gBattleTerrain);
+ }
+ else
+ {
+ sub_800F2AC(8);
+ }
+ }
+}
+
+static u8 sub_800FC2C(void)
+{
+ u8 battleScene;
+ if (gBattleTypeFlags & (BATTLE_TYPE_TRAINER_TOWER | BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER))
+ {
+ return 10;
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_POKEDUDE)
+ {
+ gBattleTerrain = 0;
+ return 0;
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ {
+ if (gTrainers[gTrainerBattleOpponent_A].trainerClass == CLASS_LEADER_2)
+ {
+ return 12;
+ }
+ else if (gTrainers[gTrainerBattleOpponent_A].trainerClass == CLASS_CHAMPION_2)
+ {
+ return 19;
+ }
+ }
+ battleScene = GetCurrentMapBattleScene();
+ if (battleScene == 0)
+ {
+ return gBattleTerrain;
+ }
+ return sub_800F238(battleScene);
+}
+
+bool8 LoadChosenBattleElement(u8 caseId)
+{
+ bool8 ret = FALSE;
+ u8 battleScene;
+ switch (caseId)
+ {
+ case 0:
+ LZDecompressVram(gBattleTextboxTiles, (void *)BG_CHAR_ADDR(0));
+ break;
+ case 1:
+ CopyToBgTilemapBuffer(0, gBattleTextboxTilemap, 0, 0x000);
+ CopyBgTilemapBufferToVram(0);
+ break;
+ case 2:
+ LoadCompressedPalette(gBattleTextboxPalette, 0x00, 0x40);
+ break;
+ case 3:
+ battleScene = sub_800FC2C();
+ LZDecompressVram(gUnknown_824EE34[battleScene][0], (void *)BG_CHAR_ADDR(2));
+ // fallthrough
+ case 4:
+ battleScene = sub_800FC2C();
+ LZDecompressVram(gUnknown_824EE34[battleScene][1], (void *)BG_SCREEN_ADDR(26));
+ break;
+ case 5:
+ battleScene = sub_800FC2C();
+ LoadCompressedPalette(gUnknown_824EE34[battleScene][4], 0x20, 0x60);
+ break;
+ case 6:
+ LoadBattleMenuWindowGfx();
+ break;
+ default:
+ ret = TRUE;
+ break;
+ }
+ return ret;
+}
diff --git a/src/battle_main.c b/src/battle_main.c
index d160436ff..e7d02c673 100644
--- a/src/battle_main.c
+++ b/src/battle_main.c
@@ -975,7 +975,7 @@ static void CB2_HandleStartBattle(void)
ResetBlockReceivedFlags();
sub_8010414(2, playerMultiplayerId);
SetAllPlayersBerryData();
- taskId = CreateTask(sub_800F6FC, 0);
+ taskId = CreateTask(InitLinkBattleVsScreen, 0);
gTasks[taskId].data[1] = 270;
gTasks[taskId].data[2] = 90;
gTasks[taskId].data[5] = 0;
@@ -1223,7 +1223,7 @@ static void CB2_HandleStartMultiBattle(void)
SetAllPlayersBerryData();
SetDeoxysStats();
memcpy(gDecompressionBuffer, gPlayerParty, sizeof(struct Pokemon) * 3);
- taskId = CreateTask(sub_800F6FC, 0);
+ taskId = CreateTask(InitLinkBattleVsScreen, 0);
gTasks[taskId].data[1] = 270;
gTasks[taskId].data[2] = 90;
gTasks[taskId].data[5] = 0;
@@ -1781,7 +1781,7 @@ void sub_8011A1C(void)
FreeAllSpritePalettes();
gReservedSpritePaletteCount = 4;
SetVBlankCallback(VBlankCB_Battle);
- taskId = CreateTask(sub_800F6FC, 0);
+ taskId = CreateTask(InitLinkBattleVsScreen, 0);
gTasks[taskId].data[1] = 270;
gTasks[taskId].data[2] = 90;
gTasks[taskId].data[5] = 1;
diff --git a/src/battle_message.c b/src/battle_message.c
index 6ec4c3f5d..7ca47e6fb 100644
--- a/src/battle_message.c
+++ b/src/battle_message.c
@@ -1271,9 +1271,9 @@ const u8 gUnknown_83FE860[] = _(" is");
const u8 gUnknown_83FE864[] = _(" is");
const u8 gText_BadEgg[] = _("Bad EGG");
const u8 gUnknown_83FE870[] = _("ミツル");
-const u8 gUnknown_83FE874[] = _("{HIGHLIGHT 0}Win");
-const u8 gUnknown_83FE87B[] = _("{HIGHLIGHT 0}Loss");
-const u8 gUnknown_83FE883[] = _("{HIGHLIGHT 0}Draw");
+const u8 gText_Win[] = _("{HIGHLIGHT 0}Win");
+const u8 gText_Loss[] = _("{HIGHLIGHT 0}Loss");
+const u8 gText_Draw[] = _("{HIGHLIGHT 0}Draw");
static const u8 sText_SpaceIs[] = _(" is");
static const u8 sText_ApostropheS[] = _("'s");
const u8 gUnknown_83FE892[] = _("a NORMAL move");