static variables to hall of fame c

This commit is contained in:
DizzyEggg
2017-11-06 18:57:22 +01:00
parent a729e9838e
commit 19d9cff2ff
4 changed files with 51 additions and 71 deletions
+1 -1
View File
@@ -26,7 +26,7 @@ sub_81754DC: @ 81754DC
ands r0, r1 ands r0, r1
cmp r0, 0 cmp r0, 0
beq _08175522 beq _08175522
ldr r0, =HasHallOfFameRecords ldr r0, =gHasHallOfFameRecords
ldrb r0, [r0] ldrb r0, [r0]
cmp r0, 0 cmp r0, 0
beq _08175522 beq _08175522
+2 -2
View File
@@ -4043,12 +4043,12 @@ sub_8137734: @ 8137734
lsrs r1, r0, 24 lsrs r1, r0, 24
cmp r1, 0x1 cmp r1, 0x1
bne _08137760 bne _08137760
ldr r0, =HasHallOfFameRecords ldr r0, =gHasHallOfFameRecords
strb r1, [r0] strb r1, [r0]
b _0813776C b _0813776C
.pool .pool
_08137760: _08137760:
ldr r1, =HasHallOfFameRecords ldr r1, =gHasHallOfFameRecords
movs r0, 0 movs r0, 0
strb r0, [r1] strb r0, [r1]
adds r0, r4, 0 adds r0, r4, 0
+46 -62
View File
@@ -39,35 +39,19 @@ struct HallofFameMons
struct HallofFameMon mons[6]; struct HallofFameMon mons[6];
}; };
extern struct HallofFameMons *gHofMonsPtr;
struct HofGfx struct HofGfx
{ {
u16 state; u16 state;
u8 field_2; u8 field_2[16];
u8 field_3;
u8 field_4;
u8 field_5;
u8 field_6;
u8 field_7;
u8 field_8;
u8 field_9;
u8 field_A;
u8 field_B;
u8 field_C;
u8 field_D;
u8 field_E;
u8 field_F;
u8 field_10;
u8 field_11;
u8 tilemap1[0x1000]; u8 tilemap1[0x1000];
u8 tilemap2[0x1000]; u8 tilemap2[0x1000];
}; };
extern struct HofGfx *gUnknown_0203BCDC; static EWRAM_DATA struct HallofFameMons *sHofMonsPtr = NULL;
static EWRAM_DATA struct HofGfx *sHofGfxPtr = NULL;
extern bool8 gHasHallOfFameRecords;
extern u32 gUnknown_0203BCD4; extern u32 gUnknown_0203BCD4;
extern bool8 HasHallOfFameRecords;
extern u8 gDecompressionBuffer[]; extern u8 gDecompressionBuffer[];
extern struct MusicPlayerInfo gMPlay_BGM; extern struct MusicPlayerInfo gMPlay_BGM;
extern MainCallback gGameContinueCallback; extern MainCallback gGameContinueCallback;
@@ -532,7 +516,7 @@ static bool8 InitHallOfFameScreen(void)
case 0: case 0:
SetVBlankCallback(NULL); SetVBlankCallback(NULL);
ClearVramOamPltt_LoadHofPal(); ClearVramOamPltt_LoadHofPal();
gUnknown_0203BCDC = AllocZeroed(sizeof(*gUnknown_0203BCDC)); sHofGfxPtr = AllocZeroed(sizeof(*sHofGfxPtr));
gMain.state = 1; gMain.state = 1;
break; break;
case 1: case 1:
@@ -544,7 +528,7 @@ static bool8 InitHallOfFameScreen(void)
SetGpuReg(REG_OFFSET_BLDALPHA, 0x710); SetGpuReg(REG_OFFSET_BLDALPHA, 0x710);
SetGpuReg(REG_OFFSET_BLDY, 0); SetGpuReg(REG_OFFSET_BLDY, 0);
sub_8174FAC(); sub_8174FAC();
gUnknown_0203BCDC->state = 0; sHofGfxPtr->state = 0;
gMain.state++; gMain.state++;
break; break;
case 3: case 3:
@@ -581,7 +565,7 @@ void CB2_DoHallOfFameScreen(void)
{ {
u8 taskId = CreateTask(Task_Hof_InitMonData, 0); u8 taskId = CreateTask(Task_Hof_InitMonData, 0);
gTasks[taskId].tDontSaveData = FALSE; gTasks[taskId].tDontSaveData = FALSE;
gHofMonsPtr = AllocZeroed(sizeof(*gHofMonsPtr)); sHofMonsPtr = AllocZeroed(sizeof(*sHofMonsPtr));
} }
} }
@@ -591,7 +575,7 @@ void CB2_DoHallOfFameScreenDontSaveData(void)
{ {
u8 taskId = CreateTask(Task_Hof_InitMonData, 0); u8 taskId = CreateTask(Task_Hof_InitMonData, 0);
gTasks[taskId].tDontSaveData = TRUE; gTasks[taskId].tDontSaveData = TRUE;
gHofMonsPtr = AllocZeroed(sizeof(*gHofMonsPtr)); sHofMonsPtr = AllocZeroed(sizeof(*sHofMonsPtr));
} }
} }
@@ -606,24 +590,24 @@ static void Task_Hof_InitMonData(u8 taskId)
u8 nick[POKEMON_NAME_LENGTH + 2]; u8 nick[POKEMON_NAME_LENGTH + 2];
if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES)) if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES))
{ {
gHofMonsPtr->mons[i].species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2); sHofMonsPtr->mons[i].species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2);
gHofMonsPtr->mons[i].tid = GetMonData(&gPlayerParty[i], MON_DATA_OT_ID); sHofMonsPtr->mons[i].tid = GetMonData(&gPlayerParty[i], MON_DATA_OT_ID);
gHofMonsPtr->mons[i].personality = GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY); sHofMonsPtr->mons[i].personality = GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY);
gHofMonsPtr->mons[i].lvl = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL); sHofMonsPtr->mons[i].lvl = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL);
GetMonData(&gPlayerParty[i], MON_DATA_NICKNAME, nick); GetMonData(&gPlayerParty[i], MON_DATA_NICKNAME, nick);
for (j = 0; j < POKEMON_NAME_LENGTH; j++) for (j = 0; j < POKEMON_NAME_LENGTH; j++)
{ {
gHofMonsPtr->mons[i].nick[j] = nick[j]; sHofMonsPtr->mons[i].nick[j] = nick[j];
} }
gTasks[taskId].tPokesNumber++; gTasks[taskId].tPokesNumber++;
} }
else else
{ {
gHofMonsPtr->mons[i].species = 0; sHofMonsPtr->mons[i].species = 0;
gHofMonsPtr->mons[i].tid = 0; sHofMonsPtr->mons[i].tid = 0;
gHofMonsPtr->mons[i].personality = 0; sHofMonsPtr->mons[i].personality = 0;
gHofMonsPtr->mons[i].lvl = 0; sHofMonsPtr->mons[i].lvl = 0;
gHofMonsPtr->mons[i].nick[0] = EOS; sHofMonsPtr->mons[i].nick[0] = EOS;
} }
} }
@@ -647,7 +631,7 @@ static void Task_Hof_InitTeamSaveData(u8 taskId)
u16 i; u16 i;
struct HallofFameMons* lastSavedTeam = (struct HallofFameMons*)(gDecompressionBuffer); struct HallofFameMons* lastSavedTeam = (struct HallofFameMons*)(gDecompressionBuffer);
if (!HasHallOfFameRecords) if (!gHasHallOfFameRecords)
{ {
memset(gDecompressionBuffer, 0, 0x2000); memset(gDecompressionBuffer, 0, 0x2000);
} }
@@ -673,7 +657,7 @@ static void Task_Hof_InitTeamSaveData(u8 taskId)
} }
lastSavedTeam--; lastSavedTeam--;
} }
*lastSavedTeam = *gHofMonsPtr; *lastSavedTeam = *sHofMonsPtr;
sub_81973C4(0, 0); sub_81973C4(0, 0);
AddTextPrinterParametrized(0, 1, gText_SavingDontTurnOffPower, 0, NULL, 2, 1, 3); AddTextPrinterParametrized(0, 1, gText_SavingDontTurnOffPower, 0, NULL, 2, 1, 3);
@@ -690,10 +674,10 @@ static void Task_Hof_TrySaveData(u8 taskId)
UnsetBgTilemapBuffer(3); UnsetBgTilemapBuffer(3);
FreeAllWindowBuffers(); FreeAllWindowBuffers();
if (gUnknown_0203BCDC != NULL) if (sHofGfxPtr != NULL)
FREE_AND_SET_NULL(gUnknown_0203BCDC); FREE_AND_SET_NULL(sHofGfxPtr);
if (gHofMonsPtr != NULL) if (sHofMonsPtr != NULL)
FREE_AND_SET_NULL(gHofMonsPtr); FREE_AND_SET_NULL(sHofMonsPtr);
DestroyTask(taskId); DestroyTask(taskId);
} }
@@ -728,7 +712,7 @@ static void Task_Hof_DisplayMon(u8 taskId)
s16 xPos, yPos, field4, field6; s16 xPos, yPos, field4, field6;
u16 currMonId = gTasks[taskId].tDisplayedMonId; u16 currMonId = gTasks[taskId].tDisplayedMonId;
struct HallofFameMon* currMon = &gHofMonsPtr->mons[currMonId]; struct HallofFameMon* currMon = &sHofMonsPtr->mons[currMonId];
if (gTasks[taskId].tPokesNumber > 3) if (gTasks[taskId].tPokesNumber > 3)
{ {
@@ -762,7 +746,7 @@ static void Task_Hof_DisplayMon(u8 taskId)
static void Task_Hof_PrintMonInfoAfterAnimating(u8 taskId) static void Task_Hof_PrintMonInfoAfterAnimating(u8 taskId)
{ {
u16 currMonId = gTasks[taskId].tDisplayedMonId; u16 currMonId = gTasks[taskId].tDisplayedMonId;
struct HallofFameMon* currMon = &gHofMonsPtr->mons[currMonId]; struct HallofFameMon* currMon = &sHofMonsPtr->mons[currMonId];
struct Sprite *monSprite = &gSprites[gTasks[taskId].tMonSpriteId(currMonId)]; struct Sprite *monSprite = &gSprites[gTasks[taskId].tMonSpriteId(currMonId)];
if (monSprite->callback == SpriteCallbackDummy) if (monSprite->callback == SpriteCallbackDummy)
@@ -777,7 +761,7 @@ static void Task_Hof_PrintMonInfoAfterAnimating(u8 taskId)
static void Task_Hof_TryDisplayAnotherMon(u8 taskId) static void Task_Hof_TryDisplayAnotherMon(u8 taskId)
{ {
u16 currPokeID = gTasks[taskId].tDisplayedMonId; u16 currPokeID = gTasks[taskId].tDisplayedMonId;
struct HallofFameMon* currMon = &gHofMonsPtr->mons[currPokeID]; struct HallofFameMon* currMon = &sHofMonsPtr->mons[currPokeID];
if (gTasks[taskId].tFrameCount != 0) if (gTasks[taskId].tFrameCount != 0)
{ {
@@ -931,10 +915,10 @@ static void Task_Hof_HandleExit(u8 taskId)
ResetBgsAndClearDma3BusyFlags(0); ResetBgsAndClearDma3BusyFlags(0);
DestroyTask(taskId); DestroyTask(taskId);
if (gUnknown_0203BCDC != NULL) if (sHofGfxPtr != NULL)
FREE_AND_SET_NULL(gUnknown_0203BCDC); FREE_AND_SET_NULL(sHofGfxPtr);
if (gHofMonsPtr != NULL) if (sHofMonsPtr != NULL)
FREE_AND_SET_NULL(gHofMonsPtr); FREE_AND_SET_NULL(sHofMonsPtr);
SetCallback2AfterHallOfFameDisplay(); SetCallback2AfterHallOfFameDisplay();
} }
@@ -966,7 +950,7 @@ void CB2_DoHallOfFamePC(void)
default: default:
SetVBlankCallback(NULL); SetVBlankCallback(NULL);
ClearVramOamPltt_LoadHofPal(); ClearVramOamPltt_LoadHofPal();
gUnknown_0203BCDC = AllocZeroed(sizeof(*gUnknown_0203BCDC)); sHofGfxPtr = AllocZeroed(sizeof(*sHofGfxPtr));
gMain.state = 1; gMain.state = 1;
break; break;
case 1: case 1:
@@ -1012,7 +996,7 @@ void CB2_DoHallOfFamePC(void)
gTasks[taskId].tMonSpriteId(i) = 0xFF; gTasks[taskId].tMonSpriteId(i) = 0xFF;
} }
gHofMonsPtr = AllocZeroed(0x2000); sHofMonsPtr = AllocZeroed(0x2000);
SetMainCallback2(CB2_HallOfFame); SetMainCallback2(CB2_HallOfFame);
} }
break; break;
@@ -1031,8 +1015,8 @@ static void Task_HofPC_CopySaveData(u8 taskId)
u16 i; u16 i;
struct HallofFameMons* savedTeams; struct HallofFameMons* savedTeams;
CpuCopy16(gDecompressionBuffer, gHofMonsPtr, 0x2000); CpuCopy16(gDecompressionBuffer, sHofMonsPtr, 0x2000);
savedTeams = gHofMonsPtr; savedTeams = sHofMonsPtr;
for (i = 0; i < HALL_OF_FAME_MAX_TEAMS; i++, savedTeams++) for (i = 0; i < HALL_OF_FAME_MAX_TEAMS; i++, savedTeams++)
{ {
if (savedTeams->mons[0].species == SPECIES_NONE) if (savedTeams->mons[0].species == SPECIES_NONE)
@@ -1052,7 +1036,7 @@ static void Task_HofPC_CopySaveData(u8 taskId)
static void Task_HofPC_DrawSpritesPrintText(u8 taskId) static void Task_HofPC_DrawSpritesPrintText(u8 taskId)
{ {
struct HallofFameMons* savedTeams = gHofMonsPtr; struct HallofFameMons* savedTeams = sHofMonsPtr;
struct HallofFameMon* currMon; struct HallofFameMon* currMon;
u16 i; u16 i;
@@ -1118,7 +1102,7 @@ static void Task_HofPC_DrawSpritesPrintText(u8 taskId)
static void Task_HofPC_PrintMonInfo(u8 taskId) static void Task_HofPC_PrintMonInfo(u8 taskId)
{ {
struct HallofFameMons* savedTeams = gHofMonsPtr; struct HallofFameMons* savedTeams = sHofMonsPtr;
struct HallofFameMon* currMon; struct HallofFameMon* currMon;
u16 i; u16 i;
u16 currMonID; u16 currMonID;
@@ -1239,10 +1223,10 @@ static void Task_HofPC_HandleExit(u8 taskId)
ResetBgsAndClearDma3BusyFlags(0); ResetBgsAndClearDma3BusyFlags(0);
DestroyTask(taskId); DestroyTask(taskId);
if (gUnknown_0203BCDC != NULL) if (sHofGfxPtr != NULL)
FREE_AND_SET_NULL(gUnknown_0203BCDC); FREE_AND_SET_NULL(sHofGfxPtr);
if (gHofMonsPtr != NULL) if (sHofMonsPtr != NULL)
FREE_AND_SET_NULL(gHofMonsPtr); FREE_AND_SET_NULL(sHofMonsPtr);
sub_8137C3C(); sub_8137C3C();
} }
@@ -1453,8 +1437,8 @@ static void sub_8174FAC(void)
{ {
ResetBgsAndClearDma3BusyFlags(0); ResetBgsAndClearDma3BusyFlags(0);
InitBgsFromTemplates(0, sHof_BgTemplates, ARRAY_COUNT(sHof_BgTemplates)); InitBgsFromTemplates(0, sHof_BgTemplates, ARRAY_COUNT(sHof_BgTemplates));
SetBgTilemapBuffer(1, gUnknown_0203BCDC->tilemap1); SetBgTilemapBuffer(1, sHofGfxPtr->tilemap1);
SetBgTilemapBuffer(3, gUnknown_0203BCDC->tilemap2); SetBgTilemapBuffer(3, sHofGfxPtr->tilemap2);
ChangeBgX(0, 0, 0); ChangeBgX(0, 0, 0);
ChangeBgY(0, 0, 0); ChangeBgY(0, 0, 0);
ChangeBgX(1, 0, 0); ChangeBgX(1, 0, 0);
@@ -1465,7 +1449,7 @@ static void sub_8174FAC(void)
static bool8 sub_8175024(void) static bool8 sub_8175024(void)
{ {
switch (gUnknown_0203BCDC->state) switch (sHofGfxPtr->state)
{ {
case 0: case 0:
decompress_and_copy_tile_data_to_vram(1, sHallOfFame_Gfx, 0, 0, 0); decompress_and_copy_tile_data_to_vram(1, sHallOfFame_Gfx, 0, 0, 0);
@@ -1492,11 +1476,11 @@ static bool8 sub_8175024(void)
ShowBg(0); ShowBg(0);
ShowBg(1); ShowBg(1);
ShowBg(3); ShowBg(3);
gUnknown_0203BCDC->state = 0; sHofGfxPtr->state = 0;
return FALSE; return FALSE;
} }
gUnknown_0203BCDC->state++; sHofGfxPtr->state++;
return TRUE; return TRUE;
} }
+2 -6
View File
@@ -1404,11 +1404,7 @@ gUnknown_0203BCD0: @ 203BCD0
gUnknown_0203BCD4: @ 203BCD4 gUnknown_0203BCD4: @ 203BCD4
.space 0x4 .space 0x4
gHofMonsPtr: @ 203BCD8 .include "src/hall_of_fame.o"
.space 0x4
gUnknown_0203BCDC: @ 203BCDC
.space 0x4
gUnknown_0203BCE0: @ 203BCE0 gUnknown_0203BCE0: @ 203BCE0
.space 0x2 .space 0x2
@@ -1416,7 +1412,7 @@ gUnknown_0203BCE0: @ 203BCE0
gUnknown_0203BCE2: @ 203BCE2 gUnknown_0203BCE2: @ 203BCE2
.space 0x2 .space 0x2
HasHallOfFameRecords: @ 203BCE4 gHasHallOfFameRecords: @ 203BCE4
.space 0x1 .space 0x1
gUnknown_0203BCE5: @ 203BCE5 gUnknown_0203BCE5: @ 203BCE5