diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/battle_anim.c | 20 | ||||
-rw-r--r-- | src/battle_bg.c | 148 | ||||
-rw-r--r-- | src/berry_blender.c | 2 | ||||
-rw-r--r-- | src/clear_save_data_screen.c | 2 | ||||
-rw-r--r-- | src/contest.c | 16 | ||||
-rw-r--r-- | src/contest_painting.c | 14 | ||||
-rw-r--r-- | src/credits.c | 2 | ||||
-rw-r--r-- | src/field_effect.c | 6 | ||||
-rwxr-xr-x | src/field_effect_helpers.c | 4 | ||||
-rw-r--r-- | src/intro.c | 42 | ||||
-rw-r--r-- | src/intro_credits_graphics.c | 20 | ||||
-rw-r--r-- | src/main_menu.c | 4 | ||||
-rw-r--r-- | src/pokedex.c | 25 | ||||
-rw-r--r-- | src/pokemon_storage_system.c | 2 | ||||
-rw-r--r-- | src/pokenav.c | 1211 | ||||
-rw-r--r-- | src/save_failed_screen.c | 4 | ||||
-rw-r--r-- | src/starter_choose.c | 4 | ||||
-rw-r--r-- | src/strings.c | 24 | ||||
-rw-r--r-- | src/title_screen.c | 10 |
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(); |