diff options
author | yenatch <yenatch@gmail.com> | 2018-01-28 14:31:39 -0500 |
---|---|---|
committer | yenatch <yenatch@gmail.com> | 2018-01-28 14:31:39 -0500 |
commit | 48ef425d46b5879940fdad6641a5040cba900ca0 (patch) | |
tree | 7c2d361acfec1dfa3912261df1be36f2c97fcf7c | |
parent | e92ead0e159ccaa8301b189b9ef2bb1a33b2ea62 (diff) |
try to match trailing battle_1 section
-rw-r--r-- | asm/battle_1.s | 1151 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | src/rom_800D42C.c | 913 |
3 files changed, 913 insertions, 1152 deletions
diff --git a/asm/battle_1.s b/asm/battle_1.s index 980bd6a65..0528dcacf 100644 --- a/asm/battle_1.s +++ b/asm/battle_1.s @@ -983,1154 +983,3 @@ _0800DC12: _0800DC1C: .4byte gTasks _0800DC20: .4byte 0x00006001 thumb_func_end sub_800DAF8 - - .section .text_800DC24 - - thumb_func_start sub_800DE30 -sub_800DE30: @ 800DE30 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r1, _0800DE64 @ =gTasks - lsls r0, 2 - mov r10, r0 - add r0, r9 - lsls r0, 3 - adds r6, r0, r1 - movs r1, 0x8 - ldrsh r0, [r6, r1] - cmp r0, 0x1 - bne _0800DE58 - b _0800DF9C -_0800DE58: - cmp r0, 0x1 - bgt _0800DE68 - cmp r0, 0 - beq _0800DE70 - b _0800E212 - .align 2, 0 -_0800DE64: .4byte gTasks -_0800DE68: - cmp r0, 0x2 - bne _0800DE6E - b _0800E03C -_0800DE6E: - b _0800E212 -_0800DE70: - ldr r0, _0800DED0 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0800DEE0 - ldr r0, _0800DED4 @ =gLinkPlayers - ldr r2, _0800DED8 @ =gUnknown_081F9680 - mov r8, r2 - adds r7, r0, 0 - adds r7, 0x8 - movs r5, 0x3 -_0800DE88: - ldrb r0, [r7, 0x10] - movs r1, 0x3 - ands r1, r0 - str r1, [sp, 0x8] - lsls r4, r1, 1 - adds r4, r1 - lsls r4, 2 - mov r2, r8 - adds r0, r4, r2 - ldr r1, [r0] - str r1, [sp, 0xC] - ldrh r2, [r0, 0x4] - ldrb r3, [r0, 0x6] - ldrb r0, [r0, 0x7] - str r0, [sp] - movs r0, 0x1 - str r0, [sp, 0x4] - adds r0, r1, 0 - adds r1, r7, 0 - bl Text_InitWindow8002E4C - ldr r0, [sp, 0xC] - bl Text_PrintWindow8002F44 - ldr r2, _0800DEDC @ =gUnknown_081F9680 + 0x8 - adds r4, r2 - ldr r2, [r4] - mov r0, r9 - ldr r1, [sp, 0x8] - bl sub_800DAF8 - adds r7, 0x1C - subs r5, 0x1 - cmp r5, 0 - bge _0800DE88 - b _0800DF70 - .align 2, 0 -_0800DED0: .4byte gBattleTypeFlags -_0800DED4: .4byte gLinkPlayers -_0800DED8: .4byte gUnknown_081F9680 -_0800DEDC: .4byte gUnknown_081F9680 + 0x8 -_0800DEE0: - ldr r0, _0800DF84 @ =gSharedMem - ldr r5, _0800DF88 @ =0x000160cb - adds r0, r5 - ldrb r7, [r0] - movs r0, 0x1 - adds r6, r7, 0 - eors r6, r0 - adds r1, r6, 0 - ldr r2, _0800DF8C @ =gLinkPlayers - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r0, r2 - ldrh r0, [r0, 0x18] - cmp r0, 0 - beq _0800DF04 - adds r6, r7, 0 - adds r7, r1, 0 -_0800DF04: - ldr r0, _0800DF90 @ =gUnknown_081F9680 - mov r8, r0 - adds r0, 0x30 - mov r1, r8 - ldr r4, [r1, 0x30] - lsls r1, r7, 3 - subs r1, r7 - lsls r1, 2 - ldr r2, _0800DF94 @ =gLinkPlayers + 0x8 - adds r1, r2 - ldrh r2, [r0, 0x4] - ldrb r3, [r0, 0x6] - ldrb r0, [r0, 0x7] - str r0, [sp] - movs r5, 0x1 - str r5, [sp, 0x4] - adds r0, r4, 0 - bl Text_InitWindow8002E4C - adds r0, r4, 0 - bl Text_PrintWindow8002F44 - mov r0, r8 - ldr r2, [r0, 0x38] - mov r0, r9 - adds r1, r7, 0 - bl sub_800DAF8 - mov r0, r8 - adds r0, 0x3C - mov r1, r8 - ldr r4, [r1, 0x3C] - lsls r1, r6, 3 - subs r1, r6 - lsls r1, 2 - ldr r2, _0800DF94 @ =gLinkPlayers + 0x8 - adds r1, r2 - ldrh r2, [r0, 0x4] - ldrb r3, [r0, 0x6] - ldrb r0, [r0, 0x7] - str r0, [sp] - str r5, [sp, 0x4] - adds r0, r4, 0 - bl Text_InitWindow8002E4C - adds r0, r4, 0 - bl Text_PrintWindow8002F44 - mov r5, r8 - ldr r2, [r5, 0x44] - mov r0, r9 - adds r1, r6, 0 - bl sub_800DAF8 -_0800DF70: - ldr r0, _0800DF98 @ =gTasks - mov r1, r10 - add r1, r9 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - b _0800E212 - .align 2, 0 -_0800DF84: .4byte gSharedMem -_0800DF88: .4byte 0x000160cb -_0800DF8C: .4byte gLinkPlayers -_0800DF90: .4byte gUnknown_081F9680 -_0800DF94: .4byte gLinkPlayers + 0x8 -_0800DF98: .4byte gTasks -_0800DF9C: - ldr r0, _0800E010 @ =0x00002710 - bl AllocSpritePalette - lsls r0, 24 - ldr r2, _0800E014 @ =gPlttBufferUnfaded - lsrs r0, 19 - ldr r1, _0800E018 @ =0x0000021e - adds r0, r1 - adds r2, r0, r2 - ldr r1, _0800E01C @ =gPlttBufferFaded - adds r0, r1 - ldr r1, _0800E020 @ =0x00007fff - strh r1, [r0] - strh r1, [r2] - ldr r0, _0800E024 @ =gSpriteTemplate_81F9574 - movs r1, 0x6C - movs r2, 0x50 - movs r3, 0 - bl CreateSprite - ldr r4, _0800E028 @ =gSharedMem - ldr r2, _0800E02C @ =0x0001608a - adds r7, r4, r2 - strb r0, [r7] - ldr r0, _0800E030 @ =gSpriteTemplate_81F958C - movs r1, 0x84 - movs r2, 0x50 - movs r3, 0 - bl CreateSprite - ldr r5, _0800E034 @ =0x0001608b - adds r4, r5 - strb r0, [r4] - ldr r3, _0800E038 @ =gSprites - ldrb r1, [r7] - 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] - ldrb r1, [r4] - 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, [r6, 0x8] - adds r0, 0x1 - strh r0, [r6, 0x8] - b _0800E212 - .align 2, 0 -_0800E010: .4byte 0x00002710 -_0800E014: .4byte gPlttBufferUnfaded -_0800E018: .4byte 0x0000021e -_0800E01C: .4byte gPlttBufferFaded -_0800E020: .4byte 0x00007fff -_0800E024: .4byte gSpriteTemplate_81F9574 -_0800E028: .4byte gSharedMem -_0800E02C: .4byte 0x0001608a -_0800E030: .4byte gSpriteTemplate_81F958C -_0800E034: .4byte 0x0001608b -_0800E038: .4byte gSprites -_0800E03C: - movs r1, 0x12 - ldrsh r0, [r6, r1] - cmp r0, 0 - beq _0800E0A4 - ldr r4, _0800E090 @ =gBattle_BG1_X - ldrh r0, [r6, 0xA] - bl Sin2 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _0800E056 - adds r0, 0x1F -_0800E056: - asrs r1, r0, 5 - movs r2, 0x14 - negs r2, r2 - adds r0, r2, 0 - subs r0, r1 - strh r0, [r4] - ldr r4, _0800E094 @ =gBattle_BG2_X - ldrh r0, [r6, 0xC] - bl Sin2 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _0800E074 - adds r0, 0x1F -_0800E074: - asrs r1, r0, 5 - movs r5, 0x8C - negs r5, r5 - adds r0, r5, 0 - subs r0, r1 - strh r0, [r4] - ldr r0, _0800E098 @ =gBattle_BG1_Y - ldr r2, _0800E09C @ =0x0000ffdc - adds r1, r2, 0 - strh r1, [r0] - ldr r0, _0800E0A0 @ =gBattle_BG2_Y - strh r1, [r0] - b _0800E110 - .align 2, 0 -_0800E090: .4byte gBattle_BG1_X -_0800E094: .4byte gBattle_BG2_X -_0800E098: .4byte gBattle_BG1_Y -_0800E09C: .4byte 0x0000ffdc -_0800E0A0: .4byte gBattle_BG2_Y -_0800E0A4: - ldr r4, _0800E134 @ =gBattle_BG1_X - ldrh r0, [r6, 0xA] - bl Sin2 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _0800E0B6 - adds r0, 0x1F -_0800E0B6: - asrs r1, r0, 5 - movs r5, 0x14 - negs r5, r5 - adds r0, r5, 0 - subs r0, r1 - strh r0, [r4] - ldr r4, _0800E138 @ =gBattle_BG1_Y - ldrh r0, [r6, 0xA] - bl Cos2 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _0800E0D4 - adds r0, 0x1F -_0800E0D4: - asrs r0, 5 - subs r0, 0xA4 - strh r0, [r4] - ldr r4, _0800E13C @ =gBattle_BG2_X - ldrh r0, [r6, 0xC] - bl Sin2 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _0800E0EC - adds r0, 0x1F -_0800E0EC: - asrs r1, r0, 5 - movs r2, 0x8C - negs r2, r2 - adds r0, r2, 0 - subs r0, r1 - strh r0, [r4] - ldr r4, _0800E140 @ =gBattle_BG2_Y - ldrh r0, [r6, 0xC] - bl Cos2 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _0800E10A - adds r0, 0x1F -_0800E10A: - asrs r0, 5 - subs r0, 0xA4 - strh r0, [r4] -_0800E110: - ldr r1, _0800E144 @ =gTasks - mov r5, r9 - lsls r0, r5, 2 - add r0, r9 - lsls r0, 3 - adds r1, r0, r1 - ldrh r0, [r1, 0xC] - movs r2, 0xC - ldrsh r7, [r1, r2] - cmp r7, 0 - beq _0800E148 - subs r0, 0x2 - strh r0, [r1, 0xC] - ldrh r0, [r1, 0xA] - adds r0, 0x2 - strh r0, [r1, 0xA] - b _0800E212 - .align 2, 0 -_0800E134: .4byte gBattle_BG1_X -_0800E138: .4byte gBattle_BG1_Y -_0800E13C: .4byte gBattle_BG2_X -_0800E140: .4byte gBattle_BG2_Y -_0800E144: .4byte gTasks -_0800E148: - movs r5, 0x12 - ldrsh r0, [r1, r5] - cmp r0, 0 - beq _0800E154 - bl PrintLinkBattleWinLossTie -_0800E154: - movs r0, 0x78 - bl PlaySE - mov r0, r9 - bl DestroyTask - ldr r4, _0800E224 @ =gSprites - ldr r0, _0800E228 @ =gSharedMem - mov r8, r0 - ldr r1, _0800E22C @ =0x0001608a - add r1, r8 - mov r9, r1 - ldrb r0, [r1] - 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 r5, _0800E230 @ =0x0001608b - add r8, r5 - mov r0, r8 - 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] - mov r1, r8 - ldrb r0, [r1] - 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 r5, _0800E234 @ =0x000003ff - adds r0, r5, 0 - ands r1, r0 - ldr r0, _0800E238 @ =0xfffffc00 - ands r0, r3 - orrs r0, r1 - strh r0, [r2, 0x4] - mov r0, r9 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - strh r7, [r0, 0x2E] - mov r2, r8 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x1 - strh r1, [r0, 0x2E] - mov r5, r9 - 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, [r2] - 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 - strh r7, [r0, 0x32] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - strh r7, [r0, 0x32] -_0800E212: - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800E224: .4byte gSprites -_0800E228: .4byte gSharedMem -_0800E22C: .4byte 0x0001608a -_0800E230: .4byte 0x0001608b -_0800E234: .4byte 0x000003ff -_0800E238: .4byte 0xfffffc00 - thumb_func_end sub_800DE30 - - thumb_func_start sub_800E23C -sub_800E23C: @ 800E23C - push {r4,r5,lr} - ldr r0, _0800E29C @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0800E2DC - ldr r0, _0800E2A0 @ =gVersusFrameGfx - ldr r1, _0800E2A4 @ =0x06004000 - bl LZDecompressVram - ldr r4, _0800E2A8 @ =gVersusFrameTilemap - ldr r1, _0800E2AC @ =0x0600e000 - adds r0, r4, 0 - bl LZDecompressVram - ldr r1, _0800E2B0 @ =0x0600f000 - adds r0, r4, 0 - bl LZDecompressVram - ldr r0, _0800E2B4 @ =gUnknown_08E5DC2C - ldr r1, _0800E2B8 @ =0x06010000 - bl LZDecompressVram - ldr r0, _0800E2BC @ =gVersusFramePal - movs r1, 0x60 - movs r2, 0x20 - bl LoadCompressedPalette - ldr r1, _0800E2C0 @ =REG_BG1CNT - ldr r2, _0800E2C4 @ =0x00005c04 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _0800E2C8 @ =REG_WININ - movs r1, 0x36 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - ldr r0, _0800E2CC @ =gBattle_BG1_Y - ldr r2, _0800E2D0 @ =0x0000ff5c - adds r1, r2, 0 - strh r1, [r0] - ldr r0, _0800E2D4 @ =gBattle_BG2_Y - strh r1, [r0] - ldr r0, _0800E2D8 @ =gUnknown_081F95A4 - bl LoadCompressedObjectPic - b _0800E3FC - .align 2, 0 -_0800E29C: .4byte gBattleTypeFlags -_0800E2A0: .4byte gVersusFrameGfx -_0800E2A4: .4byte 0x06004000 -_0800E2A8: .4byte gVersusFrameTilemap -_0800E2AC: .4byte 0x0600e000 -_0800E2B0: .4byte 0x0600f000 -_0800E2B4: .4byte gUnknown_08E5DC2C -_0800E2B8: .4byte 0x06010000 -_0800E2BC: .4byte gVersusFramePal -_0800E2C0: .4byte REG_BG1CNT -_0800E2C4: .4byte 0x00005c04 -_0800E2C8: .4byte REG_WININ -_0800E2CC: .4byte gBattle_BG1_Y -_0800E2D0: .4byte 0x0000ff5c -_0800E2D4: .4byte gBattle_BG2_Y -_0800E2D8: .4byte gUnknown_081F95A4 -_0800E2DC: - ldr r0, _0800E2F0 @ =0x00000902 - ands r0, r1 - cmp r0, 0 - beq _0800E300 - ldr r0, _0800E2F4 @ =gBattleTerrainAnimTiles_Building - ldr r1, _0800E2F8 @ =0x06004000 - bl LZDecompressVram - ldr r0, _0800E2FC @ =gBattleTerrainAnimTilemap_Building - b _0800E3D2 - .align 2, 0 -_0800E2F0: .4byte 0x00000902 -_0800E2F4: .4byte gBattleTerrainAnimTiles_Building -_0800E2F8: .4byte 0x06004000 -_0800E2FC: .4byte gBattleTerrainAnimTilemap_Building -_0800E300: - movs r0, 0x80 - lsls r0, 5 - ands r0, r1 - cmp r0, 0 - beq _0800E348 - ldr r0, _0800E320 @ =gGameVersion - ldrb r0, [r0] - cmp r0, 0x2 - bne _0800E330 - ldr r0, _0800E324 @ =gBattleTerrainAnimTiles_Cave - ldr r1, _0800E328 @ =0x06004000 - bl LZDecompressVram - ldr r0, _0800E32C @ =gBattleTerrainAnimTilemap_Cave - b _0800E3D2 - .align 2, 0 -_0800E320: .4byte gGameVersion -_0800E324: .4byte gBattleTerrainAnimTiles_Cave -_0800E328: .4byte 0x06004000 -_0800E32C: .4byte gBattleTerrainAnimTilemap_Cave -_0800E330: - ldr r0, _0800E33C @ =gBattleTerrainAnimTiles_Underwater - ldr r1, _0800E340 @ =0x06004000 - bl LZDecompressVram - ldr r0, _0800E344 @ =gBattleTerrainAnimTilemap_Underwater - b _0800E3D2 - .align 2, 0 -_0800E33C: .4byte gBattleTerrainAnimTiles_Underwater -_0800E340: .4byte 0x06004000 -_0800E344: .4byte gBattleTerrainAnimTilemap_Underwater -_0800E348: - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0800E3A0 - ldr r2, _0800E370 @ =gTrainers - ldr r0, _0800E374 @ =gTrainerBattleOpponent - ldrh r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrb r0, [r0, 0x1] - cmp r0, 0x19 - bne _0800E384 - ldr r0, _0800E378 @ =gBattleTerrainAnimTiles_Building - ldr r1, _0800E37C @ =0x06004000 - bl LZDecompressVram - ldr r0, _0800E380 @ =gBattleTerrainAnimTilemap_Building - b _0800E3D2 - .align 2, 0 -_0800E370: .4byte gTrainers -_0800E374: .4byte gTrainerBattleOpponent -_0800E378: .4byte gBattleTerrainAnimTiles_Building -_0800E37C: .4byte 0x06004000 -_0800E380: .4byte gBattleTerrainAnimTilemap_Building -_0800E384: - cmp r0, 0x20 - bne _0800E3A0 - ldr r0, _0800E394 @ =gBattleTerrainAnimTiles_Building - ldr r1, _0800E398 @ =0x06004000 - bl LZDecompressVram - ldr r0, _0800E39C @ =gBattleTerrainAnimTilemap_Building - b _0800E3D2 - .align 2, 0 -_0800E394: .4byte gBattleTerrainAnimTiles_Building -_0800E398: .4byte 0x06004000 -_0800E39C: .4byte gBattleTerrainAnimTilemap_Building -_0800E3A0: - bl sav1_map_get_battletype - lsls r0, 24 - cmp r0, 0 - bne _0800E3EC - ldr r4, _0800E3DC @ =gBattleTerrainTable - ldr r5, _0800E3E0 @ =gBattleTerrain - ldrb r1, [r5] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r1, r4, 0 - adds r1, 0x8 - adds r0, r1 - ldr r0, [r0] - ldr r1, _0800E3E4 @ =0x06004000 - bl LZDecompressVram - ldrb r1, [r5] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r4, 0xC - adds r0, r4 - ldr r0, [r0] -_0800E3D2: - ldr r1, _0800E3E8 @ =0x0600e000 - bl LZDecompressVram - b _0800E3FC - .align 2, 0 -_0800E3DC: .4byte gBattleTerrainTable -_0800E3E0: .4byte gBattleTerrain -_0800E3E4: .4byte 0x06004000 -_0800E3E8: .4byte 0x0600e000 -_0800E3EC: - ldr r0, _0800E404 @ =gBattleTerrainAnimTiles_Building - ldr r1, _0800E408 @ =0x06004000 - bl LZDecompressVram - ldr r0, _0800E40C @ =gBattleTerrainAnimTilemap_Building - ldr r1, _0800E410 @ =0x0600e000 - bl LZDecompressVram -_0800E3FC: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0800E404: .4byte gBattleTerrainAnimTiles_Building -_0800E408: .4byte 0x06004000 -_0800E40C: .4byte gBattleTerrainAnimTilemap_Building -_0800E410: .4byte 0x0600e000 - thumb_func_end sub_800E23C - - thumb_func_start sub_800E414 -sub_800E414: @ 800E414 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - movs r4, 0 - cmp r0, 0x6 - bls _0800E422 - b _0800E7BA -_0800E422: - lsls r0, 2 - ldr r1, _0800E42C @ =_0800E430 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0800E42C: .4byte _0800E430 - .align 2, 0 -_0800E430: - .4byte _0800E44C - .4byte _0800E45C - .4byte _0800E474 - .4byte _0800E484 - .4byte _0800E590 - .4byte _0800E69C - .4byte _0800E7B4 -_0800E44C: - ldr r0, _0800E458 @ =gUnknown_08D00000 - movs r1, 0xC0 - lsls r1, 19 - bl LZDecompressVram - b _0800E7BC - .align 2, 0 -_0800E458: .4byte gUnknown_08D00000 -_0800E45C: - ldr r0, _0800E46C @ =gUnknown_08D00524 - ldr r1, _0800E470 @ =0x0600c000 - movs r2, 0x80 - lsls r2, 4 - bl CpuSet - b _0800E7BC - .align 2, 0 -_0800E46C: .4byte gUnknown_08D00524 -_0800E470: .4byte 0x0600c000 -_0800E474: - ldr r0, _0800E480 @ =gUnknown_08D004E0 - movs r1, 0 - movs r2, 0x40 - bl LoadCompressedPalette - b _0800E7BC - .align 2, 0 -_0800E480: .4byte gUnknown_08D004E0 -_0800E484: - ldr r0, _0800E4A8 @ =gBattleTypeFlags - ldrh r1, [r0] - ldr r0, _0800E4AC @ =0x00000902 - ands r0, r1 - cmp r0, 0 - beq _0800E492 - b _0800E57C -_0800E492: - movs r0, 0x80 - lsls r0, 5 - ands r0, r1 - cmp r0, 0 - beq _0800E4C0 - ldr r0, _0800E4B0 @ =gGameVersion - ldrb r0, [r0] - cmp r0, 0x2 - bne _0800E4B8 - ldr r0, _0800E4B4 @ =gBattleTerrainTiles_Cave - b _0800E57E - .align 2, 0 -_0800E4A8: .4byte gBattleTypeFlags -_0800E4AC: .4byte 0x00000902 -_0800E4B0: .4byte gGameVersion -_0800E4B4: .4byte gBattleTerrainTiles_Cave -_0800E4B8: - ldr r0, _0800E4BC @ =gBattleTerrainTiles_Water - b _0800E57E - .align 2, 0 -_0800E4BC: .4byte gBattleTerrainTiles_Water -_0800E4C0: - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0800E4F0 - ldr r2, _0800E4E4 @ =gTrainers - ldr r0, _0800E4E8 @ =gTrainerBattleOpponent - ldrh r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrb r0, [r0, 0x1] - cmp r0, 0x19 - beq _0800E57C - cmp r0, 0x20 - bne _0800E4F0 - ldr r0, _0800E4EC @ =gBattleTerrainTiles_Stadium - b _0800E57E - .align 2, 0 -_0800E4E4: .4byte gTrainers -_0800E4E8: .4byte gTrainerBattleOpponent -_0800E4EC: .4byte gBattleTerrainTiles_Stadium -_0800E4F0: - bl sav1_map_get_battletype - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x8 - bls _0800E4FE - b _0800E7BC -_0800E4FE: - lsls r0, 2 - ldr r1, _0800E508 @ =_0800E50C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0800E508: .4byte _0800E50C - .align 2, 0 -_0800E50C: - .4byte _0800E530 - .4byte _0800E57C - .4byte _0800E54C - .4byte _0800E554 - .4byte _0800E55C - .4byte _0800E564 - .4byte _0800E56C - .4byte _0800E574 - .4byte _0800E57C -_0800E530: - ldr r2, _0800E544 @ =gBattleTerrainTable - ldr r0, _0800E548 @ =gBattleTerrain - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - b _0800E57E - .align 2, 0 -_0800E544: .4byte gBattleTerrainTable -_0800E548: .4byte gBattleTerrain -_0800E54C: - ldr r0, _0800E550 @ =gBattleTerrainTiles_Stadium - b _0800E57E - .align 2, 0 -_0800E550: .4byte gBattleTerrainTiles_Stadium -_0800E554: - ldr r0, _0800E558 @ =gBattleTerrainTiles_Stadium - b _0800E57E - .align 2, 0 -_0800E558: .4byte gBattleTerrainTiles_Stadium -_0800E55C: - ldr r0, _0800E560 @ =gBattleTerrainTiles_Stadium - b _0800E57E - .align 2, 0 -_0800E560: .4byte gBattleTerrainTiles_Stadium -_0800E564: - ldr r0, _0800E568 @ =gBattleTerrainTiles_Stadium - b _0800E57E - .align 2, 0 -_0800E568: .4byte gBattleTerrainTiles_Stadium -_0800E56C: - ldr r0, _0800E570 @ =gBattleTerrainTiles_Stadium - b _0800E57E - .align 2, 0 -_0800E570: .4byte gBattleTerrainTiles_Stadium -_0800E574: - ldr r0, _0800E578 @ =gBattleTerrainTiles_Stadium - b _0800E57E - .align 2, 0 -_0800E578: .4byte gBattleTerrainTiles_Stadium -_0800E57C: - ldr r0, _0800E588 @ =gBattleTerrainTiles_Building -_0800E57E: - ldr r1, _0800E58C @ =0x06008000 - bl LZDecompressVram - b _0800E7BC - .align 2, 0 -_0800E588: .4byte gBattleTerrainTiles_Building -_0800E58C: .4byte 0x06008000 -_0800E590: - ldr r0, _0800E5B4 @ =gBattleTypeFlags - ldrh r1, [r0] - ldr r0, _0800E5B8 @ =0x00000902 - ands r0, r1 - cmp r0, 0 - beq _0800E59E - b _0800E688 -_0800E59E: - movs r0, 0x80 - lsls r0, 5 - ands r0, r1 - cmp r0, 0 - beq _0800E5CC - ldr r0, _0800E5BC @ =gGameVersion - ldrb r0, [r0] - cmp r0, 0x2 - bne _0800E5C4 - ldr r0, _0800E5C0 @ =gBattleTerrainTilemap_Cave - b _0800E68A - .align 2, 0 -_0800E5B4: .4byte gBattleTypeFlags -_0800E5B8: .4byte 0x00000902 -_0800E5BC: .4byte gGameVersion -_0800E5C0: .4byte gBattleTerrainTilemap_Cave -_0800E5C4: - ldr r0, _0800E5C8 @ =gBattleTerrainTilemap_Water - b _0800E68A - .align 2, 0 -_0800E5C8: .4byte gBattleTerrainTilemap_Water -_0800E5CC: - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0800E5FC - ldr r2, _0800E5F0 @ =gTrainers - ldr r0, _0800E5F4 @ =gTrainerBattleOpponent - ldrh r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrb r0, [r0, 0x1] - cmp r0, 0x19 - beq _0800E688 - cmp r0, 0x20 - bne _0800E5FC - ldr r0, _0800E5F8 @ =gBattleTerrainTilemap_Stadium - b _0800E68A - .align 2, 0 -_0800E5F0: .4byte gTrainers -_0800E5F4: .4byte gTrainerBattleOpponent -_0800E5F8: .4byte gBattleTerrainTilemap_Stadium -_0800E5FC: - bl sav1_map_get_battletype - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x8 - bls _0800E60A - b _0800E7BC -_0800E60A: - lsls r0, 2 - ldr r1, _0800E614 @ =_0800E618 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0800E614: .4byte _0800E618 - .align 2, 0 -_0800E618: - .4byte _0800E63C - .4byte _0800E688 - .4byte _0800E658 - .4byte _0800E660 - .4byte _0800E668 - .4byte _0800E670 - .4byte _0800E678 - .4byte _0800E680 - .4byte _0800E688 -_0800E63C: - ldr r2, _0800E650 @ =gBattleTerrainTable - ldr r0, _0800E654 @ =gBattleTerrain - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r2, 0x4 - adds r0, r2 - ldr r0, [r0] - b _0800E68A - .align 2, 0 -_0800E650: .4byte gBattleTerrainTable -_0800E654: .4byte gBattleTerrain -_0800E658: - ldr r0, _0800E65C @ =gBattleTerrainTilemap_Stadium - b _0800E68A - .align 2, 0 -_0800E65C: .4byte gBattleTerrainTilemap_Stadium -_0800E660: - ldr r0, _0800E664 @ =gBattleTerrainTilemap_Stadium - b _0800E68A - .align 2, 0 -_0800E664: .4byte gBattleTerrainTilemap_Stadium -_0800E668: - ldr r0, _0800E66C @ =gBattleTerrainTilemap_Stadium - b _0800E68A - .align 2, 0 -_0800E66C: .4byte gBattleTerrainTilemap_Stadium -_0800E670: - ldr r0, _0800E674 @ =gBattleTerrainTilemap_Stadium - b _0800E68A - .align 2, 0 -_0800E674: .4byte gBattleTerrainTilemap_Stadium -_0800E678: - ldr r0, _0800E67C @ =gBattleTerrainTilemap_Stadium - b _0800E68A - .align 2, 0 -_0800E67C: .4byte gBattleTerrainTilemap_Stadium -_0800E680: - ldr r0, _0800E684 @ =gBattleTerrainTilemap_Stadium - b _0800E68A - .align 2, 0 -_0800E684: .4byte gBattleTerrainTilemap_Stadium -_0800E688: - ldr r0, _0800E694 @ =gBattleTerrainTilemap_Building -_0800E68A: - ldr r1, _0800E698 @ =0x0600d000 - bl LZDecompressVram - b _0800E7BC - .align 2, 0 -_0800E694: .4byte gBattleTerrainTilemap_Building -_0800E698: .4byte 0x0600d000 -_0800E69C: - ldr r0, _0800E6C0 @ =gBattleTypeFlags - ldrh r1, [r0] - ldr r0, _0800E6C4 @ =0x00000902 - ands r0, r1 - cmp r0, 0 - beq _0800E6AA - b _0800E7A4 -_0800E6AA: - movs r0, 0x80 - lsls r0, 5 - ands r0, r1 - cmp r0, 0 - beq _0800E6D8 - ldr r0, _0800E6C8 @ =gGameVersion - ldrb r0, [r0] - cmp r0, 0x2 - bne _0800E6D0 - ldr r0, _0800E6CC @ =gBattleTerrainPalette_Groudon - b _0800E7A6 - .align 2, 0 -_0800E6C0: .4byte gBattleTypeFlags -_0800E6C4: .4byte 0x00000902 -_0800E6C8: .4byte gGameVersion -_0800E6CC: .4byte gBattleTerrainPalette_Groudon -_0800E6D0: - ldr r0, _0800E6D4 @ =gBattleTerrainPalette_Kyogre - b _0800E7A6 - .align 2, 0 -_0800E6D4: .4byte gBattleTerrainPalette_Kyogre -_0800E6D8: - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0800E710 - ldr r2, _0800E6F8 @ =gTrainers - ldr r0, _0800E6FC @ =gTrainerBattleOpponent - ldrh r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrb r0, [r0, 0x1] - cmp r0, 0x19 - bne _0800E704 - ldr r0, _0800E700 @ =gBattleTerrainPalette_BuildingLeader - b _0800E7A6 - .align 2, 0 -_0800E6F8: .4byte gTrainers -_0800E6FC: .4byte gTrainerBattleOpponent -_0800E700: .4byte gBattleTerrainPalette_BuildingLeader -_0800E704: - cmp r0, 0x20 - bne _0800E710 - ldr r0, _0800E70C @ =gBattleTerrainPalette_StadiumSteven - b _0800E7A6 - .align 2, 0 -_0800E70C: .4byte gBattleTerrainPalette_StadiumSteven -_0800E710: - bl sav1_map_get_battletype - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x8 - bhi _0800E7BC - lsls r0, 2 - ldr r1, _0800E728 @ =_0800E72C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0800E728: .4byte _0800E72C - .align 2, 0 -_0800E72C: - .4byte _0800E750 - .4byte _0800E76C - .4byte _0800E774 - .4byte _0800E77C - .4byte _0800E784 - .4byte _0800E78C - .4byte _0800E794 - .4byte _0800E79C - .4byte _0800E7A4 -_0800E750: - ldr r2, _0800E764 @ =gBattleTerrainTable - ldr r0, _0800E768 @ =gBattleTerrain - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r2, 0x10 - adds r0, r2 - ldr r0, [r0] - b _0800E7A6 - .align 2, 0 -_0800E764: .4byte gBattleTerrainTable -_0800E768: .4byte gBattleTerrain -_0800E76C: - ldr r0, _0800E770 @ =gBattleTerrainPalette_BuildingGym - b _0800E7A6 - .align 2, 0 -_0800E770: .4byte gBattleTerrainPalette_BuildingGym -_0800E774: - ldr r0, _0800E778 @ =gBattleTerrainPalette_StadiumMagma - b _0800E7A6 - .align 2, 0 -_0800E778: .4byte gBattleTerrainPalette_StadiumMagma -_0800E77C: - ldr r0, _0800E780 @ =gBattleTerrainPalette_StadiumAqua - b _0800E7A6 - .align 2, 0 -_0800E780: .4byte gBattleTerrainPalette_StadiumAqua -_0800E784: - ldr r0, _0800E788 @ =gBattleTerrainPalette_StadiumSidney - b _0800E7A6 - .align 2, 0 -_0800E788: .4byte gBattleTerrainPalette_StadiumSidney -_0800E78C: - ldr r0, _0800E790 @ =gBattleTerrainPalette_StadiumPhoebe - b _0800E7A6 - .align 2, 0 -_0800E790: .4byte gBattleTerrainPalette_StadiumPhoebe -_0800E794: - ldr r0, _0800E798 @ =gBattleTerrainPalette_StadiumGlacia - b _0800E7A6 - .align 2, 0 -_0800E798: .4byte gBattleTerrainPalette_StadiumGlacia -_0800E79C: - ldr r0, _0800E7A0 @ =gBattleTerrainPalette_StadiumDrake - b _0800E7A6 - .align 2, 0 -_0800E7A0: .4byte gBattleTerrainPalette_StadiumDrake -_0800E7A4: - ldr r0, _0800E7B0 @ =gBattleTerrainPalette_BattleTower -_0800E7A6: - movs r1, 0x20 - movs r2, 0x60 - bl LoadCompressedPalette - b _0800E7BC - .align 2, 0 -_0800E7B0: .4byte gBattleTerrainPalette_BattleTower -_0800E7B4: - bl sub_800D74C - b _0800E7BC -_0800E7BA: - movs r4, 0x1 -_0800E7BC: - adds r0, r4, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_800E414 - - .align 2, 0 @ Don't pad with nop. diff --git a/ld_script.txt b/ld_script.txt index fc13444f1..ca3d68ddc 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -49,7 +49,6 @@ SECTIONS { src/engine/decompress.o(.text); asm/battle_1.o(.text); src/rom_800D42C.o(.text); - asm/battle_1.o(.text_800DC24); src/battle/battle_2.o(.text); src/battle/battle_util.o(.text); src/battle/battle_4.o(.text); diff --git a/src/rom_800D42C.c b/src/rom_800D42C.c index a1b0f5ecb..032d979b8 100644 --- a/src/rom_800D42C.c +++ b/src/rom_800D42C.c @@ -117,3 +117,916 @@ void PrintLinkBattleWinLossTie(void) } } } + + +#include "global.h" +#include "decompress.h" +#include "palette.h" +#include "battle.h" +#include "text.h" +#include "trig.h" +#include "sound.h" +#include "constants/songs.h" +#include "task.h" +#include "link.h" + + +#define gBattle gBattleStruct + +extern const u8 gGameVersion; +extern u8 gUnknown_08D00000[]; +extern u16 gUnknown_08D00524[]; +extern u16 gUnknown_08D004E0[]; +extern u16 gBattleTypeFlags; +extern struct Trainer gTrainers[]; +extern u16 gTrainerBattleOpponent; + +extern void *gBattleTerrainTable[][5]; +extern u8 gBattleTerrain; + +extern u8 gBattleTerrainTiles_Cave[]; +extern u8 gBattleTerrainTiles_Water[]; +extern u8 gBattleTerrainTiles_Building[]; +extern u8 gBattleTerrainTiles_Stadium[]; + +extern u16 gBattleTerrainTilemap_Cave[]; +extern u16 gBattleTerrainTilemap_Water[]; +extern u16 gBattleTerrainTilemap_Building[]; +extern u16 gBattleTerrainTilemap_Stadium[]; + +extern u16 gBattleTerrainPalette_Groudon[]; +extern u16 gBattleTerrainPalette_Kyogre[]; +extern u16 gBattleTerrainPalette_BuildingLeader[]; +extern u16 gBattleTerrainPalette_StadiumSteven[]; +extern u16 gBattleTerrainPalette_BuildingGym[]; +extern u16 gBattleTerrainPalette_StadiumMagma[]; +extern u16 gBattleTerrainPalette_StadiumAqua[]; +extern u16 gBattleTerrainPalette_StadiumSidney[]; +extern u16 gBattleTerrainPalette_StadiumPhoebe[]; +extern u16 gBattleTerrainPalette_StadiumGlacia[]; +extern u16 gBattleTerrainPalette_StadiumDrake[]; +extern u16 gBattleTerrainPalette_BattleTower[]; + +extern u8 gBattleTerrainAnimTiles_Building[]; +extern u16 gBattleTerrainAnimTilemap_Building[]; +extern u8 gBattleTerrainAnimTiles_Cave[]; +extern u16 gBattleTerrainAnimTilemap_Cave[]; +extern u8 gBattleTerrainAnimTiles_Underwater[]; +extern u16 gBattleTerrainAnimTilemap_Underwater[]; +extern u8 gVersusFrameGfx[]; +extern u16 gVersusFrameTilemap[]; +extern u8 gUnknown_08E5DC2C[]; +extern u16 gVersusFramePal[]; + +extern u16 gBattle_BG1_Y; +extern u16 gBattle_BG2_Y; +extern struct CompressedSpriteSheet gUnknown_081F95A4; + +extern u8 sav1_map_get_battletype(void); +extern void sub_800D74C(void); + +struct Struct_081F9680 { + struct Window *window; + u16 offset; + u8 left; + u8 top; + u8 *field_8; +}; + +extern struct Struct_081F9680 gUnknown_081F9680[]; +extern void PrintLinkBattleWinLossTie(void); +extern void sub_800DAF8(u8, u8, u8 *); + +extern struct SpriteTemplate gSpriteTemplate_81F9574; +extern struct SpriteTemplate gSpriteTemplate_81F958C; + +extern u16 gBattle_BG1_X; +extern u16 gBattle_BG2_X; + + + + +#ifdef NONMATCHING + +void sub_800DE30(u8 taskId) +{ + int palette; + int i; + + switch (gTasks[taskId].data[0]) { + + case 0: + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) { + for (i = 0; i < 4; i++) { + u8 sp8 = (gLinkPlayers[i].lp_field_18 & 3); + struct Window *window; + Text_InitWindow8002E4C( + window = gUnknown_081F9680[sp8].window, + gLinkPlayers[i].name, + gUnknown_081F9680[sp8].offset, + gUnknown_081F9680[sp8].left, + gUnknown_081F9680[sp8].top, + 1); + Text_PrintWindow8002F44(window); + sub_800DAF8(taskId, sp8, gUnknown_081F9680[sp8].field_8); + } + } else { + int r7 = gBattle->linkPlayerIndex; + int r6 = gBattle->linkPlayerIndex ^ 1; + int r1 = r6; + if (gLinkPlayers[r7].lp_field_18) { + r6 = r7; + r7 = r1; + } + + i = 4; + Text_InitWindow8002E4C( + gUnknown_081F9680[i].window, + gLinkPlayers[r7].name, + gUnknown_081F9680[i].offset, + gUnknown_081F9680[i].left, + gUnknown_081F9680[i].top, + 1); + Text_PrintWindow8002F44(gUnknown_081F9680[i].window); + sub_800DAF8(taskId, r7, gUnknown_081F9680[i].field_8); + + i = 5; + Text_InitWindow8002E4C( + gUnknown_081F9680[i].window, + gLinkPlayers[r6].name, + gUnknown_081F9680[i].offset, + gUnknown_081F9680[i].left, + gUnknown_081F9680[i].top, + 1); + Text_PrintWindow8002F44(gUnknown_081F9680[i].window); + sub_800DAF8(taskId, r6, gUnknown_081F9680[i].field_8); + } + gTasks[taskId].data[0]++; + break; + + case 1: + palette = AllocSpritePalette(10000); + gPlttBufferUnfaded[palette * 16 + 0x10f] = gPlttBufferFaded[palette * 16 + 0x10f] = 0x7fff; + gBattle->unk1608A = CreateSprite(&gSpriteTemplate_81F9574, 108, 80, 0); + gBattle->unk1608B = CreateSprite(&gSpriteTemplate_81F958C, 132, 80, 0); + gSprites[gBattle->unk1608A].invisible = TRUE; + gSprites[gBattle->unk1608B].invisible = TRUE; + gTasks[taskId].data[0]++; + break; + + case 2: + if (gTasks[taskId].data[5]) { + 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 = (-164) + (Cos2(gTasks[taskId].data[1]) / 32); + gBattle_BG2_X = (-140) - (Sin2(gTasks[taskId].data[2]) / 32); + gBattle_BG2_Y = (-164) + (Cos2(gTasks[taskId].data[2]) / 32); + } + if (gTasks[taskId].data[2]) { + gTasks[taskId].data[2] -= 2; + gTasks[taskId].data[1] += 2; + } else { + if (gTasks[taskId].data[5]) { + PrintLinkBattleWinLossTie(); + } + PlaySE(SE_W231); + DestroyTask(taskId); + gSprites[gBattle->unk1608B].invisible = gSprites[gBattle->unk1608A].invisible = FALSE; + gSprites[gBattle->unk1608B].oam.tileNum += 0x40; + gSprites[gBattle->unk1608A].data[0] = 0; + gSprites[gBattle->unk1608B].data[0] = 1; + gSprites[gBattle->unk1608A].data[1] = gSprites[gBattle->unk1608A].pos1.x; + gSprites[gBattle->unk1608B].data[1] = gSprites[gBattle->unk1608B].pos1.x; + gSprites[gBattle->unk1608A].data[2] = 0; + gSprites[gBattle->unk1608B].data[2] = 0; + } + break; + } +} + +#else + +asm_unified( +".include \"macros.inc\"\n" +" thumb_func_start sub_800DE30\n" +"sub_800DE30: @ 800DE30\n" +" push {r4-r7,lr}\n" +" mov r7, r10\n" +" mov r6, r9\n" +" mov r5, r8\n" +" push {r5-r7}\n" +" sub sp, 0x10\n" +" lsls r0, 24\n" +" lsrs r0, 24\n" +" mov r9, r0\n" +" ldr r1, _0800DE64 @ =gTasks\n" +" lsls r0, 2\n" +" mov r10, r0\n" +" add r0, r9\n" +" lsls r0, 3\n" +" adds r6, r0, r1\n" +" movs r1, 0x8\n" +" ldrsh r0, [r6, r1]\n" +" cmp r0, 0x1\n" +" bne _0800DE58\n" +" b _0800DF9C\n" +"_0800DE58:\n" +" cmp r0, 0x1\n" +" bgt _0800DE68\n" +" cmp r0, 0\n" +" beq _0800DE70\n" +" b _0800E212\n" +" .align 2, 0\n" +"_0800DE64: .4byte gTasks\n" +"_0800DE68:\n" +" cmp r0, 0x2\n" +" bne _0800DE6E\n" +" b _0800E03C\n" +"_0800DE6E:\n" +" b _0800E212\n" +"_0800DE70:\n" +" ldr r0, _0800DED0 @ =gBattleTypeFlags\n" +" ldrh r1, [r0]\n" +" movs r0, 0x40\n" +" ands r0, r1\n" +" cmp r0, 0\n" +" beq _0800DEE0\n" +" ldr r0, _0800DED4 @ =gLinkPlayers\n" +" ldr r2, _0800DED8 @ =gUnknown_081F9680\n" +" mov r8, r2\n" +" adds r7, r0, 0\n" +" adds r7, 0x8\n" +" movs r5, 0x3\n" +"_0800DE88:\n" +" ldrb r0, [r7, 0x10]\n" +" movs r1, 0x3\n" +" ands r1, r0\n" +" str r1, [sp, 0x8]\n" +" lsls r4, r1, 1\n" +" adds r4, r1\n" +" lsls r4, 2\n" +" mov r2, r8\n" +" adds r0, r4, r2\n" +" ldr r1, [r0]\n" +" str r1, [sp, 0xC]\n" +" ldrh r2, [r0, 0x4]\n" +" ldrb r3, [r0, 0x6]\n" +" ldrb r0, [r0, 0x7]\n" +" str r0, [sp]\n" +" movs r0, 0x1\n" +" str r0, [sp, 0x4]\n" +" adds r0, r1, 0\n" +" adds r1, r7, 0\n" +" bl Text_InitWindow8002E4C\n" +" ldr r0, [sp, 0xC]\n" +" bl Text_PrintWindow8002F44\n" +" ldr r2, _0800DEDC @ =gUnknown_081F9680 + 0x8\n" +" adds r4, r2\n" +" ldr r2, [r4]\n" +" mov r0, r9\n" +" ldr r1, [sp, 0x8]\n" +" bl sub_800DAF8\n" +" adds r7, 0x1C\n" +" subs r5, 0x1\n" +" cmp r5, 0\n" +" bge _0800DE88\n" +" b _0800DF70\n" +" .align 2, 0\n" +"_0800DED0: .4byte gBattleTypeFlags\n" +"_0800DED4: .4byte gLinkPlayers\n" +"_0800DED8: .4byte gUnknown_081F9680\n" +"_0800DEDC: .4byte gUnknown_081F9680 + 0x8\n" +"_0800DEE0:\n" +" ldr r0, _0800DF84 @ =0x02000000\n" +" ldr r5, _0800DF88 @ =0x000160cb\n" +" adds r0, r5\n" +" ldrb r7, [r0]\n" +" movs r0, 0x1\n" +" adds r6, r7, 0\n" +" eors r6, r0\n" +" adds r1, r6, 0\n" +" ldr r2, _0800DF8C @ =gLinkPlayers\n" +" lsls r0, r7, 3\n" +" subs r0, r7\n" +" lsls r0, 2\n" +" adds r0, r2\n" +" ldrh r0, [r0, 0x18]\n" +" cmp r0, 0\n" +" beq _0800DF04\n" +" adds r6, r7, 0\n" +" adds r7, r1, 0\n" +"_0800DF04:\n" +" ldr r0, _0800DF90 @ =gUnknown_081F9680\n" +" mov r8, r0\n" +" adds r0, 0x30\n" +" mov r1, r8\n" +" ldr r4, [r1, 0x30]\n" +" lsls r1, r7, 3\n" +" subs r1, r7\n" +" lsls r1, 2\n" +" ldr r2, _0800DF94 @ =gLinkPlayers + 0x8\n" +" adds r1, r2\n" +" ldrh r2, [r0, 0x4]\n" +" ldrb r3, [r0, 0x6]\n" +" ldrb r0, [r0, 0x7]\n" +" str r0, [sp]\n" +" movs r5, 0x1\n" +" str r5, [sp, 0x4]\n" +" adds r0, r4, 0\n" +" bl Text_InitWindow8002E4C\n" +" adds r0, r4, 0\n" +" bl Text_PrintWindow8002F44\n" +" mov r0, r8\n" +" ldr r2, [r0, 0x38]\n" +" mov r0, r9\n" +" adds r1, r7, 0\n" +" bl sub_800DAF8\n" +" mov r0, r8\n" +" adds r0, 0x3C\n" +" mov r1, r8\n" +" ldr r4, [r1, 0x3C]\n" +" lsls r1, r6, 3\n" +" subs r1, r6\n" +" lsls r1, 2\n" +" ldr r2, _0800DF94 @ =gLinkPlayers + 0x8\n" +" adds r1, r2\n" +" ldrh r2, [r0, 0x4]\n" +" ldrb r3, [r0, 0x6]\n" +" ldrb r0, [r0, 0x7]\n" +" str r0, [sp]\n" +" str r5, [sp, 0x4]\n" +" adds r0, r4, 0\n" +" bl Text_InitWindow8002E4C\n" +" adds r0, r4, 0\n" +" bl Text_PrintWindow8002F44\n" +" mov r5, r8\n" +" ldr r2, [r5, 0x44]\n" +" mov r0, r9\n" +" adds r1, r6, 0\n" +" bl sub_800DAF8\n" +"_0800DF70:\n" +" ldr r0, _0800DF98 @ =gTasks\n" +" mov r1, r10\n" +" add r1, r9\n" +" lsls r1, 3\n" +" adds r1, r0\n" +" ldrh r0, [r1, 0x8]\n" +" adds r0, 0x1\n" +" strh r0, [r1, 0x8]\n" +" b _0800E212\n" +" .align 2, 0\n" +"_0800DF84: .4byte 0x02000000\n" +"_0800DF88: .4byte 0x000160cb\n" +"_0800DF8C: .4byte gLinkPlayers\n" +"_0800DF90: .4byte gUnknown_081F9680\n" +"_0800DF94: .4byte gLinkPlayers + 0x8\n" +"_0800DF98: .4byte gTasks\n" +"_0800DF9C:\n" +" ldr r0, _0800E010 @ =0x00002710\n" +" bl AllocSpritePalette\n" +" lsls r0, 24\n" +" ldr r2, _0800E014 @ =gPlttBufferUnfaded\n" +" lsrs r0, 19\n" +" ldr r1, _0800E018 @ =0x0000021e\n" +" adds r0, r1\n" +" adds r2, r0, r2\n" +" ldr r1, _0800E01C @ =gPlttBufferFaded\n" +" adds r0, r1\n" +" ldr r1, _0800E020 @ =0x00007fff\n" +" strh r1, [r0]\n" +" strh r1, [r2]\n" +" ldr r0, _0800E024 @ =gSpriteTemplate_81F9574\n" +" movs r1, 0x6C\n" +" movs r2, 0x50\n" +" movs r3, 0\n" +" bl CreateSprite\n" +" ldr r4, _0800E028 @ =0x02000000\n" +" ldr r2, _0800E02C @ =0x0001608a\n" +" adds r7, r4, r2\n" +" strb r0, [r7]\n" +" ldr r0, _0800E030 @ =gSpriteTemplate_81F958C\n" +" movs r1, 0x84\n" +" movs r2, 0x50\n" +" movs r3, 0\n" +" bl CreateSprite\n" +" ldr r5, _0800E034 @ =0x0001608b\n" +" adds r4, r5\n" +" strb r0, [r4]\n" +" ldr r3, _0800E038 @ =gSprites\n" +" ldrb r1, [r7]\n" +" lsls r0, r1, 4\n" +" adds r0, r1\n" +" lsls r0, 2\n" +" adds r0, r3\n" +" adds r0, 0x3E\n" +" ldrb r1, [r0]\n" +" movs r2, 0x4\n" +" orrs r1, r2\n" +" strb r1, [r0]\n" +" ldrb r1, [r4]\n" +" lsls r0, r1, 4\n" +" adds r0, r1\n" +" lsls r0, 2\n" +" adds r0, r3\n" +" adds r0, 0x3E\n" +" ldrb r1, [r0]\n" +" orrs r1, r2\n" +" strb r1, [r0]\n" +" ldrh r0, [r6, 0x8]\n" +" adds r0, 0x1\n" +" strh r0, [r6, 0x8]\n" +" b _0800E212\n" +" .align 2, 0\n" +"_0800E010: .4byte 0x00002710\n" +"_0800E014: .4byte gPlttBufferUnfaded\n" +"_0800E018: .4byte 0x0000021e\n" +"_0800E01C: .4byte gPlttBufferFaded\n" +"_0800E020: .4byte 0x00007fff\n" +"_0800E024: .4byte gSpriteTemplate_81F9574\n" +"_0800E028: .4byte 0x02000000\n" +"_0800E02C: .4byte 0x0001608a\n" +"_0800E030: .4byte gSpriteTemplate_81F958C\n" +"_0800E034: .4byte 0x0001608b\n" +"_0800E038: .4byte gSprites\n" +"_0800E03C:\n" +" movs r1, 0x12\n" +" ldrsh r0, [r6, r1]\n" +" cmp r0, 0\n" +" beq _0800E0A4\n" +" ldr r4, _0800E090 @ =gBattle_BG1_X\n" +" ldrh r0, [r6, 0xA]\n" +" bl Sin2\n" +" lsls r0, 16\n" +" asrs r0, 16\n" +" cmp r0, 0\n" +" bge _0800E056\n" +" adds r0, 0x1F\n" +"_0800E056:\n" +" asrs r1, r0, 5\n" +" movs r2, 0x14\n" +" negs r2, r2\n" +" adds r0, r2, 0\n" +" subs r0, r1\n" +" strh r0, [r4]\n" +" ldr r4, _0800E094 @ =gBattle_BG2_X\n" +" ldrh r0, [r6, 0xC]\n" +" bl Sin2\n" +" lsls r0, 16\n" +" asrs r0, 16\n" +" cmp r0, 0\n" +" bge _0800E074\n" +" adds r0, 0x1F\n" +"_0800E074:\n" +" asrs r1, r0, 5\n" +" movs r5, 0x8C\n" +" negs r5, r5\n" +" adds r0, r5, 0\n" +" subs r0, r1\n" +" strh r0, [r4]\n" +" ldr r0, _0800E098 @ =gBattle_BG1_Y\n" +" ldr r2, _0800E09C @ =0x0000ffdc\n" +" adds r1, r2, 0\n" +" strh r1, [r0]\n" +" ldr r0, _0800E0A0 @ =gBattle_BG2_Y\n" +" strh r1, [r0]\n" +" b _0800E110\n" +" .align 2, 0\n" +"_0800E090: .4byte gBattle_BG1_X\n" +"_0800E094: .4byte gBattle_BG2_X\n" +"_0800E098: .4byte gBattle_BG1_Y\n" +"_0800E09C: .4byte 0x0000ffdc\n" +"_0800E0A0: .4byte gBattle_BG2_Y\n" +"_0800E0A4:\n" +" ldr r4, _0800E134 @ =gBattle_BG1_X\n" +" ldrh r0, [r6, 0xA]\n" +" bl Sin2\n" +" lsls r0, 16\n" +" asrs r0, 16\n" +" cmp r0, 0\n" +" bge _0800E0B6\n" +" adds r0, 0x1F\n" +"_0800E0B6:\n" +" asrs r1, r0, 5\n" +" movs r5, 0x14\n" +" negs r5, r5\n" +" adds r0, r5, 0\n" +" subs r0, r1\n" +" strh r0, [r4]\n" +" ldr r4, _0800E138 @ =gBattle_BG1_Y\n" +" ldrh r0, [r6, 0xA]\n" +" bl Cos2\n" +" lsls r0, 16\n" +" asrs r0, 16\n" +" cmp r0, 0\n" +" bge _0800E0D4\n" +" adds r0, 0x1F\n" +"_0800E0D4:\n" +" asrs r0, 5\n" +" subs r0, 0xA4\n" +" strh r0, [r4]\n" +" ldr r4, _0800E13C @ =gBattle_BG2_X\n" +" ldrh r0, [r6, 0xC]\n" +" bl Sin2\n" +" lsls r0, 16\n" +" asrs r0, 16\n" +" cmp r0, 0\n" +" bge _0800E0EC\n" +" adds r0, 0x1F\n" +"_0800E0EC:\n" +" asrs r1, r0, 5\n" +" movs r2, 0x8C\n" +" negs r2, r2\n" +" adds r0, r2, 0\n" +" subs r0, r1\n" +" strh r0, [r4]\n" +" ldr r4, _0800E140 @ =gBattle_BG2_Y\n" +" ldrh r0, [r6, 0xC]\n" +" bl Cos2\n" +" lsls r0, 16\n" +" asrs r0, 16\n" +" cmp r0, 0\n" +" bge _0800E10A\n" +" adds r0, 0x1F\n" +"_0800E10A:\n" +" asrs r0, 5\n" +" subs r0, 0xA4\n" +" strh r0, [r4]\n" +"_0800E110:\n" +" ldr r1, _0800E144 @ =gTasks\n" +" mov r5, r9\n" +" lsls r0, r5, 2\n" +" add r0, r9\n" +" lsls r0, 3\n" +" adds r1, r0, r1\n" +" ldrh r0, [r1, 0xC]\n" +" movs r2, 0xC\n" +" ldrsh r7, [r1, r2]\n" +" cmp r7, 0\n" +" beq _0800E148\n" +" subs r0, 0x2\n" +" strh r0, [r1, 0xC]\n" +" ldrh r0, [r1, 0xA]\n" +" adds r0, 0x2\n" +" strh r0, [r1, 0xA]\n" +" b _0800E212\n" +" .align 2, 0\n" +"_0800E134: .4byte gBattle_BG1_X\n" +"_0800E138: .4byte gBattle_BG1_Y\n" +"_0800E13C: .4byte gBattle_BG2_X\n" +"_0800E140: .4byte gBattle_BG2_Y\n" +"_0800E144: .4byte gTasks\n" +"_0800E148:\n" +" movs r5, 0x12\n" +" ldrsh r0, [r1, r5]\n" +" cmp r0, 0\n" +" beq _0800E154\n" +" bl PrintLinkBattleWinLossTie\n" +"_0800E154:\n" +" movs r0, 0x78\n" +" bl PlaySE\n" +" mov r0, r9\n" +" bl DestroyTask\n" +" ldr r4, _0800E224 @ =gSprites\n" +" ldr r0, _0800E228 @ =0x02000000\n" +" mov r8, r0\n" +" ldr r1, _0800E22C @ =0x0001608a\n" +" add r1, r8\n" +" mov r9, r1\n" +" ldrb r0, [r1]\n" +" lsls r1, r0, 4\n" +" adds r1, r0\n" +" lsls r1, 2\n" +" adds r1, r4\n" +" adds r1, 0x3E\n" +" ldrb r3, [r1]\n" +" movs r2, 0x5\n" +" negs r2, r2\n" +" adds r0, r2, 0\n" +" ands r0, r3\n" +" strb r0, [r1]\n" +" ldr r5, _0800E230 @ =0x0001608b\n" +" add r8, r5\n" +" mov r0, r8\n" +" ldrb r1, [r0]\n" +" lsls r0, r1, 4\n" +" adds r0, r1\n" +" lsls r0, 2\n" +" adds r0, r4\n" +" adds r0, 0x3E\n" +" ldrb r1, [r0]\n" +" ands r2, r1\n" +" strb r2, [r0]\n" +" mov r1, r8\n" +" ldrb r0, [r1]\n" +" lsls r2, r0, 4\n" +" adds r2, r0\n" +" lsls r2, 2\n" +" adds r2, r4\n" +" ldrh r3, [r2, 0x4]\n" +" lsls r1, r3, 22\n" +" lsrs r1, 22\n" +" adds r1, 0x40\n" +" ldr r5, _0800E234 @ =0x000003ff\n" +" adds r0, r5, 0\n" +" ands r1, r0\n" +" ldr r0, _0800E238 @ =0xfffffc00\n" +" ands r0, r3\n" +" orrs r0, r1\n" +" strh r0, [r2, 0x4]\n" +" mov r0, r9\n" +" ldrb r1, [r0]\n" +" lsls r0, r1, 4\n" +" adds r0, r1\n" +" lsls r0, 2\n" +" adds r0, r4\n" +" strh r7, [r0, 0x2E]\n" +" mov r2, r8\n" +" ldrb r1, [r2]\n" +" lsls r0, r1, 4\n" +" adds r0, r1\n" +" lsls r0, 2\n" +" adds r0, r4\n" +" movs r1, 0x1\n" +" strh r1, [r0, 0x2E]\n" +" mov r5, r9\n" +" ldrb r1, [r5]\n" +" lsls r0, r1, 4\n" +" adds r0, r1\n" +" lsls r0, 2\n" +" adds r0, r4\n" +" ldrh r1, [r0, 0x20]\n" +" strh r1, [r0, 0x30]\n" +" ldrb r1, [r2]\n" +" lsls r0, r1, 4\n" +" adds r0, r1\n" +" lsls r0, 2\n" +" adds r0, r4\n" +" ldrh r1, [r0, 0x20]\n" +" strh r1, [r0, 0x30]\n" +" ldrb r1, [r5]\n" +" lsls r0, r1, 4\n" +" adds r0, r1\n" +" lsls r0, 2\n" +" adds r0, r4\n" +" strh r7, [r0, 0x32]\n" +" ldrb r1, [r2]\n" +" lsls r0, r1, 4\n" +" adds r0, r1\n" +" lsls r0, 2\n" +" adds r0, r4\n" +" strh r7, [r0, 0x32]\n" +"_0800E212:\n" +" add sp, 0x10\n" +" pop {r3-r5}\n" +" mov r8, r3\n" +" mov r9, r4\n" +" mov r10, r5\n" +" pop {r4-r7}\n" +" pop {r0}\n" +" bx r0\n" +" .align 2, 0\n" +"_0800E224: .4byte gSprites\n" +"_0800E228: .4byte 0x02000000\n" +"_0800E22C: .4byte 0x0001608a\n" +"_0800E230: .4byte 0x0001608b\n" +"_0800E234: .4byte 0x000003ff\n" +"_0800E238: .4byte 0xfffffc00\n" +" thumb_func_end sub_800DE30\n" +); + +#endif // NONMATCHING + + +void sub_800E23C(void) { + if (gBattleTypeFlags & BATTLE_TYPE_LINK) { + LZDecompressVram(gVersusFrameGfx, (void *)0x6004000); + LZDecompressVram(gVersusFrameTilemap, (void *)0x600e000); + LZDecompressVram(gVersusFrameTilemap, (void *)0x600f000); + LZDecompressVram(gUnknown_08E5DC2C, (void *)0x6010000); + LoadCompressedPalette(gVersusFramePal, 0x60, 0x20); + REG_BG1CNT = 0x5c04; + REG_WININ = 0x36; + REG_WINOUT = 0x36; + gBattle_BG1_Y = 0xff5c; + gBattle_BG2_Y = 0xff5c; + LoadCompressedObjectPic(&gUnknown_081F95A4); + return; + } else if (gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK)) { + LZDecompressVram(gBattleTerrainAnimTiles_Building, (void *)0x6004000); + LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void *)0x600e000); + return; + } else if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) { + if (gGameVersion == VERSION_RUBY) { + LZDecompressVram(gBattleTerrainAnimTiles_Cave, (void *)0x6004000); + LZDecompressVram(gBattleTerrainAnimTilemap_Cave, (void *)0x600e000); + return; + } else { + LZDecompressVram(gBattleTerrainAnimTiles_Underwater, (void *)0x6004000); + LZDecompressVram(gBattleTerrainAnimTilemap_Underwater, (void *)0x600e000); + return; + } + } else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) { + if (gTrainers[gTrainerBattleOpponent].trainerClass == 0x19) { + LZDecompressVram(gBattleTerrainAnimTiles_Building, (void *)0x6004000); + LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void *)0x600e000); + return; + } else if (gTrainers[gTrainerBattleOpponent].trainerClass == 0x20) { + LZDecompressVram(gBattleTerrainAnimTiles_Building, (void *)0x6004000); + LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void *)0x600e000); + return; + } + } + if (sav1_map_get_battletype() == 0) { + LZDecompressVram(gBattleTerrainTable[gBattleTerrain][2], (void *)0x6004000); + LZDecompressVram(gBattleTerrainTable[gBattleTerrain][3], (void *)0x600e000); + return; + } + LZDecompressVram(gBattleTerrainAnimTiles_Building, (void *)0x6004000); + LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void *)0x600e000); +} + +int sub_800E414(u8 a1) { + int ret = 0; + switch (a1) { + case 0: + LZDecompressVram(&gUnknown_08D00000, (void *)0x6000000); + break; + case 1: + CpuCopy16(gUnknown_08D00524, (void *)0x600c000, 0x1000); + break; + case 2: + LoadCompressedPalette(gUnknown_08D004E0, 0, 0x40); + break; + case 3: // tiles + if (!(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK))) { + if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) { + if (gGameVersion == VERSION_RUBY) { + LZDecompressVram(gBattleTerrainTiles_Cave, (void *)0x6008000); + break; + } else { + LZDecompressVram(gBattleTerrainTiles_Water, (void *)0x6008000); + break; + } + } else { + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) { + if (gTrainers[gTrainerBattleOpponent].trainerClass == 0x19) { + LZDecompressVram(gBattleTerrainTiles_Building, (void *)0x6008000); + break; + } else if (gTrainers[gTrainerBattleOpponent].trainerClass == 0x20) { + LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)0x6008000); + break; + } + } + switch (sav1_map_get_battletype()) { + case 0: + LZDecompressVram(gBattleTerrainTable[gBattleTerrain][0], (void *)0x6008000); + break; + case 2: + LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)0x6008000); + break; + case 3: + LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)0x6008000); + break; + case 4: + LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)0x6008000); + break; + case 5: + LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)0x6008000); + break; + case 6: + LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)0x6008000); + break; + case 7: + LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)0x6008000); + break; + case 1: + case 8: + LZDecompressVram(gBattleTerrainTiles_Building, (void *)0x6008000); + break; + } + break; + } + } else { + LZDecompressVram(gBattleTerrainTiles_Building, (void *)0x6008000); + break; + } + case 4: // tilemap + if (!(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK))) { + if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) { + if (gGameVersion == 2) { + LZDecompressVram(gBattleTerrainTilemap_Cave, (void *)0x600d000); + break; + } else { + LZDecompressVram(gBattleTerrainTilemap_Water, (void *)0x600d000); + break; + } + } else { + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) { + if (gTrainers[gTrainerBattleOpponent].trainerClass == 0x19) { + LZDecompressVram(gBattleTerrainTilemap_Building, (void *)0x600d000); + break; + } else if (gTrainers[gTrainerBattleOpponent].trainerClass == 0x20) { + LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)0x600d000); + break; + } + } + switch (sav1_map_get_battletype()) { + case 0: + LZDecompressVram(gBattleTerrainTable[gBattleTerrain][1], (void *)0x600d000); + break; + case 2: + LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)0x600d000); + break; + case 3: + LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)0x600d000); + break; + case 4: + LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)0x600d000); + break; + case 5: + LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)0x600d000); + break; + case 6: + LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)0x600d000); + break; + case 7: + LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)0x600d000); + break; + case 1: + case 8: + LZDecompressVram(gBattleTerrainTilemap_Building, (void *)0x600d000); + break; + } + break; + } + } else { + LZDecompressVram(gBattleTerrainTilemap_Building, (void *)0x600d000); + break; + } + case 5: // palette + if (!(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK))) { + if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) { + if (gGameVersion == 2) { + LoadCompressedPalette(gBattleTerrainPalette_Groudon, 0x20, 0x60); + break; + } else { + LoadCompressedPalette(gBattleTerrainPalette_Kyogre, 0x20, 0x60); + break; + } + } else { + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) { + if (gTrainers[gTrainerBattleOpponent].trainerClass == 0x19) { + LoadCompressedPalette(gBattleTerrainPalette_BuildingLeader, 0x20, 0x60); + break; + } else if (gTrainers[gTrainerBattleOpponent].trainerClass == 0x20) { + LoadCompressedPalette(gBattleTerrainPalette_StadiumSteven, 0x20, 0x60); + break; + } + } + switch (sav1_map_get_battletype()) { + case 0: + LoadCompressedPalette(gBattleTerrainTable[gBattleTerrain][4], 0x20, 0x60); + break; + case 1: + LoadCompressedPalette(gBattleTerrainPalette_BuildingGym, 0x20, 0x60); + break; + case 2: + LoadCompressedPalette(gBattleTerrainPalette_StadiumMagma, 0x20, 0x60); + break; + case 3: + LoadCompressedPalette(gBattleTerrainPalette_StadiumAqua, 0x20, 0x60); + break; + case 4: + LoadCompressedPalette(gBattleTerrainPalette_StadiumSidney, 0x20, 0x60); + break; + case 5: + LoadCompressedPalette(gBattleTerrainPalette_StadiumPhoebe, 0x20, 0x60); + break; + case 6: + LoadCompressedPalette(gBattleTerrainPalette_StadiumGlacia, 0x20, 0x60); + break; + case 7: + LoadCompressedPalette(gBattleTerrainPalette_StadiumDrake, 0x20, 0x60); + break; + case 8: + LoadCompressedPalette(gBattleTerrainPalette_BattleTower, 0x20, 0x60); + break; + } + break; + } + } else { + LoadCompressedPalette(gBattleTerrainPalette_BattleTower, 0x20, 0x60); + break; + } + case 6: + sub_800D74C(); + break; + default: + ret = 1; + } + return ret; +} |