diff options
author | PikalaxALT <PikalaxALT@gmail.com> | 2020-02-23 16:26:33 -0500 |
---|---|---|
committer | PikalaxALT <PikalaxALT@gmail.com> | 2020-02-23 16:26:33 -0500 |
commit | 890d85ff029feb6509bca88ba913580c5c0cd56c (patch) | |
tree | fe26d75515206a7dbf214418c00a9b2068b60319 | |
parent | 9aaafa84871e7bcc553d3eda680415545a337eee (diff) |
battle_bg
-rw-r--r-- | asm/battle_bg.s | 1473 | ||||
-rw-r--r-- | data/battle_bg.s | 583 | ||||
-rw-r--r-- | include/battle_bg.h | 2 | ||||
-rw-r--r-- | include/battle_message.h | 4 | ||||
-rw-r--r-- | include/graphics.h | 6 | ||||
-rw-r--r-- | include/overworld.h | 1 | ||||
-rw-r--r-- | ld_script.txt | 4 | ||||
-rw-r--r-- | src/battle_bg.c | 925 | ||||
-rw-r--r-- | src/battle_main.c | 6 | ||||
-rw-r--r-- | src/battle_message.c | 6 |
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"); |