summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/battle_anim.c20
-rw-r--r--src/battle_bg.c148
-rw-r--r--src/berry_blender.c2
-rw-r--r--src/clear_save_data_screen.c2
-rw-r--r--src/contest.c16
-rw-r--r--src/contest_painting.c14
-rw-r--r--src/credits.c2
-rw-r--r--src/field_effect.c6
-rwxr-xr-xsrc/field_effect_helpers.c4
-rw-r--r--src/intro.c42
-rw-r--r--src/intro_credits_graphics.c20
-rw-r--r--src/main_menu.c4
-rw-r--r--src/pokedex.c25
-rw-r--r--src/pokemon_storage_system.c2
-rw-r--r--src/pokenav.c1211
-rw-r--r--src/save_failed_screen.c4
-rw-r--r--src/starter_choose.c4
-rw-r--r--src/strings.c24
-rw-r--r--src/title_screen.c10
19 files changed, 1391 insertions, 169 deletions
diff --git a/src/battle_anim.c b/src/battle_anim.c
index f086b1c33..f1cff1de2 100644
--- a/src/battle_anim.c
+++ b/src/battle_anim.c
@@ -1933,13 +1933,13 @@ void MoveBattlerSpriteToBG(u8 battlerId, bool8 toBG_2, bool8 setSpriteInvisible)
if (IsContest() == TRUE)
{
- RequestDma3Fill(0, (void*)(VRAM + 0x8000), 0x2000, 1);
- RequestDma3Fill(0xFF, (void*)(VRAM + 0xF000), 0x1000, 0);
+ RequestDma3Fill(0, (void*)(BG_SCREEN_ADDR(16)), 0x2000, 1);
+ RequestDma3Fill(0xFF, (void*)(BG_SCREEN_ADDR(30)), 0x1000, 0);
}
else
{
- RequestDma3Fill(0, (void*)(VRAM + 0x4000), 0x2000, 1);
- RequestDma3Fill(0xFF, (void*)(VRAM + 0xe000), 0x1000, 0);
+ RequestDma3Fill(0, (void*)(BG_SCREEN_ADDR(8)), 0x2000, 1);
+ RequestDma3Fill(0xFF, (void*)(BG_SCREEN_ADDR(28)), 0x1000, 0);
}
sub_80A6B30(&animBg);
@@ -1978,8 +1978,8 @@ void MoveBattlerSpriteToBG(u8 battlerId, bool8 toBG_2, bool8 setSpriteInvisible)
}
else
{
- RequestDma3Fill(0, (void*)(VRAM + 0x6000), 0x2000, 1);
- RequestDma3Fill(0, (void*)(VRAM + 0xF000), 0x1000, 1);
+ RequestDma3Fill(0, (void*)(BG_SCREEN_ADDR(12)), 0x2000, 1);
+ RequestDma3Fill(0, (void*)(BG_SCREEN_ADDR(30)), 0x1000, 1);
sub_80A6B90(&animBg, 2);
CpuFill16(0, animBg.bgTiles + 0x1000, 0x1000);
CpuFill16(0, animBg.bgTilemap + 0x400, 0x800);
@@ -2452,15 +2452,15 @@ static void LoadMoveBg(u16 bgId)
LZDecompressWram(tilemap, gDecompressionBuffer);
sub_80A4720(sub_80A6D94(), (void*)(gDecompressionBuffer), 0x100, 0);
dmaSrc = gDecompressionBuffer;
- dmaDest = (void *)(VRAM + 0xD000);
+ dmaDest = (void *)(BG_SCREEN_ADDR(26));
DmaCopy32(3, dmaSrc, dmaDest, 0x800);
- LZDecompressVram(gBattleAnimBackgroundTable[bgId].image, (void *)(VRAM + 0x2000));
+ LZDecompressVram(gBattleAnimBackgroundTable[bgId].image, (void *)(BG_SCREEN_ADDR(4)));
LoadCompressedPalette(gBattleAnimBackgroundTable[bgId].palette, sub_80A6D94() * 16, 32);
}
else
{
- LZDecompressVram(gBattleAnimBackgroundTable[bgId].tilemap, (void *)(VRAM + 0xD000));
- LZDecompressVram(gBattleAnimBackgroundTable[bgId].image, (void *)(VRAM + 0x8000));
+ LZDecompressVram(gBattleAnimBackgroundTable[bgId].tilemap, (void *)(BG_SCREEN_ADDR(26)));
+ LZDecompressVram(gBattleAnimBackgroundTable[bgId].image, (void *)(BG_CHAR_ADDR(2)));
LoadCompressedPalette(gBattleAnimBackgroundTable[bgId].palette, 32, 32);
}
}
diff --git a/src/battle_bg.c b/src/battle_bg.c
index 61a914fc9..9ca0f8b84 100644
--- a/src/battle_bg.c
+++ b/src/battle_bg.c
@@ -720,26 +720,26 @@ void DrawMainBattleBackground(void)
{
if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_FRONTIER | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_x2000000))
{
- LZDecompressVram(gBattleTerrainTiles_Building, (void*)(VRAM + 0x8000));
- LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTiles_Building, (void*)(BG_CHAR_ADDR(2)));
+ LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(BG_SCREEN_ADDR(26)));
LoadCompressedPalette(gBattleTerrainPalette_Frontier, 0x20, 0x60);
}
else if (gBattleTypeFlags & BATTLE_TYPE_GROUDON)
{
- LZDecompressVram(gBattleTerrainTiles_Cave, (void*)(VRAM + 0x8000));
- LZDecompressVram(gBattleTerrainTilemap_Cave, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTiles_Cave, (void*)(BG_CHAR_ADDR(2)));
+ LZDecompressVram(gBattleTerrainTilemap_Cave, (void*)(BG_SCREEN_ADDR(26)));
LoadCompressedPalette(gBattleTerrainPalette_Groudon, 0x20, 0x60);
}
else if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE)
{
- LZDecompressVram(gBattleTerrainTiles_Water, (void*)(VRAM + 0x8000));
- LZDecompressVram(gBattleTerrainTilemap_Water, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTiles_Water, (void*)(BG_CHAR_ADDR(2)));
+ LZDecompressVram(gBattleTerrainTilemap_Water, (void*)(BG_SCREEN_ADDR(26)));
LoadCompressedPalette(gBattleTerrainPalette_Kyogre, 0x20, 0x60);
}
else if (gBattleTypeFlags & BATTLE_TYPE_RAYQUAZA)
{
- LZDecompressVram(gBattleTerrainTiles_Rayquaza, (void*)(VRAM + 0x8000));
- LZDecompressVram(gBattleTerrainTilemap_Rayquaza, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTiles_Rayquaza, (void*)(BG_CHAR_ADDR(2)));
+ LZDecompressVram(gBattleTerrainTilemap_Rayquaza, (void*)(BG_SCREEN_ADDR(26)));
LoadCompressedPalette(gBattleTerrainPalette_Rayquaza, 0x20, 0x60);
}
else
@@ -749,15 +749,15 @@ void DrawMainBattleBackground(void)
u8 trainerClass = gTrainers[gTrainerBattleOpponent_A].trainerClass;
if (trainerClass == TRAINER_CLASS_LEADER)
{
- LZDecompressVram(gBattleTerrainTiles_Building, (void*)(VRAM + 0x8000));
- LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTiles_Building, (void*)(BG_CHAR_ADDR(2)));
+ LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(BG_SCREEN_ADDR(26)));
LoadCompressedPalette(gBattleTerrainPalette_BuildingLeader, 0x20, 0x60);
return;
}
else if (trainerClass == TRAINER_CLASS_CHAMPION)
{
- LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
- LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(BG_CHAR_ADDR(2)));
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26)));
LoadCompressedPalette(gBattleTerrainPalette_StadiumWallace, 0x20, 0x60);
return;
}
@@ -767,48 +767,48 @@ void DrawMainBattleBackground(void)
{
default:
case MAP_BATTLE_SCENE_NORMAL:
- LZDecompressVram(gBattleTerrainTable[gBattleTerrain].tileset, (void*)(VRAM + 0x8000));
- LZDecompressVram(gBattleTerrainTable[gBattleTerrain].tilemap, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTable[gBattleTerrain].tileset, (void*)(BG_CHAR_ADDR(2)));
+ LZDecompressVram(gBattleTerrainTable[gBattleTerrain].tilemap, (void*)(BG_SCREEN_ADDR(26)));
LoadCompressedPalette(gBattleTerrainTable[gBattleTerrain].palette, 0x20, 0x60);
break;
case MAP_BATTLE_SCENE_GYM:
- LZDecompressVram(gBattleTerrainTiles_Building, (void*)(VRAM + 0x8000));
- LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTiles_Building, (void*)(BG_CHAR_ADDR(2)));
+ LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(BG_SCREEN_ADDR(26)));
LoadCompressedPalette(gBattleTerrainPalette_BuildingGym, 0x20, 0x60);
break;
case MAP_BATTLE_SCENE_MAGMA:
- LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
- LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(BG_CHAR_ADDR(2)));
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26)));
LoadCompressedPalette(gBattleTerrainPalette_StadiumMagma, 0x20, 0x60);
break;
case MAP_BATTLE_SCENE_AQUA:
- LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
- LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(BG_CHAR_ADDR(2)));
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26)));
LoadCompressedPalette(gBattleTerrainPalette_StadiumAqua, 0x20, 0x60);
break;
case MAP_BATTLE_SCENE_SIDNEY:
- LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
- LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(BG_CHAR_ADDR(2)));
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26)));
LoadCompressedPalette(gBattleTerrainPalette_StadiumSidney, 0x20, 0x60);
break;
case MAP_BATTLE_SCENE_PHOEBE:
- LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
- LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(BG_CHAR_ADDR(2)));
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26)));
LoadCompressedPalette(gBattleTerrainPalette_StadiumPhoebe, 0x20, 0x60);
break;
case MAP_BATTLE_SCENE_GLACIA:
- LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
- LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(BG_CHAR_ADDR(2)));
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26)));
LoadCompressedPalette(gBattleTerrainPalette_StadiumGlacia, 0x20, 0x60);
break;
case MAP_BATTLE_SCENE_DRAKE:
- LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
- LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(BG_CHAR_ADDR(2)));
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26)));
LoadCompressedPalette(gBattleTerrainPalette_StadiumDrake, 0x20, 0x60);
break;
case MAP_BATTLE_SCENE_FRONTIER:
- LZDecompressVram(gBattleTerrainTiles_Building, (void*)(VRAM + 0x8000));
- LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTiles_Building, (void*)(BG_CHAR_ADDR(2)));
+ LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(BG_SCREEN_ADDR(26)));
LoadCompressedPalette(gBattleTerrainPalette_Frontier, 0x20, 0x60);
break;
}
@@ -1089,7 +1089,7 @@ void DrawBattleEntryBackground(void)
{
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
- LZDecompressVram(gUnknown_08D778F0, (void*)(VRAM + 0x4000));
+ LZDecompressVram(gUnknown_08D778F0, (void*)(BG_CHAR_ADDR(1)));
LZDecompressVram(gUnknown_08D77B0C, (void*)(VRAM + 0x10000));
LoadCompressedPalette(gUnknown_08D77AE4, 0x60, 0x20);
SetBgAttribute(1, BG_ATTR_SCREENSIZE, 1);
@@ -1108,8 +1108,8 @@ void DrawBattleEntryBackground(void)
{
if (!(gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) || gPartnerTrainerId == TRAINER_STEVEN_PARTNER)
{
- LZDecompressVram(gBattleTerrainAnimTiles_Building, (void*)(VRAM + 0x4000));
- LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void*)(VRAM + 0xE000));
+ LZDecompressVram(gBattleTerrainAnimTiles_Building, (void*)(BG_CHAR_ADDR(1)));
+ LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void*)(BG_SCREEN_ADDR(28)));
}
else
{
@@ -1123,18 +1123,18 @@ void DrawBattleEntryBackground(void)
}
else if (gBattleTypeFlags & BATTLE_TYPE_GROUDON)
{
- LZDecompressVram(gBattleTerrainAnimTiles_Cave, (void*)(VRAM + 0x4000));
- LZDecompressVram(gBattleTerrainAnimTilemap_Cave, (void*)(VRAM + 0xE000));
+ LZDecompressVram(gBattleTerrainAnimTiles_Cave, (void*)(BG_CHAR_ADDR(1)));
+ LZDecompressVram(gBattleTerrainAnimTilemap_Cave, (void*)(BG_SCREEN_ADDR(28)));
}
else if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE)
{
- LZDecompressVram(gBattleTerrainAnimTiles_Underwater, (void*)(VRAM + 0x4000));
- LZDecompressVram(gBattleTerrainAnimTilemap_Underwater, (void*)(VRAM + 0xE000));
+ LZDecompressVram(gBattleTerrainAnimTiles_Underwater, (void*)(BG_CHAR_ADDR(1)));
+ LZDecompressVram(gBattleTerrainAnimTilemap_Underwater, (void*)(BG_SCREEN_ADDR(28)));
}
else if (gBattleTypeFlags & BATTLE_TYPE_RAYQUAZA)
{
- LZDecompressVram(gBattleTerrainAnimTiles_Rayquaza, (void*)(VRAM + 0x4000));
- LZDecompressVram(gBattleTerrainAnimTilemap_Rayquaza, (void*)(VRAM + 0xE000));
+ LZDecompressVram(gBattleTerrainAnimTiles_Rayquaza, (void*)(BG_CHAR_ADDR(1)));
+ LZDecompressVram(gBattleTerrainAnimTilemap_Rayquaza, (void*)(BG_SCREEN_ADDR(28)));
}
else
{
@@ -1143,27 +1143,27 @@ void DrawBattleEntryBackground(void)
u8 trainerClass = gTrainers[gTrainerBattleOpponent_A].trainerClass;
if (trainerClass == TRAINER_CLASS_LEADER)
{
- LZDecompressVram(gBattleTerrainAnimTiles_Building, (void*)(VRAM + 0x4000));
- LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void*)(VRAM + 0xE000));
+ LZDecompressVram(gBattleTerrainAnimTiles_Building, (void*)(BG_CHAR_ADDR(1)));
+ LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void*)(BG_SCREEN_ADDR(28)));
return;
}
else if (trainerClass == TRAINER_CLASS_CHAMPION)
{
- LZDecompressVram(gBattleTerrainAnimTiles_Building, (void*)(VRAM + 0x4000));
- LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void*)(VRAM + 0xE000));
+ LZDecompressVram(gBattleTerrainAnimTiles_Building, (void*)(BG_CHAR_ADDR(1)));
+ LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void*)(BG_SCREEN_ADDR(28)));
return;
}
}
if (GetCurrentMapBattleScene() == MAP_BATTLE_SCENE_NORMAL)
{
- LZDecompressVram(gBattleTerrainTable[gBattleTerrain].entryTileset, (void*)(VRAM + 0x4000));
- LZDecompressVram(gBattleTerrainTable[gBattleTerrain].entryTilemap, (void*)(VRAM + 0xE000));
+ LZDecompressVram(gBattleTerrainTable[gBattleTerrain].entryTileset, (void*)(BG_CHAR_ADDR(1)));
+ LZDecompressVram(gBattleTerrainTable[gBattleTerrain].entryTilemap, (void*)(BG_SCREEN_ADDR(28)));
}
else
{
- LZDecompressVram(gBattleTerrainAnimTiles_Building, (void*)(VRAM + 0x4000));
- LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void*)(VRAM + 0xE000));
+ LZDecompressVram(gBattleTerrainAnimTiles_Building, (void*)(BG_CHAR_ADDR(1)));
+ LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void*)(BG_SCREEN_ADDR(28)));
}
}
}
@@ -1187,11 +1187,11 @@ bool8 LoadChosenBattleElement(u8 caseId)
case 3:
if (gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000 | BATTLE_TYPE_EREADER_TRAINER))
{
- LZDecompressVram(gBattleTerrainTiles_Building, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTiles_Building, (void*)(BG_CHAR_ADDR(2)));
}
else if (gBattleTypeFlags & BATTLE_TYPE_GROUDON)
{
- LZDecompressVram(gBattleTerrainTiles_Cave, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTiles_Cave, (void*)(BG_CHAR_ADDR(2)));
}
else
{
@@ -1200,12 +1200,12 @@ bool8 LoadChosenBattleElement(u8 caseId)
u8 trainerClass = gTrainers[gTrainerBattleOpponent_A].trainerClass;
if (trainerClass == TRAINER_CLASS_LEADER)
{
- LZDecompressVram(gBattleTerrainTiles_Building, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTiles_Building, (void*)(BG_CHAR_ADDR(2)));
break;
}
else if (trainerClass == TRAINER_CLASS_CHAMPION)
{
- LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(BG_CHAR_ADDR(2)));
break;
}
}
@@ -1214,31 +1214,31 @@ bool8 LoadChosenBattleElement(u8 caseId)
{
default:
case MAP_BATTLE_SCENE_NORMAL:
- LZDecompressVram(gBattleTerrainTable[gBattleTerrain].tileset, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTable[gBattleTerrain].tileset, (void*)(BG_CHAR_ADDR(2)));
break;
case MAP_BATTLE_SCENE_GYM:
- LZDecompressVram(gBattleTerrainTiles_Building, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTiles_Building, (void*)(BG_CHAR_ADDR(2)));
break;
case MAP_BATTLE_SCENE_MAGMA:
- LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(BG_CHAR_ADDR(2)));
break;
case MAP_BATTLE_SCENE_AQUA:
- LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(BG_CHAR_ADDR(2)));
break;
case MAP_BATTLE_SCENE_SIDNEY:
- LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(BG_CHAR_ADDR(2)));
break;
case MAP_BATTLE_SCENE_PHOEBE:
- LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(BG_CHAR_ADDR(2)));
break;
case MAP_BATTLE_SCENE_GLACIA:
- LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(BG_CHAR_ADDR(2)));
break;
case MAP_BATTLE_SCENE_DRAKE:
- LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(BG_CHAR_ADDR(2)));
break;
case MAP_BATTLE_SCENE_FRONTIER:
- LZDecompressVram(gBattleTerrainTiles_Building, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTiles_Building, (void*)(BG_CHAR_ADDR(2)));
break;
}
}
@@ -1246,14 +1246,14 @@ bool8 LoadChosenBattleElement(u8 caseId)
case 4:
if (gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000 | BATTLE_TYPE_EREADER_TRAINER))
{
- LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(BG_SCREEN_ADDR(26)));
}
else if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON)
{
if (gGameVersion == VERSION_RUBY)
- LZDecompressVram(gBattleTerrainTilemap_Cave, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTilemap_Cave, (void*)(BG_SCREEN_ADDR(26)));
else
- LZDecompressVram(gBattleTerrainTilemap_Water, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTilemap_Water, (void*)(BG_SCREEN_ADDR(26)));
}
else
{
@@ -1262,12 +1262,12 @@ bool8 LoadChosenBattleElement(u8 caseId)
u8 trainerClass = gTrainers[gTrainerBattleOpponent_A].trainerClass;
if (trainerClass == TRAINER_CLASS_LEADER)
{
- LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(BG_SCREEN_ADDR(26)));
break;
}
else if (trainerClass == TRAINER_CLASS_CHAMPION)
{
- LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26)));
break;
}
}
@@ -1276,31 +1276,31 @@ bool8 LoadChosenBattleElement(u8 caseId)
{
default:
case MAP_BATTLE_SCENE_NORMAL:
- LZDecompressVram(gBattleTerrainTable[gBattleTerrain].tilemap, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTable[gBattleTerrain].tilemap, (void*)(BG_SCREEN_ADDR(26)));
break;
case MAP_BATTLE_SCENE_GYM:
- LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(BG_SCREEN_ADDR(26)));
break;
case MAP_BATTLE_SCENE_MAGMA:
- LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26)));
break;
case MAP_BATTLE_SCENE_AQUA:
- LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26)));
break;
case MAP_BATTLE_SCENE_SIDNEY:
- LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26)));
break;
case MAP_BATTLE_SCENE_PHOEBE:
- LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26)));
break;
case MAP_BATTLE_SCENE_GLACIA:
- LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26)));
break;
case MAP_BATTLE_SCENE_DRAKE:
- LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26)));
break;
case MAP_BATTLE_SCENE_FRONTIER:
- LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(BG_SCREEN_ADDR(26)));
break;
}
}
diff --git a/src/berry_blender.c b/src/berry_blender.c
index f2e3c7d14..c85d0e827 100644
--- a/src/berry_blender.c
+++ b/src/berry_blender.c
@@ -3104,7 +3104,7 @@ static void sub_8083170(u16 a0, u16 a1)
s32 var1, var2, var3, var4;
u16 *vram;
- vram = (u16*)(VRAM + 0x6000);
+ vram = (u16*)(BG_SCREEN_ADDR(12));
var1 = (a0 * 64) / a1;
var2 = var1 / 8;
for (var4 = 0; var4 < var2; var4++)
diff --git a/src/clear_save_data_screen.c b/src/clear_save_data_screen.c
index 72d0daf55..5ec90e10c 100644
--- a/src/clear_save_data_screen.c
+++ b/src/clear_save_data_screen.c
@@ -153,7 +153,7 @@ static bool8 SetupClearSaveDataScreen(void)
((u16 *)(VRAM + 0x20))[i] = 0x1111;
for (i = 0; i < 0x400; i++)
- ((u16 *)(VRAM + 0xF000))[i] = 0x0001;
+ ((u16 *)(BG_SCREEN_ADDR(30)))[i] = 0x0001;
ResetTasks();
ResetSpriteData();
ResetBgsAndClearDma3BusyFlags(0);
diff --git a/src/contest.c b/src/contest.c
index cf084e35e..7be4aa23b 100644
--- a/src/contest.c
+++ b/src/contest.c
@@ -318,7 +318,7 @@ void LoadContestBgAfterMoveAnim(void)
s32 i;
LZDecompressVram(gContestMiscGfx, (void *)VRAM);
- LZDecompressVram(gContestAudienceGfx, (void *)(VRAM + 0x2000));
+ LZDecompressVram(gContestAudienceGfx, (void *)(BG_SCREEN_ADDR(4)));
CopyToBgTilemapBuffer(3, gUnknown_08C16FA8, 0, 0);
CopyBgTilemapBufferToVram(3);
LoadCompressedPalette(gUnknown_08C16E90, 0, 0x200);
@@ -596,8 +596,8 @@ static u8 sub_80D7E44(u8 *a)
LZDecompressVram(gContestMiscGfx, (void *)VRAM);
break;
case 2:
- LZDecompressVram(gContestAudienceGfx, (void *)(VRAM + 0x2000));
- DmaCopyLarge32(3, (void *)(VRAM + 0x2000), shared15800, 0x2000, 0x1000);
+ LZDecompressVram(gContestAudienceGfx, (void *)(BG_SCREEN_ADDR(4)));
+ DmaCopyLarge32(3, (void *)(BG_SCREEN_ADDR(4)), shared15800, 0x2000, 0x1000);
break;
case 3:
CopyToBgTilemapBuffer(3, gUnknown_08C16FA8, 0, 0);
@@ -3328,12 +3328,12 @@ static u8 sub_80DC9EC(u8 a)
CopySpriteTiles(0,
3,
(void *)VRAM,
- (u16 *)(VRAM + 0xE000 + gUnknown_02039F26[a] * 5 * 64 + 0x26),
+ (u16 *)(BG_SCREEN_ADDR(28) + gUnknown_02039F26[a] * 5 * 64 + 0x26),
gContestResources->field_34);
CopySpriteTiles(0,
3, (void *)VRAM,
- (u16 *)(VRAM + 0xE000 + gUnknown_02039F26[a] * 5 * 64 + 0x36),
+ (u16 *)(BG_SCREEN_ADDR(28) + gUnknown_02039F26[a] * 5 * 64 + 0x36),
gContestResources->field_38);
CpuFill32(0, gContestResources->field_34 + 0x500, 0x300);
@@ -4027,11 +4027,11 @@ static void sub_80DDE30(u8 taskId)
gTasks[taskId].data[10] = 0;
if (gTasks[taskId].data[11] == 0)
{
- RequestDma3Copy(shared16800, (void *)(VRAM + 0x2000), 0x1000, 1);
+ RequestDma3Copy(shared16800, (void *)(BG_SCREEN_ADDR(4)), 0x1000, 1);
}
else
{
- RequestDma3Copy(shared15800, (void *)(VRAM + 0x2000), 0x1000, 1);
+ RequestDma3Copy(shared15800, (void *)(BG_SCREEN_ADDR(4)), 0x1000, 1);
gTasks[taskId].data[12]++;
}
@@ -4212,7 +4212,7 @@ static void sub_80DE350(void)
s32 i;
u16 bg1Cnt;
- RequestDma3Fill(0,(void *)(VRAM + 0x8000), 0x2000, 0x1);
+ RequestDma3Fill(0,(void *)(BG_CHAR_ADDR(2)), 0x2000, 0x1);
CpuFill32(0, gContestResources->field_24[1], 0x1000);
Contest_SetBgCopyFlags(1);
bg1Cnt = GetGpuReg(REG_OFFSET_BG1CNT);
diff --git a/src/contest_painting.c b/src/contest_painting.c
index 71a110aa8..2f0c97764 100644
--- a/src/contest_painting.c
+++ b/src/contest_painting.c
@@ -554,7 +554,7 @@ static void sub_8130430(u8 arg0, u8 arg1)
break;
}
-#define VRAM_PICTURE_DATA(x, y) (((u16 *)(VRAM + 0x6000))[(y) * 32 + (x)])
+#define VRAM_PICTURE_DATA(x, y) (((u16 *)(BG_SCREEN_ADDR(12)))[(y) * 32 + (x)])
// Set the background
for (y = 0; y < 20; y++)
@@ -579,7 +579,7 @@ static void sub_8130430(u8 arg0, u8 arg1)
else if (arg0 < 8)
{
RLUnCompVram(gPictureFrameTiles_5, (void *)VRAM);
- RLUnCompVram(gPictureFrameTilemap_5, (void *)(VRAM + 0x6000));
+ RLUnCompVram(gPictureFrameTilemap_5, (void *)(BG_SCREEN_ADDR(12)));
}
else
{
@@ -587,23 +587,23 @@ static void sub_8130430(u8 arg0, u8 arg1)
{
case CONTEST_CATEGORY_COOL:
RLUnCompVram(gPictureFrameTiles_0, (void *)VRAM);
- RLUnCompVram(gPictureFrameTilemap_0, (void *)(VRAM + 0x6000));
+ RLUnCompVram(gPictureFrameTilemap_0, (void *)(BG_SCREEN_ADDR(12)));
break;
case CONTEST_CATEGORY_BEAUTY:
RLUnCompVram(gPictureFrameTiles_1, (void *)VRAM);
- RLUnCompVram(gPictureFrameTilemap_1, (void *)(VRAM + 0x6000));
+ RLUnCompVram(gPictureFrameTilemap_1, (void *)(BG_SCREEN_ADDR(12)));
break;
case CONTEST_CATEGORY_CUTE:
RLUnCompVram(gPictureFrameTiles_2, (void *)VRAM);
- RLUnCompVram(gPictureFrameTilemap_2, (void *)(VRAM + 0x6000));
+ RLUnCompVram(gPictureFrameTilemap_2, (void *)(BG_SCREEN_ADDR(12)));
break;
case CONTEST_CATEGORY_SMART:
RLUnCompVram(gPictureFrameTiles_3, (void *)VRAM);
- RLUnCompVram(gPictureFrameTilemap_3, (void *)(VRAM + 0x6000));
+ RLUnCompVram(gPictureFrameTilemap_3, (void *)(BG_SCREEN_ADDR(12)));
break;
case CONTEST_CATEGORY_TOUGH:
RLUnCompVram(gPictureFrameTiles_4, (void *)VRAM);
- RLUnCompVram(gPictureFrameTilemap_4, (void *)(VRAM + 0x6000));
+ RLUnCompVram(gPictureFrameTilemap_4, (void *)(BG_SCREEN_ADDR(12)));
break;
}
}
diff --git a/src/credits.c b/src/credits.c
index c96c6b4a1..aee5332f5 100644
--- a/src/credits.c
+++ b/src/credits.c
@@ -1343,7 +1343,7 @@ static void sub_81758E4(u8 taskIdA)
FreeAllSpritePalettes();
gReservedSpritePaletteCount = 8;
LZ77UnCompVram(gBirchHelpGfx, (void *)VRAM);
- LZ77UnCompVram(gBirchGrassTilemap, (void *)(VRAM + 0x3800));
+ LZ77UnCompVram(gBirchGrassTilemap, (void *)(BG_SCREEN_ADDR(7)));
LoadPalette(gBirchBagGrassPal[0] + 1, 1, 31 * 2);
for (i = 0; i < 0x800; i++)
diff --git a/src/field_effect.c b/src/field_effect.c
index badf57b16..e7c0b39b9 100644
--- a/src/field_effect.c
+++ b/src/field_effect.c
@@ -2953,15 +2953,15 @@ u8 sub_80B8F98(void)
{
for (j = 12; j < 18; j++)
{
- ((u16*)(VRAM + 0xF800))[i * 32 + j] = 0xBFF4 + i * 6 + j + 1;
+ ((u16*)(BG_SCREEN_ADDR(31)))[i * 32 + j] = 0xBFF4 + i * 6 + j + 1;
}
}
for (k = 0; k < 90; k++)
{
for (i = 0; i < 8; i++)
{
- *(u16*)(VRAM + 0x8000 + (k + 1) * 32 + i * 4) = (gUnknown_0855B630[k * 32 + i * 4 + 1] << 8) + gUnknown_0855B630[k * 32 + i * 4];
- *(u16*)(VRAM + 0x8000 + (k + 1) * 32 + i * 4 + 2) = (gUnknown_0855B630[k * 32 + i * 4 + 3] << 8) + gUnknown_0855B630[k * 32 + i * 4 + 2];
+ *(u16*)(BG_CHAR_ADDR(2) + (k + 1) * 32 + i * 4) = (gUnknown_0855B630[k * 32 + i * 4 + 1] << 8) + gUnknown_0855B630[k * 32 + i * 4];
+ *(u16*)(BG_CHAR_ADDR(2) + (k + 1) * 32 + i * 4 + 2) = (gUnknown_0855B630[k * 32 + i * 4 + 3] << 8) + gUnknown_0855B630[k * 32 + i * 4 + 2];
}
}
return spriteId;
diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c
index 53fd87e61..651b2baca 100755
--- a/src/field_effect_helpers.c
+++ b/src/field_effect_helpers.c
@@ -1418,7 +1418,7 @@ void sub_8155F80(struct Sprite *sprite)
{
for (j = 12; j < 18; j++)
{
- ((u16*)(VRAM + 0xF800))[i * 32 + j] = 0xBFF4 + i * 6 + j + 1;
+ ((u16*)(BG_SCREEN_ADDR(31)))[i * 32 + j] = 0xBFF4 + i * 6 + j + 1;
}
}
}
@@ -1504,7 +1504,7 @@ void sub_8155F80(struct Sprite *sprite)
{
for (j = 12; j < 18; j++)
{
- ((u16*)(VRAM + 0xF800))[i * 32 + j] = 0;
+ ((u16*)(BG_SCREEN_ADDR(31)))[i * 32 + j] = 0;
}
}
SetGpuReg(REG_OFFSET_BG0VOFS, 0);
diff --git a/src/intro.c b/src/intro.c
index 4f76faf87..23457f370 100644
--- a/src/intro.c
+++ b/src/intro.c
@@ -1092,14 +1092,14 @@ static void Task_IntroLoadPart1Graphics(u8 taskId)
SetGpuReg(REG_OFFSET_BG1VOFS, 0x18);
SetGpuReg(REG_OFFSET_BG0VOFS, 0x28);
LZ77UnCompVram(gIntro1BGLeavesGfx, (void *)VRAM);
- LZ77UnCompVram(gIntro1BG0_Tilemap, (void *)(VRAM + 0x8000));
- DmaClear16(3, VRAM + 0x8800, 0x800);
- LZ77UnCompVram(gIntro1BG1_Tilemap, (void *)(VRAM + 0x9000));
- DmaClear16(3, VRAM + 0x9800, 0x800);
- LZ77UnCompVram(gIntro1BG2_Tilemap, (void *)(VRAM + 0xA000));
- DmaClear16(3, VRAM + 0xA800, 0x800);
- LZ77UnCompVram(gIntro1BG3_Tilemap, (void *)(VRAM + 0xB000));
- DmaClear16(3, VRAM + 0xB800, 0x800);
+ LZ77UnCompVram(gIntro1BG0_Tilemap, (void *)(BG_CHAR_ADDR(2)));
+ DmaClear16(3, BG_SCREEN_ADDR(17), 0x800);
+ LZ77UnCompVram(gIntro1BG1_Tilemap, (void *)(BG_SCREEN_ADDR(18)));
+ DmaClear16(3, BG_SCREEN_ADDR(19), 0x800);
+ LZ77UnCompVram(gIntro1BG2_Tilemap, (void *)(BG_SCREEN_ADDR(20)));
+ DmaClear16(3, BG_SCREEN_ADDR(21), 0x800);
+ LZ77UnCompVram(gIntro1BG3_Tilemap, (void *)(BG_SCREEN_ADDR(22)));
+ DmaClear16(3, BG_SCREEN_ADDR(23), 0x800);
LoadPalette(gIntro1BGPals, 0, sizeof(gIntro1BGPals));
SetGpuReg(REG_OFFSET_BG3CNT, BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(22) | BGCNT_16COLOR | BGCNT_TXT256x512);
SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(2) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(20) | BGCNT_16COLOR | BGCNT_TXT256x512);
@@ -1549,7 +1549,7 @@ static void Task_IntroLoadPart3Graphics(u8 taskId)
{
intro_reset_and_hide_bgs();
LZ77UnCompVram(gIntro3Pokeball_Gfx, (void *)VRAM);
- LZ77UnCompVram(gIntro3Pokeball_Tilemap, (void *)(VRAM + 0x4000));
+ LZ77UnCompVram(gIntro3Pokeball_Tilemap, (void *)(BG_CHAR_ADDR(1)));
LoadPalette(gIntro3PokeballPal, 0, 0x200);
gTasks[taskId].data[0] = 0;
gTasks[taskId].data[1] = 0;
@@ -1601,9 +1601,9 @@ static void Task_IntroLoadGroudonScene(u8 taskId)
FreeAllSpritePalettes();
gReservedSpritePaletteCount = 8;
LZDecompressVram(gIntro3GroudonGfx, (void *)VRAM);
- LZDecompressVram(gIntro3GroudonTilemap, (void *)(VRAM + 0xC000));
- LZDecompressVram(gIntro3LegendBgGfx, (void *)(VRAM + 0x4000));
- LZDecompressVram(gIntro3GroudonBgTilemap, (void *)(VRAM + 0xE000));
+ LZDecompressVram(gIntro3GroudonTilemap, (void *)(BG_CHAR_ADDR(3)));
+ LZDecompressVram(gIntro3LegendBgGfx, (void *)(BG_CHAR_ADDR(1)));
+ LZDecompressVram(gIntro3GroudonBgTilemap, (void *)(BG_SCREEN_ADDR(28)));
LoadCompressedSpriteSheetUsingHeap(&gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(ANIM_TAG_ROCKS)]);
LoadCompressedSpritePaletteUsingHeap(&gBattleAnimPaletteTable[GET_TRUE_SPRITE_INDEX(ANIM_TAG_ROCKS)]);
CpuCopy16(gIntro3BgPal, gPlttBufferUnfaded, sizeof(gIntro3BgPal));
@@ -1824,8 +1824,8 @@ static void Task_IntroLoadKyogreScene(u8 taskId)
{
ResetSpriteData();
LZDecompressVram(gIntro3KyogreGfx, (void *)VRAM);
- LZDecompressVram(gIntro3KyogreTilemap, (void *)(VRAM + 0xC000));
- LZDecompressVram(gIntro3KyogreBgTilemap, (void *)(VRAM + 0xE000));
+ LZDecompressVram(gIntro3KyogreTilemap, (void *)(BG_CHAR_ADDR(3)));
+ LZDecompressVram(gIntro3KyogreBgTilemap, (void *)(BG_SCREEN_ADDR(28)));
LoadCompressedSpriteSheet(gUnknown_085E4C88);
LoadSpritePalette(gUnknown_085E4C98);
BeginNormalPaletteFade(0xFFFFFFFE, 0, 0x10, 0, RGB_WHITEALPHA);
@@ -2087,15 +2087,15 @@ static void Task_IntroLoadClouds1(u8 taskId)
SetGpuReg(REG_OFFSET_BG2HOFS, 0);
SetGpuReg(REG_OFFSET_BG2VOFS, 0);
LZDecompressVram(gIntro3CloudsGfx, (void *)VRAM);
- LZDecompressVram(gIntro3CloudsGfx, (void *)(VRAM + 0x4000));
- LZDecompressVram(gIntro3Clouds3Tilemap, (void *)(VRAM + 0xE000));
+ LZDecompressVram(gIntro3CloudsGfx, (void *)(BG_CHAR_ADDR(1)));
+ LZDecompressVram(gIntro3Clouds3Tilemap, (void *)(BG_SCREEN_ADDR(28)));
gTasks[taskId].func = Task_IntroLoadClouds2;
}
static void Task_IntroLoadClouds2(u8 taskId)
{
- LZDecompressVram(gIntro3Clouds1Tilemap, (void *)(VRAM + 0xC000));
- LZDecompressVram(gIntro3Clouds2Tilemap, (void *)(VRAM + 0xD000));
+ LZDecompressVram(gIntro3Clouds1Tilemap, (void *)(BG_CHAR_ADDR(3)));
+ LZDecompressVram(gIntro3Clouds2Tilemap, (void *)(BG_SCREEN_ADDR(26)));
gTasks[taskId].func = Task_IntroLoadClouds3;
}
@@ -2140,9 +2140,9 @@ static void Task_IntroCloudScene(u8 taskId)
static void Task_IntroLoadRayquazaLightningScene(u8 taskId)
{
- LZDecompressVram(gIntro3RayquazaTilemap, (void *)(VRAM + 0xE000));
- LZDecompressVram(gIntro3Clouds4Tilemap, (void *)(VRAM + 0xC000));
- LZDecompressVram(gIntro3RayquazaGfx, (void *)(VRAM + 0x4000));
+ LZDecompressVram(gIntro3RayquazaTilemap, (void *)(BG_SCREEN_ADDR(28)));
+ LZDecompressVram(gIntro3Clouds4Tilemap, (void *)(BG_CHAR_ADDR(3)));
+ LZDecompressVram(gIntro3RayquazaGfx, (void *)(BG_CHAR_ADDR(1)));
LZDecompressVram(gIntro3Clouds2Gfx, (void *)VRAM);
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0
| DISPCNT_OBJ_1D_MAP
diff --git a/src/intro_credits_graphics.c b/src/intro_credits_graphics.c
index ba1f56158..b98708324 100644
--- a/src/intro_credits_graphics.c
+++ b/src/intro_credits_graphics.c
@@ -331,15 +331,15 @@ static void sub_817B458(u8);
void load_intro_part2_graphics(u8 a)
{
- LZ77UnCompVram(gUnknown_085F0740, (void *)(VRAM + 0x4000));
- LZ77UnCompVram(gUnknown_085F0BC0, (void *)(VRAM + 0x7800));
+ LZ77UnCompVram(gUnknown_085F0740, (void *)(BG_CHAR_ADDR(1)));
+ LZ77UnCompVram(gUnknown_085F0BC0, (void *)(BG_SCREEN_ADDR(15)));
LoadPalette(&gUnknown_085F06E0, 240, 32);
switch (a)
{
case 0:
default:
LZ77UnCompVram(gUnknown_085F0DBC, (void *)(VRAM));
- LZ77UnCompVram(gUnknown_085F1398, (void *)(VRAM + 0x3000));
+ LZ77UnCompVram(gUnknown_085F1398, (void *)(BG_SCREEN_ADDR(6)));
LoadPalette(&gUnknown_085F0CFC, 0, 96);
LoadCompressedSpriteSheet(gUnknown_085F5064);
LoadPalette(&gUnknown_085F1668, 256, 32);
@@ -347,7 +347,7 @@ void load_intro_part2_graphics(u8 a)
break;
case 1:
LZ77UnCompVram(gUnknown_085F1824, (void *)(VRAM));
- LZ77UnCompVram(gUnknown_085F1EAC, (void *)(VRAM + 0x3000));
+ LZ77UnCompVram(gUnknown_085F1EAC, (void *)(BG_SCREEN_ADDR(6)));
LoadPalette(&gUnknown_085F17E4, 0, 32);
LoadCompressedSpriteSheet(gUnknown_085F50EC);
LoadPalette(&gUnknown_085F21B0, 256, 32);
@@ -438,15 +438,15 @@ void sub_817B150(u8 a)
void sub_817B1C8(u8 a)
{
- LZ77UnCompVram(gUnknown_085F0740, (void *)(VRAM + 0x4000));
- LZ77UnCompVram(gUnknown_085F0BC0, (void *)(VRAM + 0x7800));
+ LZ77UnCompVram(gUnknown_085F0740, (void *)(BG_CHAR_ADDR(1)));
+ LZ77UnCompVram(gUnknown_085F0BC0, (void *)(BG_SCREEN_ADDR(15)));
switch (a)
{
case 0:
default:
LoadPalette(&gUnknown_085F06E0, 240, 32);
LZ77UnCompVram(gUnknown_085F0DBC, (void *)(VRAM));
- LZ77UnCompVram(gUnknown_085F1398, (void *)(VRAM + 0x3000));
+ LZ77UnCompVram(gUnknown_085F1398, (void *)(BG_SCREEN_ADDR(6)));
LoadPalette(&gUnknown_085F0CFC, 0, 96);
LoadCompressedSpriteSheet(gUnknown_085F5064);
LZ77UnCompVram(gUnknown_085F16A8, (void *)(VRAM + 0x10000));
@@ -456,7 +456,7 @@ void sub_817B1C8(u8 a)
case 1:
LoadPalette(&gUnknown_085F0700, 240, 32);
LZ77UnCompVram(gUnknown_085F0DBC, (void *)(VRAM));
- LZ77UnCompVram(gUnknown_085F1398, (void *)(VRAM + 0x3000));
+ LZ77UnCompVram(gUnknown_085F1398, (void *)(BG_SCREEN_ADDR(6)));
LoadPalette(&gUnknown_085F0D5C, 0, 96);
LoadCompressedSpriteSheet(gUnknown_085F5064);
LZ77UnCompVram(gUnknown_085F16A8, (void *)(VRAM + 0x10000));
@@ -467,7 +467,7 @@ void sub_817B1C8(u8 a)
case 3:
LoadPalette(&gUnknown_085F0700, 240, 32);
LZ77UnCompVram(gUnknown_085F1824, (void *)(VRAM));
- LZ77UnCompVram(gUnknown_085F1EAC, (void *)(VRAM + 0x3000));
+ LZ77UnCompVram(gUnknown_085F1EAC, (void *)(BG_SCREEN_ADDR(6)));
LoadPalette(&gUnknown_085F1804, 0, 32);
LoadCompressedSpriteSheet(gUnknown_085F50EC);
LoadPalette(&gUnknown_085F1804, 256, 32);
@@ -476,7 +476,7 @@ void sub_817B1C8(u8 a)
case 4:
LoadPalette(&gUnknown_085F0720, 240, 32);
LZ77UnCompVram(gUnknown_085F235C, (void *)(VRAM));
- LZ77UnCompVram(gUnknown_085F2568, (void *)(VRAM + 0x3000));
+ LZ77UnCompVram(gUnknown_085F2568, (void *)(BG_SCREEN_ADDR(6)));
LoadPalette(&gUnknown_085F231C, 0, 64);
LoadCompressedSpriteSheet(gUnknown_085F5180);
LoadPalette(&gUnknown_085F2548, 256, 32);
diff --git a/src/main_menu.c b/src/main_menu.c
index 4cd5c8e14..82a30aa59 100644
--- a/src/main_menu.c
+++ b/src/main_menu.c
@@ -1147,7 +1147,7 @@ static void Task_NewGameBirchSpeech_Init(u8 taskId)
SetGpuReg(REG_OFFSET_BLDY, 0);
LZ77UnCompVram(sBirchSpeechShadowGfx, (void*)VRAM);
- LZ77UnCompVram(sBirchSpeechBgMap, (void*)(VRAM + 0x3800));
+ LZ77UnCompVram(sBirchSpeechBgMap, (void*)(BG_SCREEN_ADDR(7)));
LoadPalette(sBirchSpeechBgPals, 0, 64);
LoadPalette(sBirchSpeechPlatformBlackPal, 1, 16);
ScanlineEffect_Stop();
@@ -1687,7 +1687,7 @@ static void CB2_NewGameBirchSpeech_ReturnFromNamingScreen(void)
DmaFill16(3, 0, PLTT, PLTT_SIZE);
ResetPaletteFade();
LZ77UnCompVram(sBirchSpeechShadowGfx, (u8*)VRAM);
- LZ77UnCompVram(sBirchSpeechBgMap, (u8*)(VRAM + 0x3800));
+ LZ77UnCompVram(sBirchSpeechBgMap, (u8*)(BG_SCREEN_ADDR(7)));
LoadPalette(sBirchSpeechBgPals, 0, 64);
LoadPalette(&sBirchSpeechBgGradientPal[1], 1, 16);
ResetTasks();
diff --git a/src/pokedex.c b/src/pokedex.c
index c47ada5b8..2ebc33622 100644
--- a/src/pokedex.c
+++ b/src/pokedex.c
@@ -3539,8 +3539,9 @@ void sub_80BFCF4(u16 a)
{
CopyToBgTilemapBuffer(1, gPokedexTilemap_ScreenSelectBar2, 0, 0);
}
-
#ifdef NONMATCHING
+// This doesn't match because gcc flips the naming of the r3 and r4
+// registers.
void sub_80BFD0C(u8 a, u16 unused)
{
u8 i;
@@ -3629,6 +3630,8 @@ _080BFD3E:\n\
#endif
#ifdef NONMATCHING
+// This doesn't match because gcc flips the naming of the r3 and r4
+// registers.
void sub_80BFD7C(u8 a, u16 b)
{
u8 i;
@@ -3959,6 +3962,8 @@ void sub_80C0354(u16 height, u8 left, u8 top)
}
#ifdef NONMATCHING
+// This doesn't match because gcc manages to avoid using the stack
+// to store local variables.
void sub_80C0460(u16 weight, u8 left, u8 top)
{
u8 buffer[16];
@@ -4036,7 +4041,7 @@ void sub_80C0460(u16 weight, u8 left, u8 top)
lsls r2, 24\n\
lsrs r2, 24\n\
str r2, [sp, 0x10]\n\
- ldr r5, =0x000186a0\n\
+ ldr r5, =0x000186a0 @ Note to decompiler: See UNKNOWN_OFFSET\n\
muls r0, r5\n\
ldr r1, =0x000011b8\n\
bl __divsi3\n\
@@ -4070,7 +4075,7 @@ _080C04C0:\n\
mov r8, r1\n\
movs r6, 0x1\n\
_080C04C6:\n\
- ldr r1, =0x000186a0\n\
+ ldr r1, =0x000186a0 @ Note to decompiler: See UNKNOWN_OFFSET\n\
adds r0, r7, 0\n\
bl __umodsi3\n\
adds r7, r0, 0\n\
@@ -5205,18 +5210,24 @@ void sub_80C1D70(u8 taskId)
}
#ifdef NONMATCHING
+// This doesn't match because gcc flips the naming of the r7 and r6
+// registers. It also does one of the additions backwards.
void sub_80C1D98(u8 a, u8 b, u8 c, u8 d)
{
u16 i;
u16* ptr = GetBgTilemapBuffer(3);
+ u16* temp;
for (i = 0; i < d; i++)
{
- ptr[b + i + (c << 6)] %= 0x1000;
- ptr[b + i + (c << 6)] |= a * 4096;
+ // This addition is supposed to be done in this order; however,
+ // gcc will always do it in ptr + (c << 5) order.
+ temp = (c << 5) + ptr;
+ temp[b + i] %= 0x1000;
+ temp[b + i] |= a * 4096;
- ptr[b + i + (c << 6) + 32] %= 0x1000;
- ptr[b + i + (c << 6) + 32] |= a * 4096;
+ temp[b + i + 32] %= 0x1000;
+ temp[b + i + 32] |= a * 4096;
}
}
#else
diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c
index c0aec4ddd..c1ebe91b4 100644
--- a/src/pokemon_storage_system.c
+++ b/src/pokemon_storage_system.c
@@ -3927,7 +3927,7 @@ static void SetScrollingBackground(void)
{
SetGpuReg(REG_OFFSET_BG3CNT, BGCNT_PRIORITY(3) | BGCNT_CHARBASE(3) | BGCNT_16COLOR | BGCNT_SCREENBASE(31));
DecompressAndLoadBgGfxUsingHeap(3, gPokemonStorageScrollingBGTileset, 0, 0, 0);
- LZ77UnCompVram(gPokemonStorageScrollingBGTilemap, (void *)VRAM + 0xF800);
+ LZ77UnCompVram(gPokemonStorageScrollingBGTilemap, (void *)BG_SCREEN_ADDR(31));
}
static void ScrollBackground(void)
diff --git a/src/pokenav.c b/src/pokenav.c
new file mode 100644
index 000000000..ff687e8dc
--- /dev/null
+++ b/src/pokenav.c
@@ -0,0 +1,1211 @@
+#include "global.h"
+#include "alloc.h"
+#include "task.h"
+#include "main.h"
+#include "overworld.h"
+#include "field_weather.h"
+#include "palette.h"
+#include "pokemon_storage_system.h"
+#include "sound.h"
+#include "constants/songs.h"
+#include "window.h"
+#include "gpu_regs.h"
+#include "bg.h"
+#include "menu.h"
+#include "graphics.h"
+#include "gba/macro.h"
+#include "decompress.h"
+#include "strings.h"
+#include "constants/rgb.h"
+
+#define UNKNOWN_OFFSET 100000
+
+struct UnknownStruct_0203CF40
+{
+ u32 (*field0)(void);
+ u32 field4;
+ u16 field8;
+ u16 fieldA;
+ u32 fieldC;
+ void *field10[19];
+};
+
+struct UnknownStruct_sub_81C76C4
+{
+ u32 data[523];
+};
+
+extern u32 sub_81C9430(void);
+extern void sub_81CAADC(void);
+extern u32 sub_81C99D4(void);
+extern void sub_8199D98(void);
+extern void sub_81C7D28(void);
+extern u32 sub_81C9298(void);
+extern u32 sub_81C941C(void);
+extern u32 sub_81C9924(void);
+extern u32 sub_81C99C0(void);
+extern u32 sub_81C9990(void);
+extern u32 sub_81C9940(void);
+extern u32 sub_81C9338(void);
+extern u32 sub_81C9368(void);
+extern u32 sub_81C92CC(void);
+extern u32 sub_81C9304(void);
+extern u32 sub_81CC4D4(void);
+extern u32 sub_81CC554(void);
+extern u32 sub_81CC5F4(void);
+extern u32 sub_81CC62C(void);
+extern u32 sub_81CC65C(void);
+extern u32 sub_81CC524(void);
+extern u32 sub_81CC670(void);
+extern u32 sub_81CCFD8(void);
+extern u32 sub_81CD070(void);
+extern u32 sub_81CDDD4(void);
+extern u32 sub_81CDE2C(void);
+extern u32 sub_81CDE64(void);
+extern u32 sub_81CD1C0(void);
+extern u32 sub_81CECA0(void);
+extern u32 sub_81CEF3C(void);
+extern u32 sub_81CEFDC(void);
+extern u32 sub_81CF330(void);
+extern u32 sub_81CF3A0(void);
+extern u32 sub_81CF3D0(void);
+extern u32 sub_81CEFF0(void);
+extern u32 sub_81CF3F8(void);
+extern u32 sub_81CD024(void);
+extern u32 sub_81CEF98(void);
+extern u32 sub_81CF368(void);
+extern u32 sub_81CAAE8(void);
+extern u32 sub_81CAB24(void);
+extern u32 sub_81CB260(void);
+extern u32 sub_81CB29C(void);
+extern u32 sub_81CB2CC(void);
+extern u32 sub_81CAB38(void);
+extern u32 sub_81CB2E0(void);
+extern u32 sub_81CF9BC(void);
+extern u32 sub_81CFA34(void);
+extern u32 sub_81CFDD0(void);
+extern u32 sub_81CFE40(void);
+extern u32 sub_81CFE70(void);
+extern u32 sub_81CFA48(void);
+extern u32 sub_81CFE98(void);
+extern u32 sub_81D0450(void);
+extern u32 sub_81D04A0(void);
+extern u32 sub_81D0978(void);
+extern u32 sub_81D09B0(void);
+extern u32 sub_81D09E0(void);
+extern u32 sub_81D04B8(void);
+extern u32 sub_81D09F4(void);
+extern u32 sub_81CFA04(void);
+extern u32 sub_81CFE08(void);
+
+u32 sub_81C791C(s32 a0);
+bool32 sub_81C756C(u32 a0);
+bool32 sub_81C76C4(void);
+u32 AnyMonHasRibbon(void);
+u32 sub_81C75E0(void);
+u32 sub_81C75D4(void);
+u32 sub_81C76FC(void);
+u32 sub_81C786C(void);
+u32 sub_81C7764(s32 a0);
+u32 atk47_cmd47(s32 a0);
+bool32 sub_81C7738(void);
+void CopyPaletteIntoBufferUnfaded(const u16 *palette, u32 a1, u32 a2);
+void sub_81C7834(u32 (*a0)(void), u32(*a1)(void));
+void sub_81C7360(struct UnknownStruct_0203CF40 *a0);
+void sub_81C7650(u32 index);
+void sub_81C7850(u32 a0);
+void sub_81C7BF8(u32 a0);
+void sub_81C71E4(u8 a0);
+void sub_81C7170(u8 a0);
+void sub_81C742C(u8 taskId);
+void sub_81C7710(void);
+void sub_81C75F4(void);
+void sub_81C7334(void);
+void sub_81C7418(void);
+void sub_81C7400(void);
+void sub_81C7C28(void);
+void sub_81C72BC(void);
+void sub_81C7B74(void);
+void sub_81C7C94(void);
+
+
+u32 (*const gUnknown_0861F3EC[15][7])(void) =
+{
+ {
+ sub_81C9298,
+ sub_81C941C,
+ sub_81C9924,
+ sub_81C9990,
+ sub_81C99C0,
+ sub_81C9430,
+ sub_81C99D4,
+ },
+ {
+ sub_81C9298,
+ sub_81C941C,
+ sub_81C9940,
+ sub_81C9990,
+ sub_81C99C0,
+ sub_81C9430,
+ sub_81C99D4,
+ },
+ {
+ sub_81C9338,
+ sub_81C941C,
+ sub_81C9940,
+ sub_81C9990,
+ sub_81C99C0,
+ sub_81C9430,
+ sub_81C99D4,
+ },
+ {
+ sub_81C9368,
+ sub_81C941C,
+ sub_81C9940,
+ sub_81C9990,
+ sub_81C99C0,
+ sub_81C9430,
+ sub_81C99D4,
+ },
+ {
+ sub_81C92CC,
+ sub_81C941C,
+ sub_81C9940,
+ sub_81C9990,
+ sub_81C99C0,
+ sub_81C9430,
+ sub_81C99D4,
+ },
+ {
+ sub_81C9304,
+ sub_81C941C,
+ sub_81C9940,
+ sub_81C9990,
+ sub_81C99C0,
+ sub_81C9430,
+ sub_81C99D4,
+ },
+ {
+ sub_81CC4D4,
+ sub_81CC554,
+ sub_81CC5F4,
+ sub_81CC62C,
+ sub_81CC65C,
+ sub_81CC524,
+ sub_81CC670,
+ },
+ {
+ sub_81CCFD8,
+ sub_81CD070,
+ sub_81CDDD4,
+ sub_81CDE2C,
+ sub_81CDE64,
+ sub_81CD1C0,
+ sub_81CECA0,
+ },
+ {
+ sub_81CEF3C,
+ sub_81CEFDC,
+ sub_81CF330,
+ sub_81CF3A0,
+ sub_81CF3D0,
+ sub_81CEFF0,
+ sub_81CF3F8,
+ },
+ {
+ sub_81CD024,
+ sub_81CD070,
+ sub_81CDDD4,
+ sub_81CDE2C,
+ sub_81CDE64,
+ sub_81CD1C0,
+ sub_81CECA0,
+ },
+ {
+ sub_81CEF98,
+ sub_81CEFDC,
+ sub_81CF368,
+ sub_81CF3A0,
+ sub_81CF3D0,
+ sub_81CEFF0,
+ sub_81CF3F8,
+ },
+ {
+ sub_81CAAE8,
+ sub_81CAB24,
+ sub_81CB260,
+ sub_81CB29C,
+ sub_81CB2CC,
+ sub_81CAB38,
+ sub_81CB2E0,
+ },
+ {
+ sub_81CF9BC,
+ sub_81CFA34,
+ sub_81CFDD0,
+ sub_81CFE40,
+ sub_81CFE70,
+ sub_81CFA48,
+ sub_81CFE98,
+ },
+ {
+ sub_81D0450,
+ sub_81D04A0,
+ sub_81D0978,
+ sub_81D09B0,
+ sub_81D09E0,
+ sub_81D04B8,
+ sub_81D09F4,
+ },
+ {
+ sub_81CFA04,
+ sub_81CFA34,
+ sub_81CFE08,
+ sub_81CFE40,
+ sub_81CFE70,
+ sub_81CFA48,
+ sub_81CFE98,
+ },
+};
+
+const u16 gUnknown_0861F590[] = INCBIN_U16("graphics/pokenav/icon2.gbapal");
+const u32 gUnknown_0861F5B0[] = INCBIN_U32("graphics/pokenav/icon2.4bpp.lz");
+const u32 gUnknown_0861F994[] = INCBIN_U32("graphics/pokenav/icon2_unused.4bpp.lz");
+
+const struct BgTemplate gUnknown_0861FA04 =
+{
+ .bg = 0,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 5,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0,
+};
+
+const struct WindowTemplate gUnknown_0861FA08[2] =
+{
+ {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 22,
+ .width = 16,
+ .height = 2,
+ .paletteNum = 0,
+ .baseBlock = 0x36,
+ },
+ {
+ .bg = 0xFF,
+ .tilemapLeft = 0,
+ .tilemapTop = 0,
+ .width = 0,
+ .height = 0,
+ .paletteNum = 0,
+ .baseBlock = 0,
+ },
+};
+
+const u8 *const (MenuButtonReminders[12]) =
+{
+ gText_Navgear_ClearButtonList,
+ gText_NavgearMap_ZoomedOutButtons,
+ gText_NavgearMap_ZoomedInButtons,
+ gText_NavgearCondition_MonListButtons,
+ gText_NavgearCondition_MonStatusButtons,
+ gText_NavgearCondition_MarkingButtons,
+ gText_NavgearMatchCall_TrainerListButtons,
+ gText_NavgearMatchCall_CallMenuButtons,
+ gText_NavgearMatchCall_CheckTrainerButtons,
+ gText_NavgearRibbons_MonListButtons,
+ gText_NavgearRibbons_RibbonListButtons,
+ gText_NavgearRibbons_RibbonCheckButtons,
+};
+
+const u8 gMenuButtonReminderColor[4] =
+{
+ 4, 1, 2, 0
+};
+
+const struct CompressedSpriteSheet gUnknown_0861FA4C[] =
+{
+ {
+ .data = gUnknown_0861F5B0,
+ .size = 0x1000,
+ .tag = 0,
+ }
+};
+
+const struct SpritePalette gUnknown_0861FA54[2] =
+{
+ {
+ .data = gUnknown_0861F590,
+ .tag = 0,
+ },
+ {
+ .data = NULL,
+ .tag = 0,
+ }
+};
+
+const struct CompressedSpriteSheet gUnknown_0861FA64 =
+{
+ .data = gPokenavLeftHeaderHoennMap_Gfx,
+ .size = 0xC00,
+ .tag = 2
+};
+
+extern struct UnknownStruct_0203CF40 *gUnknown_0203CF40;
+extern u8 gUnknown_0203CF3C;
+extern const struct SpriteTemplate gUnknown_0861FB04;
+
+u32 sub_81C7078(u32 (*a0)(s32), u32 a1)
+{
+ u16 taskId;
+
+ if (!is_c1_link_related_active())
+ taskId = CreateTask(sub_81C7170, a1);
+ else
+ taskId = CreateTask(sub_81C71E4, a1);
+
+ SetWordTaskArg(taskId, 1, (u32)a0);
+
+ gTasks[taskId].data[3] = gUnknown_0203CF3C;
+ return ((gUnknown_0203CF3C++) << 16) | taskId;
+}
+
+bool32 sub_81C70D8(u32 a0)
+{
+ u32 v1 = a0 & 0xFFFF;
+ u32 v2 = a0 >> 16;
+ if (gTasks[v1].isActive
+ && (gTasks[v1].func == sub_81C7170 || gTasks[v1].func == sub_81C71E4)
+ && gTasks[v1].data[3] == v2)
+ {
+
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+bool32 sub_81C7124(u32 a0)
+{
+ s32 i;
+ for (i = 0; i < 16; i++)
+ {
+ if (gTasks[i].isActive
+ && (gTasks[i].func == sub_81C7170 || gTasks[i].func == sub_81C71E4))
+ {
+ u32 arg = GetWordTaskArg((u8)i, 1);
+ if (arg == a0)
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+void sub_81C7170(u8 taskId)
+{
+ s16 *dataPtr;
+ u32 (*func)(u32);
+ bool32 exitLoop;
+
+ func = (u32 (*)(u32))GetWordTaskArg(taskId, 1);
+ dataPtr = gTasks[taskId].data;
+ exitLoop = FALSE;
+ while (!exitLoop)
+ {
+ u32 v1 =((u32 (*)(u32))func)(dataPtr[0]);
+ switch (v1)
+ {
+ case 1:
+ dataPtr[0] = dataPtr[0] + 1;
+ break;
+ case 0:
+ dataPtr[0]++;
+ return;
+ case 4:
+ DestroyTask(taskId);
+ return;
+ default:
+ dataPtr[0] = v1 - 5;
+ break;
+ case 3:
+ break;
+ case 2:
+ return;
+ }
+ }
+}
+
+void sub_81C71E4(u8 taskId)
+{
+ u32 (*func)(u32);
+ s16 *data;
+ u32 v1;
+
+ if (sub_8087598())
+ return;
+ func = (u32 (*)(u32))GetWordTaskArg(taskId, 1);
+ data = gTasks[taskId].data;
+ v1 = func(data[0]);
+ switch (v1)
+ {
+ case 0:
+ case 1:
+ data[0]++;
+ break;
+ case 4:
+ DestroyTask(taskId);
+ break;
+ default:
+ data[0] = v1 - 5;
+ break;
+ case 2:
+ case 3:
+ break;
+ }
+}
+
+void CB2_PokeNav(void)
+{
+ gUnknown_0203CF40 = Alloc(sizeof(struct UnknownStruct_0203CF40));
+ if (gUnknown_0203CF40 == NULL)
+ {
+ SetMainCallback2(CB2_ReturnToFieldWithOpenMenu);
+ }
+ else
+ {
+ sub_81C7360(gUnknown_0203CF40);
+ ResetTasks();
+ SetVBlankCallback(NULL);
+ CreateTask(sub_81C742C, 0);
+ SetMainCallback2(sub_81C7400);
+ SetVBlankCallback(sub_81C7418);
+ }
+}
+
+void sub_81C72A4()
+{
+ SetMainCallback2(sub_81C72BC);
+ FadeScreen(1, 0);
+}
+
+void sub_81C72BC()
+{
+ UpdatePaletteFade();
+ if (!gPaletteFade.active)
+ {
+ gUnknown_0203CF40 = Alloc(sizeof(struct UnknownStruct_0203CF40));
+ if (gUnknown_0203CF40 == NULL)
+ {
+ SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
+ }
+ else
+ {
+ sub_81C7360(gUnknown_0203CF40);
+ gUnknown_0203CF40->field8 = 1;
+ ResetTasks();
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ SetVBlankCallback(NULL);
+ CreateTask(sub_81C742C, 0);
+ SetMainCallback2(sub_81C7400);
+ SetVBlankCallback(sub_81C7418);
+ }
+ }
+}
+
+void sub_81C7334()
+{
+ s32 i;
+ for (i = 0; i < 19; i++)
+ {
+ sub_81C7650(i);
+ }
+
+ Free(gUnknown_0203CF40);
+ gUnknown_0203CF40 = NULL;
+ InitKeys();
+}
+
+// Clears UnknownStruct_0203CF40
+void sub_81C7360(struct UnknownStruct_0203CF40 *a0)
+{
+ s32 i;
+ void **arrayPtr;
+ void *fill;
+
+ fill = NULL;
+ i = 18;
+ arrayPtr = &(a0->field10[18]);
+ for (i; i >= 0; i--)
+ {
+ *arrayPtr = fill;
+ arrayPtr -= 1;
+ }
+ a0->field8 = 0;
+ a0->field4 = 0;
+ a0->fieldC = AnyMonHasRibbon();
+ a0->field0 = NULL;
+}
+
+bool32 AnyMonHasRibbon()
+{
+ s32 i;
+ s32 j;
+
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SANITY_HAS_SPECIES)
+ && !GetMonData(&gPlayerParty[i], MON_DATA_SANITY_IS_EGG)
+ && GetMonData(&gPlayerParty[i], MON_DATA_RIBBON_COUNT) != 0)
+ {
+ return TRUE;
+ }
+ }
+
+ for (j = 0; j < TOTAL_BOXES_COUNT; j++)
+ {
+ for (i = 0; i < IN_BOX_COUNT; i++)
+ {
+ if (CheckBoxMonSanityAt(j, i)
+ && GetBoxMonDataAt(j, i, MON_DATA_RIBBON_COUNT) != 0)
+ {
+ return TRUE;
+ }
+ }
+ }
+
+ return FALSE;
+}
+
+void sub_81C7400()
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+void sub_81C7418()
+{
+ TransferPlttBuffer();
+ LoadOam();
+ ProcessSpriteCopyRequests();
+}
+
+void sub_81C742C(u8 taskId)
+{
+ s16 *dataPtr;
+ u32 v1;
+ bool32 v2;
+
+ dataPtr = gTasks[taskId].data;
+
+ switch (dataPtr[0])
+ {
+ case 0:
+ sub_81C76C4();
+ dataPtr[0] = 1;
+ break;
+ case 1:
+ if (sub_81C76FC())
+ break;
+ sub_81C756C(UNKNOWN_OFFSET);
+ dataPtr[0] = 4;
+ break;
+ case 2:
+ if (sub_81C786C())
+ break;
+ dataPtr[0] = 3;
+ case 3:
+ v1 = sub_81C75E0();
+ if (v1 == -1)
+ {
+ sub_81C7710();
+ dataPtr[0] = 5;
+ }
+ else if (v1 >= UNKNOWN_OFFSET)
+ {
+ gUnknown_0861F3EC[gUnknown_0203CF40->field4][6]();
+ gUnknown_0861F3EC[gUnknown_0203CF40->field4][5]();
+ if (sub_81C756C(v1))
+ {
+ dataPtr[0] = 4;
+ }
+ else
+ {
+ sub_81C7710();
+ dataPtr[0] = 5;
+ }
+ }
+ else if (v1 != 0)
+ {
+ sub_81C7850(v1);
+ if (sub_81C786C())
+ dataPtr[0] = 2;
+ }
+ break;
+ case 4:
+ if (!sub_81C75D4())
+ dataPtr[0] = 3;
+ break;
+ case 5:
+ if (!sub_81C7738())
+ {
+ v2 = gUnknown_0203CF40->field8 != 0;
+ sub_81C9430();
+ sub_81C7334();
+ if (v2)
+ SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
+ else
+ SetMainCallback2(CB2_ReturnToFieldWithOpenMenu);
+ }
+ break;
+ }
+}
+
+bool32 sub_81C756C(u32 a0)
+{
+ u32 index;
+
+ index = a0 - UNKNOWN_OFFSET;
+ sub_81C75F4();
+ if (!gUnknown_0861F3EC[index][0]())
+ return FALSE;
+ if (!gUnknown_0861F3EC[index][2]())
+ return FALSE;
+ sub_81C7834(gUnknown_0861F3EC[index][3], gUnknown_0861F3EC[index][4]);
+ gUnknown_0203CF40->field0 = gUnknown_0861F3EC[index][1];
+ gUnknown_0203CF40->field4 = index;
+ return TRUE;
+}
+
+u32 sub_81C75D4(void)
+{
+ return sub_81C786C();
+}
+
+u32 sub_81C75E0(void)
+{
+ return gUnknown_0203CF40->field0();
+}
+
+void sub_81C75F4(void)
+{
+ InitKeys();
+}
+
+void IndirectSetVBlankCallback(IntrCallback callback)
+{
+ SetVBlankCallback(callback);
+}
+
+void sub_81C760C(void)
+{
+ SetVBlankCallback(sub_81C7418);
+}
+
+void *sub_81C761C(u32 index, u32 size)
+{
+ return gUnknown_0203CF40->field10[index] = (void*)Alloc(size);
+}
+
+void *sub_81C763C(u32 index)
+{
+ return gUnknown_0203CF40->field10[index];
+}
+
+void sub_81C7650(u32 index)
+{
+ if (gUnknown_0203CF40->field10[index] != NULL)
+ FREE_AND_SET_NULL(gUnknown_0203CF40->field10[index]);
+}
+
+u16 sub_81C767C(void)
+{
+ return gUnknown_0203CF40->field8;
+}
+
+void sub_81C7688(u16 a0)
+{
+ gUnknown_0203CF40->field8 = a0;
+}
+
+void sub_81C7694(u32 a0)
+{
+ u32 value;
+ value = a0;
+ if (a0 > 4)
+ value = 0;
+ gUnknown_0203CF40->fieldA = value;
+}
+
+u16 sub_81C76AC(void)
+{
+ return gUnknown_0203CF40->fieldA;
+}
+
+u32 sub_81C76B8(void)
+{
+ return gUnknown_0203CF40->fieldC;
+}
+
+bool32 sub_81C76C4(void)
+{
+ struct UnknownStruct_sub_81C76C4 *v1;
+
+ v1 = (struct UnknownStruct_sub_81C76C4*)sub_81C761C(0, sizeof(struct UnknownStruct_sub_81C76C4));
+ if (v1 == NULL)
+ {
+ return FALSE;
+ }
+ else
+ {
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ v1->data[3] = sub_81C7078(sub_81C7764, 1);
+ return TRUE;
+ }
+}
+
+u32 sub_81C76FC(void)
+{
+ u32 *v1;
+ v1 = sub_81C763C(0);
+ return sub_81C70D8(v1[3]);
+}
+
+void sub_81C7710(void)
+{
+ PlaySE(SE_PN_OFF);
+ sub_81CAADC();
+ BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 16, RGB_BLACK);
+}
+
+bool32 sub_81C7738(void)
+{
+ if (!gPaletteFade.active)
+ {
+ sub_81C99D4();
+ sub_81C7C94();
+ FreeAllWindowBuffers();
+ return FALSE;
+ } else
+ {
+ return TRUE;
+ }
+}
+
+u32 sub_81C7764(s32 a0)
+{
+ u32 *v1;
+
+ switch (a0)
+ {
+ case 0:
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
+ FreeAllWindowBuffers();
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, &gUnknown_0861FA04, 1);
+ sub_8199D98();
+ reset_temp_tile_data_buffers();
+ return 1;
+ case 1:
+ v1 = sub_81C763C(0);
+ decompress_and_copy_tile_data_to_vram(0, &gPokenavHeader_Gfx, 0, 0, 0);
+ SetBgTilemapBuffer(0, &v1[11]);
+ CopyToBgTilemapBuffer(0, &gPokenavHeader_Tilemap, 0, 0);
+ CopyPaletteIntoBufferUnfaded(gPokenavHeader_Pal, 0, 0x20);
+ CopyBgTilemapBufferToVram(0);
+ return 0;
+ case 2:
+ if (free_temp_tile_data_buffers_if_possible())
+ return 2;
+
+ sub_81C7B74();
+ return 0;
+ case 3:
+ if (IsDma3ManagerBusyWithBgCopy())
+ return 2;
+
+ sub_81C7C28();
+ sub_81C7D28();
+ ShowBg(0);
+ return 4;
+ default:
+ return 4;
+ }
+}
+
+void sub_81C7834(u32 (*a0)(void), u32(*a1)(void))
+{
+ u32 (**v1)(void);
+
+ v1 = sub_81C763C(0);
+ v1[0] = a0;
+ v1[1] = a1;
+ v1[2] = NULL;
+}
+
+void sub_81C7850(u32 a0)
+{
+ void (**v1)(u32);
+
+ v1 = sub_81C763C(0);
+ v1[2] = NULL;
+ v1[0](a0);
+}
+
+u32 sub_81C786C(void)
+{
+ u32 (**v1)(void);
+
+ v1 = sub_81C763C(0);
+ return v1[1]();
+}
+
+void sub_81C7880(void)
+{
+ u32 *v1;
+
+ v1 = sub_81C763C(0);
+ v1[3] = sub_81C7078(atk47_cmd47, 4);
+}
+
+void sub_81C78A0(void)
+{
+ u32 *v1;
+
+ v1 = sub_81C763C(0);
+ v1[3] = sub_81C7078(sub_81C791C, 4);
+}
+
+bool32 sub_81C78C0(void)
+{
+ u32 *v1;
+
+ v1 = sub_81C763C(0);
+ return sub_81C70D8(v1[3]);
+}
+
+u32 atk47_cmd47(s32 a0)
+{
+ switch (a0)
+ {
+ default:
+ return 4;
+ case 1:
+ return 0;
+ case 0:
+ return 0;
+ case 2:
+ if ((u32)ChangeBgY(0, 384, 1) >= 0x2000)
+ {
+ ChangeBgY(0, 0x2000, 0);
+ return 4;
+ }
+
+ return 2;
+ }
+}
+
+u32 sub_81C791C(s32 a0)
+{
+ if (ChangeBgY(0, 384, 2) <= 0)
+ {
+ ChangeBgY(0, 0, 0);
+ return 4;
+ }
+ return 2;
+}
+
+void CopyPaletteIntoBufferUnfaded(const u16 *palette, u32 bufferOffset, u32 size) {
+ CpuCopy16(palette, gPlttBufferUnfaded + bufferOffset, size);
+}
+
+void sub_81C795C(const struct SpritePalette *palettes)
+{
+ const struct SpritePalette *current;
+ u32 index;
+
+ for (current = palettes; current->data != NULL; current++)
+ {
+ index = AllocSpritePalette(current->tag);
+ if (index == 0xFF)
+ {
+ break;
+ }
+ else
+ {
+ index = (index * 16) + 0x100;
+ CopyPaletteIntoBufferUnfaded(current->data, index, 0x20);
+ }
+ }
+}
+
+void sub_81C7990(u32 a0, u16 a1)
+{
+ CpuFill16(a1, gPlttBufferFaded + 0x100 + (a0 * 16), 16 * sizeof(u16));
+}
+
+__attribute__((naked))
+void sub_81C79BC(u16 *a0, u16 *a1, u32 a2, u32 a3, u32 unused, u32 a5, u32 a6)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0xC\n\
+ str r0, [sp]\n\
+ str r1, [sp, 0x4]\n\
+ mov r10, r2\n\
+ str r3, [sp, 0x8]\n\
+ ldr r0, [sp, 0x2C]\n\
+ cmp r0, 0\n\
+ bne _081C79E4\n\
+ ldr r2, =0x001fffff\n\
+ mov r1, r10\n\
+ ands r2, r1\n\
+ ldr r0, [sp]\n\
+ b _081C79F4\n\
+ .pool\n\
+_081C79E4:\n\
+ ldr r2, [sp, 0x2C]\n\
+ ldr r0, [sp, 0x8]\n\
+ cmp r2, r0\n\
+ blt _081C7A00\n\
+ ldr r2, =0x001fffff\n\
+ mov r1, r10\n\
+ ands r2, r1\n\
+ ldr r0, [sp, 0x4]\n\
+_081C79F4:\n\
+ ldr r1, [sp, 0x30]\n\
+ bl CpuSet\n\
+ b _081C7AAE\n\
+ .pool\n\
+_081C7A00:\n\
+ movs r2, 0x1\n\
+ negs r2, r2\n\
+ add r10, r2\n\
+ b _081C7AA6\n\
+_081C7A08:\n\
+ ldr r1, [sp]\n\
+ ldrh r0, [r1]\n\
+ movs r2, 0x1F\n\
+ mov r9, r2\n\
+ mov r1, r9\n\
+ ands r1, r0\n\
+ mov r9, r1\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 21\n\
+ movs r1, 0x1F\n\
+ ands r1, r2\n\
+ mov r8, r1\n\
+ lsrs r7, r0, 26\n\
+ movs r2, 0x1F\n\
+ ands r7, r2\n\
+ ldr r0, [sp, 0x4]\n\
+ ldrh r4, [r0]\n\
+ movs r0, 0x1F\n\
+ ands r0, r4\n\
+ mov r1, r9\n\
+ subs r0, r1\n\
+ lsls r0, 8\n\
+ ldr r1, [sp, 0x8]\n\
+ bl __divsi3\n\
+ ldr r2, [sp, 0x2C]\n\
+ adds r6, r0, 0\n\
+ muls r6, r2\n\
+ asrs r6, 8\n\
+ lsls r4, 16\n\
+ lsrs r0, r4, 21\n\
+ movs r1, 0x1F\n\
+ ands r0, r1\n\
+ mov r2, r8\n\
+ subs r0, r2\n\
+ lsls r0, 8\n\
+ ldr r1, [sp, 0x8]\n\
+ bl __divsi3\n\
+ ldr r1, [sp, 0x2C]\n\
+ adds r5, r0, 0\n\
+ muls r5, r1\n\
+ asrs r5, 8\n\
+ lsrs r4, 26\n\
+ movs r2, 0x1F\n\
+ ands r4, r2\n\
+ subs r4, r7\n\
+ lsls r4, 8\n\
+ adds r0, r4, 0\n\
+ ldr r1, [sp, 0x8]\n\
+ bl __divsi3\n\
+ ldr r1, [sp, 0x2C]\n\
+ muls r0, r1\n\
+ asrs r0, 8\n\
+ add r6, r9\n\
+ movs r2, 0x1F\n\
+ ands r6, r2\n\
+ add r5, r8\n\
+ ands r5, r2\n\
+ adds r0, r7, r0\n\
+ ands r0, r2\n\
+ lsls r0, 10\n\
+ lsls r5, 5\n\
+ orrs r0, r5\n\
+ orrs r0, r6\n\
+ ldr r1, [sp, 0x30]\n\
+ strh r0, [r1]\n\
+ ldr r2, [sp]\n\
+ adds r2, 0x2\n\
+ str r2, [sp]\n\
+ ldr r0, [sp, 0x4]\n\
+ adds r0, 0x2\n\
+ str r0, [sp, 0x4]\n\
+ adds r1, 0x2\n\
+ str r1, [sp, 0x30]\n\
+ movs r1, 0x1\n\
+ negs r1, r1\n\
+ add r10, r1\n\
+_081C7AA6:\n\
+ movs r0, 0x1\n\
+ negs r0, r0\n\
+ cmp r10, r0\n\
+ bne _081C7A08\n\
+_081C7AAE:\n\
+ add sp, 0xC\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\
+ .syntax divided");
+}
+
+void sub_81C7AC0(s32 a0)
+{
+ u32 *v1;
+ v1 = sub_81C763C(0);
+ switch (a0)
+ {
+ case 0:
+ BeginNormalPaletteFade(v1[5], -2, 0, 16, RGB_BLACK);
+ break;
+ case 1:
+ BeginNormalPaletteFade(v1[5], -2, 16, 0, RGB_BLACK);
+ break;
+ case 2:
+ BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, RGB_BLACK);
+ break;
+ case 3:
+ BeginNormalPaletteFade(0xFFFFFFFF, -2, 16, 0, RGB_BLACK);
+ break;
+ }
+}
+
+bool32 IsPaletteFadeActive(void)
+{
+ return gPaletteFade.active;
+}
+
+void sub_81C7B40(void)
+{
+ BlendPalettes(0xFFFEFFFE, 16, RGB_BLACK);
+}
+
+void sub_81C7B54(const struct BgTemplate *a0, s32 a1)
+{
+ s32 i;
+ if (a1 <= 0)
+ return;
+ for (i = a1; i != 0; i--)
+ {
+ InitBgFromTemplate(a0++);
+ }
+}
+
+void sub_81C7B74(void)
+{
+ u32 *v1;
+
+ v1 = sub_81C763C(0);
+ InitWindows(&gUnknown_0861FA08[0]);
+ v1[4] = 0;
+ sub_81C7BF8(0);
+ PutWindowTilemap(v1[4]);
+ CopyWindowToVram(v1[4], 3); // TODO: Use a defined constant here.
+}
+
+void sub_81C7BA4(u32 a0)
+{
+ u32 *v1;
+
+ v1 = sub_81C763C(0);
+ sub_81C7BF8(v1[4]);
+ AddTextPrinterParameterized3(v1[4], 1, 0, 1, gMenuButtonReminderColor, 0, MenuButtonReminders[a0]);
+}
+
+bool8 sub_81C7BE8(void)
+{
+ return IsDma3ManagerBusyWithBgCopy();
+}
+
+void sub_81C7BF8(u32 a0)
+{
+ FillWindowPixelBuffer(a0, 0x44);
+ FillWindowPixelRect(a0, 0x55, 0, 0, 0x80, 1);
+}
+
+void sub_81C7C28(void)
+{
+ u32 *v1;
+ u32 i;
+ u8 v2;
+ u32 v3;
+ u32 v4;
+ u8 spriteId;
+
+ v1 = sub_81C763C(0);
+ for (i = 0; i < ARRAY_COUNT(gUnknown_0861FA4C); i++)
+ {
+ LoadCompressedSpriteSheet(&gUnknown_0861FA4C[i]);
+ }
+
+ sub_81C795C(gUnknown_0861FA54);
+ v2 = IndexOfSpritePaletteTag(0);
+ v1[5] = ~1 & ~(0x10000 << v2);
+ spriteId = CreateSprite(&gUnknown_0861FB04, 220, 12, 0);
+ v1[6] = (u32)(&gSprites[spriteId]);
+}
+
+void sub_81C7C94(void)
+{
+ void **v1;
+ v1 = sub_81C763C(0);
+ DestroySprite(v1[6]);
+ FreeSpriteTilesByTag(0);
+ FreeSpritePaletteByTag(0);
+}
+
+void sub_81C7CB4(u16 *a0)
+{
+ u32 v1;
+ v1 = GetBgY(0);
+ a0[19] = (v1 >> 8) * -1;
+}
+
+struct Sprite *sub_81C7CCC(void)
+{
+ struct Sprite **v1;
+ struct Sprite *v2;
+ v1 = sub_81C763C(0);
+ v2 = v1[6];
+ v2->callback = SpriteCallbackDummy;
+ return v2;
+}
diff --git a/src/save_failed_screen.c b/src/save_failed_screen.c
index c668c1db0..2478ebbec 100644
--- a/src/save_failed_screen.c
+++ b/src/save_failed_screen.c
@@ -208,8 +208,8 @@ static void CB2_SaveFailedScreen(void)
DmaFill32(3, 0, OAM, OAM_SIZE);
DmaFill16(3, 0, PLTT, PLTT_SIZE);
LZ77UnCompVram(gBirchHelpGfx, (void *)VRAM);
- LZ77UnCompVram(gBirchBagTilemap, (void *)(VRAM + 0x7000));
- LZ77UnCompVram(gBirchGrassTilemap, (void *)(VRAM + 0x7800));
+ LZ77UnCompVram(gBirchBagTilemap, (void *)(BG_SCREEN_ADDR(14)));
+ LZ77UnCompVram(gBirchGrassTilemap, (void *)(BG_SCREEN_ADDR(15)));
LZ77UnCompVram(sSaveFailedClockGfx, (void *)(VRAM + 0x10020));
ResetBgsAndClearDma3BusyFlags(0);
InitBgsFromTemplates(0, gUnknown_085EFD88, 3);
diff --git a/src/starter_choose.c b/src/starter_choose.c
index 2d4a1b1e1..5a8de3b4a 100644
--- a/src/starter_choose.c
+++ b/src/starter_choose.c
@@ -393,8 +393,8 @@ void CB2_ChooseStarter(void)
DmaFill16(3, 0, PLTT, PLTT_SIZE);
LZ77UnCompVram(gBirchHelpGfx, (void *)VRAM);
- LZ77UnCompVram(gBirchBagTilemap, (void *)(VRAM + 0x3000));
- LZ77UnCompVram(gBirchGrassTilemap, (void *)(VRAM + 0x3800));
+ LZ77UnCompVram(gBirchBagTilemap, (void *)(BG_SCREEN_ADDR(6)));
+ LZ77UnCompVram(gBirchGrassTilemap, (void *)(BG_SCREEN_ADDR(7)));
ResetBgsAndClearDma3BusyFlags(0);
InitBgsFromTemplates(0, gUnknown_085B1E00, ARRAY_COUNT(gUnknown_085B1E00));
diff --git a/src/strings.c b/src/strings.c
index b0eb048ba..f81a19083 100644
--- a/src/strings.c
+++ b/src/strings.c
@@ -965,18 +965,18 @@ const u8 gUnknown_085EBE8E[] = _("Can't call opponent here.");
const u8 gUnknown_085EBEA8[] = _("STRATEGY");
const u8 gUnknown_085EBEB1[] = _("TRAINER'S POKéMON");
const u8 gUnknown_085EBEC3[] = _("SELF-INTRODUCTION");
-const u8 gUnknown_085EBED5[] = _("{CLEAR 0x80}");
-const u8 gUnknown_085EBED9[] = _("{A_BUTTON}ZOOM {B_BUTTON}CANCEL");
-const u8 gUnknown_085EBEE9[] = _("{A_BUTTON}FULL {B_BUTTON}CANCEL");
-const u8 gUnknown_085EBEF9[] = _("{A_BUTTON}CONDITION {B_BUTTON}CANCEL");
-const u8 gUnknown_085EBF0E[] = _("{A_BUTTON}MARKINGS {B_BUTTON}CANCEL");
-const u8 gUnknown_085EBF22[] = _("{A_BUTTON}SELECT MARK {B_BUTTON}CANCEL");
-const u8 gUnknown_085EBF39[] = _("{A_BUTTON}MENU {B_BUTTON}CANCEL");
-const u8 gUnknown_085EBF49[] = _("{A_BUTTON}OK {B_BUTTON}CANCEL");
-const u8 gUnknown_085EBF57[] = _("{B_BUTTON}CANCEL");
-const u8 gUnknown_085EBF60[] = _("{A_BUTTON}RIBBONS {B_BUTTON}CANCEL");
-const u8 gUnknown_085EBF73[] = _("{A_BUTTON}CHECK {B_BUTTON}CANCEL");
-const u8 gUnknown_085EBF84[] = _("{B_BUTTON}CANCEL");
+const u8 gText_Navgear_ClearButtonList[] = _("{CLEAR 0x80}");
+const u8 gText_NavgearMap_ZoomedOutButtons[] = _("{A_BUTTON}ZOOM {B_BUTTON}CANCEL");
+const u8 gText_NavgearMap_ZoomedInButtons[] = _("{A_BUTTON}FULL {B_BUTTON}CANCEL");
+const u8 gText_NavgearCondition_MonListButtons[] = _("{A_BUTTON}CONDITION {B_BUTTON}CANCEL");
+const u8 gText_NavgearCondition_MonStatusButtons[] = _("{A_BUTTON}MARKINGS {B_BUTTON}CANCEL");
+const u8 gText_NavgearCondition_MarkingButtons[] = _("{A_BUTTON}SELECT MARK {B_BUTTON}CANCEL");
+const u8 gText_NavgearMatchCall_TrainerListButtons[] = _("{A_BUTTON}MENU {B_BUTTON}CANCEL");
+const u8 gText_NavgearMatchCall_CallMenuButtons[] = _("{A_BUTTON}OK {B_BUTTON}CANCEL");
+const u8 gText_NavgearMatchCall_CheckTrainerButtons[] = _("{B_BUTTON}CANCEL");
+const u8 gText_NavgearRibbons_MonListButtons[] = _("{A_BUTTON}RIBBONS {B_BUTTON}CANCEL");
+const u8 gText_NavgearRibbons_RibbonListButtons[] = _("{A_BUTTON}CHECK {B_BUTTON}CANCEL");
+const u8 gText_NavgearRibbons_RibbonCheckButtons[] = _("{B_BUTTON}CANCEL");
const u8 gText_NatureSlash[] = _("NATURE/");
const u8 gText_TrainerCloseBy[] = _("That TRAINER is close by.\nTalk to the TRAINER in person!");
const u8 gText_InParty[] = _("IN PARTY");
diff --git a/src/title_screen.c b/src/title_screen.c
index 06bb066bb..ca34f90f8 100644
--- a/src/title_screen.c
+++ b/src/title_screen.c
@@ -507,12 +507,12 @@ void CB2_InitTitleScreen(void)
break;
case 1:
LZ77UnCompVram(gTitleScreenPokemonLogoGfx, (void *)VRAM);
- LZ77UnCompVram(gUnknown_08DE0644, (void *)(VRAM + 0x4800));
+ LZ77UnCompVram(gUnknown_08DE0644, (void *)(BG_SCREEN_ADDR(9)));
LoadPalette(gTitleScreenBgPalettes, 0, 0x1E0);
- LZ77UnCompVram(sTitleScreenRayquazaGfx, (void *)(VRAM + 0x8000));
- LZ77UnCompVram(sTitleScreenRayquazaTilemap, (void *)(VRAM + 0xD000));
- LZ77UnCompVram(sTitleScreenCloudsGfx, (void *)(VRAM + 0xC000));
- LZ77UnCompVram(gUnknown_08DDE458, (void *)(VRAM + 0xD800));
+ LZ77UnCompVram(sTitleScreenRayquazaGfx, (void *)(BG_CHAR_ADDR(2)));
+ LZ77UnCompVram(sTitleScreenRayquazaTilemap, (void *)(BG_SCREEN_ADDR(26)));
+ LZ77UnCompVram(sTitleScreenCloudsGfx, (void *)(BG_CHAR_ADDR(3)));
+ LZ77UnCompVram(gUnknown_08DDE458, (void *)(BG_SCREEN_ADDR(27)));
ScanlineEffect_Stop();
ResetTasks();
ResetSpriteData();