Merge branch 'master' into main-menu-state-machine
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
148
src/battle_bg.c
148
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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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++)
|
||||
|
||||
@@ -10,21 +10,20 @@
|
||||
#include "constants/maps.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/species.h"
|
||||
|
||||
extern void MapGridSetMetatileIdAt(s32 x, s32 y, u16 metatileId); // fieldmap
|
||||
extern u8 GetCursorSelectionMonId(void);
|
||||
extern u8 oei_task_add(void);
|
||||
#include "fieldmap.h"
|
||||
#include "party_menu.h"
|
||||
#include "fldeff.h"
|
||||
|
||||
// why do this, GF?
|
||||
enum
|
||||
{
|
||||
STRENGTH_PUZZLE,
|
||||
FLY_PUZZLE
|
||||
REGIROCK_PUZZLE,
|
||||
REGISTEEL_PUZZLE
|
||||
};
|
||||
|
||||
EWRAM_DATA static u8 sBraillePuzzleCallbackFlag = 0;
|
||||
|
||||
static const u8 gUnknown_085EFE74[][2] =
|
||||
static const u8 gRegicePathCoords[][2] =
|
||||
{
|
||||
{0x04, 0x15},
|
||||
{0x05, 0x15},
|
||||
@@ -65,14 +64,14 @@ static const u8 gUnknown_085EFE74[][2] =
|
||||
};
|
||||
|
||||
void SealedChamberShakingEffect(u8);
|
||||
void sub_8179860(void);
|
||||
void sub_8179944(void);
|
||||
void DoBrailleRegirockEffect(void);
|
||||
void DoBrailleRegisteelEffect(void);
|
||||
|
||||
bool8 ShouldDoBrailleDigEffect(void)
|
||||
{
|
||||
if (!FlagGet(FLAG_SYS_BRAILLE_DIG)
|
||||
&& (gSaveBlock1Ptr->location.mapGroup == 0x18
|
||||
&& gSaveBlock1Ptr->location.mapNum == 0x47))
|
||||
&& (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SEALED_CHAMBER_OUTER_ROOM)
|
||||
&& gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEALED_CHAMBER_OUTER_ROOM)))
|
||||
{
|
||||
if (gSaveBlock1Ptr->pos.x == 10 && gSaveBlock1Ptr->pos.y == 3)
|
||||
return TRUE;
|
||||
@@ -87,12 +86,12 @@ bool8 ShouldDoBrailleDigEffect(void)
|
||||
|
||||
void DoBrailleDigEffect(void)
|
||||
{
|
||||
MapGridSetMetatileIdAt(16, 8, 554);
|
||||
MapGridSetMetatileIdAt(17, 8, 555);
|
||||
MapGridSetMetatileIdAt(18, 8, 556);
|
||||
MapGridSetMetatileIdAt(16, 9, 3634);
|
||||
MapGridSetMetatileIdAt(17, 9, 563);
|
||||
MapGridSetMetatileIdAt(18, 9, 3636);
|
||||
MapGridSetMetatileIdAt(16, 8, 0x22A);
|
||||
MapGridSetMetatileIdAt(17, 8, 0x22B);
|
||||
MapGridSetMetatileIdAt(18, 8, 0x22C);
|
||||
MapGridSetMetatileIdAt(16, 9, 0xE32);
|
||||
MapGridSetMetatileIdAt(17, 9, 0x233);
|
||||
MapGridSetMetatileIdAt(18, 9, 0xE34);
|
||||
DrawWholeMapView();
|
||||
PlaySE(SE_BAN);
|
||||
FlagSet(FLAG_SYS_BRAILLE_DIG);
|
||||
@@ -115,10 +114,10 @@ bool8 CheckRelicanthWailord(void)
|
||||
|
||||
// THEORY: this was caused by block commenting out all of the older R/S braille functions but leaving the call to it itself, which creates the nullsub.
|
||||
// the code is shown below to show what this might look like.
|
||||
void ShouldDoBrailleStrengthEffectOld(void)
|
||||
void ShouldDoBrailleRegirockEffectOld(void)
|
||||
{
|
||||
/*
|
||||
if (!FlagGet(FLAG_SYS_BRAILLE_STRENGTH) && (gSaveBlock1.location.mapGroup == MAP_GROUP_DESERT_RUINS && gSaveBlock1.location.mapNum == MAP_ID_DESERT_RUINS))
|
||||
if (!FlagGet(FLAG_SYS_REGIROCK_PUZZLE_COMPLETED) && (gSaveBlock1.location.mapGroup == MAP_GROUP_DESERT_RUINS && gSaveBlock1.location.mapNum == MAP_ID_DESERT_RUINS))
|
||||
{
|
||||
if (gSaveBlock1.pos.x == 10 && gSaveBlock1.pos.y == 23)
|
||||
return TRUE;
|
||||
@@ -131,7 +130,7 @@ void ShouldDoBrailleStrengthEffectOld(void)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void DoBrailleStrengthEffect(void)
|
||||
void DoBrailleRegirockEffect(void)
|
||||
{
|
||||
FieldEffectActiveListRemove(FLDEFF_USE_STRENGTH);
|
||||
MapGridSetMetatileIdAt(14, 26, 554);
|
||||
@@ -142,13 +141,13 @@ void DoBrailleStrengthEffect(void)
|
||||
MapGridSetMetatileIdAt(16, 27, 3636);
|
||||
DrawWholeMapView();
|
||||
PlaySE(SE_BAN);
|
||||
FlagSet(FLAG_SYS_BRAILLE_STRENGTH);
|
||||
FlagSet(FLAG_SYS_REGIROCK_PUZZLE_COMPLETED);
|
||||
ScriptContext2_Disable();
|
||||
}
|
||||
|
||||
bool8 ShouldDoBrailleFlyEffect(void)
|
||||
bool8 ShouldDoBrailleRegisteelEffect(void)
|
||||
{
|
||||
if (!FlagGet(FLAG_SYS_BRAILLE_FLY) && (gSaveBlock1.location.mapGroup == MAP_GROUP_ANCIENT_TOMB && gSaveBlock1.location.mapNum == MAP_ID_ANCIENT_TOMB))
|
||||
if (!FlagGet(FLAG_SYS_REGISTEEL_PUZZLE_COMPLETED) && (gSaveBlock1.location.mapGroup == MAP_GROUP_ANCIENT_TOMB && gSaveBlock1.location.mapNum == MAP_ID_ANCIENT_TOMB))
|
||||
{
|
||||
if (gSaveBlock1.pos.x == 8 && gSaveBlock1.pos.y == 25)
|
||||
return TRUE;
|
||||
@@ -157,24 +156,24 @@ bool8 ShouldDoBrailleFlyEffect(void)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void DoBrailleFlyEffect(void)
|
||||
void DoBrailleRegisteelEffect(void)
|
||||
{
|
||||
gFieldEffectArguments[0] = gLastFieldPokeMenuOpened;
|
||||
FieldEffectStart(FLDEFF_USE_FLY_ANCIENT_TOMB);
|
||||
FieldEffectStart(FLDEFF_USE_TOMB_PUZZLE_EFFECT);
|
||||
}
|
||||
|
||||
bool8 FldEff_UseFlyAncientTomb(void)
|
||||
{
|
||||
u8 taskId = oei_task_add();
|
||||
|
||||
gTasks[taskId].data[8] = (u32)UseFlyAncientTomb_Callback >> 16;
|
||||
gTasks[taskId].data[9] = (u32)UseFlyAncientTomb_Callback;
|
||||
gTasks[taskId].data[8] = (u32)UseRegisteelHm_Callback >> 16;
|
||||
gTasks[taskId].data[9] = (u32)UseRegisteelHm_Callback;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void UseFlyAncientTomb_Callback(void)
|
||||
void UseRegisteelHm_Callback(void)
|
||||
{
|
||||
FieldEffectActiveListRemove(FLDEFF_USE_FLY_ANCIENT_TOMB);
|
||||
FieldEffectActiveListRemove(FLDEFF_USE_TOMB_PUZZLE_EFFECT);
|
||||
UseFlyAncientTomb_Finish();
|
||||
}
|
||||
|
||||
@@ -188,7 +187,7 @@ void UseFlyAncientTomb_Finish(void)
|
||||
MapGridSetMetatileIdAt(16, 27, 3636);
|
||||
DrawWholeMapView();
|
||||
PlaySE(SE_BAN);
|
||||
FlagSet(FLAG_SYS_BRAILLE_FLY);
|
||||
FlagSet(FLAG_SYS_REGISTEEL_PUZZLE_COMPLETED);
|
||||
ScriptContext2_Disable();
|
||||
}
|
||||
*/
|
||||
@@ -240,25 +239,25 @@ void SealedChamberShakingEffect(u8 taskId)
|
||||
}
|
||||
|
||||
// moved later in the function because it was rewritten.
|
||||
bool8 ShouldDoBrailleStrengthEffect(void)
|
||||
bool8 ShouldDoBrailleRegirockEffect(void)
|
||||
{
|
||||
if (!FlagGet(FLAG_SYS_BRAILLE_STRENGTH)
|
||||
if (!FlagGet(FLAG_SYS_REGIROCK_PUZZLE_COMPLETED)
|
||||
&& gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(DESERT_RUINS)
|
||||
&& gSaveBlock1Ptr->location.mapNum == MAP_NUM(DESERT_RUINS))
|
||||
{
|
||||
if (gSaveBlock1Ptr->pos.x == 6 && gSaveBlock1Ptr->pos.y == 23)
|
||||
{
|
||||
sBraillePuzzleCallbackFlag = STRENGTH_PUZZLE;
|
||||
sBraillePuzzleCallbackFlag = REGIROCK_PUZZLE;
|
||||
return TRUE;
|
||||
}
|
||||
else if (gSaveBlock1Ptr->pos.x == 5 && gSaveBlock1Ptr->pos.y == 23)
|
||||
{
|
||||
sBraillePuzzleCallbackFlag = STRENGTH_PUZZLE;
|
||||
sBraillePuzzleCallbackFlag = REGIROCK_PUZZLE;
|
||||
return TRUE;
|
||||
}
|
||||
else if (gSaveBlock1Ptr->pos.x == 7 && gSaveBlock1Ptr->pos.y == 23)
|
||||
{
|
||||
sBraillePuzzleCallbackFlag = STRENGTH_PUZZLE;
|
||||
sBraillePuzzleCallbackFlag = REGIROCK_PUZZLE;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
@@ -266,65 +265,68 @@ bool8 ShouldDoBrailleStrengthEffect(void)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void sub_8179834(void)
|
||||
void SetUpPuzzleEffectRegirock(void)
|
||||
{
|
||||
gFieldEffectArguments[0] = GetCursorSelectionMonId();
|
||||
FieldEffectStart(FLDEFF_USE_FLY_ANCIENT_TOMB);
|
||||
FieldEffectStart(FLDEFF_USE_TOMB_PUZZLE_EFFECT);
|
||||
}
|
||||
|
||||
void UseStrengthDesertRuins_Callback(void)
|
||||
void UseRegirockHm_Callback(void)
|
||||
{
|
||||
FieldEffectActiveListRemove(FLDEFF_USE_FLY_ANCIENT_TOMB);
|
||||
sub_8179860();
|
||||
FieldEffectActiveListRemove(FLDEFF_USE_TOMB_PUZZLE_EFFECT);
|
||||
DoBrailleRegirockEffect();
|
||||
}
|
||||
|
||||
void sub_8179860(void)
|
||||
void DoBrailleRegirockEffect(void)
|
||||
{
|
||||
MapGridSetMetatileIdAt(14, 26, 554);
|
||||
MapGridSetMetatileIdAt(15, 26, 555);
|
||||
MapGridSetMetatileIdAt(16, 26, 556);
|
||||
MapGridSetMetatileIdAt(14, 27, 3634);
|
||||
MapGridSetMetatileIdAt(15, 27, 563);
|
||||
MapGridSetMetatileIdAt(16, 27, 3636);
|
||||
MapGridSetMetatileIdAt(14, 26, 0x22A);
|
||||
MapGridSetMetatileIdAt(15, 26, 0x22B);
|
||||
MapGridSetMetatileIdAt(16, 26, 0x22C);
|
||||
MapGridSetMetatileIdAt(14, 27, 0xE32);
|
||||
MapGridSetMetatileIdAt(15, 27, 0x233);
|
||||
MapGridSetMetatileIdAt(16, 27, 0xE34);
|
||||
DrawWholeMapView();
|
||||
PlaySE(SE_BAN);
|
||||
FlagSet(FLAG_SYS_BRAILLE_STRENGTH);
|
||||
FlagSet(FLAG_SYS_REGIROCK_PUZZLE_COMPLETED);
|
||||
ScriptContext2_Disable();
|
||||
}
|
||||
|
||||
bool8 ShouldDoBrailleFlyEffect(void)
|
||||
bool8 ShouldDoBrailleRegisteelEffect(void)
|
||||
{
|
||||
if (!FlagGet(FLAG_SYS_BRAILLE_FLY) && (gSaveBlock1Ptr->location.mapGroup == 0x18 && gSaveBlock1Ptr->location.mapNum == 0x44))
|
||||
if (!FlagGet(FLAG_SYS_REGISTEEL_PUZZLE_COMPLETED) && (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(ANCIENT_TOMB) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(ANCIENT_TOMB)))
|
||||
{
|
||||
if (gSaveBlock1Ptr->pos.x == 8 && gSaveBlock1Ptr->pos.y == 25)
|
||||
{ sBraillePuzzleCallbackFlag = FLY_PUZZLE; return TRUE; }
|
||||
{
|
||||
sBraillePuzzleCallbackFlag = REGISTEEL_PUZZLE;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void sub_8179918(void)
|
||||
void SetUpPuzzleEffectRegisteel(void)
|
||||
{
|
||||
gFieldEffectArguments[0] = GetCursorSelectionMonId();
|
||||
FieldEffectStart(FLDEFF_USE_FLY_ANCIENT_TOMB);
|
||||
FieldEffectStart(FLDEFF_USE_TOMB_PUZZLE_EFFECT);
|
||||
}
|
||||
|
||||
void UseFlyAncientTomb_Callback(void)
|
||||
void UseRegisteelHm_Callback(void)
|
||||
{
|
||||
FieldEffectActiveListRemove(FLDEFF_USE_FLY_ANCIENT_TOMB);
|
||||
sub_8179944();
|
||||
FieldEffectActiveListRemove(FLDEFF_USE_TOMB_PUZZLE_EFFECT);
|
||||
DoBrailleRegisteelEffect();
|
||||
}
|
||||
|
||||
void sub_8179944(void)
|
||||
void DoBrailleRegisteelEffect(void)
|
||||
{
|
||||
MapGridSetMetatileIdAt(14, 26, 554);
|
||||
MapGridSetMetatileIdAt(15, 26, 555);
|
||||
MapGridSetMetatileIdAt(16, 26, 556);
|
||||
MapGridSetMetatileIdAt(14, 27, 3634);
|
||||
MapGridSetMetatileIdAt(15, 27, 563);
|
||||
MapGridSetMetatileIdAt(16, 27, 3636);
|
||||
MapGridSetMetatileIdAt(14, 26, 0x22A);
|
||||
MapGridSetMetatileIdAt(15, 26, 0x22B);
|
||||
MapGridSetMetatileIdAt(16, 26, 0x22C);
|
||||
MapGridSetMetatileIdAt(14, 27, 0xE32);
|
||||
MapGridSetMetatileIdAt(15, 27, 0x233);
|
||||
MapGridSetMetatileIdAt(16, 27, 0xE34);
|
||||
DrawWholeMapView();
|
||||
PlaySE(SE_BAN);
|
||||
FlagSet(FLAG_SYS_BRAILLE_FLY);
|
||||
FlagSet(FLAG_SYS_REGISTEEL_PUZZLE_COMPLETED);
|
||||
ScriptContext2_Disable();
|
||||
}
|
||||
|
||||
@@ -332,7 +334,7 @@ void sub_8179944(void)
|
||||
void DoBrailleWait(void)
|
||||
{
|
||||
/*
|
||||
if (!FlagGet(FLAG_SYS_BRAILLE_WAIT))
|
||||
if (!FlagGet(FLAG_SYS_BRAILLE_REGICE_COMPLETED))
|
||||
CreateTask(Task_BrailleWait, 0x50);
|
||||
}
|
||||
|
||||
@@ -410,15 +412,15 @@ bool8 FldEff_UsePuzzleEffect(void)
|
||||
{
|
||||
u8 taskId = oei_task_add();
|
||||
|
||||
if (sBraillePuzzleCallbackFlag == FLY_PUZZLE)
|
||||
if (sBraillePuzzleCallbackFlag == REGISTEEL_PUZZLE)
|
||||
{
|
||||
gTasks[taskId].data[8] = (u32)UseFlyAncientTomb_Callback >> 16;
|
||||
gTasks[taskId].data[9] = (u32)UseFlyAncientTomb_Callback;
|
||||
gTasks[taskId].data[8] = (u32)UseRegisteelHm_Callback >> 16;
|
||||
gTasks[taskId].data[9] = (u32)UseRegisteelHm_Callback;
|
||||
}
|
||||
else
|
||||
{
|
||||
gTasks[taskId].data[8] = (u32)UseStrengthDesertRuins_Callback >> 16;
|
||||
gTasks[taskId].data[9] = (u32)UseStrengthDesertRuins_Callback;
|
||||
gTasks[taskId].data[8] = (u32)UseRegirockHm_Callback >> 16;
|
||||
gTasks[taskId].data[9] = (u32)UseRegirockHm_Callback;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
@@ -427,10 +429,10 @@ bool8 ShouldDoBrailleRegicePuzzle(void)
|
||||
{
|
||||
u8 i;
|
||||
|
||||
if (gSaveBlock1Ptr->location.mapGroup == 0x18
|
||||
&& gSaveBlock1Ptr->location.mapNum == 0x43)
|
||||
if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(ISLAND_CAVE)
|
||||
&& gSaveBlock1Ptr->location.mapNum == MAP_NUM(ISLAND_CAVE))
|
||||
{
|
||||
if (FlagGet(FLAG_SYS_BRAILLE_WAIT) != FALSE)
|
||||
if (FlagGet(FLAG_SYS_BRAILLE_REGICE_COMPLETED))
|
||||
return FALSE;
|
||||
if (FlagGet(FLAG_TEMP_2) == FALSE)
|
||||
return FALSE;
|
||||
@@ -439,35 +441,36 @@ bool8 ShouldDoBrailleRegicePuzzle(void)
|
||||
|
||||
for (i = 0; i < 36; i++)
|
||||
{
|
||||
u8 xPos = gUnknown_085EFE74[i][0];
|
||||
u8 yPos = gUnknown_085EFE74[i][1];
|
||||
u8 xPos = gRegicePathCoords[i][0];
|
||||
u8 yPos = gRegicePathCoords[i][1];
|
||||
if (gSaveBlock1Ptr->pos.x == xPos && gSaveBlock1Ptr->pos.y == yPos)
|
||||
{
|
||||
u16 varValue;
|
||||
|
||||
if (i < 16)
|
||||
{
|
||||
u16 val = VarGet(VAR_0x403B);
|
||||
u16 val = VarGet(VAR_REGICE_STEPS_1);
|
||||
val |= 1 << i;
|
||||
VarSet(VAR_0x403B, val);
|
||||
VarSet(VAR_REGICE_STEPS_1, val);
|
||||
}
|
||||
else if (i < 32)
|
||||
{
|
||||
u16 val = VarGet(VAR_0x403C);
|
||||
u16 val = VarGet(VAR_REGICE_STEPS_2);
|
||||
val |= 1 << (i - 16);
|
||||
VarSet(VAR_0x403C, val);
|
||||
VarSet(VAR_REGICE_STEPS_2, val);
|
||||
}
|
||||
else
|
||||
{
|
||||
u16 val = VarGet(VAR_0x403D);
|
||||
u16 val = VarGet(VAR_REGICE_STEPS_3);
|
||||
val |= 1 << (i - 32);
|
||||
VarSet(VAR_0x403D, val);
|
||||
VarSet(VAR_REGICE_STEPS_3, val);
|
||||
}
|
||||
|
||||
varValue = VarGet(VAR_0x403B);
|
||||
if (varValue != 0xFFFF || VarGet(VAR_0x403C) != varValue || VarGet(VAR_0x403D) != 0xF)
|
||||
varValue = VarGet(VAR_REGICE_STEPS_1);
|
||||
if (varValue != 0xFFFF || VarGet(VAR_REGICE_STEPS_2) != 0xFFFF || VarGet(VAR_REGICE_STEPS_3) != 0xF)
|
||||
return FALSE;
|
||||
|
||||
// This final check is redundant.
|
||||
if (gSaveBlock1Ptr->pos.x == 8 && gSaveBlock1Ptr->pos.y == 21)
|
||||
return TRUE;
|
||||
else
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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++)
|
||||
|
||||
2056
src/easy_chat.c
2056
src/easy_chat.c
File diff suppressed because it is too large
Load Diff
@@ -28,8 +28,6 @@ EWRAM_DATA static u8 gUnknown_020375FC[16] = {0};
|
||||
|
||||
extern u16 *const gSpecialVars[];
|
||||
|
||||
extern void sub_80BB358(void);
|
||||
|
||||
void InitEventData(void)
|
||||
{
|
||||
memset(gSaveBlock1Ptr->flags, 0, sizeof(gSaveBlock1Ptr->flags));
|
||||
@@ -69,7 +67,7 @@ void EnableNationalPokedex(void)
|
||||
FlagSet(FLAG_SYS_NATIONAL_DEX);
|
||||
gSaveBlock2Ptr->pokedex.mode = DEX_MODE_NATIONAL;
|
||||
gSaveBlock2Ptr->pokedex.order = 0;
|
||||
sub_80BB358();
|
||||
ResetPokedexScrollPositions();
|
||||
}
|
||||
|
||||
bool32 IsNationalPokedexEnabled(void)
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -74,11 +74,13 @@ static const u32 gCaveTransitionTiles[] = INCBIN_U32("graphics/misc/cave_transit
|
||||
// text
|
||||
bool8 SetUpFieldMove_Flash(void)
|
||||
{
|
||||
if (ShouldDoBrailleFlyEffect())
|
||||
// In Ruby and Sapphire, Registeel's tomb is opened by using Fly. In Emerald,
|
||||
// Flash is used instead.
|
||||
if (ShouldDoBrailleRegisteelEffect())
|
||||
{
|
||||
gSpecialVar_Result = GetCursorSelectionMonId();
|
||||
gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
|
||||
gPostMenuFieldCallback = sub_8179918;
|
||||
gPostMenuFieldCallback = SetUpPuzzleEffectRegisteel;
|
||||
return TRUE;
|
||||
}
|
||||
else if (gMapHeader.cave == TRUE && !FlagGet(FLAG_SYS_USE_FLASH))
|
||||
|
||||
@@ -119,11 +119,13 @@ static void sub_813561C(u8 taskId)
|
||||
|
||||
bool8 SetUpFieldMove_RockSmash(void)
|
||||
{
|
||||
if (ShouldDoBrailleStrengthEffect())
|
||||
// In Ruby and Sapphire, Regirock's tomb is opened by using Strength. In Emerald,
|
||||
// it is opened by using Rock Smash.
|
||||
if (ShouldDoBrailleRegirockEffect())
|
||||
{
|
||||
gSpecialVar_Result = GetCursorSelectionMonId();
|
||||
gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
|
||||
gPostMenuFieldCallback = sub_8179834;
|
||||
gPostMenuFieldCallback = SetUpPuzzleEffectRegirock;
|
||||
return TRUE;
|
||||
}
|
||||
else if (CheckObjectGraphicsInFrontOfPlayer(EVENT_OBJ_GFX_BREAKABLE_ROCK) == TRUE)
|
||||
|
||||
312
src/flying.c
312
src/flying.c
@@ -1,13 +1,16 @@
|
||||
#include "global.h"
|
||||
#include "battle_anim.h"
|
||||
#include "palette.h"
|
||||
#include "trig.h"
|
||||
#include "constants/battle_anim.h"
|
||||
#include "constants/rgb.h"
|
||||
|
||||
extern void sub_810DE70(struct Sprite *);
|
||||
extern void sub_810DFA8(struct Sprite *);
|
||||
extern void sub_810E044(struct Sprite *);
|
||||
extern void sub_810E13C(struct Sprite *);
|
||||
extern void sub_810E1C8(struct Sprite *);
|
||||
extern void sub_810E314(struct Sprite *);
|
||||
void sub_810DE70(struct Sprite *);
|
||||
void sub_810DFA8(struct Sprite *);
|
||||
void sub_810E044(struct Sprite *);
|
||||
void sub_810E13C(struct Sprite *);
|
||||
void sub_810E1C8(struct Sprite *);
|
||||
void sub_810E314(struct Sprite *);
|
||||
extern void sub_810EA4C(struct Sprite *);
|
||||
extern void sub_810EAA0(struct Sprite *);
|
||||
extern void sub_810EC34(struct Sprite *);
|
||||
@@ -18,6 +21,13 @@ extern void sub_810EEF8(struct Sprite *);
|
||||
extern void sub_810F004(struct Sprite *);
|
||||
extern void sub_810F084(struct Sprite *);
|
||||
|
||||
static void sub_810DE98(struct Sprite *);
|
||||
static void sub_810DF18(u8);
|
||||
static void sub_810E028(struct Sprite *);
|
||||
static void sub_810E184(struct Sprite *);
|
||||
static void sub_810E24C(struct Sprite *);
|
||||
void sub_810E520(struct Sprite *);
|
||||
|
||||
const struct SpriteTemplate gUnknown_08596270 =
|
||||
{
|
||||
.tileTag = ANIM_TAG_GUST,
|
||||
@@ -326,3 +336,293 @@ const struct SpriteTemplate gUnknown_08596514 =
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_810F084,
|
||||
};
|
||||
|
||||
|
||||
void sub_810DE70(struct Sprite *sprite)
|
||||
{
|
||||
InitSpritePosToAnimTarget(sprite, FALSE);
|
||||
sprite->pos1.y += 20;
|
||||
sprite->data[1] = 191;
|
||||
sprite->callback = sub_810DE98;
|
||||
sprite->callback(sprite);
|
||||
}
|
||||
|
||||
static void sub_810DE98(struct Sprite *sprite) {
|
||||
sprite->pos2.x = Sin(sprite->data[1], 32);
|
||||
sprite->pos2.y = Cos(sprite->data[1], 8);
|
||||
sprite->data[1] += 5;
|
||||
sprite->data[1] &= 0xFF;
|
||||
if (++sprite->data[0] == 71)
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
|
||||
void sub_810DED8(u8 taskId)
|
||||
{
|
||||
gTasks[taskId].data[0] = gBattleAnimArgs[1];
|
||||
gTasks[taskId].data[1] = gBattleAnimArgs[0];
|
||||
gTasks[taskId].data[2] = IndexOfSpritePaletteTag(ANIM_TAG_GUST);
|
||||
gTasks[taskId].func = sub_810DF18;
|
||||
}
|
||||
|
||||
static void sub_810DF18(u8 taskId)
|
||||
{
|
||||
u8 data2;
|
||||
u16 temp;
|
||||
int i, base;
|
||||
|
||||
if (gTasks[taskId].data[10]++ == gTasks[taskId].data[1])
|
||||
{
|
||||
gTasks[taskId].data[10] = 0;
|
||||
data2 = gTasks[taskId].data[2];
|
||||
temp = gPlttBufferFaded[16 * data2 + 0x108];
|
||||
i = 7;
|
||||
base = data2 * 16;
|
||||
|
||||
do
|
||||
{
|
||||
gPlttBufferFaded[base + 0x101 + i] = gPlttBufferFaded[base + 0x100 + i];
|
||||
i--;
|
||||
}
|
||||
while (i > 0);
|
||||
|
||||
gPlttBufferFaded[base + 0x101] = temp;
|
||||
}
|
||||
|
||||
if (--gTasks[taskId].data[0] == 0)
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
void sub_810DFA8(struct Sprite *sprite)
|
||||
{
|
||||
InitSpritePosToAnimAttacker(sprite, TRUE);
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
|
||||
|
||||
sprite->data[0] = gBattleAnimArgs[4];
|
||||
sprite->data[1] = sprite->pos1.x;
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2];
|
||||
sprite->data[3] = sprite->pos1.y;
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3];
|
||||
InitAnimLinearTranslation(sprite);
|
||||
sprite->callback = RunStoredCallbackWhenAffineAnimEnds;
|
||||
StoreSpriteCallbackInData6(sprite, sub_810E028);
|
||||
}
|
||||
|
||||
static void sub_810E028(struct Sprite *sprite)
|
||||
{
|
||||
if (AnimTranslateLinear(sprite))
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
|
||||
void sub_810E044(struct Sprite *sprite)
|
||||
{
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
{
|
||||
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
|
||||
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
|
||||
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
|
||||
gBattleAnimArgs[3] = -gBattleAnimArgs[3];
|
||||
}
|
||||
|
||||
if (IsContest())
|
||||
{
|
||||
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
|
||||
gBattleAnimArgs[3] = -gBattleAnimArgs[3];
|
||||
}
|
||||
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
|
||||
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
sprite->pos1.x += gBattleAnimArgs[0];
|
||||
sprite->pos1.y += gBattleAnimArgs[1];
|
||||
sprite->data[0] = gBattleAnimArgs[4];
|
||||
|
||||
if (gBattleAnimArgs[6] == 0)
|
||||
{
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetAverageBattlerPositions(gBattleAnimTarget, 1, &sprite->data[2], &sprite->data[4]);
|
||||
}
|
||||
|
||||
sprite->data[2] = sprite->data[2] + gBattleAnimArgs[2];
|
||||
sprite->data[4] = sprite->data[4] + gBattleAnimArgs[3];
|
||||
sprite->callback = StartAnimLinearTranslation;
|
||||
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
SeekSpriteAnim(sprite, gBattleAnimArgs[5]);
|
||||
}
|
||||
|
||||
void sub_810E13C(struct Sprite *sprite)
|
||||
{
|
||||
InitSpritePosToAnimAttacker(sprite, TRUE);
|
||||
sprite->data[0] = gBattleAnimArgs[2];
|
||||
sprite->data[1] = gBattleAnimArgs[3];
|
||||
sprite->callback = sub_810E184;
|
||||
gSprites[GetAnimBattlerSpriteId(ANIM_ATTACKER)].invisible = 1;
|
||||
}
|
||||
|
||||
static void sub_810E184(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[0] > 0)
|
||||
{
|
||||
sprite->data[0]--;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->data[2] += sprite->data[1];
|
||||
sprite->pos2.y -= (sprite->data[2] >> 8);
|
||||
}
|
||||
|
||||
if (sprite->pos1.y + sprite->pos2.y < -32)
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
|
||||
void sub_810E1C8(struct Sprite *sprite)
|
||||
{
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
{
|
||||
sprite->pos1.x = 272;
|
||||
sprite->pos1.y = -32;
|
||||
StartSpriteAffineAnim(sprite, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos1.x = -32;
|
||||
sprite->pos1.y = -32;
|
||||
}
|
||||
|
||||
sprite->data[0] = gBattleAnimArgs[0];
|
||||
sprite->data[1] = sprite->pos1.x;
|
||||
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
|
||||
sprite->data[3] = sprite->pos1.y;
|
||||
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
|
||||
|
||||
InitAnimLinearTranslation(sprite);
|
||||
sprite->callback = sub_810E24C;
|
||||
}
|
||||
|
||||
static void sub_810E24C(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[0] = 1;
|
||||
AnimTranslateLinear(sprite);
|
||||
if (((u16)sprite->data[3] >> 8) > 200)
|
||||
{
|
||||
sprite->pos1.x += sprite->pos2.x;
|
||||
sprite->pos2.x = 0;
|
||||
sprite->data[3] &= 0xFF;
|
||||
}
|
||||
|
||||
if ((u32)(sprite->pos1.x + sprite->pos2.x + 32) > 304 || sprite->pos1.y + sprite->pos2.y > 160)
|
||||
{
|
||||
gSprites[GetAnimBattlerSpriteId(ANIM_ATTACKER)].invisible = 0;
|
||||
DestroyAnimSprite(sprite);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_810E2C8(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[0]-- <= 0)
|
||||
{
|
||||
if (sprite->oam.affineMode & ST_OAM_AFFINE_ON_MASK)
|
||||
{
|
||||
FreeOamMatrix(sprite->oam.matrixNum);
|
||||
sprite->oam.affineMode = 0;
|
||||
}
|
||||
|
||||
DestroySprite(sprite);
|
||||
gAnimVisualTaskCount--;
|
||||
}
|
||||
}
|
||||
|
||||
// FAKEMATCHING
|
||||
void sub_810E314(struct Sprite *sprite)
|
||||
{
|
||||
s16 *data;
|
||||
u8 slot;
|
||||
s16 spriteCoord;
|
||||
int t1, t2;
|
||||
u32 arg2;
|
||||
u32 matrixNum;
|
||||
u8 sinIndex;
|
||||
register s16 sinVal asm ("r4");
|
||||
register int sinVal2 asm ("r0");
|
||||
|
||||
data = sprite->data;
|
||||
|
||||
if (gBattleAnimArgs[7] & 0x100)
|
||||
slot = gBattleAnimAttacker;
|
||||
else
|
||||
slot = gBattleAnimTarget;
|
||||
|
||||
if (GetBattlerSide(slot) == B_SIDE_PLAYER)
|
||||
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
|
||||
|
||||
sprite->pos1.x = GetBattlerSpriteCoord(slot, 0) + gBattleAnimArgs[0];
|
||||
spriteCoord = GetBattlerSpriteCoord(slot, 1);
|
||||
sprite->pos1.y = spriteCoord + gBattleAnimArgs[1];
|
||||
data[4] = sprite->pos1.y << 8;
|
||||
|
||||
t1 = (spriteCoord + (u16) gBattleAnimArgs[6]) << 1;
|
||||
data[7] = (data[7] & 1) | t1;
|
||||
((u8 *) data)[0] |= 4;
|
||||
|
||||
arg2 = (u16) gBattleAnimArgs[2];
|
||||
data[1] = (u8) gBattleAnimArgs[2];
|
||||
arg2 <<= 16;
|
||||
data[5] = arg2 >> 24;
|
||||
data[2] = gBattleAnimArgs[3];
|
||||
data[3] = gBattleAnimArgs[4];
|
||||
data[6] = gBattleAnimArgs[5];
|
||||
|
||||
if ((u16) (data[1] - 64) <= 0x7f)
|
||||
{
|
||||
if (!IsContest())
|
||||
sprite->oam.priority = GetBattlerSpriteBGPriority(slot) + 1;
|
||||
else
|
||||
sprite->oam.priority = GetBattlerSpriteBGPriority(slot);
|
||||
|
||||
((u8 *) data)[14] = data[7] & -2;
|
||||
|
||||
if (!(data[2] & 0x8000))
|
||||
{
|
||||
sprite->hFlip ^= 1;
|
||||
sprite->animNum = sprite->hFlip;
|
||||
|
||||
sprite->animBeginning = 1;
|
||||
sprite->animEnded = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->oam.priority = GetBattlerSpriteBGPriority(slot);
|
||||
((u8 *) data)[14] |= 1;
|
||||
|
||||
if (data[2] & 0x8000)
|
||||
{
|
||||
sprite->hFlip ^= 1;
|
||||
sprite->animNum = sprite->hFlip;
|
||||
|
||||
sprite->animBeginning = 1;
|
||||
sprite->animEnded = 0;
|
||||
}
|
||||
}
|
||||
|
||||
t2 = (u16) data[1] >> 6 << 4;
|
||||
((u8 *) data)[0] = (15 & data[0]) | t2;
|
||||
|
||||
sprite->pos2.x = (gSineTable[(u16) data[1]] * (u8) data[6]) >> 8;
|
||||
|
||||
matrixNum = sprite->oam.matrixNum;
|
||||
|
||||
sinIndex = (-sprite->pos2.x >> 1) + data[5];
|
||||
sinVal = gSineTable[sinIndex];
|
||||
|
||||
gOamMatrices[matrixNum].a = gOamMatrices[matrixNum].d = gSineTable[sinIndex + 64];
|
||||
gOamMatrices[matrixNum].b = sinVal;
|
||||
sinVal2 = -sinVal;
|
||||
gOamMatrices[matrixNum].c = sinVal2;
|
||||
|
||||
sprite->callback = sub_810E520;
|
||||
}
|
||||
|
||||
@@ -1528,7 +1528,7 @@ static void ShowLinkContestResultsWindow(void)
|
||||
|
||||
static void sub_81A31FC(void)
|
||||
{
|
||||
u8 text[32];
|
||||
u8 name[32];
|
||||
s32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
|
||||
s32 facility = VarGet(VAR_FRONTIER_FACILITY);
|
||||
s32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
|
||||
@@ -1541,9 +1541,9 @@ static void sub_81A31FC(void)
|
||||
gSaveBlock2Ptr->frontier.towerRecordWinStreaks[battleMode][lvlMode] = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode];
|
||||
if (battleMode == FRONTIER_MODE_LINK_MULTIS)
|
||||
{
|
||||
StringCopy(text, gLinkPlayers[gBattleScripting.multiplayerId ^ 1].name);
|
||||
StripExtCtrlCodes(text);
|
||||
StringCopy(gSaveBlock2Ptr->frontier.field_EE1[lvlMode], text);
|
||||
StringCopy(name, gLinkPlayers[gBattleScripting.multiplayerId ^ 1].name);
|
||||
StripExtCtrlCodes(name);
|
||||
StringCopy(gSaveBlock2Ptr->frontier.opponentName[lvlMode], name);
|
||||
SetTrainerId(gLinkPlayers[gBattleScripting.multiplayerId ^ 1].trainerId, gSaveBlock2Ptr->frontier.field_EF1[lvlMode]);
|
||||
}
|
||||
if (gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] > 1
|
||||
@@ -2336,8 +2336,8 @@ static void PrintHallRecords(s32 hallFacilityId, s32 lvlMode)
|
||||
AddTextPrinterParameterized(gRecordsWindowId, 1, gLevelModeText[lvlMode], x, 1, TEXT_SPEED_FF, NULL);
|
||||
if (hallFacilityId == HALL_FACILITIES_COUNT)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.field_EE1[0][PLAYER_NAME_LENGTH] = EOS;
|
||||
gSaveBlock2Ptr->frontier.field_EE1[1][PLAYER_NAME_LENGTH] = EOS;
|
||||
gSaveBlock2Ptr->frontier.opponentName[0][PLAYER_NAME_LENGTH] = EOS;
|
||||
gSaveBlock2Ptr->frontier.opponentName[1][PLAYER_NAME_LENGTH] = EOS;
|
||||
Fill2PRecords(records2P, lvlMode);
|
||||
for (i = 0; i < 3; i++)
|
||||
Print2PRecord(i, 1, 4, &records2P[i]);
|
||||
|
||||
42
src/intro.c
42
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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
#include "task.h"
|
||||
#include "text.h"
|
||||
#include "constants/species.h"
|
||||
#include "save.h"
|
||||
|
||||
extern u16 gUnknown_03005DA8;
|
||||
extern void nullsub_89(u8 taskId);
|
||||
@@ -2347,17 +2348,17 @@ void sub_800E174(void)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_800E378(struct UnkSaveSubstruct_3b98 *dest, u32 trainerId, const u8 *name)
|
||||
void CopyTrainerRecord(struct TrainerNameRecord *dest, u32 trainerId, const u8 *name)
|
||||
{
|
||||
dest->trainerId = trainerId;
|
||||
StringCopy(dest->trainerName, name);
|
||||
}
|
||||
|
||||
bool32 sub_800E388(const u8 *name)
|
||||
bool32 NameIsNotEmpty(const u8 *name)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
for (i = 0; i < PLAYER_NAME_LENGTH + 1; i++)
|
||||
{
|
||||
if (name[i] != 0)
|
||||
{
|
||||
@@ -2367,52 +2368,64 @@ bool32 sub_800E388(const u8 *name)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void sub_800E3A8(void)
|
||||
// Save the currently connected players into the trainer records, shifting all previous records down.
|
||||
void RecordMixTrainerNames(void)
|
||||
{
|
||||
if (gWirelessCommType != 0)
|
||||
{
|
||||
s32 i;
|
||||
s32 j;
|
||||
s32 cnt;
|
||||
s32 sp0[5];
|
||||
struct UnkSaveSubstruct_3b98 *sp14 = calloc(20, sizeof(struct UnkSaveSubstruct_3b98));
|
||||
s32 nextSpace;
|
||||
s32 connectedTrainerRecordIndices[5];
|
||||
struct TrainerNameRecord *newRecords = calloc(20, sizeof(struct TrainerNameRecord));
|
||||
|
||||
// Check if we already have a record saved for connected trainers.
|
||||
for (i = 0; i < GetLinkPlayerCount(); i++)
|
||||
{
|
||||
sp0[i] = -1;
|
||||
connectedTrainerRecordIndices[i] = -1;
|
||||
for (j = 0; j < 20; j++)
|
||||
{
|
||||
if ((u16)gLinkPlayers[i].trainerId == gSaveBlock1Ptr->unk_3B98[j].trainerId && StringCompare(gLinkPlayers[i].name, gSaveBlock1Ptr->unk_3B98[j].trainerName) == 0)
|
||||
if ((u16)gLinkPlayers[i].trainerId == gSaveBlock1Ptr->trainerNameRecords[j].trainerId && StringCompare(gLinkPlayers[i].name, gSaveBlock1Ptr->trainerNameRecords[j].trainerName) == 0)
|
||||
{
|
||||
sp0[i] = j;
|
||||
connectedTrainerRecordIndices[i] = j;
|
||||
}
|
||||
}
|
||||
}
|
||||
cnt = 0;
|
||||
|
||||
// Save the connected trainers first, at the top of the list.
|
||||
nextSpace = 0;
|
||||
for (i = 0; i < GetLinkPlayerCount(); i++)
|
||||
{
|
||||
if (i != GetMultiplayerId() && gLinkPlayers[i].language != LANGUAGE_JAPANESE)
|
||||
{
|
||||
sub_800E378(&sp14[cnt], (u16)gLinkPlayers[i].trainerId, gLinkPlayers[i].name);
|
||||
if (sp0[i] >= 0)
|
||||
CopyTrainerRecord(&newRecords[nextSpace], (u16)gLinkPlayers[i].trainerId, gLinkPlayers[i].name);
|
||||
|
||||
// If we already had a record for this trainer, wipe it so that the next step doesn't duplicate it.
|
||||
if (connectedTrainerRecordIndices[i] >= 0)
|
||||
{
|
||||
memset(gSaveBlock1Ptr->unk_3B98[sp0[i]].trainerName, 0, 8);
|
||||
memset(gSaveBlock1Ptr->trainerNameRecords[connectedTrainerRecordIndices[i]].trainerName, 0, 8);
|
||||
}
|
||||
cnt++;
|
||||
nextSpace++;
|
||||
}
|
||||
}
|
||||
|
||||
// Copy all non-empty records to the new list, in the order they appear on the old list. If the list is full,
|
||||
// the last (oldest) records will be dropped.
|
||||
for (i = 0; i < 20; i++)
|
||||
{
|
||||
if (sub_800E388(gSaveBlock1Ptr->unk_3B98[i].trainerName))
|
||||
if (NameIsNotEmpty(gSaveBlock1Ptr->trainerNameRecords[i].trainerName))
|
||||
{
|
||||
sub_800E378(&sp14[cnt], gSaveBlock1Ptr->unk_3B98[i].trainerId, gSaveBlock1Ptr->unk_3B98[i].trainerName);
|
||||
if (++cnt >= 20)
|
||||
CopyTrainerRecord(&newRecords[nextSpace], gSaveBlock1Ptr->trainerNameRecords[i].trainerId, gSaveBlock1Ptr->trainerNameRecords[i].trainerName);
|
||||
if (++nextSpace >= 20)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
memcpy(gSaveBlock1Ptr->unk_3B98, sp14, 20 * sizeof(struct UnkSaveSubstruct_3b98));
|
||||
free(sp14);
|
||||
|
||||
// Finalize the new list, and clean up.
|
||||
memcpy(gSaveBlock1Ptr->trainerNameRecords, newRecords, 20 * sizeof(struct TrainerNameRecord));
|
||||
free(newRecords);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2422,11 +2435,11 @@ bool32 sub_800E540(u16 id, u8 *name)
|
||||
|
||||
for (i = 0; i < 20; i++)
|
||||
{
|
||||
if (StringCompare(gSaveBlock1Ptr->unk_3B98[i].trainerName, name) == 0 && gSaveBlock1Ptr->unk_3B98[i].trainerId == id)
|
||||
if (StringCompare(gSaveBlock1Ptr->trainerNameRecords[i].trainerName, name) == 0 && gSaveBlock1Ptr->trainerNameRecords[i].trainerId == id)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
if (!sub_800E388(gSaveBlock1Ptr->unk_3B98[i].trainerName))
|
||||
if (!NameIsNotEmpty(gSaveBlock1Ptr->trainerNameRecords[i].trainerName))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
@@ -2434,14 +2447,14 @@ bool32 sub_800E540(u16 id, u8 *name)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void sub_800E5AC(void)
|
||||
void WipeTrainerNameRecords(void)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 20; i++)
|
||||
{
|
||||
gSaveBlock1Ptr->unk_3B98[i].trainerId = 0;
|
||||
CpuFill16(0, gSaveBlock1Ptr->unk_3B98[i].trainerName, 8);
|
||||
gSaveBlock1Ptr->trainerNameRecords[i].trainerId = 0;
|
||||
CpuFill16(0, gSaveBlock1Ptr->trainerNameRecords[i].trainerName, 8);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1278,7 +1278,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();
|
||||
@@ -1818,7 +1818,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();
|
||||
|
||||
@@ -30,31 +30,25 @@
|
||||
#include "apprentice.h"
|
||||
#include "frontier_util.h"
|
||||
#include "constants/maps.h"
|
||||
#include "pokedex.h"
|
||||
#include "save.h"
|
||||
#include "link_rfu.h"
|
||||
#include "main.h"
|
||||
#include "contest.h"
|
||||
#include "item_menu.h"
|
||||
#include "pokemon_storage_system.h"
|
||||
#include "decoration_inventory.h"
|
||||
#include "secret_base.h"
|
||||
#include "player_pc.h"
|
||||
#include "field_specials.h"
|
||||
|
||||
extern u16 gSaveFileStatus;
|
||||
extern u8 gUnknown_030060B0;
|
||||
|
||||
// TODO: replace those declarations with file headers
|
||||
extern u16 GetGeneratedTrainerIdLower(void);
|
||||
extern void ClearContestWinnerPicsInContestHall(void);
|
||||
extern void sub_80BB358(void);
|
||||
extern void ResetBagScrollPositions(void);
|
||||
extern void ResetGabbyAndTy(void);
|
||||
extern void ResetSecretBases(void);
|
||||
extern void ResetLinkContestBoolean(void);
|
||||
extern void sub_8052DA8(void);
|
||||
extern void ResetPokemonStorageSystem(void);
|
||||
extern void NewGameInitPCItems(void);
|
||||
extern void ClearDecorationInventories(void);
|
||||
extern void ResetFanClub(void);
|
||||
extern void copy_strings_to_sav1(void);
|
||||
extern void sub_801AFD8(void);
|
||||
extern void sub_800E5AC(void);
|
||||
extern void ResetContestLinkResults(void);
|
||||
extern void ResetPokeJumpResults(void);
|
||||
extern void SetBerryPowder(u32* powder, u32 newValue);
|
||||
|
||||
extern const u8 EventScript_2715DE[];
|
||||
extern const u8 EventScript_ResetAllMapFlags[];
|
||||
|
||||
// this file's functions
|
||||
static void ClearFrontierRecord(void);
|
||||
@@ -112,7 +106,7 @@ static void SetDefaultOptions(void)
|
||||
|
||||
static void ClearPokedexFlags(void)
|
||||
{
|
||||
gUnknown_030060B0 = 0;
|
||||
gUnusedPokedexU8 = 0;
|
||||
memset(&gSaveBlock2Ptr->pokedex.owned, 0, sizeof(gSaveBlock2Ptr->pokedex.owned));
|
||||
memset(&gSaveBlock2Ptr->pokedex.seen, 0, sizeof(gSaveBlock2Ptr->pokedex.seen));
|
||||
}
|
||||
@@ -130,8 +124,8 @@ static void ClearFrontierRecord(void)
|
||||
{
|
||||
CpuFill32(0, &gSaveBlock2Ptr->frontier, sizeof(gSaveBlock2Ptr->frontier));
|
||||
|
||||
gSaveBlock2Ptr->frontier.field_EE1[0][0] = EOS;
|
||||
gSaveBlock2Ptr->frontier.field_EE1[1][0] = EOS;
|
||||
gSaveBlock2Ptr->frontier.opponentName[0][0] = EOS;
|
||||
gSaveBlock2Ptr->frontier.opponentName[1][0] = EOS;
|
||||
}
|
||||
|
||||
static void WarpToTruck(void)
|
||||
@@ -149,7 +143,7 @@ void Sav2_ClearSetDefault(void)
|
||||
void ResetMenuAndMonGlobals(void)
|
||||
{
|
||||
gDifferentSaveFile = 0;
|
||||
sub_80BB358();
|
||||
ResetPokedexScrollPositions();
|
||||
ZeroPlayerPartyMons();
|
||||
ZeroEnemyPartyMons();
|
||||
ResetBagScrollPositions();
|
||||
@@ -203,7 +197,7 @@ void NewGameInitData(void)
|
||||
ResetFanClub();
|
||||
ResetLotteryCorner();
|
||||
WarpToTruck();
|
||||
ScriptContext2_RunNewScript(EventScript_2715DE);
|
||||
ScriptContext2_RunNewScript(EventScript_ResetAllMapFlags);
|
||||
ResetMiniGamesResults();
|
||||
copy_strings_to_sav1();
|
||||
SetLilycoveLady();
|
||||
@@ -211,7 +205,7 @@ void NewGameInitData(void)
|
||||
ClearRankingHallRecords();
|
||||
InitMatchCallCounters();
|
||||
sub_801AFD8();
|
||||
sub_800E5AC();
|
||||
WipeTrainerNameRecords();
|
||||
ResetTrainerHillResults();
|
||||
ResetContestLinkResults();
|
||||
}
|
||||
|
||||
@@ -37,7 +37,8 @@ static EWRAM_DATA u8 gUnknown_02039B52 = 0;
|
||||
static EWRAM_DATA struct PokedexListItem *sPokedexListItem = NULL;
|
||||
|
||||
// IWRAM common
|
||||
u8 gUnknown_030060B0;
|
||||
// This is written to, but never read.
|
||||
u8 gUnusedPokedexU8;
|
||||
void (*gUnknown_030060B4)(void);
|
||||
|
||||
struct PokedexOption
|
||||
@@ -1225,7 +1226,7 @@ void ResetPokedex(void)
|
||||
|
||||
gUnknown_02039B50 = 0;
|
||||
gUnknown_02039B52 = 64;
|
||||
gUnknown_030060B0 = 0;
|
||||
gUnusedPokedexU8 = 0;
|
||||
gSaveBlock2Ptr->pokedex.mode = DEX_MODE_HOENN;
|
||||
gSaveBlock2Ptr->pokedex.order = 0;
|
||||
gSaveBlock2Ptr->pokedex.nationalMagic = 0;
|
||||
@@ -1243,7 +1244,7 @@ void ResetPokedex(void)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80BB358(void)
|
||||
void ResetPokedexScrollPositions(void)
|
||||
{
|
||||
gUnknown_02039B50 = 0;
|
||||
gUnknown_02039B52 = 64;
|
||||
@@ -3539,8 +3540,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 +3631,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 +3963,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 +4042,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 +4076,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 +5211,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
|
||||
|
||||
@@ -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)
|
||||
|
||||
1211
src/pokenav.c
Normal file
1211
src/pokenav.c
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1087,7 +1087,7 @@ void GetPlayerHallRecords(struct PlayerHallRecords *dst)
|
||||
CopyTrainerId(dst->twoPlayers[j].id1, gSaveBlock2Ptr->playerTrainerId);
|
||||
CopyTrainerId(dst->twoPlayers[j].id2, gSaveBlock2Ptr->frontier.field_EF1[j]);
|
||||
StringCopy(dst->twoPlayers[j].name1, gSaveBlock2Ptr->playerName);
|
||||
StringCopy(dst->twoPlayers[j].name2, gSaveBlock2Ptr->frontier.field_EE1[j]);
|
||||
StringCopy(dst->twoPlayers[j].name2, gSaveBlock2Ptr->frontier.opponentName[j]);
|
||||
}
|
||||
|
||||
for (i = 0; i < 2; i++)
|
||||
|
||||
@@ -1687,7 +1687,7 @@ void sub_801440C(u8 taskId)
|
||||
case 9 ... 11:
|
||||
case 13:
|
||||
case 15:
|
||||
sub_800E3A8();
|
||||
RecordMixTrainerNames();
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1800,12 +1800,12 @@ void sub_8014790(u8 taskId)
|
||||
sendBuff[1] = GetMonData(&gPlayerParty[gSelectedOrderFromParty[1] - 1], MON_DATA_SPECIES, NULL);
|
||||
gMain.savedCallback = NULL;
|
||||
data[0] = 4;
|
||||
sub_800E3A8();
|
||||
RecordMixTrainerNames();
|
||||
ResetBlockReceivedFlags();
|
||||
break;
|
||||
case 16:
|
||||
case 23 ... 27:
|
||||
sub_800E3A8();
|
||||
RecordMixTrainerNames();
|
||||
DestroyTask(taskId);
|
||||
default:
|
||||
EnableBothScriptContexts();
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user