summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoryenatch <yenatch@gmail.com>2018-01-29 23:51:07 -0500
committeryenatch <yenatch@gmail.com>2018-01-29 23:51:07 -0500
commit3ed97d94be70bee91b581517311c01cf20c917de (patch)
tree6db51cef5165c56944c74a0263fa993187788657
parent07a2892bec1356ea7b1ddcec3b95c04360258cbb (diff)
more battle_1 functions
-rw-r--r--asm/battle_1.s636
-rw-r--r--src/rom_800D42C.c241
2 files changed, 235 insertions, 642 deletions
diff --git a/asm/battle_1.s b/asm/battle_1.s
index 0528dcacf..5ef29adee 100644
--- a/asm/battle_1.s
+++ b/asm/battle_1.s
@@ -346,640 +346,4 @@ _0800D674:
pop {r0}
bx r0
thumb_func_end unref_sub_800D42C
-
- thumb_func_start unref_sub_800D684
-unref_sub_800D684: @ 800D684
- push {lr}
- bl ResetSpriteData
- ldr r0, _0800D6B8 @ =gSpriteTemplate_81F96D0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0800D6BC @ =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, _0800D6C0 @ =sub_800D6C4
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_0800D6B8: .4byte gSpriteTemplate_81F96D0
-_0800D6BC: .4byte gSprites
-_0800D6C0: .4byte sub_800D6C4
- thumb_func_end unref_sub_800D684
-
- thumb_func_start sub_800D6C4
-sub_800D6C4: @ 800D6C4
- push {lr}
- bl AnimateSprites
- bl BuildOamBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_800D6C4
-
- thumb_func_start sub_800D6D4
-sub_800D6D4: @ 800D6D4
- push {r4,r5,lr}
- ldr r3, _0800D72C @ =0x04000208
- ldrh r2, [r3]
- movs r5, 0
- strh r5, [r3]
- ldr r4, _0800D730 @ =0x04000200
- ldrh r0, [r4]
- movs r1, 0x1
- orrs r0, r1
- strh r0, [r4]
- strh r2, [r3]
- ldr r1, _0800D734 @ =REG_DISPSTAT
- movs r0, 0x8
- strh r0, [r1]
- adds r1, 0x4
- movs r2, 0x98
- lsls r2, 8
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- ldr r2, _0800D738 @ =0x00009c04
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- ldr r2, _0800D73C @ =0x00005e05
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- ldr r2, _0800D740 @ =0x00005a0b
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _0800D744 @ =REG_BLDCNT
- strh r5, [r0]
- adds r0, 0x2
- strh r5, [r0]
- adds r0, 0x2
- strh r5, [r0]
- subs r1, 0xE
- ldr r2, _0800D748 @ =0x0000bf40
- adds r0, r2, 0
- strh r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0800D72C: .4byte 0x04000208
-_0800D730: .4byte 0x04000200
-_0800D734: .4byte REG_DISPSTAT
-_0800D738: .4byte 0x00009c04
-_0800D73C: .4byte 0x00005e05
-_0800D740: .4byte 0x00005a0b
-_0800D744: .4byte REG_BLDCNT
-_0800D748: .4byte 0x0000bf40
- thumb_func_end sub_800D6D4
-
- thumb_func_start sub_800D74C
-sub_800D74C: @ 800D74C
- push {r4,lr}
- movs r0, 0x12
- bl TextWindow_SetBaseTileNum
- ldr r4, _0800D79C @ =gUnknown_03004210
- adds r0, r4, 0
- movs r1, 0x1
- bl TextWindow_LoadStdFrameGraphicsOverridePal
- movs r0, 0x22
- bl TextWindow_SetBaseTileNum
- adds r0, r4, 0
- movs r1, 0x1
- bl TextWindow_LoadStdFrameGraphicsOverridePal
- ldr r3, _0800D7A0 @ =gPlttBufferUnfaded
- adds r0, r3, 0
- adds r0, 0xB8
- ldr r1, _0800D7A4 @ =0x00007fe0
- strh r1, [r0]
- adds r2, r3, 0
- adds r2, 0xBA
- ldr r1, _0800D7A8 @ =0x00002529
- strh r1, [r2]
- adds r2, 0x2
- ldr r1, _0800D7AC @ =0x00007fff
- strh r1, [r2]
- adds r2, 0x2
- ldr r1, _0800D7B0 @ =0x0000675a
- strh r1, [r2]
- ldr r1, _0800D7B4 @ =gPlttBufferFaded + 0xB8
- movs r2, 0x4
- bl CpuSet
- bl sub_8032A38
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0800D79C: .4byte gUnknown_03004210
-_0800D7A0: .4byte gPlttBufferUnfaded
-_0800D7A4: .4byte 0x00007fe0
-_0800D7A8: .4byte 0x00002529
-_0800D7AC: .4byte 0x00007fff
-_0800D7B0: .4byte 0x0000675a
-_0800D7B4: .4byte gPlttBufferFaded + 0xB8
- thumb_func_end sub_800D74C
-
- thumb_func_start DrawMainBattleBackground
-DrawMainBattleBackground: @ 800D7B8
- push {r4,r5,lr}
- ldr r0, _0800D7DC @ =gBattleTypeFlags
- ldrh r1, [r0]
- ldr r0, _0800D7E0 @ =0x00000902
- ands r0, r1
- cmp r0, 0
- beq _0800D7F8
- ldr r0, _0800D7E4 @ =gBattleTerrainTiles_Building
- ldr r1, _0800D7E8 @ =0x06008000
- bl LZDecompressVram
- ldr r0, _0800D7EC @ =gBattleTerrainTilemap_Building
- ldr r1, _0800D7F0 @ =0x0600d000
- bl LZDecompressVram
- ldr r0, _0800D7F4 @ =gBattleTerrainPalette_BattleTower
- b _0800DA66
- .align 2, 0
-_0800D7DC: .4byte gBattleTypeFlags
-_0800D7E0: .4byte 0x00000902
-_0800D7E4: .4byte gBattleTerrainTiles_Building
-_0800D7E8: .4byte 0x06008000
-_0800D7EC: .4byte gBattleTerrainTilemap_Building
-_0800D7F0: .4byte 0x0600d000
-_0800D7F4: .4byte gBattleTerrainPalette_BattleTower
-_0800D7F8:
- movs r0, 0x80
- lsls r0, 5
- ands r0, r1
- cmp r0, 0
- beq _0800D860
- ldr r0, _0800D820 @ =gGameVersion
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _0800D838
- ldr r0, _0800D824 @ =gBattleTerrainTiles_Cave
- ldr r1, _0800D828 @ =0x06008000
- bl LZDecompressVram
- ldr r0, _0800D82C @ =gBattleTerrainTilemap_Cave
- ldr r1, _0800D830 @ =0x0600d000
- bl LZDecompressVram
- ldr r0, _0800D834 @ =gBattleTerrainPalette_Groudon
- b _0800DA66
- .align 2, 0
-_0800D820: .4byte gGameVersion
-_0800D824: .4byte gBattleTerrainTiles_Cave
-_0800D828: .4byte 0x06008000
-_0800D82C: .4byte gBattleTerrainTilemap_Cave
-_0800D830: .4byte 0x0600d000
-_0800D834: .4byte gBattleTerrainPalette_Groudon
-_0800D838:
- ldr r0, _0800D84C @ =gBattleTerrainTiles_Water
- ldr r1, _0800D850 @ =0x06008000
- bl LZDecompressVram
- ldr r0, _0800D854 @ =gBattleTerrainTilemap_Water
- ldr r1, _0800D858 @ =0x0600d000
- bl LZDecompressVram
- ldr r0, _0800D85C @ =gBattleTerrainPalette_Kyogre
- b _0800DA66
- .align 2, 0
-_0800D84C: .4byte gBattleTerrainTiles_Water
-_0800D850: .4byte 0x06008000
-_0800D854: .4byte gBattleTerrainTilemap_Water
-_0800D858: .4byte 0x0600d000
-_0800D85C: .4byte gBattleTerrainPalette_Kyogre
-_0800D860:
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _0800D8D8
- ldr r2, _0800D890 @ =gTrainers
- ldr r0, _0800D894 @ =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 _0800D8AC
- ldr r0, _0800D898 @ =gBattleTerrainTiles_Building
- ldr r1, _0800D89C @ =0x06008000
- bl LZDecompressVram
- ldr r0, _0800D8A0 @ =gBattleTerrainTilemap_Building
- ldr r1, _0800D8A4 @ =0x0600d000
- bl LZDecompressVram
- ldr r0, _0800D8A8 @ =gBattleTerrainPalette_BuildingLeader
- b _0800DA66
- .align 2, 0
-_0800D890: .4byte gTrainers
-_0800D894: .4byte gTrainerBattleOpponent
-_0800D898: .4byte gBattleTerrainTiles_Building
-_0800D89C: .4byte 0x06008000
-_0800D8A0: .4byte gBattleTerrainTilemap_Building
-_0800D8A4: .4byte 0x0600d000
-_0800D8A8: .4byte gBattleTerrainPalette_BuildingLeader
-_0800D8AC:
- cmp r0, 0x20
- bne _0800D8D8
- ldr r0, _0800D8C4 @ =gBattleTerrainTiles_Stadium
- ldr r1, _0800D8C8 @ =0x06008000
- bl LZDecompressVram
- ldr r0, _0800D8CC @ =gBattleTerrainTilemap_Stadium
- ldr r1, _0800D8D0 @ =0x0600d000
- bl LZDecompressVram
- ldr r0, _0800D8D4 @ =gBattleTerrainPalette_StadiumSteven
- b _0800DA66
- .align 2, 0
-_0800D8C4: .4byte gBattleTerrainTiles_Stadium
-_0800D8C8: .4byte 0x06008000
-_0800D8CC: .4byte gBattleTerrainTilemap_Stadium
-_0800D8D0: .4byte 0x0600d000
-_0800D8D4: .4byte gBattleTerrainPalette_StadiumSteven
-_0800D8D8:
- bl sav1_map_get_battletype
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x8
- bls _0800D8E6
- b _0800DA9E
-_0800D8E6:
- lsls r0, 2
- ldr r1, _0800D8F0 @ =_0800D8F4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0800D8F0: .4byte _0800D8F4
- .align 2, 0
-_0800D8F4:
- .4byte _0800D918
- .4byte _0800D964
- .4byte _0800D98C
- .4byte _0800D9B4
- .4byte _0800D9DC
- .4byte _0800DA04
- .4byte _0800DA2C
- .4byte _0800DA54
- .4byte _0800DA84
-_0800D918:
- ldr r4, _0800D954 @ =gBattleTerrainTable
- ldr r5, _0800D958 @ =gBattleTerrain
- ldrb r1, [r5]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldr r0, [r0]
- ldr r1, _0800D95C @ =0x06008000
- bl LZDecompressVram
- ldrb r1, [r5]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r1, r4, 0x4
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _0800D960 @ =0x0600d000
- bl LZDecompressVram
- ldrb r1, [r5]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r4, 0x10
- adds r0, r4
- ldr r0, [r0]
- b _0800DA66
- .align 2, 0
-_0800D954: .4byte gBattleTerrainTable
-_0800D958: .4byte gBattleTerrain
-_0800D95C: .4byte 0x06008000
-_0800D960: .4byte 0x0600d000
-_0800D964:
- ldr r0, _0800D978 @ =gBattleTerrainTiles_Building
- ldr r1, _0800D97C @ =0x06008000
- bl LZDecompressVram
- ldr r0, _0800D980 @ =gBattleTerrainTilemap_Building
- ldr r1, _0800D984 @ =0x0600d000
- bl LZDecompressVram
- ldr r0, _0800D988 @ =gBattleTerrainPalette_BuildingGym
- b _0800DA66
- .align 2, 0
-_0800D978: .4byte gBattleTerrainTiles_Building
-_0800D97C: .4byte 0x06008000
-_0800D980: .4byte gBattleTerrainTilemap_Building
-_0800D984: .4byte 0x0600d000
-_0800D988: .4byte gBattleTerrainPalette_BuildingGym
-_0800D98C:
- ldr r0, _0800D9A0 @ =gBattleTerrainTiles_Stadium
- ldr r1, _0800D9A4 @ =0x06008000
- bl LZDecompressVram
- ldr r0, _0800D9A8 @ =gBattleTerrainTilemap_Stadium
- ldr r1, _0800D9AC @ =0x0600d000
- bl LZDecompressVram
- ldr r0, _0800D9B0 @ =gBattleTerrainPalette_StadiumMagma
- b _0800DA66
- .align 2, 0
-_0800D9A0: .4byte gBattleTerrainTiles_Stadium
-_0800D9A4: .4byte 0x06008000
-_0800D9A8: .4byte gBattleTerrainTilemap_Stadium
-_0800D9AC: .4byte 0x0600d000
-_0800D9B0: .4byte gBattleTerrainPalette_StadiumMagma
-_0800D9B4:
- ldr r0, _0800D9C8 @ =gBattleTerrainTiles_Stadium
- ldr r1, _0800D9CC @ =0x06008000
- bl LZDecompressVram
- ldr r0, _0800D9D0 @ =gBattleTerrainTilemap_Stadium
- ldr r1, _0800D9D4 @ =0x0600d000
- bl LZDecompressVram
- ldr r0, _0800D9D8 @ =gBattleTerrainPalette_StadiumAqua
- b _0800DA66
- .align 2, 0
-_0800D9C8: .4byte gBattleTerrainTiles_Stadium
-_0800D9CC: .4byte 0x06008000
-_0800D9D0: .4byte gBattleTerrainTilemap_Stadium
-_0800D9D4: .4byte 0x0600d000
-_0800D9D8: .4byte gBattleTerrainPalette_StadiumAqua
-_0800D9DC:
- ldr r0, _0800D9F0 @ =gBattleTerrainTiles_Stadium
- ldr r1, _0800D9F4 @ =0x06008000
- bl LZDecompressVram
- ldr r0, _0800D9F8 @ =gBattleTerrainTilemap_Stadium
- ldr r1, _0800D9FC @ =0x0600d000
- bl LZDecompressVram
- ldr r0, _0800DA00 @ =gBattleTerrainPalette_StadiumSidney
- b _0800DA66
- .align 2, 0
-_0800D9F0: .4byte gBattleTerrainTiles_Stadium
-_0800D9F4: .4byte 0x06008000
-_0800D9F8: .4byte gBattleTerrainTilemap_Stadium
-_0800D9FC: .4byte 0x0600d000
-_0800DA00: .4byte gBattleTerrainPalette_StadiumSidney
-_0800DA04:
- ldr r0, _0800DA18 @ =gBattleTerrainTiles_Stadium
- ldr r1, _0800DA1C @ =0x06008000
- bl LZDecompressVram
- ldr r0, _0800DA20 @ =gBattleTerrainTilemap_Stadium
- ldr r1, _0800DA24 @ =0x0600d000
- bl LZDecompressVram
- ldr r0, _0800DA28 @ =gBattleTerrainPalette_StadiumPhoebe
- b _0800DA66
- .align 2, 0
-_0800DA18: .4byte gBattleTerrainTiles_Stadium
-_0800DA1C: .4byte 0x06008000
-_0800DA20: .4byte gBattleTerrainTilemap_Stadium
-_0800DA24: .4byte 0x0600d000
-_0800DA28: .4byte gBattleTerrainPalette_StadiumPhoebe
-_0800DA2C:
- ldr r0, _0800DA40 @ =gBattleTerrainTiles_Stadium
- ldr r1, _0800DA44 @ =0x06008000
- bl LZDecompressVram
- ldr r0, _0800DA48 @ =gBattleTerrainTilemap_Stadium
- ldr r1, _0800DA4C @ =0x0600d000
- bl LZDecompressVram
- ldr r0, _0800DA50 @ =gBattleTerrainPalette_StadiumGlacia
- b _0800DA66
- .align 2, 0
-_0800DA40: .4byte gBattleTerrainTiles_Stadium
-_0800DA44: .4byte 0x06008000
-_0800DA48: .4byte gBattleTerrainTilemap_Stadium
-_0800DA4C: .4byte 0x0600d000
-_0800DA50: .4byte gBattleTerrainPalette_StadiumGlacia
-_0800DA54:
- ldr r0, _0800DA70 @ =gBattleTerrainTiles_Stadium
- ldr r1, _0800DA74 @ =0x06008000
- bl LZDecompressVram
- ldr r0, _0800DA78 @ =gBattleTerrainTilemap_Stadium
- ldr r1, _0800DA7C @ =0x0600d000
- bl LZDecompressVram
- ldr r0, _0800DA80 @ =gBattleTerrainPalette_StadiumDrake
-_0800DA66:
- movs r1, 0x20
- movs r2, 0x60
- bl LoadCompressedPalette
- b _0800DA9E
- .align 2, 0
-_0800DA70: .4byte gBattleTerrainTiles_Stadium
-_0800DA74: .4byte 0x06008000
-_0800DA78: .4byte gBattleTerrainTilemap_Stadium
-_0800DA7C: .4byte 0x0600d000
-_0800DA80: .4byte gBattleTerrainPalette_StadiumDrake
-_0800DA84:
- ldr r0, _0800DAA4 @ =gBattleTerrainTiles_Building
- ldr r1, _0800DAA8 @ =0x06008000
- bl LZDecompressVram
- ldr r0, _0800DAAC @ =gBattleTerrainTilemap_Building
- ldr r1, _0800DAB0 @ =0x0600d000
- bl LZDecompressVram
- ldr r0, _0800DAB4 @ =gBattleTerrainPalette_BattleTower
- movs r1, 0x20
- movs r2, 0x60
- bl LoadCompressedPalette
-_0800DA9E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0800DAA4: .4byte gBattleTerrainTiles_Building
-_0800DAA8: .4byte 0x06008000
-_0800DAAC: .4byte gBattleTerrainTilemap_Building
-_0800DAB0: .4byte 0x0600d000
-_0800DAB4: .4byte gBattleTerrainPalette_BattleTower
- thumb_func_end DrawMainBattleBackground
-
- thumb_func_start sub_800DAB8
-sub_800DAB8: @ 800DAB8
- push {lr}
- ldr r0, _0800DAE8 @ =gUnknown_08D00000
- movs r1, 0xC0
- lsls r1, 19
- bl LZDecompressVram
- ldr r0, _0800DAEC @ =gUnknown_08D00524
- ldr r1, _0800DAF0 @ =0x0600c000
- movs r2, 0x80
- lsls r2, 4
- bl CpuSet
- ldr r0, _0800DAF4 @ =gUnknown_08D004E0
- movs r1, 0
- movs r2, 0x40
- bl LoadCompressedPalette
- bl sub_800D74C
- bl DrawMainBattleBackground
- pop {r0}
- bx r0
- .align 2, 0
-_0800DAE8: .4byte gUnknown_08D00000
-_0800DAEC: .4byte gUnknown_08D00524
-_0800DAF0: .4byte 0x0600c000
-_0800DAF4: .4byte gUnknown_08D004E0
- thumb_func_end sub_800DAB8
-
- thumb_func_start sub_800DAF8
-sub_800DAF8: @ 800DAF8
- push {r4-r7,lr}
- sub sp, 0xC
- adds r7, r2, 0
- lsls r0, 24
- lsrs r2, r0, 24
- adds r5, r2, 0
- lsls r1, 24
- lsrs r3, r1, 24
- movs r4, 0
- ldr r0, _0800DB38 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0800DBB4
- ldr r0, _0800DB3C @ =gTasks
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 3
- adds r1, r0
- movs r2, 0x12
- ldrsh r0, [r1, r2]
- cmp r0, 0
- beq _0800DB52
- cmp r3, 0x1
- beq _0800DB7A
- cmp r3, 0x1
- bgt _0800DB40
- cmp r3, 0
- beq _0800DB4A
- b _0800DB84
- .align 2, 0
-_0800DB38: .4byte gBattleTypeFlags
-_0800DB3C: .4byte gTasks
-_0800DB40:
- cmp r3, 0x2
- beq _0800DB4E
- cmp r3, 0x3
- beq _0800DB6E
- b _0800DB84
-_0800DB4A:
- ldrh r0, [r1, 0xE]
- b _0800DB70
-_0800DB4E:
- ldrh r1, [r1, 0xE]
- b _0800DB7C
-_0800DB52:
- cmp r3, 0x1
- beq _0800DB6E
- cmp r3, 0x1
- bgt _0800DB60
- cmp r3, 0
- beq _0800DB6A
- b _0800DB84
-_0800DB60:
- cmp r3, 0x2
- beq _0800DB76
- cmp r3, 0x3
- beq _0800DB7A
- b _0800DB84
-_0800DB6A:
- ldrh r0, [r1, 0xE]
- b _0800DB70
-_0800DB6E:
- ldrh r0, [r1, 0x10]
-_0800DB70:
- movs r4, 0x3F
- ands r4, r0
- b _0800DB84
-_0800DB76:
- ldrh r1, [r1, 0xE]
- b _0800DB7C
-_0800DB7A:
- ldrh r1, [r1, 0x10]
-_0800DB7C:
- movs r0, 0xFC
- lsls r0, 4
- ands r0, r1
- lsrs r4, r0, 6
-_0800DB84:
- movs r3, 0
- movs r6, 0x3
- ldr r0, _0800DBB0 @ =0x00006001
- adds r5, r0, 0
- mov r2, sp
-_0800DB8E:
- lsls r1, r3, 1
- adds r0, r6, 0
- lsls r0, r1
- ands r0, r4
- asrs r0, r1
- adds r0, r5
- strh r0, [r2]
- adds r2, 0x2
- adds r3, 0x1
- cmp r3, 0x2
- ble _0800DB8E
- mov r0, sp
- adds r1, r7, 0
- movs r2, 0x3
- bl CpuSet
- b _0800DC12
- .align 2, 0
-_0800DBB0: .4byte 0x00006001
-_0800DBB4:
- ldr r0, _0800DBD0 @ =gSharedMem
- ldr r1, _0800DBD4 @ =0x000160cb
- adds r0, r1
- ldrb r0, [r0]
- cmp r3, r0
- bne _0800DBDC
- ldr r1, _0800DBD8 @ =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r1
- ldrh r4, [r0, 0xE]
- b _0800DBE8
- .align 2, 0
-_0800DBD0: .4byte gSharedMem
-_0800DBD4: .4byte 0x000160cb
-_0800DBD8: .4byte gTasks
-_0800DBDC:
- ldr r1, _0800DC1C @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldrh r4, [r0, 0x10]
-_0800DBE8:
- movs r3, 0
- movs r6, 0x3
- ldr r2, _0800DC20 @ =0x00006001
- adds r5, r2, 0
- mov r2, sp
-_0800DBF2:
- lsls r1, r3, 1
- adds r0, r6, 0
- lsls r0, r1
- ands r0, r4
- asrs r0, r1
- adds r0, r5
- strh r0, [r2]
- adds r2, 0x2
- adds r3, 0x1
- cmp r3, 0x5
- ble _0800DBF2
- mov r0, sp
- adds r1, r7, 0
- movs r2, 0x6
- bl CpuSet
-_0800DC12:
- add sp, 0xC
- pop {r4-r7}
- pop {r0}
- bx r0
.align 2, 0
-_0800DC1C: .4byte gTasks
-_0800DC20: .4byte 0x00006001
- thumb_func_end sub_800DAF8
diff --git a/src/rom_800D42C.c b/src/rom_800D42C.c
index 54886c1f9..243945360 100644
--- a/src/rom_800D42C.c
+++ b/src/rom_800D42C.c
@@ -4,9 +4,12 @@
#include "decompress.h"
#include "ewram.h"
#include "link.h"
+#include "main.h"
#include "palette.h"
#include "task.h"
#include "text.h"
+#include "text_window.h"
+#include "trainer.h"
#include "trig.h"
#include "sound.h"
@@ -20,6 +23,11 @@ extern u8 BattleText_Win[];
extern u8 BattleText_Loss[];
extern u8 BattleText_Tie[];
+extern void sub_8032A38(void);
+
+#define GetCurrentMapBattleScene sav1_map_get_battletype
+//extern u8 GetCurrentMapBattleScene(void);
+
extern const u8 gGameVersion;
extern u8 gUnknown_08D00000[];
extern u16 gUnknown_08D00524[];
@@ -28,7 +36,15 @@ extern u16 gBattleTypeFlags;
extern struct Trainer gTrainers[];
extern u16 gTrainerBattleOpponent;
-extern void *gBattleTerrainTable[][5];
+struct BattleBackground {
+ void *tileset;
+ void *tilemap;
+ void *entryTiles;
+ void *entryTilemap;
+ void *palette;
+};
+extern struct BattleBackground gBattleTerrainTable[];
+
extern u8 gBattleTerrain;
extern u8 gBattleTerrainTiles_Cave[];
@@ -87,11 +103,224 @@ extern void sub_800DAF8(u8, u8, u8 *);
extern struct SpriteTemplate gSpriteTemplate_81F9574;
extern struct SpriteTemplate gSpriteTemplate_81F958C;
+extern struct SpriteTemplate gSpriteTemplate_81F96D0;
extern u16 gBattle_BG1_X;
extern u16 gBattle_BG2_X;
+void sub_800D6C4(void);
+
+
+void unref_sub_800D684(void)
+{
+ u8 spriteId;
+ ResetSpriteData();
+ spriteId = CreateSprite(&gSpriteTemplate_81F96D0, 0, 0, 0);
+ gSprites[spriteId].invisible = TRUE;
+ SetMainCallback2(sub_800D6C4);
+}
+
+void sub_800D6C4(void)
+{
+ AnimateSprites();
+ BuildOamBuffer();
+}
+
+void sub_800D6D4(void)
+{
+ u16 ime = REG_IME;
+ REG_IME = 0;
+ REG_IE |= INTR_FLAG_VBLANK;
+ REG_IME = ime;
+ REG_DISPSTAT = DISPSTAT_VBLANK_INTR;
+ REG_BG0CNT = 0x9800;
+ REG_BG1CNT = 0x9c04;
+ REG_BG2CNT = 0x5e05;
+ REG_BG3CNT = 0x5a0b;
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ REG_BLDY = 0;
+ REG_DISPCNT = 0xbf40;
+}
+
+// ApplyPlayerChosenFrameToBattleMenu
+void sub_800D74C(void)
+{
+ TextWindow_SetBaseTileNum(0x12);
+ TextWindow_LoadStdFrameGraphicsOverridePal(&gUnknown_03004210, 1);
+ TextWindow_SetBaseTileNum(0x22);
+ TextWindow_LoadStdFrameGraphicsOverridePal(&gUnknown_03004210, 1);
+ gPlttBufferUnfaded[92] = 0x7fe0;
+ gPlttBufferUnfaded[93] = 0x2529;
+ gPlttBufferUnfaded[94] = 0x7fff;
+ gPlttBufferUnfaded[95] = 0x675a;
+ CpuSet(&gPlttBufferUnfaded[92], &gPlttBufferFaded[92], 4);
+ sub_8032A38();
+}
+
+void DrawMainBattleBackground(void)
+{
+ if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER /*| BATTLE_TYPE_x2000000*/))
+ {
+ LZDecompressVram(gBattleTerrainTiles_Building, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(VRAM + 0xD000));
+ LoadCompressedPalette(gBattleTerrainPalette_BattleTower, 0x20, 0x60);
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON)
+ {
+ if (gGameVersion == VERSION_RUBY)
+ {
+ LZDecompressVram(gBattleTerrainTiles_Cave, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTilemap_Cave, (void*)(VRAM + 0xD000));
+ LoadCompressedPalette(gBattleTerrainPalette_Groudon, 0x20, 0x60);
+ }
+ else
+ {
+ LZDecompressVram(gBattleTerrainTiles_Water, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTilemap_Water, (void*)(VRAM + 0xD000));
+ LoadCompressedPalette(gBattleTerrainPalette_Kyogre, 0x20, 0x60);
+ }
+ }
+ else
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ {
+ u8 trainerClass = gTrainers[gTrainerBattleOpponent].trainerClass;
+ if (trainerClass == TRAINER_CLASS_LEADER)
+ {
+ LZDecompressVram(gBattleTerrainTiles_Building, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(VRAM + 0xD000));
+ LoadCompressedPalette(gBattleTerrainPalette_BuildingLeader, 0x20, 0x60);
+ return;
+ }
+ else if (trainerClass == TRAINER_CLASS_CHAMPION)
+ {
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
+ LoadCompressedPalette(gBattleTerrainPalette_StadiumSteven, 0x20, 0x60);
+ return;
+ }
+ }
+
+ switch (GetCurrentMapBattleScene())
+ {
+ case MAP_BATTLE_SCENE_NORMAL:
+ LZDecompressVram(gBattleTerrainTable[gBattleTerrain].tileset, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTable[gBattleTerrain].tilemap, (void*)(VRAM + 0xD000));
+ LoadCompressedPalette(gBattleTerrainTable[gBattleTerrain].palette, 0x20, 0x60);
+ break;
+ case MAP_BATTLE_SCENE_GYM:
+ LZDecompressVram(gBattleTerrainTiles_Building, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(VRAM + 0xD000));
+ LoadCompressedPalette(gBattleTerrainPalette_BuildingGym, 0x20, 0x60);
+ break;
+ case MAP_BATTLE_SCENE_MAGMA:
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
+ LoadCompressedPalette(gBattleTerrainPalette_StadiumMagma, 0x20, 0x60);
+ break;
+ case MAP_BATTLE_SCENE_AQUA:
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
+ LoadCompressedPalette(gBattleTerrainPalette_StadiumAqua, 0x20, 0x60);
+ break;
+ case MAP_BATTLE_SCENE_SIDNEY:
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
+ LoadCompressedPalette(gBattleTerrainPalette_StadiumSidney, 0x20, 0x60);
+ break;
+ case MAP_BATTLE_SCENE_PHOEBE:
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
+ LoadCompressedPalette(gBattleTerrainPalette_StadiumPhoebe, 0x20, 0x60);
+ break;
+ case MAP_BATTLE_SCENE_GLACIA:
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
+ LoadCompressedPalette(gBattleTerrainPalette_StadiumGlacia, 0x20, 0x60);
+ break;
+ case MAP_BATTLE_SCENE_DRAKE:
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
+ LoadCompressedPalette(gBattleTerrainPalette_StadiumDrake, 0x20, 0x60);
+ break;
+ case MAP_BATTLE_SCENE_BATTLE_TOWER:
+ LZDecompressVram(gBattleTerrainTiles_Building, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(VRAM + 0xD000));
+ LoadCompressedPalette(gBattleTerrainPalette_BattleTower, 0x20, 0x60);
+ break;
+ }
+ }
+}
+
+
+
+void sub_800DAB8(void)
+{
+ LZDecompressVram(gUnknown_08D00000, (void *)0x6000000);
+ CpuSet(gUnknown_08D00524, (void *)0x600c000, 0x800);
+ LoadCompressedPalette(gUnknown_08D004E0, 0, 0x40);
+ sub_800D74C();
+ DrawMainBattleBackground();
+}
+
+void sub_800DAF8(u8 taskId, u8 windowId, u8 *dest)
+{
+ int i;
+ u16 r4 = 0;
+ u16 src[6];
+
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI) {
+ if (gTasks[taskId].data[5]) {
+ switch (windowId) {
+ case 0:
+ r4 = gTasks[taskId].data[3] & 0x3f;
+ break;
+ case 1:
+ r4 = (gTasks[taskId].data[4] & 0xfc0) >> 6;
+ break;
+ case 2:
+ r4 = (gTasks[taskId].data[3] & 0xfc0) >> 6;
+ break;
+ case 3:
+ r4 = gTasks[taskId].data[4] & 0x3f;
+ break;
+ }
+ } else {
+ switch (windowId) {
+ case 0:
+ r4 = gTasks[taskId].data[3] & 0x3f;
+ break;
+ case 1:
+ r4 = gTasks[taskId].data[4] & 0x3f;
+ break;
+ case 2:
+ r4 = (gTasks[taskId].data[3] & 0xfc0) >> 6;
+ break;
+ case 3:
+ r4 = (gTasks[taskId].data[4] & 0xfc0) >> 6;
+ break;
+ }
+ }
+ for (i = 0; i < 3; i++) {
+ src[i] = ((r4 & (3 << (i * 2))) >> (i * 2)) + 0x6001;
+ }
+ CpuSet(src, dest, 3);
+ } else {
+ if (windowId == gBattleStruct->linkPlayerIndex) {
+ r4 = gTasks[taskId].data[3];
+ } else {
+ r4 = gTasks[taskId].data[4];
+ }
+ for (i = 0; i < 6; i++) {
+ src[i] = ((r4 & (3 << (i * 2))) >> (i * 2)) + 0x6001;
+ }
+ CpuSet(src, dest, 6);
+ }
+}
+
+
#if ENGLISH
#define LEFT_MESSAGE_X 6
#define RIGHT_MESSAGE_X 21
@@ -337,8 +566,8 @@ void sub_800E23C(void) {
}
}
if (sav1_map_get_battletype() == 0) {
- LZDecompressVram(gBattleTerrainTable[gBattleTerrain][2], (void *)0x6004000);
- LZDecompressVram(gBattleTerrainTable[gBattleTerrain][3], (void *)0x600e000);
+ LZDecompressVram(gBattleTerrainTable[gBattleTerrain].entryTiles, (void *)0x6004000);
+ LZDecompressVram(gBattleTerrainTable[gBattleTerrain].entryTilemap, (void *)0x600e000);
return;
}
LZDecompressVram(gBattleTerrainAnimTiles_Building, (void *)0x6004000);
@@ -379,7 +608,7 @@ int sub_800E414(u8 type) {
}
switch (sav1_map_get_battletype()) {
case 0:
- LZDecompressVram(gBattleTerrainTable[gBattleTerrain][0], (void *)0x6008000);
+ LZDecompressVram(gBattleTerrainTable[gBattleTerrain].tileset, (void *)0x6008000);
break;
case 2:
LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)0x6008000);
@@ -432,7 +661,7 @@ int sub_800E414(u8 type) {
}
switch (sav1_map_get_battletype()) {
case 0:
- LZDecompressVram(gBattleTerrainTable[gBattleTerrain][1], (void *)0x600d000);
+ LZDecompressVram(gBattleTerrainTable[gBattleTerrain].tilemap, (void *)0x600d000);
break;
case 2:
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)0x600d000);
@@ -485,7 +714,7 @@ int sub_800E414(u8 type) {
}
switch (sav1_map_get_battletype()) {
case 0:
- LoadCompressedPalette(gBattleTerrainTable[gBattleTerrain][4], 0x20, 0x60);
+ LoadCompressedPalette(gBattleTerrainTable[gBattleTerrain].palette, 0x20, 0x60);
break;
case 1:
LoadCompressedPalette(gBattleTerrainPalette_BuildingGym, 0x20, 0x60);