diff options
author | PikalaxALT <PikalaxALT@users.noreply.github.com> | 2020-04-12 10:12:37 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-12 10:12:37 -0400 |
commit | 6001e107993d1da69decdf479abf8a661ad57dda (patch) | |
tree | 9a430f0b70e0a24965378724f1bd28cd1a193dc1 /src | |
parent | 2880cf2a51ea36fa36f00d9ecf07177e5955c882 (diff) | |
parent | 7a562d6bae78fd7c62ed2f804fd8dcc555d85d18 (diff) |
Merge pull request #321 from PikalaxALT/modern_gcc
Get pokefirered_modern to build
Diffstat (limited to 'src')
101 files changed, 2087 insertions, 1793 deletions
diff --git a/src/battle_anim.c b/src/battle_anim.c index af387bb08..41f44a42c 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -2257,8 +2257,8 @@ void MoveBattlerSpriteToBG(u8 battlerId, bool8 toBG_2) if (!toBG_2) { - RequestDma3Fill(0, (void*)(BG_SCREEN_ADDR(8)), 0x2000, 1); - RequestDma3Fill(0, (void*)(BG_SCREEN_ADDR(28)), 0x1000, 1); + RequestDma3Fill(0, (void*)(BG_SCREEN_ADDR(8)), 0x2000, DMA3_32BIT); + RequestDma3Fill(0, (void*)(BG_SCREEN_ADDR(28)), 0x1000, DMA3_32BIT); sub_80752A0(&animBg); CpuFill16(toBG_2, animBg.bgTiles, 0x1000); CpuFill16(toBG_2, animBg.bgTilemap, 0x800); @@ -2282,8 +2282,8 @@ void MoveBattlerSpriteToBG(u8 battlerId, bool8 toBG_2) } else { - RequestDma3Fill(0, (void*)(BG_SCREEN_ADDR(12)), 0x2000, 1); - RequestDma3Fill(0, (void*)(BG_SCREEN_ADDR(30)), 0x1000, 1); + RequestDma3Fill(0, (void*)(BG_SCREEN_ADDR(12)), 0x2000, DMA3_32BIT); + RequestDma3Fill(0, (void*)(BG_SCREEN_ADDR(30)), 0x1000, DMA3_32BIT); sub_80752C8(&animBg, 2); CpuFill16(0, animBg.bgTiles + 0x1000, 0x1000); CpuFill16(0, animBg.bgTilemap + 0x400, 0x800); @@ -2840,7 +2840,7 @@ s8 BattleAnimAdjustPanning2(s8 pan) return pan; } -s16 KeepPanInRange(s16 panArg, int oldPan) +s16 KeepPanInRange(s16 panArg, s32 oldPan) { s16 pan = panArg; diff --git a/src/battle_anim_effects_2.c b/src/battle_anim_effects_2.c index 510b8eabb..94423bab9 100644 --- a/src/battle_anim_effects_2.c +++ b/src/battle_anim_effects_2.c @@ -1532,7 +1532,7 @@ void AnimAirWaveProjectile(struct Sprite *sprite) { sprite->data[0] = 8; task->data[5] = 4; - a = sub_80D8B90(0x1000); + a = MathUtil_Inv16(0x1000); sprite->pos1.x += sprite->pos2.x; sprite->pos1.y += sprite->pos2.y; sprite->pos2.y = 0; @@ -1551,8 +1551,8 @@ void AnimAirWaveProjectile(struct Sprite *sprite) sprite->data[1] = 0; sprite->data[6] = 0; sprite->data[5] = 0; - sprite->data[3] = sub_80D8AA0(sub_80D8AA0(b, a), sub_80D8B90(0x1C0)); - sprite->data[4] = sub_80D8AA0(sub_80D8AA0(c, a), sub_80D8B90(0x1C0)); + sprite->data[3] = MathUtil_Mul16(MathUtil_Mul16(b, a), MathUtil_Inv16(0x1C0)); + sprite->data[4] = MathUtil_Mul16(MathUtil_Mul16(c, a), MathUtil_Inv16(0x1C0)); sprite->callback = AnimAirWaveProjectile_Step1; } } @@ -1643,18 +1643,18 @@ void AnimTask_AirCutterProjectile(u8 taskId) else xDiff = attackerX - targetX; - gTasks[taskId].data[5] = sub_80D8AA0(xDiff, sub_80D8B90(gBattleAnimArgs[2] & ~1)); - gTasks[taskId].data[6] = sub_80D8AA0(gTasks[taskId].data[5], 0x80); + gTasks[taskId].data[5] = MathUtil_Mul16(xDiff, MathUtil_Inv16(gBattleAnimArgs[2] & ~1)); + gTasks[taskId].data[6] = MathUtil_Mul16(gTasks[taskId].data[5], 0x80); gTasks[taskId].data[7] = gBattleAnimArgs[2]; if (targetY >= attackerY) { yDiff = targetY - attackerY; - gTasks[taskId].data[8] = sub_80D8AA0(yDiff, sub_80D8B90(gTasks[taskId].data[5])) & ~1; + gTasks[taskId].data[8] = MathUtil_Mul16(yDiff, MathUtil_Inv16(gTasks[taskId].data[5])) & ~1; } else { yDiff = attackerY - targetY; - gTasks[taskId].data[8] = sub_80D8AA0(yDiff, sub_80D8B90(gTasks[taskId].data[5])) | 1; + gTasks[taskId].data[8] = MathUtil_Mul16(yDiff, MathUtil_Inv16(gTasks[taskId].data[5])) | 1; } gTasks[taskId].data[3] = gBattleAnimArgs[3]; diff --git a/src/battle_anim_mon_movement.c b/src/battle_anim_mon_movement.c index ffd66871c..8ed996993 100644 --- a/src/battle_anim_mon_movement.c +++ b/src/battle_anim_mon_movement.c @@ -4,6 +4,7 @@ #include "task.h" #include "trig.h" +#undef abs #define abs(x) ((x) < 0 ? -(x) : (x)) static void AnimTask_ShakeMonStep(u8 taskId); diff --git a/src/battle_anim_special.c b/src/battle_anim_special.c index 296e670bd..c753f5dc4 100644 --- a/src/battle_anim_special.c +++ b/src/battle_anim_special.c @@ -2027,7 +2027,7 @@ void sub_80F15C8(u8 taskId) break; case 2: spriteId = gBattlerSpriteIds[gBattleAnimAttacker]; - RequestDma3Fill(0, (void *)OBJ_VRAM0 + gSprites[spriteId].oam.tileNum * TILE_SIZE_4BPP, 0x800, 1); + RequestDma3Fill(0, (void *)OBJ_VRAM0 + gSprites[spriteId].oam.tileNum * TILE_SIZE_4BPP, 0x800, DMA3_32BIT); ClearBehindSubstituteBit(gBattleAnimAttacker); DestroyAnimVisualTask(taskId); break; diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 97e833ffd..f65ec46c3 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -796,7 +796,7 @@ static void sub_802F610(void) { if (gWirelessCommType == 0) { - if (gReceivedRemoteLinkPlayers == 0) + if (!gReceivedRemoteLinkPlayers) { m4aSongNumStop(SE_HINSI); gMain.inBattle = 0; diff --git a/src/battle_interface.c b/src/battle_interface.c index 107999045..7a8f4eb67 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -16,6 +16,7 @@ destWidth - w; \ }) +#undef abs #define abs(a) ((a) < 0 ? -(a) : (a)) #define Q_24_8(n) ((s32)((n) * 256)) diff --git a/src/battle_main.c b/src/battle_main.c index f91386e6e..04a4a2acc 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -935,7 +935,7 @@ static void CB2_HandleStartBattle(void) case 1: if (gBattleTypeFlags & BATTLE_TYPE_LINK) { - if (gReceivedRemoteLinkPlayers != 0) + if (gReceivedRemoteLinkPlayers) { if (IsLinkTaskFinished()) { @@ -1107,7 +1107,7 @@ static void CB2_PreInitMultiBattle(void) switch (gBattleCommunication[MULTIUSE_STATE]) { case 0: - if (gReceivedRemoteLinkPlayers != 0 && IsLinkTaskFinished()) + if (gReceivedRemoteLinkPlayers && IsLinkTaskFinished()) { sub_80108C4(); SendBlock(bitmask_all_link_players_but_self(), &gBattleStruct->field_184, sizeof(gMultiPartnerParty)); @@ -1153,7 +1153,7 @@ static void CB2_PreInitMultiBattle(void) SetMainCallback2(CB2_InitBattleInternal); } } - else if (gReceivedRemoteLinkPlayers == 0) + else if (!gReceivedRemoteLinkPlayers) { gBattleTypeFlags = *savedBattleTypeFlags; gMain.savedCallback = *savedCallback; @@ -1190,7 +1190,7 @@ static void CB2_HandleStartMultiBattle(void) LoadWirelessStatusIndicatorSpriteGfx(); break; case 1: - if (gReceivedRemoteLinkPlayers != 0) + if (gReceivedRemoteLinkPlayers) { if (IsLinkTaskFinished()) { @@ -3843,7 +3843,7 @@ static void ReturnFromBattleToOverworld(void) RandomlyGivePartyPokerus(gPlayerParty); PartySpreadPokerus(gPlayerParty); } - if (!(gBattleTypeFlags & BATTLE_TYPE_LINK) || gReceivedRemoteLinkPlayers == 0) + if (!(gBattleTypeFlags & BATTLE_TYPE_LINK) || !gReceivedRemoteLinkPlayers) { gSpecialVar_Result = gBattleOutcome; gMain.inBattle = FALSE; diff --git a/src/battle_message.c b/src/battle_message.c index 55667de7d..648f055b1 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -2453,7 +2453,7 @@ void BattlePutTextOnWindow(const u8 *text, u8 windowId) { if (!(textFlags & 0x80)) { PutWindowTilemap(windowId); - CopyWindowToVram(windowId, 3); + CopyWindowToVram(windowId, COPYWIN_BOTH); } } diff --git a/src/battle_records.c b/src/battle_records.c index 7d9ddffe4..a32276199 100644 --- a/src/battle_records.c +++ b/src/battle_records.c @@ -198,7 +198,7 @@ static void ClearWindowCommitAndRemove(u8 windowId) { FillWindowPixelBuffer(windowId, PIXEL_FILL(0)); ClearWindowTilemap(windowId); - CopyWindowToVram(windowId, 2); + CopyWindowToVram(windowId, COPYWIN_GFX); RemoveWindow(windowId); } @@ -557,7 +557,7 @@ static void PrintBattleRecords(void) static void CommitWindow(u8 windowId) { PutWindowTilemap(windowId); - CopyWindowToVram(windowId, 3); + CopyWindowToVram(windowId, COPYWIN_BOTH); } static void LoadFrameGfxOnBg(u8 bg) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index aacb2fbe4..c88516272 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -5764,7 +5764,7 @@ static void atk6C_drawlvlupbox(void) case 4: DrawLevelUpWindow1(); PutWindowTilemap(12); - CopyWindowToVram(12, 3); + CopyWindowToVram(12, COPYWIN_BOTH); ++gBattleScripting.atk6C_state; break; case 5: @@ -5780,7 +5780,7 @@ static void atk6C_drawlvlupbox(void) { PlaySE(SE_SELECT); DrawLevelUpWindow2(); - CopyWindowToVram(12, 2); + CopyWindowToVram(12, COPYWIN_GFX); ++gBattleScripting.atk6C_state; } break; @@ -5796,9 +5796,9 @@ static void atk6C_drawlvlupbox(void) if (!sub_8026648()) { ClearWindowTilemap(13); - CopyWindowToVram(13, 1); + CopyWindowToVram(13, COPYWIN_MAP); ClearWindowTilemap(12); - CopyWindowToVram(12, 1); + CopyWindowToVram(12, COPYWIN_MAP); SetBgAttribute(2, BG_ATTR_PRIORITY, 2); ShowBg(2); gBattleScripting.atk6C_state = 10; @@ -5840,7 +5840,7 @@ static void sub_8026480(void) LoadPalette(gUnknown_82506D0, 0x60, 0x20); CopyToWindowPixelBuffer(13, gUnknown_82506F0, 0, 0); PutWindowTilemap(13); - CopyWindowToVram(13, 3); + CopyWindowToVram(13, COPYWIN_BOTH); PutMonIconOnLvlUpBox(); } @@ -5909,8 +5909,8 @@ static void PutLevelAndGenderOnLvlUpBox(void) } printerTemplate.y = 10; printerTemplate.currentY = 10; - AddTextPrinter(&printerTemplate, 0xFF, NULL); - CopyWindowToVram(13, 2); + AddTextPrinter(&printerTemplate, TEXT_SPEED_FF, NULL); + CopyWindowToVram(13, COPYWIN_GFX); } static bool8 sub_8026648(void) diff --git a/src/battle_transition.c b/src/battle_transition.c index b33d72f15..e7fea0865 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -1109,12 +1109,10 @@ static void SpriteCB_BT_Phase2SlidingPokeballs(struct Sprite *sprite) if (posX != sprite->data[2]) { - u32 var; u16 *ptr; sprite->data[2] = posX; - var = (((GetGpuReg(REG_OFFSET_BG0CNT) >> 8) & 0x1F) << 11); - ptr = (u16 *)(VRAM + var); + ptr = (u16 *)BG_SCREEN_ADDR((GetGpuReg(REG_OFFSET_BG0CNT) >> 8) & 0x1F); SOME_VRAM_STORE(ptr, posY - 2, posX, 0xF001); SOME_VRAM_STORE(ptr, posY - 1, posX, 0xF001); SOME_VRAM_STORE(ptr, posY - 0, posX, 0xF001); @@ -3512,7 +3510,7 @@ static void BT_GetBg0TilesetBase(u16 **tilesetPtr) u16 charBase; charBase = GetGpuReg(REG_OFFSET_BG0CNT) >> 2; - charBase <<= 0xE; + charBase <<= 14; *tilesetPtr = (u16 *)(VRAM + charBase); } @@ -3522,8 +3520,8 @@ static void BT_GetBg0TilemapAndTilesetBase(u16 **tilemapPtr, u16 **tilesetPtr) screenBase = (GetGpuReg(REG_OFFSET_BG0CNT) >> 8) & 0x1F; charBase = GetGpuReg(REG_OFFSET_BG0CNT) >> 2; - screenBase <<= 0xB; - charBase <<= 0xE; + screenBase <<= 11; + charBase <<= 14; *tilemapPtr = (u16 *)(VRAM + screenBase); *tilesetPtr = (u16 *)(VRAM + charBase); } @@ -3546,7 +3544,7 @@ static void BT_GenerateCircle(s16 *buffer, s16 x, s16 y, s16 radius) s16 i; memset(buffer, 0xA, 320); - // 64 iterations because we only want to cover [0, π/2) discretely. + // 64 iterations because we only want to cover [0, π/2) discretely. for (i = 0; i < 64; ++i) { s16 sinResult, cosResult, leftX, topY, bottomY, nextTopY, nextBottomY, winVal; diff --git a/src/berry.c b/src/berry.c index b92a41ed4..ef6999e9a 100644 --- a/src/berry.c +++ b/src/berry.c @@ -867,7 +867,7 @@ const struct Berry gBerries[] = { }; -const struct UnkStruct_0858AB24 gUnknown_83DFC9C[] = { +const struct BerryCrushStats gBerryCrushStats[] = { { 50, 20}, { 50, 20}, { 50, 20}, diff --git a/src/berry_crush.c b/src/berry_crush.c index e59cad21a..12e1a823e 100644 --- a/src/berry_crush.c +++ b/src/berry_crush.c @@ -13,28 +13,29 @@ #include "constants/songs.h" #include "constants/items.h" -static EWRAM_DATA struct BerryCrushGame *gUnknown_203F3DC = NULL; +static EWRAM_DATA struct BerryCrushGame *sBerryCrushGamePtr = NULL; -static void sub_814B860(void); -static void sub_814BA6C(void); -static void sub_814BA80(void); -static void sub_814BA98(u8 taskId); +static void BerryCrush_InitPlayerNamesAndTextSpeed(struct BerryCrushGame *game); +static void CB2_ReturnToBerryCrushGameFromBerryPouch(void); +static void VBlankCB_BerryCrush(void); +static void CB2_BerryCrush(void); +static void Task_RunBerryCrushGame(u8 taskId); -struct BerryCrushGame *sub_814B6F0(void) +struct BerryCrushGame *GetBerryCrushGame(void) { - return gUnknown_203F3DC; + return sBerryCrushGamePtr; } -u32 sub_814B6FC(MainCallback callback) +u32 ExitBerryCrushWithCallback(MainCallback callback) { - if (!gUnknown_203F3DC) + if (sBerryCrushGamePtr == NULL) return 2; - if (!callback) - callback = gUnknown_203F3DC->unk0; + if (callback == NULL) + callback = sBerryCrushGamePtr->savedCallback; - DestroyTask(gUnknown_203F3DC->unkA); - FREE_AND_SET_NULL(gUnknown_203F3DC); + DestroyTask(sBerryCrushGamePtr->taskId); + FREE_AND_SET_NULL(sBerryCrushGamePtr); SetMainCallback2(callback); if (callback == CB2_ReturnToField) { @@ -70,8 +71,8 @@ void StartBerryCrush(MainCallback callback) return; } - gUnknown_203F3DC = AllocZeroed(sizeof(*gUnknown_203F3DC)); - if (!gUnknown_203F3DC) + sBerryCrushGamePtr = AllocZeroed(sizeof(*sBerryCrushGamePtr)); + if (!sBerryCrushGamePtr) { SetMainCallback2(callback); Rfu.linkman_param[0] = 0; @@ -80,109 +81,110 @@ void StartBerryCrush(MainCallback callback) return; } - gUnknown_203F3DC->unk0 = callback; - gUnknown_203F3DC->unk8 = multiplayerId; - gUnknown_203F3DC->unk9 = playerCount; - sub_814BABC(gUnknown_203F3DC); - gUnknown_203F3DC->unk12 = 1; - gUnknown_203F3DC->unkE = 1; - gUnknown_203F3DC->unkF = 6; - sub_814D564(gUnknown_203F3DC->unk36, 1, -1, 0, 16, 0, 0); - sub_814BB4C(4, 1, gUnknown_203F3DC->unk36); - SetMainCallback2(sub_814BA80); - gUnknown_203F3DC->unkA = CreateTask(sub_814BA98, 8); + sBerryCrushGamePtr->savedCallback = callback; + sBerryCrushGamePtr->localId = multiplayerId; + sBerryCrushGamePtr->playerCount = playerCount; + BerryCrush_InitPlayerNamesAndTextSpeed(sBerryCrushGamePtr); + sBerryCrushGamePtr->gameState = 1; + sBerryCrushGamePtr->nextCmd = BCCMD_BeginNormalPaletteFade; + sBerryCrushGamePtr->afterPalFadeCmd = BCCMD_SignalReadyToBegin; + BerryCrush_SetPaletteFadeParams(sBerryCrushGamePtr->commandParams, TRUE, 0xFFFFFFFF, 0, 16, 0, RGB_BLACK); + BerryCrush_RunOrScheduleCommand(BCCMD_InitGfx, 1, sBerryCrushGamePtr->commandParams); + SetMainCallback2(CB2_BerryCrush); + sBerryCrushGamePtr->taskId = CreateTask(Task_RunBerryCrushGame, 8); } -static void sub_814B860(void) +static void CB2_ReturnToBerryCrushGameFromBerryPouch(void) { if (gSpecialVar_ItemId < FIRST_BERRY_INDEX || gSpecialVar_ItemId > LAST_BERRY_INDEX + 1) gSpecialVar_ItemId = ITEM_CHERI_BERRY; else RemoveBagItem(gSpecialVar_ItemId, 1); - gUnknown_203F3DC->unk68.as_four_players.others[gUnknown_203F3DC->unk8].unk0 = gSpecialVar_ItemId - FIRST_BERRY_INDEX; - gUnknown_203F3DC->unkE = 1; - gUnknown_203F3DC->unkF = 9; - sub_814D564(gUnknown_203F3DC->unk36, 0, -1, 0, 16, 0, 0); - sub_814BB4C(4, 1, gUnknown_203F3DC->unk36); - gUnknown_203F3DC->unkA = CreateTask(sub_814BA98, 8); - SetMainCallback2(sub_814BA80); + sBerryCrushGamePtr->unk68.as_four_players.others[sBerryCrushGamePtr->localId].berryId = gSpecialVar_ItemId - FIRST_BERRY_INDEX; + sBerryCrushGamePtr->nextCmd = BCCMD_BeginNormalPaletteFade; + sBerryCrushGamePtr->afterPalFadeCmd = BCCMD_WaitForOthersToPickBerries; + BerryCrush_SetPaletteFadeParams(sBerryCrushGamePtr->commandParams, FALSE, 0xFFFFFFFF, 0, 16, 0, RGB_BLACK); + BerryCrush_RunOrScheduleCommand(BCCMD_InitGfx, 1, sBerryCrushGamePtr->commandParams); + sBerryCrushGamePtr->taskId = CreateTask(Task_RunBerryCrushGame, 8); + SetMainCallback2(CB2_BerryCrush); } -void sub_814B8F0(void) +void CB2_BerryCrush_GoToBerryPouch(void) { - DestroyTask(gUnknown_203F3DC->unkA); - InitBerryPouch(BERRYPOUCH_FROMBERRYCRUSH, sub_814B860, FALSE); + DestroyTask(sBerryCrushGamePtr->taskId); + InitBerryPouch(BERRYPOUCH_FROMBERRYCRUSH, CB2_ReturnToBerryCrushGameFromBerryPouch, FALSE); } -void sub_814B914(void) +void BerryCrush_SetVBlankCallback(void) { - SetVBlankCallback(sub_814BA6C); + SetVBlankCallback(VBlankCB_BerryCrush); } -void sub_814B924(void) +void BerryCrush_UnsetVBlankCallback(void) { SetVBlankCallback(NULL); } -void sub_814B930(void) +void BerryCrush_UpdateSav2Records(void) { u32 var0, var1; - var0 = gUnknown_203F3DC->unk68.as_four_players.unk00.unk04; + // unk0A / (unk04 / 60) + var0 = sBerryCrushGamePtr->unk68.as_four_players.unk00.unk04; var0 <<= 8; - var0 = sub_80D8B68(var0, 60 << 8); - var1 = gUnknown_203F3DC->unk68.as_four_players.unk00.unk0A; + var0 = MathUtil_Div32(var0, 60 << 8); + var1 = sBerryCrushGamePtr->unk68.as_four_players.unk00.unk0A; var1 <<= 8; - var1 = sub_80D8B68(var1, var0) & 0xFFFF; - gUnknown_203F3DC->unk16 = var1; - switch (gUnknown_203F3DC->unk9) + var1 = MathUtil_Div32(var1, var0) & 0xFFFF; + sBerryCrushGamePtr->pressingSpeed = var1; + switch (sBerryCrushGamePtr->playerCount) { case 2: - if (gUnknown_203F3DC->unk16 > gSaveBlock2Ptr->berryCrush.berryCrushResults[0]) + if (sBerryCrushGamePtr->pressingSpeed > gSaveBlock2Ptr->berryCrush.berryCrushResults[0]) { - gUnknown_203F3DC->unk25_1 = 1; - gSaveBlock2Ptr->berryCrush.berryCrushResults[0] = gUnknown_203F3DC->unk16; + sBerryCrushGamePtr->unk25_1 = 1; + gSaveBlock2Ptr->berryCrush.berryCrushResults[0] = sBerryCrushGamePtr->pressingSpeed; } break; case 3: - if (gUnknown_203F3DC->unk16 > gSaveBlock2Ptr->berryCrush.berryCrushResults[1]) + if (sBerryCrushGamePtr->pressingSpeed > gSaveBlock2Ptr->berryCrush.berryCrushResults[1]) { - gUnknown_203F3DC->unk25_1 = 1; - gSaveBlock2Ptr->berryCrush.berryCrushResults[1] = gUnknown_203F3DC->unk16; + sBerryCrushGamePtr->unk25_1 = 1; + gSaveBlock2Ptr->berryCrush.berryCrushResults[1] = sBerryCrushGamePtr->pressingSpeed; } break; case 4: - if (gUnknown_203F3DC->unk16 > gSaveBlock2Ptr->berryCrush.berryCrushResults[2]) + if (sBerryCrushGamePtr->pressingSpeed > gSaveBlock2Ptr->berryCrush.berryCrushResults[2]) { - gUnknown_203F3DC->unk25_1 = 1; - gSaveBlock2Ptr->berryCrush.berryCrushResults[2] = gUnknown_203F3DC->unk16; + sBerryCrushGamePtr->unk25_1 = 1; + gSaveBlock2Ptr->berryCrush.berryCrushResults[2] = sBerryCrushGamePtr->pressingSpeed; } break; case 5: - if (gUnknown_203F3DC->unk16 > gSaveBlock2Ptr->berryCrush.berryCrushResults[3]) + if (sBerryCrushGamePtr->pressingSpeed > gSaveBlock2Ptr->berryCrush.berryCrushResults[3]) { - gUnknown_203F3DC->unk25_1 = 1; - gSaveBlock2Ptr->berryCrush.berryCrushResults[3] = gUnknown_203F3DC->unk16; + sBerryCrushGamePtr->unk25_1 = 1; + gSaveBlock2Ptr->berryCrush.berryCrushResults[3] = sBerryCrushGamePtr->pressingSpeed; } break; } - gUnknown_203F3DC->unk1C = gUnknown_203F3DC->unk68.as_four_players.unk00.unk00; - if (GiveBerryPowder(gUnknown_203F3DC->unk1C)) + sBerryCrushGamePtr->powder = sBerryCrushGamePtr->unk68.as_four_players.unk00.unk00; + if (GiveBerryPowder(sBerryCrushGamePtr->powder)) return; - gUnknown_203F3DC->unk25_0 = 1; + sBerryCrushGamePtr->unk25_0 = 1; } -static void sub_814BA6C(void) +static void VBlankCB_BerryCrush(void) { TransferPlttBuffer(); LoadOam(); ProcessSpriteCopyRequests(); } -static void sub_814BA80(void) +static void CB2_BerryCrush(void) { RunTasks(); RunTextPrinters(); @@ -190,39 +192,39 @@ static void sub_814BA80(void) BuildOamBuffer(); } -static void sub_814BA98(u8 taskId) +static void Task_RunBerryCrushGame(u8 taskId) { - if (gUnknown_203F3DC->unk4) - gUnknown_203F3DC->unk4(gUnknown_203F3DC, gUnknown_203F3DC->unk36); + if (sBerryCrushGamePtr->cmdCallback != NULL) + sBerryCrushGamePtr->cmdCallback(sBerryCrushGamePtr, sBerryCrushGamePtr->commandParams); - sub_814D9CC(gUnknown_203F3DC); + sub_814D9CC(sBerryCrushGamePtr); } -void sub_814BABC(struct BerryCrushGame *arg0) +void BerryCrush_InitPlayerNamesAndTextSpeed(struct BerryCrushGame *game) { u8 i; - for (i = 0; i < arg0->unk9; i++) + for (i = 0; i < game->playerCount; i++) { - StringCopy(PLAYER_UNK14(arg0, i), gLinkPlayers[i].name); - arg0->unk68.as_five_players.unk1C[i].unk14[PLAYER_NAME_LENGTH] = EOS; + StringCopy(BERRYCRUSH_PLAYER_NAME(game, i), gLinkPlayers[i].name); + game->unk68.as_five_players.players[i].unk14[PLAYER_NAME_LENGTH] = EOS; } for (; i < 5; i++) { - memset(PLAYER_UNK14(arg0, i), 1, PLAYER_NAME_LENGTH); - arg0->unk68.as_five_players.unk1C[i].unk14[PLAYER_NAME_LENGTH] = EOS; + memset(BERRYCRUSH_PLAYER_NAME(game, i), 1, PLAYER_NAME_LENGTH); + game->unk68.as_five_players.players[i].unk14[PLAYER_NAME_LENGTH] = EOS; } switch (gSaveBlock2Ptr->optionsTextSpeed) { case OPTIONS_TEXT_SPEED_SLOW: - arg0->unkB = 8; + game->textSpeed = 8; break; case OPTIONS_TEXT_SPEED_MID: - arg0->unkB = 4; + game->textSpeed = 4; break; case OPTIONS_TEXT_SPEED_FAST: - arg0->unkB = 1; + game->textSpeed = 1; break; } } diff --git a/src/berry_crush_2.c b/src/berry_crush_2.c index e76f33988..f195be954 100644 --- a/src/berry_crush_2.c +++ b/src/berry_crush_2.c @@ -16,33 +16,33 @@ #include "strings.h" #include "constants/songs.h" -static u32 sub_814BBB8(struct BerryCrushGame * berryCrushGame, u8 *params); -static u32 sub_814BC10(struct BerryCrushGame * berryCrushGame, u8 *params); -static u32 sub_814BC74(struct BerryCrushGame * berryCrushGame, u8 *params); -static u32 sub_814BD7C(struct BerryCrushGame * berryCrushGame, u8 *params); -static u32 sub_814BD9C(struct BerryCrushGame * berryCrushGame, u8 *params); -static u32 sub_814BDBC(struct BerryCrushGame * berryCrushGame, u8 *params); -static u32 sub_814BE0C(struct BerryCrushGame * berryCrushGame, u8 *params); -static u32 sub_814BE64(struct BerryCrushGame * berryCrushGame, u8 *params); -static u32 sub_814BE7C(struct BerryCrushGame * berryCrushGame, u8 *params); -static u32 sub_814BFD0(struct BerryCrushGame * berryCrushGame, u8 *params); -static u32 sub_814C118(struct BerryCrushGame * berryCrushGame, u8 *params); -static u32 sub_814C24C(struct BerryCrushGame * berryCrushGame, u8 *params); -static u32 sub_814C850(struct BerryCrushGame * berryCrushGame, u8 *params); -static u32 sub_814C8F8(struct BerryCrushGame * berryCrushGame, u8 *params); -static u32 sub_814C990(struct BerryCrushGame * berryCrushGame, u8 *params); -static u32 sub_814CB20(struct BerryCrushGame * berryCrushGame, u8 *params); -static u32 sub_814CC0C(struct BerryCrushGame * berryCrushGame, u8 *params); -static u32 sub_814CFA8(struct BerryCrushGame * berryCrushGame, u8 *params); -static u32 sub_814D094(struct BerryCrushGame * berryCrushGame, u8 *params); -static u32 sub_814D188(struct BerryCrushGame * berryCrushGame, u8 *params); -static u32 sub_814D240(struct BerryCrushGame * berryCrushGame, u8 *params); -static u32 sub_814D31C(struct BerryCrushGame * berryCrushGame, u8 *params); -static u32 sub_814D3A4(struct BerryCrushGame * berryCrushGame, u8 *params); -static u32 sub_814D468(struct BerryCrushGame * berryCrushGame, u8 *params); -static u32 sub_814D4C8(struct BerryCrushGame * berryCrushGame, u8 *params); -void sub_814D4D8(struct BerryCrushGame * r4); -void sub_814D5A4(u8 *r0, u32 r1, u32 r2, u32 r3, u32 r5); +static u32 BerryCrushCommand_BeginNormalPaletteFade(struct BerryCrushGame * game, u8 *params); +static u32 BerryCrushCommand_WaitPaletteFade(struct BerryCrushGame * game, u8 *params); +static u32 BerryCrushCommand_PrintMessage(struct BerryCrushGame * game, u8 *params); +static u32 BerryCrushCommand_InitGfx(struct BerryCrushGame * game, u8 *params); +static u32 BerryCrushCommand_TeardownGfx(struct BerryCrushGame * game, u8 *params); +static u32 BerryCrushCommand_SignalReadyToBegin(struct BerryCrushGame * game, u8 *params); +static u32 BerryCrushCommand_AskPickBerry(struct BerryCrushGame * game, u8 *params); +static u32 BerryCrushCommand_GoToBerryPouch(struct BerryCrushGame * game, u8 *params); +static u32 BerryCrushCommand_WaitForOthersToPickBerries(struct BerryCrushGame * game, u8 *params); +static u32 BerryCrushCommand_DropBerriesIntoCrusher(struct BerryCrushGame * game, u8 *params); +static u32 BerryCrushCommand_DropLid(struct BerryCrushGame * game, u8 *params); +static u32 BerryCrushCommand_Countdown(struct BerryCrushGame * game, u8 *params); +static u32 BerryCrushCommand_PlayGame_Master(struct BerryCrushGame * game, u8 *params); +static u32 BerryCrushCommand_PlayGame_Slave(struct BerryCrushGame * game, u8 *params); +static u32 BerryCrushCommand_FinishGame(struct BerryCrushGame * game, u8 *params); +static u32 BerryCrushCommand_HandleTimeUp(struct BerryCrushGame * game, u8 *params); +static u32 BerryCrushCommand_TabulateResults(struct BerryCrushGame * game, u8 *params); +static u32 BerryCrushCommand_ShowResults(struct BerryCrushGame * game, u8 *params); +static u32 BerryCrushCommand_SaveTheGame(struct BerryCrushGame * game, u8 *params); +static u32 BerryCrushCommand_AskPlayAgain(struct BerryCrushGame * game, u8 *params); +static u32 BerryCrushCommand_CommunicatePlayAgainResponses(struct BerryCrushGame * game, u8 *params); +static u32 BerryCrushCommand_FadeOutToPlayAgain(struct BerryCrushGame * game, u8 *params); +static u32 BerryCrushCommand_PlayAgainFailureMessage(struct BerryCrushGame * game, u8 *params); +static u32 BerryCrushCommand_GracefulExit(struct BerryCrushGame * game, u8 *params); +static u32 BerryCrushCommand_Quit(struct BerryCrushGame * game, u8 *params); +static void sub_814D4D8(struct BerryCrushGame * game); +static void BerryCrush_SetShowMessageParams(u8 *params, u8 stringId, u8 flags, u16 waitKeys, u8 followupCmd); static const u8 gUnknown_846E2E0[] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80}; static const u8 gUnknown_846E2E8[] = {0x00, 0x01, 0x02, 0x03, 0x05, 0x00, 0x00, 0x00}; @@ -63,45 +63,45 @@ ALIGNED(4) const u8 gUnknown_846E314[][4] = { {0x03, 0x05, 0x03, 0x00} }; -static const u8 *const gUnknown_846E328[] = { - gUnknown_841CE3C, - gUnknown_841CE78, - gUnknown_841CEA8, - gUnknown_841CF14, - gUnknown_841CF50, - gUnknown_841CF70, - gUnknown_841CFA0, - gUnknown_841CFD4, - gUnknown_841D008 +static const u8 *const sBerryCrushMessages[] = { + gText_BerryCrush_AreYouReady, + gText_BerryCrush_WaitForOthersToChooseBerry, + gText_BerryCrush_GainedXUnitsOfPowder, + gText_BerryCrush_RecordingGameResults, + gText_BerryCrush_WantToPlayAgain, + gText_BerryCrush_NoBerries, + gText_BerryCrush_MemberDroppedOut, + gText_BerryCrush_TimeUp, + gText_BerryCrush_CommunicationStandby }; -static u32 (*const gUnknown_846E34C[])(struct BerryCrushGame * berryCrushGame, u8 *params) = { +static u32 (*const sBerryCrushCommands[])(struct BerryCrushGame * berryCrushGame, u8 *params) = { NULL, - sub_814BBB8, - sub_814BC10, - sub_814BC74, - sub_814BD7C, - sub_814BD9C, - sub_814BDBC, - sub_814BE0C, - sub_814BE64, - sub_814BE7C, - sub_814BFD0, - sub_814C118, - sub_814C24C, - sub_814C850, - sub_814C8F8, - sub_814C990, - sub_814CB20, - sub_814CC0C, - sub_814CFA8, - sub_814D094, - sub_814D188, - sub_814D240, - sub_814D31C, - sub_814D3A4, - sub_814D468, - sub_814D4C8 + BerryCrushCommand_BeginNormalPaletteFade, + BerryCrushCommand_WaitPaletteFade, + BerryCrushCommand_PrintMessage, + BerryCrushCommand_InitGfx, + BerryCrushCommand_TeardownGfx, + BerryCrushCommand_SignalReadyToBegin, + BerryCrushCommand_AskPickBerry, + BerryCrushCommand_GoToBerryPouch, + BerryCrushCommand_WaitForOthersToPickBerries, + BerryCrushCommand_DropBerriesIntoCrusher, + BerryCrushCommand_DropLid, + BerryCrushCommand_Countdown, + BerryCrushCommand_PlayGame_Master, + BerryCrushCommand_PlayGame_Slave, + BerryCrushCommand_FinishGame, + BerryCrushCommand_HandleTimeUp, + BerryCrushCommand_TabulateResults, + BerryCrushCommand_ShowResults, + BerryCrushCommand_SaveTheGame, + BerryCrushCommand_AskPlayAgain, + BerryCrushCommand_CommunicatePlayAgainResponses, + BerryCrushCommand_FadeOutToPlayAgain, + BerryCrushCommand_PlayAgainFailureMessage, + BerryCrushCommand_GracefulExit, + BerryCrushCommand_Quit }; static const u8 gUnknown_846E3B4[][4] = { @@ -111,161 +111,167 @@ static const u8 gUnknown_846E3B4[][4] = { {0x04, 0x08, 0x0c, 0x11} }; -static const u8 gUnknown_846E3C4[] = {0x05, 0x07, 0x09, 0x0c}; +static const u8 gUnknown_846E3C4[] = {5, 7, 9, 12}; -static const u8 gUnknown_846E3C8[] = {0x03, 0x07, 0x0F, 0x1F}; +static const u8 sReceivedPlayerBitmasks[] = {0x03, 0x07, 0x0F, 0x1F}; -void sub_814BB4C(u16 r5, u8 r4, u8 *r7) +void BerryCrush_RunOrScheduleCommand(u16 command, u8 runMode, u8 *params) { - struct BerryCrushGame * r6 = sub_814B6F0(); + struct BerryCrushGame * game = GetBerryCrushGame(); - if (r5 > 25) - r5 = 0; - switch (r4) + if (command >= NELEMS(sBerryCrushCommands)) + command = 0; + switch (runMode) { case 0: - if (r5 != 0) - gUnknown_846E34C[r5](r6, r7); - if (r6->unkE > 25) - r6->unkE = r4; - r6->unk4 = gUnknown_846E34C[r6->unkE]; + // Call now and set followup to game->nextCmd + if (command != 0) + sBerryCrushCommands[command](game, params); + if (game->nextCmd >= NELEMS(sBerryCrushCommands)) + game->nextCmd = 0; + game->cmdCallback = sBerryCrushCommands[game->nextCmd]; break; case 1: - r6->unk4 = gUnknown_846E34C[r5]; + // Schedule for next frame + game->cmdCallback = sBerryCrushCommands[command]; break; } } -static u32 sub_814BBB8(struct BerryCrushGame * r6, u8 *r1) +static u32 BerryCrushCommand_BeginNormalPaletteFade(struct BerryCrushGame * game, u8 *params) { - u16 r4; - u32 r0; -#ifndef NONMATCHING // fake match, nobody can write such code - register u32 r2 asm("r2"); - register u32 r3 asm("r3"); + // params points to packed values: + // bytes 0-3: selectedPals (bitfield) + // byte 4: delay + // byte 5: startY + // byte 6: stopY + // bytes 7-8: fade color + // byte 9: if TRUE, communicate on fade complete - r2 = r1[0]; - r3 = r1[1]; - r3 <<= 8; - r2 |= r3; - r3 = r1[2]; - r3 <<= 16; - r2 |= r3; - r3 = r1[3]; - r3 <<= 24; - r0 = r2; - r0 |= r3; + u16 color; + u32 selectedPals; + selectedPals = ({ +#ifndef NONMATCHING + register u32 value asm("r2"); + register u32 b asm("r3"); #else - u32 r2; + u32 value; + u32 b; +#endif //NONMATCHING + value = params[0] << 0; + value |= (b = params[1] << 8); + value |= (b = params[2] << 16); + value |= (b = params[3] << 24); + value; + }); + + params[0] = params[9]; + + color = params[8] << 8; + color |= params[7] << 0; - r0 = T1_READ_32(r1); -#endif - r2 = r1[9]; - r1[0] = r2; - r4 = r1[8] << 8; - r2 = r1[7]; - r4 |= r2; gPaletteFade.bufferTransferDisabled = FALSE; - BeginNormalPaletteFade(r0, r1[4], r1[5], r1[6], r4); + BeginNormalPaletteFade(selectedPals, params[4], params[5], params[6], color); UpdatePaletteFade(); - r6->unkE = 2; + game->nextCmd = BCCMD_WaitPaletteFade; return 0; } -static u32 sub_814BC10(struct BerryCrushGame * r4, u8 *r5) +static u32 BerryCrushCommand_WaitPaletteFade(struct BerryCrushGame * game, u8 *params) { - switch (r4->unkC) + switch (game->cmdState) { case 0: if (UpdatePaletteFade()) return 0; - if(r5[0] != 0) - ++r4->unkC; + if(params[0] != 0) + ++game->cmdState; else - r4->unkC = 3; + game->cmdState = 3; return 0; case 1: LinkRfu_SetRfuFuncToSend6600(); - ++r4->unkC; + ++game->cmdState; return 0; case 2: if (IsLinkTaskFinished()) { - ++r4->unkC; + ++game->cmdState; return 0; } return 0; case 3: - sub_814BB4C(r4->unkF, 1, NULL); - r4->unkC = 0; + BerryCrush_RunOrScheduleCommand(game->afterPalFadeCmd, 1, NULL); + game->cmdState = 0; return 0; default: - ++r4->unkC; + ++game->cmdState; return 0; } } -static u32 sub_814BC74(struct BerryCrushGame * r7, u8 *r5) +static u32 BerryCrushCommand_PrintMessage(struct BerryCrushGame * game, u8 *params) { - u16 r4 = r5[3]; + u16 waitKeys; - r4 <<= 8; - r4 |= r5[2]; - switch (r7->unkC) + waitKeys = params[3]; + waitKeys <<= 8; + waitKeys |= params[2] << 0; + switch (game->cmdState) { case 0: - DrawDialogueFrame(0, 0); - if (r5[1] & 2) + DrawDialogueFrame(0, FALSE); + if (params[1] & 2) { - StringExpandPlaceholders(gStringVar4, gUnknown_846E328[r5[0]]); - AddTextPrinterParameterized2(0, 2, gStringVar4, r7->unkB, 0, 2, 1, 3); + StringExpandPlaceholders(gStringVar4, sBerryCrushMessages[params[0]]); + AddTextPrinterParameterized2(0, 2, gStringVar4, game->textSpeed, 0, TEXT_COLOR_DARK_GREY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GREY); } else { - AddTextPrinterParameterized2(0, 2, gUnknown_846E328[r5[0]], r7->unkB, 0, 2, 1, 3); + AddTextPrinterParameterized2(0, 2, sBerryCrushMessages[params[0]], game->textSpeed, NULL, TEXT_COLOR_DARK_GREY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GREY); } - CopyWindowToVram(0, 3); + CopyWindowToVram(0, COPYWIN_BOTH); break; case 1: if (!IsTextPrinterActive(0)) { - if (r4 == 0) - ++r7->unkC; + if (waitKeys == 0) + ++game->cmdState; break; } return 0; case 2: - if (!(r4 & gMain.newKeys)) + if (!(waitKeys & gMain.newKeys)) return 0; break; case 3: - if (r5[1] & 1) + if (params[1] & 1) ClearDialogWindowAndFrame(0, TRUE); - sub_814BB4C(r7->unkE, 1, NULL); - r7->unkC = r5[4]; + BerryCrush_RunOrScheduleCommand(game->nextCmd, 1, NULL); + game->cmdState = params[4]; return 0; } - ++r7->unkC; + ++game->cmdState; return 0; } -static u32 sub_814BD7C(struct BerryCrushGame * r4, UNUSED u8 *r1) +static u32 BerryCrushCommand_InitGfx(struct BerryCrushGame * game, UNUSED u8 *params) { - if (sub_814D5C8() != 0) - sub_814BB4C(r4->unkE, 0, r4->unk36); + if (BerryCrush_InitBgs() != 0) + BerryCrush_RunOrScheduleCommand(game->nextCmd, 0, game->commandParams); return 0; } -static u32 sub_814BD9C(struct BerryCrushGame * r4, UNUSED u8 *r1) +static u32 BerryCrushCommand_TeardownGfx(struct BerryCrushGame * game, UNUSED u8 *params) { - if (sub_814D888() != 0) - sub_814BB4C(r4->unkE, 0, r4->unk36); + if (BerryCrush_TeardownBgs() != 0) + BerryCrush_RunOrScheduleCommand(game->nextCmd, 0, game->commandParams); return 0; } -static u32 sub_814BDBC(struct BerryCrushGame * r4, UNUSED u8 *r1) +static u32 BerryCrushCommand_SignalReadyToBegin(struct BerryCrushGame * game, UNUSED u8 *params) { - switch (r4->unkC) + switch (game->cmdState) { case 0: LinkRfu_SetRfuFuncToSend6600(); @@ -274,55 +280,55 @@ static u32 sub_814BDBC(struct BerryCrushGame * r4, UNUSED u8 *r1) if (IsLinkTaskFinished()) { PlayNewMapMusic(MUS_SLOT); - sub_814BB4C(7, 1, NULL); - r4->unk12 = 3; - r4->unkC = 0; + BerryCrush_RunOrScheduleCommand(BCCMD_AskPickBerry, 1, NULL); + game->gameState = 3; + game->cmdState = 0; } return 0; } - ++r4->unkC; + ++game->cmdState; return 0; } -static u32 sub_814BE0C(struct BerryCrushGame * r4, u8 *r5) +static u32 BerryCrushCommand_AskPickBerry(struct BerryCrushGame * game, u8 *params) { - switch (r4->unkC) + switch (game->cmdState) { default: - ++r4->unkC; + ++game->cmdState; break; case 0: - sub_814D4D8(r4); - sub_814D5A4(r5, 0, 1, 0, 1); - r4->unkE = 7; - sub_814BB4C(3, 1, NULL); + sub_814D4D8(game); + BerryCrush_SetShowMessageParams(params, BCTEXT_AREYOUREADY, 1, 0, BCCMD_BeginNormalPaletteFade); + game->nextCmd = BCCMD_AskPickBerry; + BerryCrush_RunOrScheduleCommand(BCCMD_PrintMessage, 1, NULL); break; case 1: - r4->unkE = 8; - sub_814BB4C(5, 1, NULL); - r4->unkC = 2; + game->nextCmd = BCCMD_GoToBerryPouch; + BerryCrush_RunOrScheduleCommand(BCCMD_TeardownGfx, 1, NULL); + game->cmdState = 2; break; } return 0; } -static u32 sub_814BE64(struct BerryCrushGame * r0, UNUSED u8 *r1) +static u32 BerryCrushCommand_GoToBerryPouch(struct BerryCrushGame * game, UNUSED u8 *params) { - r0->unk4 = NULL; - SetMainCallback2(sub_814B8F0); + game->cmdCallback = NULL; + SetMainCallback2(CB2_BerryCrush_GoToBerryPouch); return 0; } -static u32 sub_814BE7C(struct BerryCrushGame * r5, u8 *r2) +static u32 BerryCrushCommand_WaitForOthersToPickBerries(struct BerryCrushGame * game, u8 *params) { - u8 r3; + u8 i; - switch (r5->unkC) + switch (game->cmdState) { case 0: - sub_814D5A4(r2, 1, 0, 0, 1); - r5->unkE = 9; - sub_814BB4C(3, 1, NULL); + BerryCrush_SetShowMessageParams(params, BCTEXT_WAITFOROTHERS, 0, 0, BCCMD_BeginNormalPaletteFade); + game->nextCmd = BCCMD_WaitForOthersToPickBerries; + BerryCrush_RunOrScheduleCommand(BCCMD_PrintMessage, 1, NULL); return 0; case 1: LinkRfu_SetRfuFuncToSend6600(); @@ -330,126 +336,126 @@ static u32 sub_814BE7C(struct BerryCrushGame * r5, u8 *r2) case 2: if (!IsLinkTaskFinished()) return 0; - memset(r5->unk40.unk2, 0, sizeof(r5->unk40.unk2)); - r5->unk40.unk2[0] = r5->unk68.as_four_players.others[r5->unk8].unk0; - SendBlock(0, r5->unk40.unk2, 2); + memset(game->sendCmd + 1, 0, sizeof(game->sendCmd) - 2); + game->sendCmd[1] = game->unk68.as_four_players.others[game->localId].berryId; + SendBlock(0, game->sendCmd + 1, 2); break; case 3: if (!IsLinkTaskFinished()) return 0; - r5->unk10 = 0; + game->unk10 = 0; break; case 4: - if (GetBlockReceivedStatus() != gUnknown_846E3C8[r5->unk9 - 2]) + if (GetBlockReceivedStatus() != sReceivedPlayerBitmasks[game->playerCount - 2]) return 0; - for (r3 = 0; r3 < r5->unk9; ++r3) + for (i = 0; i < game->playerCount; ++i) { - r5->unk68.as_four_players.others[r3].unk0 = gBlockRecvBuffer[r3][0]; - if (r5->unk68.as_four_players.others[r3].unk0 > 0xB0) - r5->unk68.as_four_players.others[r3].unk0 = 0; - r5->unk18 += gUnknown_83DFC9C[r5->unk68.as_four_players.others[r3].unk0].unk0; - r5->unk1C += gUnknown_83DFC9C[r5->unk68.as_four_players.others[r3].unk0].unk1; + game->unk68.as_four_players.others[i].berryId = gBlockRecvBuffer[i][0]; + if (game->unk68.as_four_players.others[i].berryId > 0xB0) + game->unk68.as_four_players.others[i].berryId = 0; + game->unk18 += gBerryCrushStats[game->unk68.as_four_players.others[i].berryId].unk0; + game->powder += gBerryCrushStats[game->unk68.as_four_players.others[i].berryId].powder; } - r5->unk10 = 0; + game->unk10 = 0; ResetBlockReceivedFlags(); - r5->unk20 = sub_80D8B68(r5->unk18 << 8, 0x2000); + game->unk20 = MathUtil_Div32(game->unk18 << 8, 0x2000); break; case 5: - ClearDialogWindowAndFrame(0, 1); - sub_814BB4C(10, 1, NULL); - r5->unk12 = 4; - r5->unkC = 0; + ClearDialogWindowAndFrame(0, TRUE); + BerryCrush_RunOrScheduleCommand(BCCMD_DropBerriesIntoCrusher, 1, NULL); + game->gameState = 4; + game->cmdState = 0; return 0; } - ++r5->unkC; + ++game->cmdState; return 0; } -static u32 sub_814BFD0(struct BerryCrushGame * r4, UNUSED u8 *r1) +static u32 BerryCrushCommand_DropBerriesIntoCrusher(struct BerryCrushGame * game, UNUSED u8 *params) { - switch (r4->unkC) + switch (game->cmdState) { case 0: - sub_814DA24(r4, &r4->unk138); + BerryCrush_CreateBerrySprites(game, &game->spritesManager); LinkRfu_SetRfuFuncToSend6600(); break; case 1: if (!IsLinkTaskFinished()) return 0; - r4->unk138.unk0 = 0; - r4->unk138.unk1 = 0; - r4->unk138.unk2 = 0; - r4->unk138.unk3 = 0; + game->spritesManager.animBerryIdx = 0; + game->spritesManager.unk1 = 0; + game->spritesManager.unk2 = 0; + game->spritesManager.unk3 = 0; break; case 2: - r4->unk138.unk38[r4->unk138.unk0]->callback = sub_814DB84; - r4->unk138.unk38[r4->unk138.unk0]->affineAnimPaused = FALSE; + game->spritesManager.berrySprites[game->spritesManager.animBerryIdx]->callback = SpriteCB_DropBerryIntoCrusher; + game->spritesManager.berrySprites[game->spritesManager.animBerryIdx]->affineAnimPaused = FALSE; PlaySE(SE_NAGERU); break; case 3: - if (r4->unk138.unk38[r4->unk138.unk0]->callback == sub_814DB84) + if (game->spritesManager.berrySprites[game->spritesManager.animBerryIdx]->callback == SpriteCB_DropBerryIntoCrusher) return 0; - r4->unk138.unk38[r4->unk138.unk0] = NULL; - ++r4->unk138.unk0; + game->spritesManager.berrySprites[game->spritesManager.animBerryIdx] = NULL; + ++game->spritesManager.animBerryIdx; LinkRfu_SetRfuFuncToSend6600(); break; case 4: if (!IsLinkTaskFinished()) return 0; - if (r4->unk138.unk0 < r4->unk9) + if (game->spritesManager.animBerryIdx < game->playerCount) { - r4->unkC = 2; + game->cmdState = 2; return 0; } - r4->unk138.unk0 = 0; + game->spritesManager.animBerryIdx = 0; break; case 5: - sub_814DC24(r4, &r4->unk138); + BerryCrushFreeBerrySpriteGfx(game, &game->spritesManager); LinkRfu_SetRfuFuncToSend6600(); break; case 6: if (!IsLinkTaskFinished()) return 0; PlaySE(SE_RU_HYUU); - sub_814BB4C(11, 1, NULL); - r4->unk12 = 5; - r4->unkC = 0; + BerryCrush_RunOrScheduleCommand(BCCMD_DropLid, 1, NULL); + game->gameState = 5; + game->cmdState = 0; return 0; } - ++r4->unkC; + ++game->cmdState; return 0; } -static u32 sub_814C118(struct BerryCrushGame * r4, UNUSED u8 *r1) +static u32 BerryCrushCommand_DropLid(struct BerryCrushGame * game, UNUSED u8 *params) { - switch (r4->unkC) + switch (game->cmdState) { case 0: - r4->unk2A += 4; - if (r4->unk2A < 0) + game->depth += 4; + if (game->depth < 0) return 0; - r4->unk2A = 0; - r4->unk138.unk1 = 4; - r4->unk138.unk0 = 0; - r4->unk138.unk2 = gUnknown_846E2F0[r4->unk138.unk1][0]; + game->depth = 0; + game->spritesManager.unk1 = 4; + game->spritesManager.animBerryIdx = 0; + game->spritesManager.unk2 = gUnknown_846E2F0[game->spritesManager.unk1][0]; PlaySE(SE_W070); break; case 1: - r4->unk2C = gUnknown_846E2F0[r4->unk138.unk1][r4->unk138.unk0]; - SetGpuReg(REG_OFFSET_BG0VOFS, -r4->unk2C); - SetGpuReg(REG_OFFSET_BG2VOFS, -r4->unk2C); - SetGpuReg(REG_OFFSET_BG3VOFS, -r4->unk2C); - ++r4->unk138.unk0; - if (r4->unk138.unk0 < r4->unk138.unk2) + game->vibration = gUnknown_846E2F0[game->spritesManager.unk1][game->spritesManager.animBerryIdx]; + SetGpuReg(REG_OFFSET_BG0VOFS, -game->vibration); + SetGpuReg(REG_OFFSET_BG2VOFS, -game->vibration); + SetGpuReg(REG_OFFSET_BG3VOFS, -game->vibration); + ++game->spritesManager.animBerryIdx; + if (game->spritesManager.animBerryIdx < game->spritesManager.unk2) return 0; - if (r4->unk138.unk1 == 0) + if (game->spritesManager.unk1 == 0) break; - --r4->unk138.unk1; - r4->unk138.unk2 = gUnknown_846E2F0[r4->unk138.unk1][0]; - r4->unk138.unk0 = 0; + --game->spritesManager.unk1; + game->spritesManager.unk2 = gUnknown_846E2F0[game->spritesManager.unk1][0]; + game->spritesManager.animBerryIdx = 0; return 0; case 2: - r4->unk2C = 0; + game->vibration = 0; SetGpuReg(REG_OFFSET_BG0VOFS, 0); SetGpuReg(REG_OFFSET_BG2VOFS, 0); SetGpuReg(REG_OFFSET_BG3VOFS, 0); @@ -458,19 +464,22 @@ static u32 sub_814C118(struct BerryCrushGame * r4, UNUSED u8 *r1) case 3: if (!IsLinkTaskFinished()) return 0; - sub_814BB4C(12, 1, NULL); - r4->unk12 = 6; - r4->unkC = 0; + BerryCrush_RunOrScheduleCommand(BCCMD_Countdown, 1, NULL); + game->gameState = 6; + game->cmdState = 0; return 0; } - ++r4->unkC; + ++game->cmdState; return 0; } -static u32 sub_814C24C(struct BerryCrushGame * r4, UNUSED u8 *r1) +static u32 BerryCrushCommand_Countdown(struct BerryCrushGame * game, UNUSED u8 *params) { - switch (r4-> unkC) + switch (game-> cmdState) { + case 0: + LinkRfu_SetRfuFuncToSend6600(); + break; case 1: if (!IsLinkTaskFinished()) return 0; @@ -479,424 +488,422 @@ static u32 sub_814C24C(struct BerryCrushGame * r4, UNUSED u8 *r1) case 2: if (IsMinigameCountdownRunning()) return 0; - // fallthrough - case 0: LinkRfu_SetRfuFuncToSend6600(); break; case 3: if (!IsLinkTaskFinished()) return 0; - r4->unk138.unk0 = 0; - r4->unk138.unk1 = 0; - r4->unk138.unk2 = 0; - r4->unk138.unk3 = 0; - r4->unk10 = 0; - if (r4->unk8 == 0) - sub_814BB4C(13, 1, NULL); + game->spritesManager.animBerryIdx = 0; + game->spritesManager.unk1 = 0; + game->spritesManager.unk2 = 0; + game->spritesManager.unk3 = 0; + game->unk10 = 0; + if (game->localId == 0) + BerryCrush_RunOrScheduleCommand(BCCMD_PlayGame_Master, 1, NULL); else - sub_814BB4C(14, 1, NULL); - r4->unk12 = 7; - r4->unkC = 0; + BerryCrush_RunOrScheduleCommand(BCCMD_PlayGame_Slave, 1, NULL); + game->gameState = 7; + game->cmdState = 0; return 0; } - ++r4->unkC; + ++game->cmdState; return 0; } -void sub_814C2FC(struct BerryCrushGame * r4) +static void BerryCrush_ProcessGamePartnerInput(struct BerryCrushGame * game) { - u8 r8 = 0; + u8 numPressedA = 0; u16 r3; - u16 *r2; - u8 r7 = 0; + u16 *curRecvCmd; + u8 i = 0; s32 r2_ = 0; s32 r0; - for (r7 = 0; r7 < r4->unk9; ++r7) + for (i = 0; i < game->playerCount; ++i) { - r2 = gRecvCmds[r7]; - if ((r2[0] & 0xFF00) == 0x2F00 - && r2[1] == 2) + curRecvCmd = gRecvCmds[i]; + if ((curRecvCmd[0] & 0xFF00) == 0x2F00 + && curRecvCmd[1] == 2) { - if ((u8)r2[2] & 4) + if ((u8)curRecvCmd[2] & 4) // pushedAButton { - r4->unk5C.unk02_3 |= gUnknown_846E2E0[r7]; - r4->unk68.as_four_players.others[r7].unk4.as_2d_bytes[1][5] = 1; - ++r4->unk68.as_four_players.others[r7].unk4.as_hwords[3]; - ++r8; - r3 = r4->unk28 - r4->unk68.as_four_players.others[r7].unk2; - if (r3 >= r4->unk68.as_four_players.others[r7].unk4.as_hwords[1] - 1 - && r3 <= r4->unk68.as_four_players.others[r7].unk4.as_hwords[1] + 1) + game->localState.unk02_3 |= gUnknown_846E2E0[i]; + game->unk68.as_four_players.others[i].unk4.as_2d_bytes[1][5] = 1; + ++game->unk68.as_four_players.others[i].unk4.as_hwords[3]; + ++numPressedA; + r3 = game->timer - game->unk68.as_four_players.others[i].unk2; + if (r3 >= game->unk68.as_four_players.others[i].unk4.as_hwords[1] - 1 + && r3 <= game->unk68.as_four_players.others[i].unk4.as_hwords[1] + 1) { - ++r4->unk68.as_four_players.others[r7].unk4.as_hwords[0]; - r4->unk68.as_four_players.others[r7].unk4.as_hwords[1] = r3; - if (r4->unk68.as_four_players.others[r7].unk4.as_hwords[0] > r4->unk68.as_four_players.others[r7].unk4.as_hwords[2]) - r4->unk68.as_four_players.others[r7].unk4.as_hwords[2] = r4->unk68.as_four_players.others[r7].unk4.as_hwords[0]; + ++game->unk68.as_four_players.others[i].unk4.as_hwords[0]; + game->unk68.as_four_players.others[i].unk4.as_hwords[1] = r3; + if (game->unk68.as_four_players.others[i].unk4.as_hwords[0] > game->unk68.as_four_players.others[i].unk4.as_hwords[2]) + game->unk68.as_four_players.others[i].unk4.as_hwords[2] = game->unk68.as_four_players.others[i].unk4.as_hwords[0]; } else { - r4->unk68.as_four_players.others[r7].unk4.as_hwords[0] = 0; - r4->unk68.as_four_players.others[r7].unk4.as_hwords[1] = r3; + game->unk68.as_four_players.others[i].unk4.as_hwords[0] = 0; + game->unk68.as_four_players.others[i].unk4.as_hwords[1] = r3; } - r4->unk68.as_four_players.others[r7].unk2 = r4->unk28; - if (++r4->unk68.as_four_players.others[r7].unk4.as_2d_bytes[1][4] > 2) - r4->unk68.as_four_players.others[r7].unk4.as_2d_bytes[1][4] = 0; + game->unk68.as_four_players.others[i].unk2 = game->timer; + if (++game->unk68.as_four_players.others[i].unk4.as_2d_bytes[1][4] > 2) + game->unk68.as_four_players.others[i].unk4.as_2d_bytes[1][4] = 0; } else { - r4->unk68.as_four_players.others[r7].unk4.as_2d_bytes[1][5] = 0; + game->unk68.as_four_players.others[i].unk4.as_2d_bytes[1][5] = 0; } } } - if (r8 > 1) + if (numPressedA > 1) { - for (r7 = 0; r7 < r4->unk9; ++r7) + for (i = 0; i < game->playerCount; ++i) { - if (r4->unk68.as_four_players.others[r7].unk4.as_2d_bytes[1][5] != 0) + if (game->unk68.as_four_players.others[i].unk4.as_2d_bytes[1][5] != 0) { - r4->unk68.as_four_players.others[r7].unk4.as_2d_bytes[1][5] |= 2; - ++r4->unk68.as_four_players.others[r7].unk4.as_hwords[4]; + game->unk68.as_four_players.others[i].unk4.as_2d_bytes[1][5] |= 2; + ++game->unk68.as_four_players.others[i].unk4.as_hwords[4]; } } } - if (r8 != 0) + if (numPressedA != 0) { - r4->unk2E += r8; - r8 += gUnknown_846E2E8[r8 - 1]; - r4->unk34 += r8; - r4->unk1A += r8; - r0 = r4->unk18; - r2_ = r4->unk1A; + game->unk2E += numPressedA; + numPressedA += gUnknown_846E2E8[numPressedA - 1]; + game->unk34 += numPressedA; + game->unk1A += numPressedA; + r0 = game->unk18; + r2_ = game->unk1A; if (r0 - r2_ > 0) { r2_ <<= 8; - r2_ = sub_80D8B68(r2_, r4->unk20); + r2_ = MathUtil_Div32(r2_, game->unk20); r2_ >>= 8; - r4->unk24 = r2_; + game->unk24 = r2_; } else { - r4->unk24 = 32; - r4->unk5C.unk02_0 = 1; + game->unk24 = 32; + game->localState.unk02_0 = 1; } } } -void sub_814C4B8(struct BerryCrushGame * r3) +static void BerryCrush_BuildLocalState(struct BerryCrushGame * game) { - u8 r6 = 0; + u8 count = 0; u16 r1 = 0; - u8 r4 = 0; + u8 i = 0; - for (r4 = 0; r4 < r3->unk9; ++r4) + for (i = 0; i < game->playerCount; ++i) { - if (r3->unk68.as_four_players.others[r4].unk4.as_2d_bytes[1][5] != 0) + if (game->unk68.as_four_players.others[i].unk4.as_2d_bytes[1][5] != 0) { - ++r6; - r1 = r3->unk68.as_four_players.others[r4].unk4.as_2d_bytes[1][4] + 1; - if (r3->unk68.as_four_players.others[r4].unk4.as_2d_bytes[1][5] & 2) + ++count; + r1 = game->unk68.as_four_players.others[i].unk4.as_2d_bytes[1][4] + 1; + if (game->unk68.as_four_players.others[i].unk4.as_2d_bytes[1][5] & 2) r1 |= 4; - r1 <<= 3 * r4; - r3->unk5C.unk08 |= r1; + r1 <<= 3 * i; + game->localState.unk08 |= r1; } } - r3->unk5C.unk04 = r3->unk24; - if (r6 == 0) + game->localState.unk04 = game->unk24; + if (count == 0) { - if (r3->unk138.unk3 != 0) - ++r3->unk138.unk0; + if (game->spritesManager.unk3 != 0) + ++game->spritesManager.animBerryIdx; else goto SET_UNK5F_0; } else { - if (r3->unk138.unk3 != 0) + if (game->spritesManager.unk3 != 0) { - if (r6 != r3->unk138.unk1) + if (count != game->spritesManager.unk1) { - r3->unk138.unk1 = r6 - 1; - r3->unk138.unk2 = gUnknown_846E314[r6 - 1][0]; + game->spritesManager.unk1 = count - 1; + game->spritesManager.unk2 = gUnknown_846E314[count - 1][0]; } else { - ++r3->unk138.unk0; + ++game->spritesManager.animBerryIdx; } } else { - r3->unk138.unk0 = 0; - r3->unk138.unk1 = r6 - 1; - r3->unk138.unk2 = gUnknown_846E314[r6 - 1][0]; - r3->unk138.unk3 = 1; + game->spritesManager.animBerryIdx = 0; + game->spritesManager.unk1 = count - 1; + game->spritesManager.unk2 = gUnknown_846E314[count - 1][0]; + game->spritesManager.unk3 = 1; } } - if (r3->unk138.unk3 != 0) + if (game->spritesManager.unk3 != 0) { - if (r3->unk138.unk0 >= r3->unk138.unk2) + if (game->spritesManager.animBerryIdx >= game->spritesManager.unk2) { - r3->unk138.unk0 = 0; - r3->unk138.unk1 = 0; - r3->unk138.unk2 = 0; - r3->unk138.unk3 = 0; + game->spritesManager.animBerryIdx = 0; + game->spritesManager.unk1 = 0; + game->spritesManager.unk2 = 0; + game->spritesManager.unk3 = 0; r1 = 0; } else { - r1 = gUnknown_846E314[r3->unk138.unk1][r3->unk138.unk0 + 1]; + r1 = gUnknown_846E314[game->spritesManager.unk1][game->spritesManager.animBerryIdx + 1]; } - r3->unk5C.unk03 = r1; + game->localState.unk03 = r1; } else { SET_UNK5F_0: - r3->unk5C.unk03 = 0; + game->localState.unk03 = 0; } - r3->unk5C.unk06 = r3->unk26; + game->localState.unk06 = game->unk26; } -void sub_814C618(struct BerryCrushGame * r5) +static void BerryCrush_HandlePlayerInput(struct BerryCrushGame * game) { - if (gMain.newKeys & A_BUTTON) - r5->unk5C.unk02_2 = 1; - if (gMain.heldKeys & A_BUTTON) + if (JOY_NEW(A_BUTTON)) + game->localState.pushedAButton = TRUE; + if (JOY_HELD(A_BUTTON)) { - if (r5->unk68.as_four_players.others[r5->unk8].unk4.as_hwords[5] < r5->unk28) - ++r5->unk68.as_four_players.others[r5->unk8].unk4.as_hwords[5]; + if (game->unk68.as_four_players.others[game->localId].unk4.as_hwords[5] < game->timer) + ++game->unk68.as_four_players.others[game->localId].unk4.as_hwords[5]; } - if (r5->unk8 != 0 && r5->unk5C.unk02_2 == 0) + if (game->localId != 0 && !game->localState.pushedAButton) return; - r5->unk5C.unk00 = 2; - if (r5->unk28 % 30 == 0) + game->localState.unk00 = 2; + if (game->timer % 30 == 0) { - if (r5->unk2E > gUnknown_846E3C4[r5->unk9 - 2]) + if (game->unk2E > gUnknown_846E3C4[game->playerCount - 2]) { - ++r5->unk30; - r5->unk25_4 = 1; + ++game->unk30; + game->unk25_4 = 1; } else { - r5->unk25_4 = 0; + game->unk25_4 = 0; } - r5->unk2E = 0; - ++r5->unk32; + game->unk2E = 0; + ++game->unk32; } - if (r5->unk28 % 15 == 0) + if (game->timer % 15 == 0) { - if (r5->unk34 < gUnknown_846E3B4[r5->unk9 - 2][0]) - r5->unk25_5 = 0; - else if (r5->unk34 < gUnknown_846E3B4[r5->unk9 - 2][1]) - r5->unk25_5 = 1; - else if (r5->unk34 < gUnknown_846E3B4[r5->unk9 - 2][2]) - r5->unk34 = 2; // typo since r5->unk34 will be reset? - else if (r5->unk34 < gUnknown_846E3B4[r5->unk9 - 2][3]) - r5->unk34 = 3; // typo since r5->unk34 will be reset? + if (game->unk34 < gUnknown_846E3B4[game->playerCount - 2][0]) + game->unk25_5 = 0; + else if (game->unk34 < gUnknown_846E3B4[game->playerCount - 2][1]) + game->unk25_5 = 1; + else if (game->unk34 < gUnknown_846E3B4[game->playerCount - 2][2]) + game->unk34 = 2; // typo since game->unk34 will be reset? + else if (game->unk34 < gUnknown_846E3B4[game->playerCount - 2][3]) + game->unk34 = 3; // typo since game->unk34 will be reset? else - r5->unk25_5 = 4; - r5->unk34 = 0; + game->unk25_5 = 4; + game->unk34 = 0; } else { - ++r5->unk10; - if (r5->unk10 > 60) + ++game->unk10; + if (game->unk10 > 60) { - if (r5->unk10 > 70) + if (game->unk10 > 70) { sub_80FBA44(); - r5->unk10 = 0; + game->unk10 = 0; } - else if (r5->unk5C.unk02_3 == 0) + else if (game->localState.unk02_3 == 0) { sub_80FBA44(); - r5->unk10 = 0; + game->unk10 = 0; } } } - if (r5->unk28 >= 36000) - r5->unk5C.unk02_0 = 1; - r5->unk5C.unk02_1 = r5->unk25_4; - r5->unk5C.unk0A = r5->unk25_5; - memcpy(r5->unk40.unk2, &r5->unk5C, sizeof(r5->unk40.unk2)); - RfuPrepareSend0x2f00(r5->unk40.unk2); + if (game->timer >= 36000) + game->localState.unk02_0 = 1; + game->localState.unk02_1 = game->unk25_4; + game->localState.unk0A = game->unk25_5; + memcpy(&game->sendCmd[1], &game->localState, sizeof(game->sendCmd) - 2); + RfuPrepareSend0x2f00(game->sendCmd + 1); } -void sub_814C7BC(struct BerryCrushGame * r5) +static void BerryCrush_UpdateGameState(struct BerryCrushGame * game) { struct BerryCrushGame_4E * r4_; #ifndef NONMATCHING - register u32 r4 asm("r4"); - register u32 r0 asm("r0"); + register u32 i asm("r4"); + register u32 iPlusPlus asm("r0"); - for (r4 = 0; r4 < r5->unk9; r4 = (u8)r0) + for (i = 0; i < game->playerCount; i = (u8)iPlusPlus) { - r5->unk68.as_four_players.others[r4].unk4.as_2d_bytes[1][5] = 0; - r0 = r4 + 1; + game->unk68.as_four_players.others[i].unk4.as_2d_bytes[1][5] = 0; + iPlusPlus = i + 1; } #else - u8 r4; + u8 i; - for (r4 = 0; r4 < r5->unk9; ++r4) - r5->unk68.as_four_players.others[r4].unk4.as_2d_bytes[1][5] = 0; + for (i = 0; i < game->playerCount; ++i) + game->unk68.as_four_players.others[i].unk4.as_2d_bytes[1][5] = 0; #endif if ((gRecvCmds[0][0] & 0xFF00) != 0x2F00 || gRecvCmds[0][1] != 2) { - r5->unk25_2 = 0; + game->unk25_2 = 0; } else { - r4_ = &r5->unk40.unkE; + r4_ = (struct BerryCrushGame_4E *)&game->recvCmd; memcpy(r4_, gRecvCmds, sizeof(struct BerryCrushGame_4E)); - r5->unk2A = r4_->unk6; - r5->unk2C = r4_->unk5; - r5->unk28 = r4_->unk8; - sub_814DC5C(r5, &r5->unk138); - if (r4_->unk4_0) - r5->unk25_3 = 1; + game->depth = r4_->data.unk04; + game->vibration = r4_->data.unk03; + game->timer = r4_->data.unk06; + sub_814DC5C(game, &game->spritesManager); + if (r4_->data.unk02_0) + game->unk25_3 = 1; } } -static u32 sub_814C850(struct BerryCrushGame * r4, UNUSED u8 *r1) +static u32 BerryCrushCommand_PlayGame_Master(struct BerryCrushGame * game, UNUSED u8 *params) { - memset(&r4->unk5C, 0, sizeof(r4->unk5C)); - memset(&r4->unk40.unkE, 0, sizeof(r4->unk40.unkE)); - sub_814C7BC(r4); - SetGpuReg(REG_OFFSET_BG0VOFS, -r4->unk2C); - SetGpuReg(REG_OFFSET_BG2VOFS, -r4->unk2C); - SetGpuReg(REG_OFFSET_BG3VOFS, -r4->unk2C); - if (r4->unk25_3) + memset(&game->localState, 0, sizeof(game->localState)); + memset(&game->recvCmd, 0, sizeof(game->recvCmd)); + BerryCrush_UpdateGameState(game); + SetGpuReg(REG_OFFSET_BG0VOFS, -game->vibration); + SetGpuReg(REG_OFFSET_BG2VOFS, -game->vibration); + SetGpuReg(REG_OFFSET_BG3VOFS, -game->vibration); + if (game->unk25_3) { - if (r4->unk28 >= 36000) + if (game->timer >= 36000) { - r4->unk28 = 36000; - sub_814BB4C(16, 1, NULL); + game->timer = 36000; + BerryCrush_RunOrScheduleCommand(BCCMD_HandleTimeUp, 1, NULL); } else { - sub_814BB4C(15, 1, NULL); + BerryCrush_RunOrScheduleCommand(BCCMD_FinishGame, 1, NULL); } - r4->unk10 = 0; - r4->unkC = 0; + game->unk10 = 0; + game->cmdState = 0; return 0; } else { - ++r4->unk26; - sub_814C2FC(r4); - sub_814C4B8(r4); - sub_814C618(r4); + ++game->unk26; + BerryCrush_ProcessGamePartnerInput(game); + BerryCrush_BuildLocalState(game); + BerryCrush_HandlePlayerInput(game); return 0; } } -static u32 sub_814C8F8(struct BerryCrushGame * r4, UNUSED u8 *r1) +static u32 BerryCrushCommand_PlayGame_Slave(struct BerryCrushGame * game, UNUSED u8 *params) { - memset(&r4->unk5C, 0, sizeof(r4->unk5C)); - memset(&r4->unk40.unkE, 0, sizeof(r4->unk40.unkE)); - sub_814C7BC(r4); - SetGpuReg(REG_OFFSET_BG0VOFS, -r4->unk2C); - SetGpuReg(REG_OFFSET_BG2VOFS, -r4->unk2C); - SetGpuReg(REG_OFFSET_BG3VOFS, -r4->unk2C); - if (r4->unk25_3) + memset(&game->localState, 0, sizeof(game->localState)); + memset(&game->recvCmd, 0, sizeof(game->recvCmd)); + BerryCrush_UpdateGameState(game); + SetGpuReg(REG_OFFSET_BG0VOFS, -game->vibration); + SetGpuReg(REG_OFFSET_BG2VOFS, -game->vibration); + SetGpuReg(REG_OFFSET_BG3VOFS, -game->vibration); + if (game->unk25_3) { - if (r4->unk28 >= 36000) + if (game->timer >= 36000) { - r4->unk28 = 36000; - sub_814BB4C(16, 1, NULL); + game->timer = 36000; + BerryCrush_RunOrScheduleCommand(BCCMD_HandleTimeUp, 1, NULL); } else { - sub_814BB4C(15, 1, NULL); + BerryCrush_RunOrScheduleCommand(BCCMD_FinishGame, 1, NULL); } - r4->unk10 = 0; - r4->unkC = 0; + game->unk10 = 0; + game->cmdState = 0; return 0; } else { - sub_814C618(r4); + BerryCrush_HandlePlayerInput(game); return 0; } } -static u32 sub_814C990(struct BerryCrushGame * r4, UNUSED u8 *r1) +static u32 BerryCrushCommand_FinishGame(struct BerryCrushGame * game, UNUSED u8 *params) { - switch (r4->unkC) + switch (game->cmdState) { case 0: - r4->unk12 = 8; + game->gameState = 8; PlaySE(SE_W070); BlendPalettes(0xFFFFFFFF, 8, RGB(31, 31, 0)); - r4->unk138.unk0 = 2; + game->spritesManager.animBerryIdx = 2; break; case 1: - if (--r4->unk138.unk0 != 255) + if (--game->spritesManager.animBerryIdx != 255) return 0; BlendPalettes(0xFFFFFFFF, 0, RGB(31, 31, 0)); - r4->unk138.unk1 = 4; - r4->unk138.unk0 = 0; - r4->unk138.unk2 = gUnknown_846E2F0[r4->unk138.unk1][0]; + game->spritesManager.unk1 = 4; + game->spritesManager.animBerryIdx = 0; + game->spritesManager.unk2 = gUnknown_846E2F0[game->spritesManager.unk1][0]; break; case 2: - r4->unk2C = gUnknown_846E2F0[r4->unk138.unk1][r4->unk138.unk0]; - SetGpuReg(REG_OFFSET_BG0VOFS, -r4->unk2C); - SetGpuReg(REG_OFFSET_BG2VOFS, -r4->unk2C); - SetGpuReg(REG_OFFSET_BG3VOFS, -r4->unk2C); - if (++r4->unk138.unk0 < r4->unk138.unk2) + game->vibration = gUnknown_846E2F0[game->spritesManager.unk1][game->spritesManager.animBerryIdx]; + SetGpuReg(REG_OFFSET_BG0VOFS, -game->vibration); + SetGpuReg(REG_OFFSET_BG2VOFS, -game->vibration); + SetGpuReg(REG_OFFSET_BG3VOFS, -game->vibration); + if (++game->spritesManager.animBerryIdx < game->spritesManager.unk2) return 0; - if (r4->unk138.unk1 != 0) + if (game->spritesManager.unk1 != 0) { - --r4->unk138.unk1; - r4->unk138.unk2 = gUnknown_846E2F0[r4->unk138.unk1][0]; - r4->unk138.unk0 = 0; + --game->spritesManager.unk1; + game->spritesManager.unk2 = gUnknown_846E2F0[game->spritesManager.unk1][0]; + game->spritesManager.animBerryIdx = 0; return 0; } break; case 3: - r4->unk2C = 0; + game->vibration = 0; SetGpuReg(REG_OFFSET_BG0VOFS, 0); SetGpuReg(REG_OFFSET_BG2VOFS, 0); SetGpuReg(REG_OFFSET_BG3VOFS, 0); break; case 4: - if (!sub_814DE50(r4, &r4->unk138)) + if (!sub_814DE50(game, &game->spritesManager)) return 0; LinkRfu_SetRfuFuncToSend6600(); - r4->unk10 = 0; + game->unk10 = 0; break; case 5: if (!IsLinkTaskFinished()) return 0; - sub_814BB4C(17, 1, NULL); - r4->unk10 = 0; - r4->unkC = 0; + BerryCrush_RunOrScheduleCommand(BCCMD_TabulateResults, 1, NULL); + game->unk10 = 0; + game->cmdState = 0; return 0; } - ++r4->unkC; + ++game->cmdState; return 0; } -static u32 sub_814CB20(struct BerryCrushGame * r5, u8 *r6) +static u32 BerryCrushCommand_HandleTimeUp(struct BerryCrushGame * game, u8 *params) { - switch (r5->unkC) + switch (game->cmdState) { case 0: - r5->unk12 = 9; + game->gameState = 9; PlaySE(SE_HAZURE); BlendPalettes(0xFFFFFFFF, 8, RGB(31, 0, 0)); - r5->unk138.unk0 = 4; + game->spritesManager.animBerryIdx = 4; break; case 1: - if (--r5->unk138.unk0 != 255) + if (--game->spritesManager.animBerryIdx != 255) return 0; BlendPalettes(0xFFFFFFFF, 0, RGB(31, 0, 0)); - r5->unk138.unk0 = 0; + game->spritesManager.animBerryIdx = 0; break; case 2: - if (!sub_814DE50(r5, &r5->unk138)) + if (!sub_814DE50(game, &game->spritesManager)) return 0; LinkRfu_SetRfuFuncToSend6600(); - r5->unk10 = 0; + game->unk10 = 0; SetGpuReg(REG_OFFSET_BG0VOFS, 0); SetGpuReg(REG_OFFSET_BG2VOFS, 0); SetGpuReg(REG_OFFSET_BG3VOFS, 0); @@ -904,87 +911,89 @@ static u32 sub_814CB20(struct BerryCrushGame * r5, u8 *r6) case 3: if (!IsLinkTaskFinished()) return 0; - ConvertIntToDecimalStringN(gStringVar1, r5->unk1C, STR_CONV_MODE_LEFT_ALIGN, 6); - sub_814D5A4(r6, 7, 1, 0, 0); - r5->unkE = 19; - sub_814BB4C(3, 1, NULL); - r5->unk10 = 0; - r5->unkC = 0; + ConvertIntToDecimalStringN(gStringVar1, game->powder, STR_CONV_MODE_LEFT_ALIGN, 6); + BerryCrush_SetShowMessageParams(params, BCTEXT_TIMEUP, 1, 0, 0); + game->nextCmd = BCCMD_SaveTheGame; + BerryCrush_RunOrScheduleCommand(BCCMD_PrintMessage, 1, NULL); + game->unk10 = 0; + game->cmdState = 0; return 0; } - ++r5->unkC; + ++game->cmdState; return 0; } -static u32 sub_814CC0C(struct BerryCrushGame * r7, UNUSED u8 *r1) +static u32 BerryCrushCommand_TabulateResults(struct BerryCrushGame * game, UNUSED u8 *params) { - u8 r8, r4_; + u8 i, j; s32 r2; s32 r4; u8 r6; // ??? - switch (r7->unkC) + switch (game->cmdState) { case 0: - memset(r7->unk40.unk2, 0, 2 * sizeof(u16)); - if (r7->unk68.as_four_players.others[r7->unk8].unk4.as_hwords[5] > r7->unk28) - r7->unk68.as_four_players.others[r7->unk8].unk4.as_hwords[5] = r7->unk28; - r7->unk40.unk2[0] = r7->unk68.as_four_players.others[r7->unk8].unk4.as_hwords[5]; - SendBlock(0, r7->unk40.unk2, 2); + memset(game->sendCmd + 1, 0, 2 * sizeof(u16)); + if (game->unk68.as_four_players.others[game->localId].unk4.as_hwords[5] > game->timer) + game->unk68.as_four_players.others[game->localId].unk4.as_hwords[5] = game->timer; + game->sendCmd[1] = game->unk68.as_four_players.others[game->localId].unk4.as_hwords[5]; + SendBlock(0, game->sendCmd + 1, 2); break; case 1: if (!IsLinkTaskFinished()) return 0; - r7->unk10 = 0; + game->unk10 = 0; break; case 2: - if (GetBlockReceivedStatus() != gUnknown_846E3C8[r7->unk9 - 2]) + if (GetBlockReceivedStatus() != sReceivedPlayerBitmasks[game->playerCount - 2]) return 0; - for (r8 = 0; r8 < r7->unk9; ++r8) - r7->unk68.as_four_players.others[r8].unk4.as_hwords[5] = gBlockRecvBuffer[r8][0]; - r7->unk10 = 0; - r7->unk40.unk2[0] = 0; + for (i = 0; i < game->playerCount; ++i) + game->unk68.as_four_players.others[i].unk4.as_hwords[5] = gBlockRecvBuffer[i][0]; + game->unk10 = 0; + game->sendCmd[1] = 0; ResetBlockReceivedFlags(); - if (r7->unk8 == 0) - r7->unkC = 3; + if (game->localId == 0) + game->cmdState = 3; else - r7->unkC = 6; + game->cmdState = 6; return 0; case 3: memset( - &r7->unk68, + &game->unk68, 0, sizeof(struct BerryCrushGame_68_x_SubStruct) ); - r7->unk68.as_four_players.unk00.unk04 = r7->unk28; - r7->unk68.as_four_players.unk00.unk06 = r7->unk18 / (r7->unk28 / 60); - r2 = sub_80D8AE0(r7->unk30 << 8, 0x3200); - r2 = sub_80D8B68(r2, r7->unk32 << 8) + 0x3200; + game->unk68.as_four_players.unk00.unk04 = game->timer; + game->unk68.as_four_players.unk00.unk06 = game->unk18 / (game->timer / 60); + // (unk30 * 50 / unk32) + 50 + r2 = MathUtil_Mul32(game->unk30 << 8, 50 << 8); + r2 = MathUtil_Div32(r2, game->unk32 << 8) + (50 << 8); r2 >>= 8; - r7->unk68.as_four_players.unk00.unk08 = r2 & 0x7F; + game->unk68.as_four_players.unk00.unk08 = r2 & 0x7F; + // powder + playerCount * (r2 / 100) r2 <<= 8; - r2 = sub_80D8B68(r2, 0x6400); - r4 = (r7->unk1C * r7->unk9) << 8; - r4 = sub_80D8AE0(r4, r2); - r7->unk68.as_four_players.unk00.unk00 = r4 >> 8; - r7->unk68.as_five_players.unk1C[0].unk4.as_2d_bytes[0][7] = Random() % 3; - for (r6 = 0, r8 = 0; r8 < r7->unk9; ++r8) + r2 = MathUtil_Div32(r2, 100 << 8); + r4 = (game->powder * game->playerCount) << 8; + r4 = MathUtil_Mul32(r4, r2); + game->unk68.as_four_players.unk00.unk00 = r4 >> 8; + game->unk68.as_five_players.players[0].unk4.as_2d_bytes[0][7] = Random() % 3; + for (r6 = 0, i = 0; i < game->playerCount; ++i) { - r7->unk68.as_five_players.unk1C[0].unk4.as_2d_bytes[0][r8] = r8; - r7->unk68.as_five_players.unk1C[0].unk4.as_2d_bytes[1][r8] = r8; - r7->unk68.as_four_players.unk00.unk0C[0][r8] = r7->unk68.as_four_players.others[r8].unk4.as_hwords[3]; - r7->unk68.as_four_players.unk00.unk0A += r7->unk68.as_four_players.unk00.unk0C[0][r8]; - switch (r7->unk68.as_five_players.unk1C[0].unk4.as_2d_bytes[0][7]) + game->unk68.as_five_players.players[0].unk4.as_2d_bytes[0][i] = i; + game->unk68.as_five_players.players[0].unk4.as_2d_bytes[1][i] = i; + game->unk68.as_four_players.unk00.stats[0][i] = game->unk68.as_four_players.others[i].unk4.as_hwords[3]; + game->unk68.as_four_players.unk00.unk0A += game->unk68.as_four_players.unk00.stats[0][i]; + switch (game->unk68.as_five_players.players[0].unk4.as_2d_bytes[0][7]) { case 0: - if (r7->unk68.as_four_players.others[r8].unk4.as_hwords[3] != 0) + if (game->unk68.as_four_players.others[i].unk4.as_hwords[3] != 0) { - r2 = r7->unk68.as_four_players.others[r8].unk4.as_hwords[2]; + r2 = game->unk68.as_four_players.others[i].unk4.as_hwords[2]; r2 <<= 8; - r2 = sub_80D8AE0(r2, 0x6400); - r4 = r7->unk68.as_four_players.others[r8].unk4.as_hwords[3]; + r2 = MathUtil_Mul32(r2, 0x6400); + r4 = game->unk68.as_four_players.others[i].unk4.as_hwords[3]; r4 <<= 8; - r4 = sub_80D8B68(r2, r4); + r4 = MathUtil_Div32(r2, r4); } else { @@ -992,14 +1001,14 @@ static u32 sub_814CC0C(struct BerryCrushGame * r7, UNUSED u8 *r1) } break; case 1: - if (r7->unk68.as_four_players.others[r8].unk4.as_hwords[3] != 0) + if (game->unk68.as_four_players.others[i].unk4.as_hwords[3] != 0) { - r2 = r7->unk68.as_four_players.others[r8].unk4.as_hwords[4]; + r2 = game->unk68.as_four_players.others[i].unk4.as_hwords[4]; r2 <<= 8; - r2 = sub_80D8AE0(r2, 0x6400); - r4 = r7->unk68.as_four_players.others[r8].unk4.as_hwords[3]; + r2 = MathUtil_Mul32(r2, 0x6400); + r4 = game->unk68.as_four_players.others[i].unk4.as_hwords[3]; r4 <<= 8; - r4 = sub_80D8B68(r2, r4); + r4 = MathUtil_Div32(r2, r4); } else { @@ -1007,160 +1016,160 @@ static u32 sub_814CC0C(struct BerryCrushGame * r7, UNUSED u8 *r1) } break; case 2: - if (r7->unk68.as_four_players.others[r8].unk4.as_hwords[3] == 0) + if (game->unk68.as_four_players.others[i].unk4.as_hwords[3] == 0) { r4 = 0; } - else if (r7->unk68.as_four_players.others[r8].unk4.as_hwords[5] >= r7->unk28) + else if (game->unk68.as_four_players.others[i].unk4.as_hwords[5] >= game->timer) { r4 = 0x6400; } else { - r2 = r7->unk68.as_four_players.others[r8].unk4.as_hwords[5]; + r2 = game->unk68.as_four_players.others[i].unk4.as_hwords[5]; r2 <<= 8; - r2 = sub_80D8AE0(r2, 0x6400); - r4 = r7->unk28; + r2 = MathUtil_Mul32(r2, 0x6400); + r4 = game->timer; r4 <<= 8; - r4 = sub_80D8B68(r2, r4); + r4 = MathUtil_Div32(r2, r4); } break; } r4 >>= 4; - r7->unk68.as_four_players.unk00.unk0C[1][r8] = r4; + game->unk68.as_four_players.unk00.stats[1][i] = r4; } break; case 4: - for (r6 = 0, r8 = 0; r8 < r7->unk9 - 1; ++r8) + for (r6 = 0, i = 0; i < game->playerCount - 1; ++i) { - for (r4_ = r7->unk9 - 1; r4_ > r8; --r4_) + for (j = game->playerCount - 1; j > i; --j) { u16 r0; u8 r3; - u16 *sp00 = r7->unk68.as_four_players.unk00.unk0C[0]; - u8 *sp04 = r7->unk68.as_five_players.unk1C[0].unk4.as_2d_bytes[0]; - u8 *r10 = r7->unk68.as_five_players.unk1C[0].unk4.as_2d_bytes[1]; - u16 *r9 = r7->unk68.as_four_players.unk00.unk0C[1]; - s32 r12 = r4_ - 1; - u16 *p1 = sp00 + r12; // these have to be here - u16 *p2 = sp00 + r4_; // to swap operands. macro? + u16 *numPresses_p = game->unk68.as_four_players.unk00.stats[0]; + u8 *sp04 = game->unk68.as_five_players.players[0].unk4.as_2d_bytes[0]; + u8 *r10 = game->unk68.as_five_players.players[0].unk4.as_2d_bytes[1]; + u16 *r9 = game->unk68.as_four_players.unk00.stats[1]; + s32 r12 = j - 1; + u16 *p1 = numPresses_p + r12; // these have to be here + u16 *p2 = numPresses_p + j; // to swap operands. macro? if (*p1 < *p2) { - r0 = sp00[r4_]; - sp00[r4_] = sp00[r12]; - sp00[r12] = r0; - r3 = sp04[r4_]; - sp04[r4_] = sp04[r12]; + r0 = numPresses_p[j]; + numPresses_p[j] = numPresses_p[r12]; + numPresses_p[r12] = r0; + r3 = sp04[j]; + sp04[j] = sp04[r12]; sp04[r12] = r3; } p1 = r9 + r12; - p2 = r9 + r4_; + p2 = r9 + j; if (*p1 < *p2) { - r0 = r9[r4_]; - r9[r4_] = r9[r12]; + r0 = r9[j]; + r9[j] = r9[r12]; r9[r12] = r0; - r3 = r10[r4_]; - r10[r4_] = r10[r12]; + r3 = r10[j]; + r10[j] = r10[r12]; r10[r12] = r3; } } } SendBlock( 0, - &r7->unk68, + &game->unk68, sizeof(struct BerryCrushGame_68_x_SubStruct) ); break; case 5: if (!IsLinkTaskFinished()) return 0; - r7->unk10 = 0; + game->unk10 = 0; break; case 6: if (GetBlockReceivedStatus() != 1) return 0; memset( - &r7->unk68, + &game->unk68, 0, sizeof(struct BerryCrushGame_68_x_SubStruct) ); memcpy( - &r7->unk68, + &game->unk68, gBlockRecvBuffer, sizeof(struct BerryCrushGame_68_x_SubStruct) ); ResetBlockReceivedFlags(); - r7->unk10 = 0; + game->unk10 = 0; break; case 7: - sub_814B930(); - sub_814BB4C(18, 1, NULL); - r7->unk12 = 11; - r7->unkC = 0; - r7->unk24 = 0; + BerryCrush_UpdateSav2Records(); + BerryCrush_RunOrScheduleCommand(BCCMD_ShowResults, 1, NULL); + game->gameState = 11; + game->cmdState = 0; + game->unk24 = 0; return 0; } - ++r7->unkC; + ++game->cmdState; return 0; } -static u32 sub_814CFA8(struct BerryCrushGame * r5, u8 *r6) +static u32 BerryCrushCommand_ShowResults(struct BerryCrushGame * game, u8 *params) { - switch (r5->unkC) + switch (game->cmdState) { case 0: - if (!sub_814E644(r5, &r5->unk138)) + if (!sub_814E644(game, &game->spritesManager)) return 0; break; case 1: CopyBgTilemapBufferToVram(0); - r5->unk138.unk0 = 30; + game->spritesManager.animBerryIdx = 30; break; case 2: - if (r5->unk138.unk0 != 0) + if (game->spritesManager.animBerryIdx != 0) { - --r5->unk138.unk0; + --game->spritesManager.animBerryIdx; return 0; } - if (!(gMain.newKeys & A_BUTTON)) + if (!JOY_NEW(A_BUTTON)) return 0; PlaySE(SE_SELECT); - sub_814E80C(r5); + sub_814E80C(game); break; case 3: - if (r5->unk12 <= 12) + if (game->gameState <= 12) { - ++r5->unk12; - r5->unkC = 0; + ++game->gameState; + game->cmdState = 0; return 0; } break; case 4: - ConvertIntToDecimalStringN(gStringVar1, r5->unk1C, STR_CONV_MODE_LEFT_ALIGN, 6); + ConvertIntToDecimalStringN(gStringVar1, game->powder, STR_CONV_MODE_LEFT_ALIGN, 6); ConvertIntToDecimalStringN(gStringVar2, GetBerryPowder(), STR_CONV_MODE_LEFT_ALIGN, 6); - sub_814D5A4(r6, 2, 3, 0, 0); - r5->unkE = 19; - sub_814BB4C(3, 1, NULL); - r5->unkC = 0; + BerryCrush_SetShowMessageParams(params, BCTEXT_GAINEDPOWDER, 3, 0, 0); + game->nextCmd = BCCMD_SaveTheGame; + BerryCrush_RunOrScheduleCommand(BCCMD_PrintMessage, 1, NULL); + game->cmdState = 0; return 0; } - ++r5->unkC; + ++game->cmdState; return 0; } -static u32 sub_814D094(struct BerryCrushGame * r5, u8 *r4) +static u32 BerryCrushCommand_SaveTheGame(struct BerryCrushGame * game, u8 *params) { - switch (r5->unkC) + switch (game->cmdState) { case 0: - if (r5->unk28 >= 36000) - sub_814EB04(&r5->unk138); - sub_814D5A4(r4, 8, 0, 0, 1); - r5->unkE = 19; - sub_814BB4C(3, 1, NULL); - r5->unkC = 0; + if (game->timer >= 36000) + BerryCrush_HideTimerSprites(&game->spritesManager); + BerryCrush_SetShowMessageParams(params, BCTEXT_COMMSTANDBY, 0, 0, BCCMD_BeginNormalPaletteFade); + game->nextCmd = BCCMD_SaveTheGame; + BerryCrush_RunOrScheduleCommand(BCCMD_PrintMessage, 1, NULL); + game->cmdState = 0; return 0; case 1: LinkRfu_SetRfuFuncToSend6600(); @@ -1168,26 +1177,26 @@ static u32 sub_814D094(struct BerryCrushGame * r5, u8 *r4) case 2: if (!IsLinkTaskFinished()) return 0; - DrawDialogueFrame(0, 0); - AddTextPrinterParameterized2(0, 2, gText_SavingDontTurnOffThePower2, 0, 0, 2, 1, 3); - CopyWindowToVram(0, 3); - CreateTask(sub_80DA634, 0); + DrawDialogueFrame(0, FALSE); + AddTextPrinterParameterized2(0, 2, gText_SavingDontTurnOffThePower2, 0, NULL, 2, 1, 3); + CopyWindowToVram(0, COPYWIN_BOTH); + CreateTask(Task_SaveGame_UpdatedLinkRecords, 0); break; case 3: - if (FuncIsActiveTask(sub_80DA634)) + if (FuncIsActiveTask(Task_SaveGame_UpdatedLinkRecords)) return 0; break; case 4: - sub_814BB4C(20, 1, NULL); - r5->unk12 = 15; - r5->unkC = 0; + BerryCrush_RunOrScheduleCommand(BCCMD_AskPlayAgain, 1, NULL); + game->gameState = 15; + game->cmdState = 0; return 0; } - ++r5->unkC; + ++game->cmdState; return 0; } -static u32 sub_814D188(struct BerryCrushGame * r5, u8 *r6) +static u32 BerryCrushCommand_AskPlayAgain(struct BerryCrushGame * game, u8 *params) { s32 r4; #ifndef NONMATCHING @@ -1196,14 +1205,14 @@ static u32 sub_814D188(struct BerryCrushGame * r5, u8 *r6) s32 r0; #endif - switch (r5->unkC) + switch (game->cmdState) { case 0: - sub_814D5A4(r6, 4, 0, 0, 1); - r5->unkE = 20; - sub_814BB4C(3, 1, NULL); + BerryCrush_SetShowMessageParams(params, BCTEXT_ASKPLAYAGAIN, 0, 0, BCCMD_BeginNormalPaletteFade); + game->nextCmd = BCCMD_AskPlayAgain; + BerryCrush_RunOrScheduleCommand(BCCMD_PrintMessage, 1, NULL); r0 = 0; - r5->unkC = r0; // dunno what it's doing because it's already in case 0 + game->cmdState = r0; // dunno what it's doing because it's already in case 0 return 0; case 1: DisplayYesNoMenuDefaultYes(); @@ -1211,35 +1220,35 @@ static u32 sub_814D188(struct BerryCrushGame * r5, u8 *r6) case 2: if ((r4 = Menu_ProcessInputNoWrapClearOnChoose()) != -2) { - memset(r5->unk40.unk2, 0, sizeof(r5->unk40.unk2)); + memset(game->sendCmd + 1, 0, sizeof(game->sendCmd) - 2); if (r4 == 0) { if (CheckHasAtLeastOneBerry()) - r5->unk14 = 0; + game->unk14 = 0; else - r5->unk14 = 3; + game->unk14 = 3; } else { - r5->unk14 = 1; + game->unk14 = 1; } - ClearDialogWindowAndFrame(0, 1); - sub_814D5A4(r6, 8, 0, 0, 0); - r5->unkE = 21; - sub_814BB4C(3, 1, NULL); - r5->unkC = 0; + ClearDialogWindowAndFrame(0, TRUE); + BerryCrush_SetShowMessageParams(params, BCTEXT_COMMSTANDBY, 0, 0, 0); + game->nextCmd = BCCMD_CommunicatePlayAgainResponses; + BerryCrush_RunOrScheduleCommand(BCCMD_PrintMessage, 1, NULL); + game->cmdState = 0; } return 0; } - ++r5->unkC; + ++game->cmdState; return 0; } -static u32 sub_814D240(struct BerryCrushGame * r4, UNUSED u8 *r1) +static u32 BerryCrushCommand_CommunicatePlayAgainResponses(struct BerryCrushGame * game, UNUSED u8 *params) { - u8 r5 = 0; + u8 i = 0; - switch (r4->unkC) + switch (game->cmdState) { case 0: LinkRfu_SetRfuFuncToSend6600(); @@ -1247,38 +1256,38 @@ static u32 sub_814D240(struct BerryCrushGame * r4, UNUSED u8 *r1) case 1: if (!IsLinkTaskFinished()) return 0; - r4->unk40.unk2[0] = r4->unk14; - r4->unk40.unkE.unk0 = 0; - SendBlock(0, r4->unk40.unk2, sizeof(u16)); + game->sendCmd[1] = game->unk14; + game->recvCmd[0] = 0; + SendBlock(0, game->sendCmd + 1, sizeof(u16)); break; case 2: if (!IsLinkTaskFinished()) return 0; - r4->unk10 = 0; + game->unk10 = 0; break; case 3: - if (GetBlockReceivedStatus() != gUnknown_846E3C8[r4->unk9 - 2]) + if (GetBlockReceivedStatus() != sReceivedPlayerBitmasks[game->playerCount - 2]) return 0; - for (; r5 < r4->unk9; ++r5) - r4->unk40.unkE.unk0 += gBlockRecvBuffer[r5][0]; - if (r4->unk40.unkE.unk0 != 0) - sub_814BB4C(23, 1, NULL); + for (; i < game->playerCount; ++i) + game->recvCmd[0] += gBlockRecvBuffer[i][0]; + if (game->recvCmd[0] != 0) + BerryCrush_RunOrScheduleCommand(BCCMD_PlayAgainFailureMessage, 1, NULL); else - sub_814BB4C(22, 1, NULL); + BerryCrush_RunOrScheduleCommand(BCCMD_FadeOutToPlayAgain, 1, NULL); ResetBlockReceivedFlags(); - r4->unk40.unk2[0] = 0; - r4->unk40.unkE.unk0 = 0; - r4->unk10 = 0; - r4->unkC = 0; + game->sendCmd[1] = 0; + game->recvCmd[0] = 0; + game->unk10 = 0; + game->cmdState = 0; return 0; } - ++r4->unkC; + ++game->cmdState; return 0; } -static u32 sub_814D31C(struct BerryCrushGame * r5, UNUSED u8 *r1) +static u32 BerryCrushCommand_FadeOutToPlayAgain(struct BerryCrushGame * game, UNUSED u8 *params) { - switch (r5->unkC) + switch (game->cmdState) { case 0: BeginNormalPaletteFade(0xFFFFFFFF, 1, 0, 0x10, RGB_BLACK); @@ -1289,57 +1298,57 @@ static u32 sub_814D31C(struct BerryCrushGame * r5, UNUSED u8 *r1) return 0; break; case 2: - ClearDialogWindowAndFrame(0, 1); - sub_814DA04(r5); + ClearDialogWindowAndFrame(0, TRUE); + sub_814DA04(game); BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK); UpdatePaletteFade(); break; case 3: if (UpdatePaletteFade()) return 0; - sub_814BB4C(7, 1, NULL); - r5->unk12 = 3; - r5->unkC = 0; + BerryCrush_RunOrScheduleCommand(BCCMD_AskPickBerry, 1, NULL); + game->gameState = 3; + game->cmdState = 0; return 0; } - ++r5->unkC; + ++game->cmdState; return 0; } -static u32 sub_814D3A4(struct BerryCrushGame * r5, UNUSED u8 *r1) +static u32 BerryCrushCommand_PlayAgainFailureMessage(struct BerryCrushGame * game, UNUSED u8 *params) { - switch (r5->unkC) + switch (game->cmdState) { case 0: - DrawDialogueFrame(0, 0); - if (r5->unk14 == 3) - AddTextPrinterParameterized2(0, 2, gUnknown_846E328[5], r5->unkB, 0, 2, 1, 3); + DrawDialogueFrame(0, FALSE); + if (game->unk14 == 3) + AddTextPrinterParameterized2(0, 2, sBerryCrushMessages[BCTEXT_CANCEL_NOBERRIES], game->textSpeed, NULL, 2, 1, 3); else - AddTextPrinterParameterized2(0, 2, gUnknown_846E328[6], r5->unkB, 0, 2, 1, 3); - CopyWindowToVram(0, 3); + AddTextPrinterParameterized2(0, 2, sBerryCrushMessages[BCTEXT_CANCEL_DROPPEDOUT], game->textSpeed, NULL, 2, 1, 3); + CopyWindowToVram(0, COPYWIN_BOTH); break; case 1: if (IsTextPrinterActive(0)) return 0; - r5->unk138.unk0 = 120; + game->spritesManager.animBerryIdx = 120; break; case 2: - if (r5->unk138.unk0 != 0) - --r5->unk138.unk0; + if (game->spritesManager.animBerryIdx != 0) + --game->spritesManager.animBerryIdx; else { - sub_814BB4C(24, 1, NULL); - r5->unkC = 0; + BerryCrush_RunOrScheduleCommand(BCCMD_GracefulExit, 1, NULL); + game->cmdState = 0; } return 0; } - ++r5->unkC; + ++game->cmdState; return 0; } -static u32 sub_814D468(struct BerryCrushGame * r5, UNUSED u8 *r1) +static u32 BerryCrushCommand_GracefulExit(struct BerryCrushGame * game, UNUSED u8 *params) { - switch (r5->unkC) + switch (game->cmdState) { case 0: LinkRfu_SetRfuFuncToSend6600(); @@ -1350,131 +1359,83 @@ static u32 sub_814D468(struct BerryCrushGame * r5, UNUSED u8 *r1) Link_TryStartSend5FFF(); break; case 2: - if (gReceivedRemoteLinkPlayers != 0) + if (gReceivedRemoteLinkPlayers) return 0; - r5->unkE = 25; - sub_814BB4C(5, 1, NULL); - r5->unkC = 2; // ??? + game->nextCmd = BCCMD_Quit; + BerryCrush_RunOrScheduleCommand(BCCMD_TeardownGfx, 1, NULL); + game->cmdState = 2; // ??? return 0; } - ++r5->unkC; + ++game->cmdState; return 0; } -static u32 sub_814D4C8(UNUSED struct BerryCrushGame * r0, UNUSED u8 *r1) +static u32 BerryCrushCommand_Quit(UNUSED struct BerryCrushGame * game, UNUSED u8 *params) { - sub_814B6FC(NULL); + ExitBerryCrushWithCallback(NULL); return 0; } -void sub_814D4D8(struct BerryCrushGame * r4) +static void sub_814D4D8(struct BerryCrushGame * game) { u8 r5 = 0; IncrementGameStat(GAME_STAT_BERRY_CRUSH_POINTS); - r4->unkD = 0; - r4->unk10 = 0; - r4->unk12 = 2; - r4->unk14 = 0; - r4->unk1C = 0; - r4->unk18 = 0; - r4->unk1A = 0; - r4->unk20 = 0; - r4->unk24 = 0; - r4->unk25_0 = 0; - r4->unk25_1 = 0; - r4->unk25_2 = 0; - r4->unk25_3 = 0; - r4->unk25_4 = 0; - r4->unk25_5 = 0; - r4->unk26 = 0; - r4->unk28 = 0; - r4->unk2E = 0; - r4->unk32 = -1; - r4->unk30 = 0; - r4->unk34 = 0; + game->unkD = 0; + game->unk10 = 0; + game->gameState = 2; + game->unk14 = 0; + game->powder = 0; + game->unk18 = 0; + game->unk1A = 0; + game->unk20 = 0; + game->unk24 = 0; + game->unk25_0 = 0; + game->unk25_1 = 0; + game->unk25_2 = 0; + game->unk25_3 = FALSE; + game->unk25_4 = 0; + game->unk25_5 = 0; + game->unk26 = 0; + game->timer = 0; + game->unk2E = 0; + game->unk32 = -1; + game->unk30 = 0; + game->unk34 = 0; for (; r5 < 5; ++r5) // why is it 5 instead of 4? fillerBC isn't sufficient for one player { - r4->unk68.as_four_players.others[r5].unk0 = -1; - r4->unk68.as_four_players.others[r5].unk2 = 0; - r4->unk68.as_four_players.others[r5].unk4.as_hwords[0] = 0; - r4->unk68.as_four_players.others[r5].unk4.as_hwords[1] = 1; - r4->unk68.as_four_players.others[r5].unk4.as_hwords[2] = 0; - r4->unk68.as_four_players.others[r5].unk4.as_hwords[3] = 0; - r4->unk68.as_four_players.others[r5].unk4.as_hwords[4] = 0; - r4->unk68.as_four_players.others[r5].unk4.as_hwords[5] = 0; - r4->unk68.as_four_players.others[r5].unk4.as_2d_bytes[1][4] = 0; - r4->unk68.as_four_players.others[r5].unk4.as_2d_bytes[1][5] = 0; + game->unk68.as_four_players.others[r5].berryId = -1; + game->unk68.as_four_players.others[r5].unk2 = 0; + game->unk68.as_four_players.others[r5].unk4.as_hwords[0] = 0; + game->unk68.as_four_players.others[r5].unk4.as_hwords[1] = 1; + game->unk68.as_four_players.others[r5].unk4.as_hwords[2] = 0; + game->unk68.as_four_players.others[r5].unk4.as_hwords[3] = 0; + game->unk68.as_four_players.others[r5].unk4.as_hwords[4] = 0; + game->unk68.as_four_players.others[r5].unk4.as_hwords[5] = 0; + game->unk68.as_four_players.others[r5].unk4.as_2d_bytes[1][4] = 0; + game->unk68.as_four_players.others[r5].unk4.as_2d_bytes[1][5] = 0; } } -#ifdef NONMATCHING -void sub_814D564(u8 *r0, u32 r1, s32 r2, u32 r3, u32 r5, u32 r6, u32 r4) -{ - u8 sp[8]; - u8 *p; - - 1[(u32 *)sp] = r2; - 0[(u16 *)sp] = r4; - p = &sp[4]; - r0[0] = p[0]; - r0[1] = p[1]; - r0[2] = p[2]; - r0[3] = p[3]; - r0[4] = r3; - r0[5] = r5; - r0[6] = r6; - r0[7] = sp[0]; - r0[8] = sp[1]; - r0[9] = r1; -} -#else -NAKED -void sub_814D564(u8 *r0, u32 r1, s32 r2, u32 r3, u32 r5, u32 r6, u32 r4) +void BerryCrush_SetPaletteFadeParams(u8 *params, bool8 communicateAfter, u32 selectedPals, s8 delay, u8 startY, u8 targetY, u16 palette) { - asm_unified("\n\ - push {r4-r6,lr}\n\ - sub sp, 0x8\n\ - str r2, [sp, 0x4]\n\ - ldr r5, [sp, 0x18]\n\ - ldr r6, [sp, 0x1C]\n\ - ldr r4, [sp, 0x20]\n\ - mov r2, sp\n\ - strh r4, [r2]\n\ - add r4, sp, 0x4\n\ - ldrb r2, [r4]\n\ - strb r2, [r0]\n\ - ldrb r2, [r4, 0x1]\n\ - strb r2, [r0, 0x1]\n\ - ldrb r2, [r4, 0x2]\n\ - strb r2, [r0, 0x2]\n\ - ldrb r2, [r4, 0x3]\n\ - strb r2, [r0, 0x3]\n\ - strb r3, [r0, 0x4]\n\ - strb r5, [r0, 0x5]\n\ - strb r6, [r0, 0x6]\n\ - mov r2, sp\n\ - ldrb r2, [r2]\n\ - strb r2, [r0, 0x7]\n\ - mov r2, sp\n\ - ldrb r2, [r2, 0x1]\n\ - strb r2, [r0, 0x8]\n\ - strb r1, [r0, 0x9]\n\ - add sp, 0x8\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0"); + params[0] = ((u8 *)&selectedPals)[0]; + params[1] = ((u8 *)&selectedPals)[1]; + params[2] = ((u8 *)&selectedPals)[2]; + params[3] = ((u8 *)&selectedPals)[3]; + params[4] = delay; + params[5] = startY; + params[6] = targetY; + params[7] = ((u8 *)&palette)[0]; + params[8] = ((u8 *)&palette)[1]; + params[9] = communicateAfter; } -#endif -void sub_814D5A4(u8 *r0, u32 r1, u32 r2, u32 r3, u32 r5) +void BerryCrush_SetShowMessageParams(u8 *params, u8 stringId, u8 flags, u16 waitKeys, u8 followupCmd) { - u8 sp[4]; - - 0[(u16 *)sp] = r3; - r0[0] = r1; - r0[1] = r2; - r0[2] = sp[0]; - r0[3] = sp[1]; - r0[4] = r5; + params[0] = stringId; + params[1] = flags; + params[2] = ((u8 *)&waitKeys)[0]; + params[3] = ((u8 *)&waitKeys)[1]; + params[4] = followupCmd; } diff --git a/src/berry_crush_3.c b/src/berry_crush_3.c index 13f392fb4..7713cf6aa 100644 --- a/src/berry_crush_3.c +++ b/src/berry_crush_3.c @@ -21,23 +21,23 @@ #include "constants/items.h" #include "constants/songs.h" -static void sub_814DEC0(struct BerryCrushGame_138 * arg0, u16 arg1); -static void sub_814DF44(u8 windowId, u8 left, u8 colorId, const u8 *string); -static void sub_814DFA4(struct BerryCrushGame * sp0C, u8 sp10, u8 sp14, u8 r3); +static void FramesToMinSec(struct BerryCrushGame_138 * arg0, u16 arg1); +static void PrintTextCentered(u8 windowId, u8 left, u8 colorId, const u8 *string); +static void PrintBerryCrushResultWindow(struct BerryCrushGame * sp0C, u8 sp10, u8 sp14, u8 r3); static void sub_814E32C(struct BerryCrushGame * r8); static void Task_ShowBerryCrushRankings(u8 r4); -static void sub_814EAD4(struct BerryCrushGame_138 * r4, u16 r1); +static void BerryCrush_PrintTimeOnSprites(struct BerryCrushGame_138 * r4, u16 r1); static void sub_814EB38(struct BerryCrushGame * r5); static void sub_814EBB0(struct BerryCrushGame * r6); static void sub_814EC80(struct BerryCrushGame * r6); static void sub_814ECE0(struct BerryCrushGame * r6); static void sub_814EF10(struct BerryCrushGame * r5); -static void sub_814EFD0(struct Sprite * sprite); +static void SpriteCB_BerryCrushImpact(struct Sprite * sprite); static void sub_814EFFC(struct Sprite * sprite); static void sub_814F044(struct Sprite * sprite); static void sub_814F0D8(struct Sprite * sprite); -static const struct BgTemplate gUnknown_846E3CC[] = { +static const struct BgTemplate sBgTemplates[] = { { .bg = 0, .charBaseIndex = 2, @@ -101,7 +101,7 @@ static const u8 sBerryCrushTextColorTable[][3] = { } }; -static const struct WindowTemplate gUnknown_846E3F0 = { +static const struct WindowTemplate sWindowTemplate_BerryCrushRankings = { .bg = 0, .tilemapLeft = 3, .tilemapTop = 4, @@ -188,25 +188,27 @@ static const u8 gUnknown_846E448[][4] = { { 12, 14, 15, 16} }; -static const u32 gUnknown_846E450[] = { - 50000000, - 25000000, - 12500000, - 6250000, - 3125000, - 1562500, - 781250, - 390625 +static const u32 sPressingSpeedConversionTable[] = { + // Decimal point is vertically aligned with the pixel + // directly between the >< below. + 50000000, // 50 + 25000000, // 25 + 12500000, // 12.5 + 6250000, // 6.25 + 3125000, // 3.125 + 1562500, // 1.5625 + 781250, // 0.78125 + 390625 // 0.390625 }; -static const u16 gUnknown_846E470[] = INCBIN_U16("graphics/link_games/unk_846E4D0.gbapal"); -static const u16 gUnknown_846E490[] = INCBIN_U16("graphics/link_games/unk_846E7FC.gbapal"); -static const u16 gUnknown_846E4B0[] = INCBIN_U16("graphics/link_games/unk_846ECC4.gbapal"); +static const u16 sBerryCrushCorePal[] = INCBIN_U16("graphics/link_games/unk_846E4D0.gbapal"); +static const u16 sBerryCrushImpactAndSparklesPal[] = INCBIN_U16("graphics/link_games/unk_846E7FC.gbapal"); +static const u16 sBerryCrushTImerPal[] = INCBIN_U16("graphics/link_games/unk_846ECC4.gbapal"); -static const u32 gUnknown_846E4D0[] = INCBIN_U32("graphics/link_games/unk_846E4D0.4bpp.lz"); -static const u32 gUnknown_846E7FC[] = INCBIN_U32("graphics/link_games/unk_846E7FC.4bpp.lz"); -static const u32 gUnknown_846EB78[] = INCBIN_U32("graphics/link_games/unk_846EB78.4bpp.lz"); -static const u32 gUnknown_846ECC4[] = INCBIN_U32("graphics/link_games/unk_846ECC4.4bpp.lz"); +static const u32 sBerryCrushCoreTiles[] = INCBIN_U32("graphics/link_games/unk_846E4D0.4bpp.lz"); +static const u32 sBerryCrushImpactTiles[] = INCBIN_U32("graphics/link_games/unk_846E7FC.4bpp.lz"); +static const u32 sBerryCrushPowderSparklesTiles[] = INCBIN_U32("graphics/link_games/unk_846EB78.4bpp.lz"); +static const u32 sBerryCrushTimerTiles[] = INCBIN_U32("graphics/link_games/unk_846ECC4.4bpp.lz"); static const u32 gBerryCrushGrinderTopTilemap[] = INCBIN_U32("graphics/link_games/unk_846ED90.bin.lz"); static const u32 gBerryCrushContainerCapTilemap[] = INCBIN_U32("graphics/link_games/unk_846EEC0.bin.lz"); @@ -219,50 +221,50 @@ static const u8 gUnknown_846F280[][5] = { {0, 1, 3, 2, 4} }; -static const struct BerryCrushGame_138_C gUnknown_846F294[] = { - {0x00, 0x00, 0x00, 0x0000, 0xfff0, 0x0000, 0x0000}, - {0x01, 0x00, 0x03, 0xffe4, 0xfffc, 0xffe8, 0x0010}, - {0x02, 0x00, 0x06, 0xfff0, 0x0014, 0xfff8, 0x0010}, - {0x03, 0x14, 0x03, 0x001c, 0xfffc, 0x0020, 0xfff8}, - {0x04, 0x14, 0x06, 0x0010, 0x0014, 0x0010, 0xfff8} +static const struct BerryCrushPlayerSeatCoords gUnknown_846F294[] = { + {0, 0, 0, 0, -16, 0, 0}, + {1, 0, 3, -28, -4, -24, 16}, + {2, 0, 6, -16, 20, -8, 16}, + {3, 20, 3, 28, -4, 32, -8}, + {4, 20, 6, 16, 20, 16, -8} }; static const s8 gUnknown_846F2D0[][2] = { - {0x00, 0x00}, - {0xff, 0x00}, - {0x01, 0x01} + { 0, 0}, + {-1, 0}, + { 1, 1} }; static const s8 gUnknown_846F2D6[][2] = { - {0x00, 0x00}, - {0xf0, 0xfc}, - {0x10, 0xfc}, - {0xf8, 0xfe}, - {0x08, 0xfe}, - {0xe8, 0xf8}, - {0x18, 0xf8}, - {0xe0, 0xf4}, - {0x20, 0xf4}, - {0xd8, 0xf0}, - {0x28, 0xf0} + { 0, 0}, + {-16, -4}, + { 16, -4}, + { -8, -2}, + { 8, -2}, + {-24, -8}, + { 24, -8}, + {-32, -12}, + { 32, -12}, + {-40, -16}, + { 40, -16} }; -static const u16 gUnknown_846F2EC[] = { +static const u16 sPlayerBerrySpriteTags[] = { 5, 6, 7, 8, 9 }; -static const struct CompressedSpriteSheet gUnknown_846F2F8[] = { - {gUnknown_846E4D0, 0x0800, 1}, - {gUnknown_846E7FC, 0x0e00, 2}, - {gUnknown_846EB78, 0x0700, 3}, - {gUnknown_846ECC4, 0x02c0, 4}, +static const struct CompressedSpriteSheet sSpriteSheets[] = { + {sBerryCrushCoreTiles, 0x0800, 1}, + {sBerryCrushImpactTiles, 0x0e00, 2}, + {sBerryCrushPowderSparklesTiles, 0x0700, 3}, + {sBerryCrushTimerTiles, 0x02c0, 4}, {} }; -static const struct SpritePalette gUnknown_846F320[] = { - {gUnknown_846E470, 1}, - {gUnknown_846E490, 2}, - {gUnknown_846E4B0, 4}, +static const struct SpritePalette sSpritePals[] = { + {sBerryCrushCorePal, 1}, + {sBerryCrushImpactAndSparklesPal, 2}, + {sBerryCrushTImerPal, 4}, {} }; @@ -330,21 +332,21 @@ static const union AffineAnimCmd gUnknown_846F3D4[] = { AFFINEANIMCMD_JUMP(1) }; -static const union AnimCmd *const gUnknown_846F3EC[] = { +static const union AnimCmd *const sAnimTable_BerryCrushCore[] = { gUnknown_846F340 }; -static const union AnimCmd *const gUnknown_846F3F0[] = { +static const union AnimCmd *const sAnimTable_BerryCrushImpact[] = { gUnknown_846F348, gUnknown_846F358 }; -static const union AnimCmd *const gUnknown_846F3F8[] = { +static const union AnimCmd *const sAnimTable_BerryCrushPowderSparkles[] = { gUnknown_846F36C, gUnknown_846F388 }; -static const union AnimCmd *const gUnknown_846F400[] = { +static const union AnimCmd *const sAnimTable_BerryCrushTimer[] = { gUnknown_846F3AC }; @@ -358,43 +360,43 @@ static const union AffineAnimCmd *const gUnknown_846F408[] = { }; -static const struct SpriteTemplate gUnknown_846F410 = { +static const struct SpriteTemplate sSpriteTemplate_BerryCrushCore = { .tileTag = 1, .paletteTag = 1, .oam = &gOamData_AffineOff_ObjNormal_64x64, - .anims = gUnknown_846F3EC, + .anims = sAnimTable_BerryCrushCore, .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy }; -static const struct SpriteTemplate gUnknown_846F428 = { +static const struct SpriteTemplate sSpriteTemplate_BerryCrushImpact = { .tileTag = 2, .paletteTag = 2, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = gUnknown_846F3F0, + .anims = sAnimTable_BerryCrushImpact, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_814EFD0 + .callback = SpriteCB_BerryCrushImpact }; -static const struct SpriteTemplate gUnknown_846F440 = { +static const struct SpriteTemplate sSpriteTemplate_BerryCrushPowderSparkles = { .tileTag = 3, .paletteTag = 2, .oam = &gOamData_AffineOff_ObjNormal_16x16, - .anims = gUnknown_846F3F8, + .anims = sAnimTable_BerryCrushPowderSparkles, .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy }; -static const struct SpriteTemplate gUnknown_846F458 = { +static const struct SpriteTemplate sSpriteTemplate_BerryCrushTimer = { .tileTag = 4, .paletteTag = 4, .oam = &gOamData_AffineOff_ObjNormal_8x16, - .anims = gUnknown_846F400, + .anims = sAnimTable_BerryCrushTimer, .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy }; -static const struct SpriteTemplate gUnknown_846F470 = { +static const struct SpriteTemplate sSpriteTemplate_PlayerBerry = { .tileTag = 5, .paletteTag = 5, .oam = &gOamData_AffineDouble_ObjNormal_32x32, @@ -403,7 +405,7 @@ static const struct SpriteTemplate gUnknown_846F470 = { .callback = SpriteCallbackDummy }; -static const struct DigitObjUtilTemplate gUnknown_846F488[] = { +static const struct DigitObjUtilTemplate sDigitObjTemplates[] = { { .strConvMode = 1, .shape = SPRITE_SHAPE(8x16), @@ -413,8 +415,8 @@ static const struct DigitObjUtilTemplate gUnknown_846F488[] = { .xDelta = 8, .x = 156, .y = 0, - .spriteSheet = {.compressed = &gUnknown_846F2F8[3]}, - .spritePal = &gUnknown_846F320[2], + .spriteSheet = {.compressed = &sSpriteSheets[3]}, + .spritePal = &sSpritePals[2], }, { .strConvMode = 0, .shape = SPRITE_SHAPE(8x16), @@ -424,8 +426,8 @@ static const struct DigitObjUtilTemplate gUnknown_846F488[] = { .xDelta = 8, .x = 180, .y = 0, - .spriteSheet = {.compressed = &gUnknown_846F2F8[3]}, - .spritePal = &gUnknown_846F320[2], + .spriteSheet = {.compressed = &sSpriteSheets[3]}, + .spritePal = &sSpritePals[2], }, { .strConvMode = 0, .shape = SPRITE_SHAPE(8x16), @@ -435,12 +437,12 @@ static const struct DigitObjUtilTemplate gUnknown_846F488[] = { .xDelta = 8, .x = 204, .y = 0, - .spriteSheet = {.compressed = &gUnknown_846F2F8[3]}, - .spritePal = &gUnknown_846F320[2], + .spriteSheet = {.compressed = &sSpriteSheets[3]}, + .spritePal = &sSpritePals[2], } }; -static const u8 *const gUnknown_846F4B8[] = { +static const u8 *const sBCRankingHeaders[] = { gText_SpaceTimes, gText_XDotY, gText_StrVar1Berry, @@ -449,13 +451,13 @@ static const u8 *const gUnknown_846F4B8[] = { gText_PressingPowerRankings }; -int sub_814D5C8(void) +int BerryCrush_InitBgs(void) { - struct BerryCrushGame * var0 = sub_814B6F0(); - if (!var0) + struct BerryCrushGame * game = GetBerryCrushGame(); + if (game == NULL) return -1; - switch (var0->unkC) + switch (game->cmdState) { case 0: SetVBlankCallback(NULL); @@ -475,11 +477,11 @@ int sub_814D5C8(void) FreeAllSpritePalettes(); break; case 3: - ResetBgsAndClearDma3BusyFlags(0); - InitBgsFromTemplates(0, gUnknown_846E3CC, NELEMS(gUnknown_846E3CC)); - SetBgTilemapBuffer(1, var0->unk1C0); - SetBgTilemapBuffer(2, var0->unk21C0); - SetBgTilemapBuffer(3, var0->unk31C0); + ResetBgsAndClearDma3BusyFlags(FALSE); + InitBgsFromTemplates(0, sBgTemplates, NELEMS(sBgTemplates)); + SetBgTilemapBuffer(1, game->bg1Buffer); + SetBgTilemapBuffer(2, game->bg2Buffer); + SetBgTilemapBuffer(3, game->bg3Buffer); ChangeBgX(0, 0, 0); ChangeBgY(0, 0, 0); ChangeBgX(2, 0, 0); @@ -508,8 +510,8 @@ int sub_814D5C8(void) InitStandardTextBoxWindows(); ResetBg0(); - sub_814EB38(var0); - sub_814EBB0(var0); + sub_814EB38(game); + sub_814EBB0(game); gPaletteFade.bufferTransferDisabled = TRUE; break; case 7: @@ -517,7 +519,7 @@ int sub_814D5C8(void) CopyToBgTilemapBuffer(1, gBerryCrushGrinderTopTilemap, 0, 0); CopyToBgTilemapBuffer(2, gBerryCrushContainerCapTilemap, 0, 0); CopyToBgTilemapBuffer(3, gBerryCrushBackgroundTilemap, 0, 0); - sub_814EC80(var0); + sub_814EC80(game); CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(2); CopyBgTilemapBufferToVram(3); @@ -525,7 +527,7 @@ int sub_814D5C8(void) case 8: LoadWirelessStatusIndicatorSpriteGfx(); CreateWirelessStatusIndicatorSprite(0, 0); - sub_814ECE0(var0); + sub_814ECE0(game); SetGpuReg(REG_OFFSET_BG1VOFS, -gSpriteCoordOffsetY); ChangeBgX(1, 0, 0); ChangeBgY(1, 0, 0); @@ -538,22 +540,22 @@ int sub_814D5C8(void) ShowBg(2); ShowBg(3); SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP); - sub_814B914(); - var0->unkC = 0; + BerryCrush_SetVBlankCallback(); + game->cmdState = 0; return 1; } - var0->unkC++; + game->cmdState++; return 0; } -int sub_814D888(void) +int BerryCrush_TeardownBgs(void) { - struct BerryCrushGame * var0 = sub_814B6F0(); + struct BerryCrushGame * var0 = GetBerryCrushGame(); if (!var0) return -1; - switch (var0->unkC) + switch (var0->cmdState) { case 0: LinkRfu_SetRfuFuncToSend6600(); @@ -599,35 +601,35 @@ int sub_814D888(void) DigitObjUtil_Teardown(); break; case 7: - var0->unkC = 0; + var0->cmdState = 0; return 1; } - var0->unkC++; + var0->cmdState++; return 0; } -int sub_814D9CC(struct BerryCrushGame * arg0) +int sub_814D9CC(struct BerryCrushGame * game) { - gSpriteCoordOffsetY = arg0->unk2A + arg0->unk2C; + gSpriteCoordOffsetY = game->depth + game->vibration; SetGpuReg(REG_OFFSET_BG1VOFS, -gSpriteCoordOffsetY); - if (arg0->unk12 == 7) + if (game->gameState == 7) { - sub_814EAD4(&arg0->unk138, arg0->unk28); + BerryCrush_PrintTimeOnSprites(&game->spritesManager, game->timer); } return 0; } -void sub_814DA04(struct BerryCrushGame * arg0) +void sub_814DA04(struct BerryCrushGame * game) { - arg0->unk2A = -104; - arg0->unk2C = 0; + game->depth = -104; + game->vibration = 0; gSpriteCoordOffsetX = 0; gSpriteCoordOffsetY = -104; } -void sub_814DA24(struct BerryCrushGame * arg0, struct BerryCrushGame_138 * arg1) +void BerryCrush_CreateBerrySprites(struct BerryCrushGame * game, struct BerryCrushGame_138 * spritesManager) { u8 i; u8 spriteId; @@ -637,24 +639,24 @@ void sub_814DA24(struct BerryCrushGame * arg0, struct BerryCrushGame_138 * arg1) s16 var5; u32 var6; - for (i = 0; i < arg0->unk9; i++) + for (i = 0; i < game->playerCount; i++) { spriteId = AddItemIconObjectWithCustomObjectTemplate( - &gUnknown_846F470, - gUnknown_846F2EC[i], - gUnknown_846F2EC[i], - arg0->unk68.as_four_players.others[i].unk0 + FIRST_BERRY_INDEX); - arg1->unk38[i] = &gSprites[spriteId]; - arg1->unk38[i]->oam.priority = 3; - arg1->unk38[i]->affineAnimPaused = TRUE; - arg1->unk38[i]->pos1.x = arg1->unkC[i]->unk8 + 120; - arg1->unk38[i]->pos1.y = -16; - data = arg1->unk38[i]->data; + &sSpriteTemplate_PlayerBerry, + sPlayerBerrySpriteTags[i], + sPlayerBerrySpriteTags[i], + game->unk68.as_four_players.others[i].berryId + FIRST_BERRY_INDEX); + spritesManager->berrySprites[i] = &gSprites[spriteId]; + spritesManager->berrySprites[i]->oam.priority = 3; + spritesManager->berrySprites[i]->affineAnimPaused = TRUE; + spritesManager->berrySprites[i]->pos1.x = spritesManager->seatCoords[i]->unk8 + 120; + spritesManager->berrySprites[i]->pos1.y = -16; + data = spritesManager->berrySprites[i]->data; var5 = 512; data[1] = var5; data[2] = 32; data[7] = 112; - var0 = arg1->unkC[i]->unkA - arg1->unkC[i]->unk8; + var0 = spritesManager->seatCoords[i]->unkA - spritesManager->seatCoords[i]->unk8; var3 = var0; if (var0 < 0) var3 += 3; @@ -663,19 +665,19 @@ void sub_814DA24(struct BerryCrushGame * arg0, struct BerryCrushGame_138 * arg1) var0 *= 128; var6 = var5 + 32; var6 = var6 / 2; - var1 = sub_80D8B40(7, 0x3F80, var6); - data[0] = (u16)arg1->unk38[i]->pos1.x * 128; - data[3] = sub_80D8B40(7, var0, var1); - var1 = sub_80D8ABC(7, var1, 85); + var1 = MathUtil_Div16Shift(7, 0x3F80, var6); + data[0] = (u16)spritesManager->berrySprites[i]->pos1.x * 128; + data[3] = MathUtil_Div16Shift(7, var0, var1); + var1 = MathUtil_Mul16Shift(7, var1, 85); data[4] = 0; - data[5] = sub_80D8B40(7, 0x3F80, var1); + data[5] = MathUtil_Div16Shift(7, 0x3F80, var1); data[7] |= 0x8000; - if (arg1->unkC[i]->unk8 < 0) - StartSpriteAffineAnim(arg1->unk38[i], 1); + if (spritesManager->seatCoords[i]->unk8 < 0) + StartSpriteAffineAnim(spritesManager->berrySprites[i], 1); } } -void sub_814DB84(struct Sprite * sprite) +void SpriteCB_DropBerryIntoCrusher(struct Sprite * sprite) { s16 *data = sprite->data; @@ -702,17 +704,17 @@ void sub_814DB84(struct Sprite * sprite) } } -void sub_814DC24(struct BerryCrushGame * arg0, UNUSED struct BerryCrushGame_138 * arg1) +void BerryCrushFreeBerrySpriteGfx(struct BerryCrushGame * arg0, UNUSED struct BerryCrushGame_138 * arg1) { u8 i; - for (i = 0; i < arg0->unk9; i++) + for (i = 0; i < arg0->playerCount; i++) { - FreeSpritePaletteByTag(gUnknown_846F2EC[i]); - FreeSpriteTilesByTag(gUnknown_846F2EC[i]); + FreeSpritePaletteByTag(sPlayerBerrySpriteTags[i]); + FreeSpriteTilesByTag(sPlayerBerrySpriteTags[i]); } } -void sub_814DC5C(struct BerryCrushGame * arg0, struct BerryCrushGame_138 * arg1) +void sub_814DC5C(struct BerryCrushGame * game, struct BerryCrushGame_138 * manager) { u8 sp4; struct BerryCrushGame_4E * var4E; @@ -720,47 +722,47 @@ void sub_814DC5C(struct BerryCrushGame * arg0, struct BerryCrushGame_138 * arg1) u16 var, var2; sp4 = 0; - var4E = &arg0->unk40.unkE; - for (i = 0; i < arg0->unk9; i++) + var4E = (struct BerryCrushGame_4E *)&game->recvCmd; + for (i = 0; i < game->playerCount; i++) { - var = var4E->unkA >> (i * 3); + var = var4E->data.unk08 >> (i * 3); var &= 7; if (var) { sp4++; if (var & 0x4) - StartSpriteAnim(arg1->unk24[i], 1); + StartSpriteAnim(manager->impactSprites[i], 1); else - StartSpriteAnim(arg1->unk24[i], 0); + StartSpriteAnim(manager->impactSprites[i], 0); - arg1->unk24[i]->invisible = FALSE; - arg1->unk24[i]->animPaused = FALSE; - arg1->unk24[i]->pos2.x = gUnknown_846F2D0[(var % 4) - 1][0]; - arg1->unk24[i]->pos2.y = gUnknown_846F2D0[(var % 4) - 1][1]; + manager->impactSprites[i]->invisible = FALSE; + manager->impactSprites[i]->animPaused = FALSE; + manager->impactSprites[i]->pos2.x = gUnknown_846F2D0[(var % 4) - 1][0]; + manager->impactSprites[i]->pos2.y = gUnknown_846F2D0[(var % 4) - 1][1]; } } if (sp4 == 0) { - arg0->unk25_2 = 0; + game->unk25_2 = 0; } else { - var = (u8)(arg0->unk28 % 3); + var = (u8)(game->timer % 3); var2 = var; - for (i = 0; i < var4E->unkC * 2 + 3; i++) + for (i = 0; i < var4E->data.unk0A * 2 + 3; i++) { - if (arg1->unk4C[i]->invisible) + if (manager->sparkleSprites[i]->invisible) { - arg1->unk4C[i]->callback = sub_814F0D8; - arg1->unk4C[i]->pos1.x = gUnknown_846F2D6[i][0] + 120; - arg1->unk4C[i]->pos1.y = gUnknown_846F2D6[i][1] + 136 - (var * 4); - arg1->unk4C[i]->pos2.x = gUnknown_846F2D6[i][0] + (gUnknown_846F2D6[i][0] / (var2 * 4)); - arg1->unk4C[i]->pos2.y = gUnknown_846F2D6[i][1]; - if (var4E->unk4_1) - StartSpriteAnim(arg1->unk4C[i], 1); + manager->sparkleSprites[i]->callback = sub_814F0D8; + manager->sparkleSprites[i]->pos1.x = gUnknown_846F2D6[i][0] + 120; + manager->sparkleSprites[i]->pos1.y = gUnknown_846F2D6[i][1] + 136 - (var * 4); + manager->sparkleSprites[i]->pos2.x = gUnknown_846F2D6[i][0] + (gUnknown_846F2D6[i][0] / (var2 * 4)); + manager->sparkleSprites[i]->pos2.y = gUnknown_846F2D6[i][1]; + if (var4E->data.unk02_1) + StartSpriteAnim(manager->sparkleSprites[i], 1); else - StartSpriteAnim(arg1->unk4C[i], 0); + StartSpriteAnim(manager->sparkleSprites[i], 0); var++; if (var > 3) @@ -768,9 +770,9 @@ void sub_814DC5C(struct BerryCrushGame * arg0, struct BerryCrushGame_138 * arg1) } } - if (arg0->unk25_2) + if (game->unk25_2) { - arg0->unk25_2 = 0; + game->unk25_2 = 0; } else { @@ -779,7 +781,7 @@ void sub_814DC5C(struct BerryCrushGame * arg0, struct BerryCrushGame_138 * arg1) else PlaySE(SE_TOY_KABE); - arg0->unk25_2 = 1; + game->unk25_2 = 1; } } } @@ -788,235 +790,238 @@ bool32 sub_814DE50(struct BerryCrushGame * arg0, struct BerryCrushGame_138 * arg { u8 i; - for (i = 0; i < arg0->unk9; i++) + for (i = 0; i < arg0->playerCount; i++) { - if (!arg1->unk24[i]->invisible) + if (!arg1->impactSprites[i]->invisible) return FALSE; } for (i = 0; i < 11; i++) { - if (!arg1->unk4C[i]->invisible) + if (!arg1->sparkleSprites[i]->invisible) return FALSE; } - if (arg0->unk2C != 0) - arg0->unk2C = 0; + if (arg0->vibration != 0) + arg0->vibration = 0; return TRUE; } -static void sub_814DEC0(struct BerryCrushGame_138 * arg0, u16 arg1) +static void FramesToMinSec(struct BerryCrushGame_138 * manager, u16 frames) { u8 i = 0; - u32 r7 = 0; + u32 fractionalFrames = 0; s16 r3 = 0; - arg0->unk4 = arg1 / 3600; - arg0->unk6 = (arg1 % 3600) / 60; - r3 = sub_80D8AA0((arg1 % 60) << 8, 4); + manager->minutes = frames / 3600; + manager->secondsInt = (frames % 3600) / 60; + r3 = MathUtil_Mul16((frames % 60) << 8, 4); for (i = 0; i < 8; i++) { if ((r3 >> (7 - i)) & 1) - r7 += gUnknown_846E450[i]; + fractionalFrames += sPressingSpeedConversionTable[i]; } - arg0->unk8 = r7 / 1000000; + manager->secondsFrac = fractionalFrames / 1000000; } -static void sub_814DF44(u8 windowId, u8 left, u8 colorId, const u8 *string) +static void PrintTextCentered(u8 windowId, u8 left, u8 colorId, const u8 *string) { left = (left * 4) - (GetStringWidth(2, string, -1) / 2u); AddTextPrinterParameterized3(windowId, 2, left, 0, sBerryCrushTextColorTable[colorId], 0, string); } -static void sub_814DFA4(struct BerryCrushGame * sp0C, u8 sp10, u8 sp14, u8 sp18) +static void PrintBerryCrushResultWindow(struct BerryCrushGame * game, u8 command, u8 x, u8 y) { - u8 r8 = 0; - u8 sp1C = 0; - u8 sp20 = 0; - u8 r2; - s32 r3; - u8 r7; - union BerryCrushGame_68 * sp24 = &sp0C->unk68; - s32 sp30; - - for (; r8 < sp0C->unk9; r8++) + u8 i = 0; + u8 linkPlayerId = 0; + u8 linkIdToPrint = 0; + u8 j; + s32 score; + u8 realX; + union BerryCrushGame_68 * bcPlayers = &game->unk68; + s32 realX2; + + for (; i < game->playerCount; i++) { DynamicPlaceholderTextUtil_Reset(); - switch (sp10) + switch (command) { case 0: - sp1C = sp24->as_five_players.unk1C[0].unk4.as_2d_bytes[sp10][r8]; - if (r8 != 0 && sp24->as_four_players.unk00.unk0C[sp10][r8] != sp24->as_four_players.unk00.unk0C[sp10][r8 - 1]) + // Number of presses + linkPlayerId = bcPlayers->as_five_players.players[0].unk4.as_2d_bytes[command][i]; + if (i != 0 && bcPlayers->as_four_players.unk00.stats[command][i] != bcPlayers->as_four_players.unk00.stats[command][i - 1]) { - sp20 = r8; + linkIdToPrint = i; } - ConvertIntToDecimalStringN(gStringVar1, sp24->as_four_players.unk00.unk0C[sp10][r8], STR_CONV_MODE_RIGHT_ALIGN, 4); - r7 = sp14 - GetStringWidth(2, gUnknown_846F4B8[sp10], -1) - 4; - AddTextPrinterParameterized3(sp0C->unk138.unk82, 2, r7, sp18 + 14 * r8, sBerryCrushTextColorTable[0], 0, gUnknown_846F4B8[sp10]); - AddTextPrinterParameterized3(sp0C->unk138.unk82, 2, r7 - 24, sp18 + 14 * r8, sBerryCrushTextColorTable[0], 0, gStringVar1); + ConvertIntToDecimalStringN(gStringVar1, bcPlayers->as_four_players.unk00.stats[command][i], STR_CONV_MODE_RIGHT_ALIGN, 4); + realX = x - GetStringWidth(2, sBCRankingHeaders[command], -1) - 4; + AddTextPrinterParameterized3(game->spritesManager.unk82, 2, realX, y + 14 * i, sBerryCrushTextColorTable[0], 0, sBCRankingHeaders[command]); + AddTextPrinterParameterized3(game->spritesManager.unk82, 2, realX - 24, y + 14 * i, sBerryCrushTextColorTable[0], 0, gStringVar1); break; case 1: - sp1C = sp24->as_five_players.unk1C[0].unk4.as_2d_bytes[sp10][r8]; - if (r8 != 0 && sp24->as_four_players.unk00.unk0C[sp10][r8] != sp24->as_four_players.unk00.unk0C[sp10][r8 - 1]) + // Neatness + linkPlayerId = bcPlayers->as_five_players.players[0].unk4.as_2d_bytes[command][i]; + if (i != 0 && bcPlayers->as_four_players.unk00.stats[command][i] != bcPlayers->as_four_players.unk00.stats[command][i - 1]) { - sp20 = r8; + linkIdToPrint = i; } - ConvertIntToDecimalStringN(gStringVar1, sp24->as_four_players.unk00.unk0C[sp10][r8] >> 4, STR_CONV_MODE_RIGHT_ALIGN, 3); - r3 = 0; - r7 = sp24->as_four_players.unk00.unk0C[sp10][r8] & 15; - for (r2 = 0; r2 < 4; r2++) + ConvertIntToDecimalStringN(gStringVar1, bcPlayers->as_four_players.unk00.stats[command][i] >> 4, STR_CONV_MODE_RIGHT_ALIGN, 3); + score = 0; + realX = bcPlayers->as_four_players.unk00.stats[command][i] & 15; + for (j = 0; j < 4; j++) { - if ((r7 >> (3 - r2)) & 1) - r3 += gUnknown_846E450[r2]; + if ((realX >> (3 - j)) & 1) + score += sPressingSpeedConversionTable[j]; } - r7 = r3 / 1000000u; - ConvertIntToDecimalStringN(gStringVar2, r7, STR_CONV_MODE_LEADING_ZEROS, 2); - StringExpandPlaceholders(gStringVar4, gUnknown_846F4B8[sp10]); - sp30 = sp14 - 4; - AddTextPrinterParameterized3(sp0C->unk138.unk82, 2, sp30 - GetStringWidth(2, gStringVar4, 0), sp18 + 14 * r8, sBerryCrushTextColorTable[0], 0, gStringVar4); + realX = score / 1000000u; + ConvertIntToDecimalStringN(gStringVar2, realX, STR_CONV_MODE_LEADING_ZEROS, 2); + StringExpandPlaceholders(gStringVar4, sBCRankingHeaders[command]); + realX2 = x - 4; + AddTextPrinterParameterized3(game->spritesManager.unk82, 2, realX2 - GetStringWidth(2, gStringVar4, 0), y + 14 * i, sBerryCrushTextColorTable[0], 0, gStringVar4); break; case 2: - sp1C = r8; - sp20 = r8; - r2 = sp0C->unk68.as_five_players.unk1C[r8].unk14[12]; - if (r2 >= LAST_BERRY_INDEX - FIRST_BERRY_INDEX + 2) - r2 = 0; - StringCopy(gStringVar1, gBerries[r2].name); - StringExpandPlaceholders(gStringVar4, gUnknown_846F4B8[sp10]); - AddTextPrinterParameterized3(sp0C->unk138.unk82, 2, sp14 - GetStringWidth(2, gStringVar4, -1) - 4, sp18 + 14 * r8, sBerryCrushTextColorTable[0], 0, gStringVar4); + // Berry names + linkPlayerId = i; + linkIdToPrint = i; + j = game->unk68.as_five_players.players[i].unk14[12]; + if (j >= LAST_BERRY_INDEX - FIRST_BERRY_INDEX + 2) + j = 0; + StringCopy(gStringVar1, gBerries[j].name); + StringExpandPlaceholders(gStringVar4, sBCRankingHeaders[command]); + AddTextPrinterParameterized3(game->spritesManager.unk82, 2, x - GetStringWidth(2, gStringVar4, -1) - 4, y + 14 * i, sBerryCrushTextColorTable[0], 0, gStringVar4); break; } - if (sp1C == sp0C->unk8) + if (linkPlayerId == game->localId) StringCopy(gStringVar3, gText_1_ClrLtGryShdwBlk_Dynamic0); else StringCopy(gStringVar3, gText_1_Dynamic0); - gStringVar3[0] = sp20 + CHAR_1; - DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, PLAYER_UNK14(sp0C, sp1C)); + gStringVar3[0] = linkIdToPrint + CHAR_1; + DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, BERRYCRUSH_PLAYER_NAME(game, linkPlayerId)); DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gStringVar3); - AddTextPrinterParameterized3(sp0C->unk138.unk82, 2, 4, sp18 + 14 * r8, sBerryCrushTextColorTable[0], 0, gStringVar4); + AddTextPrinterParameterized3(game->spritesManager.unk82, 2, 4, y + 14 * i, sBerryCrushTextColorTable[0], 0, gStringVar4); } } -static void sub_814E32C(struct BerryCrushGame * r8) +static void sub_814E32C(struct BerryCrushGame * game) { - u8 r10 = 0; - u8 r6 = 0; - u32 sp0C = 0; - union BerryCrushGame_68 *sp10 = &r8->unk68; - u8 r7 = GetWindowAttribute(r8->unk138.unk82, WINDOW_HEIGHT) * 8 - 42; + u8 i = 0; + u8 x = 0; + u32 score = 0; + union BerryCrushGame_68 *players = &game->unk68; + u8 y = GetWindowAttribute(game->spritesManager.unk82, WINDOW_HEIGHT) * 8 - 42; - sub_814DEC0(&r8->unk138, sp10->as_four_players.unk00.unk04); - AddTextPrinterParameterized3(r8->unk138.unk82, 2, 2, r7, sBerryCrushTextColorTable[0], 0, gText_TimeColon); + FramesToMinSec(&game->spritesManager, players->as_four_players.unk00.unk04); + AddTextPrinterParameterized3(game->spritesManager.unk82, 2, 2, y, sBerryCrushTextColorTable[0], 0, gText_TimeColon); - r6 = 190 - (u8)GetStringWidth(2, gText_SpaceSec, 0); - AddTextPrinterParameterized3(r8->unk138.unk82, 2, r6, r7, sBerryCrushTextColorTable[0], 0, gText_SpaceSec); + x = 190 - (u8)GetStringWidth(2, gText_SpaceSec, 0); + AddTextPrinterParameterized3(game->spritesManager.unk82, 2, x, y, sBerryCrushTextColorTable[0], 0, gText_SpaceSec); - r6 -= 32; - ConvertIntToDecimalStringN(gStringVar1, r8->unk138.unk6, STR_CONV_MODE_LEADING_ZEROS, 2); - ConvertIntToDecimalStringN(gStringVar2, r8->unk138.unk8, STR_CONV_MODE_LEADING_ZEROS, 2); + x -= 32; + ConvertIntToDecimalStringN(gStringVar1, game->spritesManager.secondsInt, STR_CONV_MODE_LEADING_ZEROS, 2); + ConvertIntToDecimalStringN(gStringVar2, game->spritesManager.secondsFrac, STR_CONV_MODE_LEADING_ZEROS, 2); StringExpandPlaceholders(gStringVar4, gText_XDotY2); - AddTextPrinterParameterized3(r8->unk138.unk82, 2, r6, r7, sBerryCrushTextColorTable[0], 0, gStringVar4); + AddTextPrinterParameterized3(game->spritesManager.unk82, 2, x, y, sBerryCrushTextColorTable[0], 0, gStringVar4); - r6 -= (u8)GetStringWidth(2, gText_SpaceMin, 0) + 3; - AddTextPrinterParameterized3(r8->unk138.unk82, 2, r6, r7, sBerryCrushTextColorTable[0], 0, gText_SpaceMin); + x -= (u8)GetStringWidth(2, gText_SpaceMin, 0) + 3; + AddTextPrinterParameterized3(game->spritesManager.unk82, 2, x, y, sBerryCrushTextColorTable[0], 0, gText_SpaceMin); - r6 -= 9; - ConvertIntToDecimalStringN(gStringVar1, r8->unk138.unk4, STR_CONV_MODE_LEADING_ZEROS, 1); + x -= 9; + ConvertIntToDecimalStringN(gStringVar1, game->spritesManager.minutes, STR_CONV_MODE_LEADING_ZEROS, 1); StringExpandPlaceholders(gStringVar4, gText_StrVar1); - AddTextPrinterParameterized3(r8->unk138.unk82, 2, r6, r7, sBerryCrushTextColorTable[0], 0, gStringVar4); + AddTextPrinterParameterized3(game->spritesManager.unk82, 2, x, y, sBerryCrushTextColorTable[0], 0, gStringVar4); - r7 += 14; - AddTextPrinterParameterized3(r8->unk138.unk82, 2, 2, r7, sBerryCrushTextColorTable[0], 0, gText_PressingSpeed); + y += 14; + AddTextPrinterParameterized3(game->spritesManager.unk82, 2, 2, y, sBerryCrushTextColorTable[0], 0, gText_PressingSpeed); - r6 = 190 - (u8)GetStringWidth(2, gText_TimesPerSec, 0); - AddTextPrinterParameterized3(r8->unk138.unk82, 3, r6, r7, sBerryCrushTextColorTable[0], 0, gText_TimesPerSec); + x = 190 - (u8)GetStringWidth(2, gText_TimesPerSec, 0); + AddTextPrinterParameterized3(game->spritesManager.unk82, 3, x, y, sBerryCrushTextColorTable[0], 0, gText_TimesPerSec); - for (r10 = 0; r10 < 8; ++r10) - if (((u8)r8->unk16 >> (7 - r10)) & 1) - sp0C += *(r10 + gUnknown_846E450); // It's accessed in a different way here for unknown reason - ConvertIntToDecimalStringN(gStringVar1, r8->unk16 >> 8, STR_CONV_MODE_RIGHT_ALIGN, 3); - ConvertIntToDecimalStringN(gStringVar2, sp0C / 1000000, STR_CONV_MODE_LEADING_ZEROS, 2); + for (i = 0; i < 8; ++i) + if (((u8)game->pressingSpeed >> (7 - i)) & 1) + score += *(i + sPressingSpeedConversionTable); // It's accessed in a different way here for unknown reason + ConvertIntToDecimalStringN(gStringVar1, game->pressingSpeed >> 8, STR_CONV_MODE_RIGHT_ALIGN, 3); + ConvertIntToDecimalStringN(gStringVar2, score / 1000000, STR_CONV_MODE_LEADING_ZEROS, 2); StringExpandPlaceholders(gStringVar4, gText_XDotY3); - r6 -= 38; - if (r8->unk25_1) - AddTextPrinterParameterized3(r8->unk138.unk82, 2, r6, r7, sBerryCrushTextColorTable[5], 0, gStringVar4); + x -= 38; + if (game->unk25_1) + AddTextPrinterParameterized3(game->spritesManager.unk82, 2, x, y, sBerryCrushTextColorTable[5], 0, gStringVar4); else - AddTextPrinterParameterized3(r8->unk138.unk82, 2, r6, r7, sBerryCrushTextColorTable[0], 0, gStringVar4); + AddTextPrinterParameterized3(game->spritesManager.unk82, 2, x, y, sBerryCrushTextColorTable[0], 0, gStringVar4); - r7 += 14; - AddTextPrinterParameterized3(r8->unk138.unk82, 2, 2, r7, sBerryCrushTextColorTable[0], 0, gText_Silkiness); + y += 14; + AddTextPrinterParameterized3(game->spritesManager.unk82, 2, 2, y, sBerryCrushTextColorTable[0], 0, gText_Silkiness); - ConvertIntToDecimalStringN(gStringVar1, sp10->as_four_players.unk00.unk08, STR_CONV_MODE_RIGHT_ALIGN, 3); + ConvertIntToDecimalStringN(gStringVar1, players->as_four_players.unk00.unk08, STR_CONV_MODE_RIGHT_ALIGN, 3); StringExpandPlaceholders(gStringVar4, gText_Var1Percent); - r6 = 190 - (u8)GetStringWidth(2, gStringVar4, 0); - AddTextPrinterParameterized3(r8->unk138.unk82, 2, r6, r7, sBerryCrushTextColorTable[0], 0, gStringVar4); + x = 190 - (u8)GetStringWidth(2, gStringVar4, 0); + AddTextPrinterParameterized3(game->spritesManager.unk82, 2, x, y, sBerryCrushTextColorTable[0], 0, gStringVar4); } -bool32 sub_814E644(struct BerryCrushGame * r4, struct BerryCrushGame_138 * r6) +bool32 sub_814E644(struct BerryCrushGame * game, struct BerryCrushGame_138 * spriteManager) { - u8 r5; + u8 playerCountMinus2; struct WindowTemplate template; - switch (r6->unk80) + switch (spriteManager->unk80) { case 0: - r5 = r4->unk9 - 2; - sub_814EB04(r6); - memcpy(&template, &gUnknown_846E428[r4->unk12 - 11], sizeof(struct WindowTemplate)); - if (r4->unk12 == 13) - template.height = gUnknown_846E448[1][r5]; + playerCountMinus2 = game->playerCount - 2; + BerryCrush_HideTimerSprites(spriteManager); + memcpy(&template, &gUnknown_846E428[game->gameState - 11], sizeof(struct WindowTemplate)); + if (game->gameState == 13) + template.height = gUnknown_846E448[1][playerCountMinus2]; else - template.height = gUnknown_846E448[0][r5]; - r6->unk82 = AddWindow(&template); + template.height = gUnknown_846E448[0][playerCountMinus2]; + spriteManager->unk82 = AddWindow(&template); break; case 1: - PutWindowTilemap(r6->unk82); - FillWindowPixelBuffer(r6->unk82, PIXEL_FILL(0)); + PutWindowTilemap(spriteManager->unk82); + FillWindowPixelBuffer(spriteManager->unk82, PIXEL_FILL(0)); break; case 2: - TextWindow_SetStdFrame0_WithPal(r6->unk82, 0x21D, 0xD0); - DrawStdFrameWithCustomTileAndPalette(r6->unk82, 0, 541, 13); + TextWindow_SetStdFrame0_WithPal(spriteManager->unk82, 0x21D, 0xD0); + DrawStdFrameWithCustomTileAndPalette(spriteManager->unk82, FALSE, 541, 13); break; case 3: - r5 = r4->unk9 - 2; - switch (r4->unk12) + playerCountMinus2 = game->playerCount - 2; + switch (game->gameState) { case 11: - sub_814DF44(r6->unk82, 22, 3, gText_PressesRankings); - sub_814DFA4(r4, 0, 0xB0, 8 * gUnknown_846E448[0][r5] - r4->unk9 * 14); - r6->unk80 = 5; + PrintTextCentered(spriteManager->unk82, 22, 3, gText_PressesRankings); + PrintBerryCrushResultWindow(game, 0, 0xB0, 8 * gUnknown_846E448[0][playerCountMinus2] - game->playerCount * 14); + spriteManager->unk80 = 5; return FALSE; case 12: - sub_814DF44(r6->unk82, 22, 4, gUnknown_846F4B8[r4->unk68.as_five_players.unk1C[0].unk4.as_2d_bytes[0][7] + 3]); - sub_814DFA4(r4, 1, 0xB0, 8 * gUnknown_846E448[0][r5] - r4->unk9 * 14); - r6->unk80 = 5; + PrintTextCentered(spriteManager->unk82, 22, 4, sBCRankingHeaders[game->unk68.as_five_players.players[0].unk4.as_2d_bytes[0][7] + 3]); + PrintBerryCrushResultWindow(game, 1, 0xB0, 8 * gUnknown_846E448[0][playerCountMinus2] - game->playerCount * 14); + spriteManager->unk80 = 5; return FALSE; case 13: - sub_814DF44(r6->unk82, 24, 3, gText_CrushingResults); - sub_814DFA4(r4, 2, 0xC0, 0x10); + PrintTextCentered(spriteManager->unk82, 24, 3, gText_CrushingResults); + PrintBerryCrushResultWindow(game, 2, 0xC0, 0x10); break; } break; case 4: - sub_814E32C(r4); + sub_814E32C(game); break; case 5: - CopyWindowToVram(r6->unk82, 3); - r6->unk80 = 0; + CopyWindowToVram(spriteManager->unk82, COPYWIN_BOTH); + spriteManager->unk80 = 0; return TRUE; } - ++r6->unk80; + ++spriteManager->unk80; return FALSE; } -void sub_814E80C(struct BerryCrushGame * r4) +void sub_814E80C(struct BerryCrushGame * game) { - ClearStdWindowAndFrameToTransparent(r4->unk138.unk82, 1); - RemoveWindow(r4->unk138.unk82); - sub_814EBB0(r4); + ClearStdWindowAndFrameToTransparent(game->spritesManager.unk82, 1); + RemoveWindow(game->spritesManager.unk82); + sub_814EBB0(game); } static void Task_ShowBerryCrushRankings(u8 taskId) @@ -1029,7 +1034,7 @@ static void Task_ShowBerryCrushRankings(u8 taskId) switch (data[0]) { case 0: - data[1] = AddWindow(&gUnknown_846E3F0); + data[1] = AddWindow(&sWindowTemplate_BerryCrushRankings); PutWindowTilemap(data[1]); FillWindowPixelBuffer(data[1], PIXEL_FILL(0)); TextWindow_SetStdFrame0_WithPal(data[1], 0x21D, 0xD0); @@ -1073,7 +1078,7 @@ static void Task_ShowBerryCrushRankings(u8 taskId) for (j = 0; j < 8; ++j) { if (((data[i + 2] & 0xFF) >> (7 - j)) & 1) - score += gUnknown_846E450[j]; + score += sPressingSpeedConversionTable[j]; } ConvertIntToDecimalStringN(gStringVar1, (u16)data[i + 2] >> 8, STR_CONV_MODE_RIGHT_ALIGN, 3); ConvertIntToDecimalStringN(gStringVar2, score / 1000000, STR_CONV_MODE_LEADING_ZEROS, 2); @@ -1093,7 +1098,7 @@ static void Task_ShowBerryCrushRankings(u8 taskId) yPos += 14; score = 0; } - CopyWindowToVram(data[1], 3); + CopyWindowToVram(data[1], COPYWIN_BOTH); break; case 2: if (gMain.newKeys & (A_BUTTON | B_BUTTON)) @@ -1125,80 +1130,79 @@ void ShowBerryCrushRankings(void) gTasks[taskId].data[5] = gSaveBlock2Ptr->berryCrush.berryCrushResults[3]; } -static void sub_814EAD4(struct BerryCrushGame_138 * r4, u16 r1) +static void BerryCrush_PrintTimeOnSprites(struct BerryCrushGame_138 * manager, u16 frames) { - sub_814DEC0(r4, r1); - DigitObjUtil_PrintNumOn(0, r4->unk4); - DigitObjUtil_PrintNumOn(1, r4->unk6); - DigitObjUtil_PrintNumOn(2, r4->unk8); + FramesToMinSec(manager, frames); + DigitObjUtil_PrintNumOn(0, manager->minutes); + DigitObjUtil_PrintNumOn(1, manager->secondsInt); + DigitObjUtil_PrintNumOn(2, manager->secondsFrac); } -void sub_814EB04(struct BerryCrushGame_138 * r0) +void BerryCrush_HideTimerSprites(struct BerryCrushGame_138 * manager) { - r0->unk78[0]->invisible = TRUE; - r0->unk78[1]->invisible = TRUE; + manager->timerSprites[0]->invisible = TRUE; + manager->timerSprites[1]->invisible = TRUE; DigitObjUtil_HideOrShow(2, 1); DigitObjUtil_HideOrShow(1, 1); DigitObjUtil_HideOrShow(0, 1); } -static void sub_814EB38(struct BerryCrushGame * r5) +static void sub_814EB38(struct BerryCrushGame * game) { - u8 r6; + u8 i; - for (r6 = 0; r6 < r5->unk9; ++r6) + for (i = 0; i < game->playerCount; ++i) { - r5->unk138.unkC[r6] = &gUnknown_846F294[gUnknown_846F280[r5->unk9 - 2][r6]]; - r5->unk138.unk83[r6] = AddWindow(&gUnknown_846E3F8[r5->unk138.unkC[r6]->unk0]); - PutWindowTilemap(r5->unk138.unk83[r6]); - FillWindowPixelBuffer(r5->unk138.unk83[r6], 0); + game->spritesManager.seatCoords[i] = &gUnknown_846F294[gUnknown_846F280[game->playerCount - 2][i]]; + game->spritesManager.unk83[i] = AddWindow(&gUnknown_846E3F8[game->spritesManager.seatCoords[i]->unk0]); + PutWindowTilemap(game->spritesManager.unk83[i]); + FillWindowPixelBuffer(game->spritesManager.unk83[i], PIXEL_FILL(0)); } } -static void sub_814EBB0(struct BerryCrushGame * r6) +static void sub_814EBB0(struct BerryCrushGame * game) { - u8 r7, r2; - u8 *r4; + u8 i; - for (r7 = 0; r7 < r6->unk9; ++r7) + for (i = 0; i < game->playerCount; ++i) { - PutWindowTilemap(r6->unk138.unk83[r7]); - if (r7 == r6->unk8) + PutWindowTilemap(game->spritesManager.unk83[i]); + if (i == game->localId) { AddTextPrinterParameterized4( - r6->unk138.unk83[r7], + game->spritesManager.unk83[i], 2, - 36 - GetStringWidth(2, PLAYER_UNK14(r6, r7), 0) / 2u, + 36 - GetStringWidth(2, BERRYCRUSH_PLAYER_NAME(game, i), 0) / 2u, 1, 0, 0, sBerryCrushTextColorTable[1], 0, - PLAYER_UNK14(r6, r7) + BERRYCRUSH_PLAYER_NAME(game, i) ); } else { AddTextPrinterParameterized4( - r6->unk138.unk83[r7], + game->spritesManager.unk83[i], 2, - 36 - GetStringWidth(2, PLAYER_UNK14(r6, r7), 0) / 2u, + 36 - GetStringWidth(2, BERRYCRUSH_PLAYER_NAME(game, i), 0) / 2u, 1, 0, 0, sBerryCrushTextColorTable[2], 0, - PLAYER_UNK14(r6, r7) + BERRYCRUSH_PLAYER_NAME(game, i) ); } - CopyWindowToVram(r6->unk138.unk83[r7], 3); + CopyWindowToVram(game->spritesManager.unk83[i], COPYWIN_BOTH); } CopyBgTilemapBufferToVram(0); } -static void sub_814EC80(struct BerryCrushGame * r6) +static void sub_814EC80(struct BerryCrushGame * game) { - u8 r5 = 0; + u8 i = 0; const u32 *r0 = gUnknown_8EB0ADC; #ifndef NONMATCHING // r4, r5, r6 register roulette register u8 *r4 asm("r4") = gDecompressionBuffer; @@ -1209,14 +1213,14 @@ static void sub_814EC80(struct BerryCrushGame * r6) #endif LZ77UnCompWram(r0, r4); - for (; r5 < r6->unk9; ++r5) + for (; i < game->playerCount; ++i) { - r0_ = r6->unk138.unkC[r5]->unk0; + r0_ = game->spritesManager.seatCoords[i]->unk0; CopyToBgTilemapBufferRect( 3, &r4[r0_ * 40], - r6->unk138.unkC[r5]->unk1, - r6->unk138.unkC[r5]->unk2, + game->spritesManager.seatCoords[i]->unk1, + game->spritesManager.seatCoords[i]->unk2, 10, 2 ); @@ -1224,69 +1228,69 @@ static void sub_814EC80(struct BerryCrushGame * r6) CopyBgTilemapBufferToVram(3); } -static void sub_814ECE0(struct BerryCrushGame * r6) +static void sub_814ECE0(struct BerryCrushGame * game) { - u8 r5 = 0; - u8 r2; + u8 i = 0; + u8 spriteId; - r6->unk2A = -104; - r6->unk2C = 0; + game->depth = -104; + game->vibration = 0; gSpriteCoordOffsetX = 0; gSpriteCoordOffsetY = -104; - for (; r5 < 4; ++r5) - LoadCompressedSpriteSheet(&gUnknown_846F2F8[r5]); - LoadSpritePalettes(gUnknown_846F320); - r2 = CreateSprite(&gUnknown_846F410, 120, 88, 5); - r6->unk138.unk20 = &gSprites[r2]; - r6->unk138.unk20->oam.priority = 3; - r6->unk138.unk20->coordOffsetEnabled = TRUE; - r6->unk138.unk20->animPaused = TRUE; - for (r5 = 0; r5 < r6->unk9; ++r5) + for (; i < 4; ++i) + LoadCompressedSpriteSheet(&sSpriteSheets[i]); + LoadSpritePalettes(sSpritePals); + spriteId = CreateSprite(&sSpriteTemplate_BerryCrushCore, 120, 88, 5); + game->spritesManager.coreSprite = &gSprites[spriteId]; + game->spritesManager.coreSprite->oam.priority = 3; + game->spritesManager.coreSprite->coordOffsetEnabled = TRUE; + game->spritesManager.coreSprite->animPaused = TRUE; + for (i = 0; i < game->playerCount; ++i) { - r2 = CreateSprite( - &gUnknown_846F428, - r6->unk138.unkC[r5]->unk4 + 120, - r6->unk138.unkC[r5]->unk6 + 32, + spriteId = CreateSprite( + &sSpriteTemplate_BerryCrushImpact, + game->spritesManager.seatCoords[i]->unk4 + 120, + game->spritesManager.seatCoords[i]->unk6 + 32, 0 ); - r6->unk138.unk24[r5] = &gSprites[r2]; - r6->unk138.unk24[r5]->oam.priority = 1; - r6->unk138.unk24[r5]->invisible = TRUE; - r6->unk138.unk24[r5]->coordOffsetEnabled = TRUE; - r6->unk138.unk24[r5]->animPaused = TRUE; + game->spritesManager.impactSprites[i] = &gSprites[spriteId]; + game->spritesManager.impactSprites[i]->oam.priority = 1; + game->spritesManager.impactSprites[i]->invisible = TRUE; + game->spritesManager.impactSprites[i]->coordOffsetEnabled = TRUE; + game->spritesManager.impactSprites[i]->animPaused = TRUE; } - for (r5 = 0; r5 < NELEMS(r6->unk138.unk4C); ++r5) + for (i = 0; i < NELEMS(game->spritesManager.sparkleSprites); ++i) { - r2 = CreateSprite( - &gUnknown_846F440, - gUnknown_846F2D6[r5][0] + 120, - gUnknown_846F2D6[r5][1] + 136, + spriteId = CreateSprite( + &sSpriteTemplate_BerryCrushPowderSparkles, + gUnknown_846F2D6[i][0] + 120, + gUnknown_846F2D6[i][1] + 136, 6 ); - r6->unk138.unk4C[r5] = &gSprites[r2]; - r6->unk138.unk4C[r5]->oam.priority = 3; - r6->unk138.unk4C[r5]->invisible = TRUE; - r6->unk138.unk4C[r5]->animPaused = TRUE; - r6->unk138.unk4C[r5]->data[0] = r5; + game->spritesManager.sparkleSprites[i] = &gSprites[spriteId]; + game->spritesManager.sparkleSprites[i]->oam.priority = 3; + game->spritesManager.sparkleSprites[i]->invisible = TRUE; + game->spritesManager.sparkleSprites[i]->animPaused = TRUE; + game->spritesManager.sparkleSprites[i]->data[0] = i; } - for (r5 = 0; r5 < NELEMS(r6->unk138.unk78); ++r5) + for (i = 0; i < NELEMS(game->spritesManager.timerSprites); ++i) { - r2 = CreateSprite( - &gUnknown_846F458, - 24 * r5 + 176, + spriteId = CreateSprite( + &sSpriteTemplate_BerryCrushTimer, + 24 * i + 176, 8, 0 ); - r6->unk138.unk78[r5] = &gSprites[r2]; - r6->unk138.unk78[r5]->oam.priority = 0; - r6->unk138.unk78[r5]->invisible = FALSE; - r6->unk138.unk78[r5]->animPaused = FALSE; + game->spritesManager.timerSprites[i] = &gSprites[spriteId]; + game->spritesManager.timerSprites[i]->oam.priority = 0; + game->spritesManager.timerSprites[i]->invisible = FALSE; + game->spritesManager.timerSprites[i]->animPaused = FALSE; } - DigitObjUtil_CreatePrinter(0, 0, &gUnknown_846F488[0]); - DigitObjUtil_CreatePrinter(1, 0, &gUnknown_846F488[1]); - DigitObjUtil_CreatePrinter(2, 0, &gUnknown_846F488[2]); - if (r6->unk12 == 1) - sub_814EB04(&r6->unk138); + DigitObjUtil_CreatePrinter(0, 0, &sDigitObjTemplates[0]); + DigitObjUtil_CreatePrinter(1, 0, &sDigitObjTemplates[1]); + DigitObjUtil_CreatePrinter(2, 0, &sDigitObjTemplates[2]); + if (game->gameState == 1) + BerryCrush_HideTimerSprites(&game->spritesManager); } static void sub_814EF10(struct BerryCrushGame * r5) @@ -1300,20 +1304,20 @@ static void sub_814EF10(struct BerryCrushGame * r5) FreeSpritePaletteByTag(4); FreeSpritePaletteByTag(2); FreeSpritePaletteByTag(1); - for (; r4 < NELEMS(r5->unk138.unk78); ++r4) - DestroySprite(r5->unk138.unk78[r4]); + for (; r4 < NELEMS(r5->spritesManager.timerSprites); ++r4) + DestroySprite(r5->spritesManager.timerSprites[r4]); DigitObjUtil_DeletePrinter(2); DigitObjUtil_DeletePrinter(1); DigitObjUtil_DeletePrinter(0); - for (r4 = 0; r4 < NELEMS(r5->unk138.unk4C); ++r4) - DestroySprite(r5->unk138.unk4C[r4]); - for (r4 = 0; r4 < r5->unk9; ++r4) - DestroySprite(r5->unk138.unk24[r4]); - if (r5->unk138.unk20->inUse) - DestroySprite(r5->unk138.unk20); + for (r4 = 0; r4 < NELEMS(r5->spritesManager.sparkleSprites); ++r4) + DestroySprite(r5->spritesManager.sparkleSprites[r4]); + for (r4 = 0; r4 < r5->playerCount; ++r4) + DestroySprite(r5->spritesManager.impactSprites[r4]); + if (r5->spritesManager.coreSprite->inUse) + DestroySprite(r5->spritesManager.coreSprite); } -static void sub_814EFD0(struct Sprite * sprite) +static void SpriteCB_BerryCrushImpact(struct Sprite * sprite) { if (sprite->animEnded) { @@ -1370,12 +1374,12 @@ static void sub_814F0D8(struct Sprite * sprite) r7[2] = 32; r7[7] = 168; r4 = sprite->pos2.x * 128; - r5 = sub_80D8B40(7, (168 - sprite->pos1.y) << 7, (r2 + 32) >> 1); + r5 = MathUtil_Div16Shift(7, (168 - sprite->pos1.y) << 7, (r2 + 32) >> 1); sprite->data[0] = sprite->pos1.x << 7; - r7[3] = sub_80D8B40(7, r4, r5); - r2 = sub_80D8ABC(7, r5, 85); + r7[3] = MathUtil_Div16Shift(7, r4, r5); + r2 = MathUtil_Mul16Shift(7, r5, 85); r7[4] = r8; - r7[5] = sub_80D8B40(7, 0x3F80, r2); + r7[5] = MathUtil_Div16Shift(7, 0x3F80, r2); r7[6] = sprite->pos2.x / 4; r7[7] |= 0x8000; sprite->pos2.y = r8; diff --git a/src/berry_pouch.c b/src/berry_pouch.c index 9798dd441..b6a5763fb 100644 --- a/src/berry_pouch.c +++ b/src/berry_pouch.c @@ -744,7 +744,7 @@ static void BerryPouchSetArrowCursorAt(u8 y, u8 colorIdx) width = GetMenuCursorDimensionByFont(2, 0); height = GetMenuCursorDimensionByFont(2, 1); FillWindowPixelRect(0, 0, 1, y, width, height); - CopyWindowToVram(0, 2); + CopyWindowToVram(0, COPYWIN_GFX); } else { @@ -180,7 +180,7 @@ u8 LoadBgVram(u8 bg, const void *src, u16 size, u16 destOffset, u8 mode) offset = destOffset + offset; - cursor = RequestDma3Copy(src, (void*)(offset + BG_VRAM), size, 0); + cursor = RequestDma3Copy(src, (void*)(offset + BG_VRAM), size, DMA3_16BIT); if (cursor == -1) { @@ -472,7 +472,7 @@ u16 Unused_LoadBgPalette(u8 bg, const void *src, u16 size, u16 destOffset) if (IsInvalidBg32(bg) == FALSE) { paletteOffset = (sGpuBgConfigs2[bg].basePalette * 0x20) + (destOffset * 2); - cursor = RequestDma3Copy(src, (void*)(paletteOffset + BG_PLTT), size, 0); + cursor = RequestDma3Copy(src, (void*)(paletteOffset + BG_PLTT), size, DMA3_16BIT); if (cursor == -1) { @@ -500,7 +500,7 @@ bool8 IsDma3ManagerBusyWithBgCopy(void) if ((sDmaBusyBitfield[div] & (1 << mod))) { - s8 reqSpace = CheckForSpaceForDma3Request(i); + s8 reqSpace = WaitDma3Request(i); if (reqSpace == -1) return TRUE; sDmaBusyBitfield[div] &= ~(1 << mod); @@ -567,7 +567,7 @@ u16 GetBgAttribute(u8 bg, u8 attributeId) return GetBgControlAttribute(bg, BG_CTRL_ATTR_MOSAIC); case BG_ATTR_WRAPAROUND: return GetBgControlAttribute(bg, BG_CTRL_ATTR_WRAPAROUND); - case BG_ATTR_TEXTORAFFINEMODE: + case BG_ATTR_MAPSIZE: switch (GetBgType(bg)) { case 0: diff --git a/src/braille_text.c b/src/braille_text.c index 8a4114fce..9be01bf75 100644 --- a/src/braille_text.c +++ b/src/braille_text.c @@ -175,7 +175,7 @@ u16 Font6Func(struct TextPrinter *textPrinter) ScrollWindow(textPrinter->printerTemplate.windowId, 0, gUnknown_846FB08[gSaveBlock2Ptr->optionsTextSpeed], PIXEL_FILL(textPrinter->printerTemplate.bgColor)); textPrinter->scrollDistance -= gUnknown_846FB08[gSaveBlock2Ptr->optionsTextSpeed]; } - CopyWindowToVram(textPrinter->printerTemplate.windowId, 2); + CopyWindowToVram(textPrinter->printerTemplate.windowId, COPYWIN_GFX); } else { diff --git a/src/cable_club.c b/src/cable_club.c index 73fa82d42..349740c9e 100644 --- a/src/cable_club.c +++ b/src/cable_club.c @@ -80,13 +80,13 @@ static void PrintNewCountOnLinkPlayerCountDisplayWindow(u16 windowId, s32 num) SetStdWindowBorderStyle(windowId, FALSE); StringExpandPlaceholders(gStringVar4, gUnknown_841DF82); AddTextPrinterParameterized(windowId, 2, gStringVar4, 0, 0, TEXT_SPEED_FF, NULL); - CopyWindowToVram(windowId, 3); + CopyWindowToVram(windowId, COPYWIN_BOTH); } static void DestroyLinkPlayerCountDisplayWindow(u16 windowId) { ClearStdWindowAndFrame(windowId, FALSE); - CopyWindowToVram(windowId, 3); + CopyWindowToVram(windowId, COPYWIN_BOTH); } static void UpdateLinkPlayerCountDisplay(u8 taskId, u8 num) diff --git a/src/clear_save_data_screen.c b/src/clear_save_data_screen.c index b6f8b83e9..fe28c1ec7 100644 --- a/src/clear_save_data_screen.c +++ b/src/clear_save_data_screen.c @@ -107,7 +107,7 @@ static void Task_DrawClearSaveDataScreen(u8 taskId) case 4: DrawStdFrameWithCustomTileAndPalette(1, TRUE, 0x001, 0xF); AddTextPrinterParameterized4(1, 2, 0, 3, 1, 1, sTextColor, 0, gUnknown_841B69E); - CopyWindowToVram(1, 2); + CopyWindowToVram(1, COPYWIN_GFX); break; case 5: CreateYesNoMenu(&sWindowTemplates[0], 2, 0, 2, 0x001, 0xF, 1); @@ -139,7 +139,7 @@ static void Task_HandleYesNoMenu(u8 taskId) PlaySE(SE_SELECT); FillWindowPixelBuffer(1, PIXEL_FILL(1)); AddTextPrinterParameterized4(1, 2, 0, 3, 1, 1, sTextColor, 0, gUnknown_841B6B9); - CopyWindowToVram(1, 3); + CopyWindowToVram(1, COPYWIN_BOTH); ClearSaveData(); break; case MENU_NOTHING_CHOSEN: diff --git a/src/credits.c b/src/credits.c index 3be5c8fa5..e00587ff2 100644 --- a/src/credits.c +++ b/src/credits.c @@ -761,7 +761,7 @@ static void CreateCreditsWindow(void) sCreditsMgr->windowId = AddWindow(&sCreditsWindowTemplate); FillWindowPixelBuffer(sCreditsMgr->windowId, PIXEL_FILL(0)); PutWindowTilemap(sCreditsMgr->windowId); - CopyWindowToVram(sCreditsMgr->windowId, 3); + CopyWindowToVram(sCreditsMgr->windowId, COPYWIN_BOTH); sCreditsMgr->windowIsActive = TRUE; } @@ -931,7 +931,7 @@ static s32 RollCredits(void) sCreditsMgr->mainseqno = CREDITSSCENE_PRINT_DELAY; return sCreditsMgr->canSpeedThrough; case CREDITSSCENE_PRINT_DELAY: - CopyWindowToVram(sCreditsMgr->windowId, 2); + CopyWindowToVram(sCreditsMgr->windowId, COPYWIN_GFX); sCreditsMgr->timer = sCreditsScript[sCreditsMgr->scrcmdidx].duration; sCreditsMgr->scrcmdidx++; BeginNormalPaletteFade(0x00008000, 0, 16, 0, RGB_BLACK); @@ -1781,9 +1781,9 @@ static void LoadCreditsMonPic(u8 whichMon) CopyToWindowPixelBuffer(2, (const void *)sWindow2Map_Pikachu, 0, 0); break; } - CopyWindowToVram(0, 2); - CopyWindowToVram(1, 2); - CopyWindowToVram(2, 2); + CopyWindowToVram(0, COPYWIN_GFX); + CopyWindowToVram(1, COPYWIN_GFX); + CopyWindowToVram(2, COPYWIN_GFX); } static u16 GetCreditsMonSpecies(u8 whichMon) diff --git a/src/daycare.c b/src/daycare.c index 1e50a7c09..d4d907e3d 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -70,7 +70,7 @@ static void CreateRandomEggShardSprite(void); static void CreateEggShardSprite(u8 x, u8 y, s16 data1, s16 data2, s16 data3, u8 spriteAnimIndex); // IWRAM bss -static IWRAM_DATA struct EggHatchData *sEggHatchData; +static struct EggHatchData *sEggHatchData; // RAM buffers used to assist with BuildEggMoveset() EWRAM_DATA static u16 sHatchedEggLevelUpMoves[EGG_LVL_UP_MOVES_ARRAY_COUNT] = {0}; @@ -1540,7 +1540,7 @@ void ShowDaycareLevelMenu(void) menuTemplate.windowId = windowId; listMenuTaskId = ListMenuInit(&menuTemplate, 0, 0); - CopyWindowToVram(windowId, 3); + CopyWindowToVram(windowId, COPYWIN_BOTH); daycareMenuTaskId = CreateTask(Task_HandleDaycareLevelMenuInput, 3); gTasks[daycareMenuTaskId].tMenuListTaskId = listMenuTaskId; @@ -1935,7 +1935,7 @@ static void CB2_EggHatch_1(void) PlayFanfare(MUS_FANFA5); sEggHatchData->CB2_state++; PutWindowTilemap(sEggHatchData->windowId); - CopyWindowToVram(sEggHatchData->windowId, 3); + CopyWindowToVram(sEggHatchData->windowId, COPYWIN_BOTH); break; case 6: if (IsFanfareTaskInactive()) diff --git a/src/dma3_manager.c b/src/dma3_manager.c index ec2cb932f..a3a2374be 100644 --- a/src/dma3_manager.c +++ b/src/dma3_manager.c @@ -3,12 +3,7 @@ #define MAX_DMA_REQUESTS 128 -#define DMA_REQUEST_COPY32 1 -#define DMA_REQUEST_FILL32 2 -#define DMA_REQUEST_COPY16 3 -#define DMA_REQUEST_FILL16 4 - -static /*IWRAM_DATA*/ struct { +static struct { /* 0x00 */ const u8 *src; /* 0x04 */ u8 *dest; /* 0x08 */ u16 size; @@ -26,7 +21,7 @@ void ClearDma3Requests(void) gDma3ManagerLocked = TRUE; gDma3RequestCursor = 0; - for(i = 0; i < (u8)ARRAY_COUNT(gDma3Requests); i++) + for(i = 0; i < (u8)NELEMS(gDma3Requests); i++) { gDma3Requests[i].size = 0; gDma3Requests[i].src = 0; @@ -108,10 +103,10 @@ s16 RequestDma3Copy(const void *src, void *dest, u16 size, u8 mode) gDma3Requests[cursor].dest = dest; gDma3Requests[cursor].size = size; - if(mode == 1) - gDma3Requests[cursor].mode = mode; + if(mode == DMA3_32BIT) + gDma3Requests[cursor].mode = DMA_REQUEST_COPY32; else - gDma3Requests[cursor].mode = 3; + gDma3Requests[cursor].mode = DMA_REQUEST_COPY16; gDma3ManagerLocked = FALSE; return (s16)cursor; @@ -146,10 +141,10 @@ s16 RequestDma3Fill(s32 value, void *dest, u16 size, u8 mode) gDma3Requests[cursor].mode = mode; gDma3Requests[cursor].value = value; - if(mode == 1) - gDma3Requests[cursor].mode = 2; + if(mode == DMA3_32BIT) + gDma3Requests[cursor].mode = DMA_REQUEST_FILL32; else - gDma3Requests[cursor].mode = 4; + gDma3Requests[cursor].mode = DMA_REQUEST_FILL16; gDma3ManagerLocked = FALSE; return (s16)cursor; @@ -167,7 +162,7 @@ s16 RequestDma3Fill(s32 value, void *dest, u16 size, u8 mode) return -1; } -s16 CheckForSpaceForDma3Request(s16 index) +s16 WaitDma3Request(s16 index) { int current = 0; diff --git a/src/dodrio_berry_picking.c b/src/dodrio_berry_picking.c index ea6d46df2..936d458da 100644 --- a/src/dodrio_berry_picking.c +++ b/src/dodrio_berry_picking.c @@ -2342,7 +2342,7 @@ static void Task_ShowDodrioBerryPickingRecords(u8 taskId) case 0: data[1] = AddWindow(&sUnknown_84755E0); sub_81538D0(data[1]); - CopyWindowToVram(data[1], 3); + CopyWindowToVram(data[1], COPYWIN_BOTH); data[0]++; break; case 1: @@ -2353,7 +2353,7 @@ static void Task_ShowDodrioBerryPickingRecords(u8 taskId) if (JOY_NEW(A_BUTTON | B_BUTTON)) { rbox_fill_rectangle(data[1]); - CopyWindowToVram(data[1], 1); + CopyWindowToVram(data[1], COPYWIN_MAP); data[0]++; } break; diff --git a/src/dodrio_berry_picking_2.c b/src/dodrio_berry_picking_2.c index e170ac903..ea2ea060d 100644 --- a/src/dodrio_berry_picking_2.c +++ b/src/dodrio_berry_picking_2.c @@ -1055,7 +1055,7 @@ static void sub_8154B34(void) colorsId = 2; name = sub_81533C4(id); AddTextPrinterParameterized3(gUnknown_203F440->unk3008[i], 0, left, 1, sTextColorTable[colorsId], -1, name); - CopyWindowToVram(gUnknown_203F440->unk3008[i], 2); + CopyWindowToVram(gUnknown_203F440->unk3008[i], COPYWIN_GFX); window.baseBlock += 0xE; sub_8154868(&window); } @@ -1199,8 +1199,8 @@ static void sub_8154F80(void) AddTextPrinterParameterized(gUnknown_203F440->unk3008[1], 0, sp0C, sUnknown_8478EA8[j] - width, sUnknown_8478EB0[i], -1, NULL); } } - CopyWindowToVram(gUnknown_203F440->unk3008[0], 2); - CopyWindowToVram(gUnknown_203F440->unk3008[1], 2); + CopyWindowToVram(gUnknown_203F440->unk3008[0], COPYWIN_GFX); + CopyWindowToVram(gUnknown_203F440->unk3008[1], COPYWIN_GFX); gUnknown_203F440->state++; break; case 3: @@ -1232,8 +1232,8 @@ static void sub_8154F80(void) break; case 6: sub_8154D9C(playersCount); - CopyWindowToVram(gUnknown_203F440->unk3008[0], 2); - CopyWindowToVram(gUnknown_203F440->unk3008[1], 2); + CopyWindowToVram(gUnknown_203F440->unk3008[0], COPYWIN_GFX); + CopyWindowToVram(gUnknown_203F440->unk3008[1], COPYWIN_GFX); gUnknown_203F440->state++; break; case 7: @@ -1291,8 +1291,8 @@ static void sub_8154F80(void) DynamicPlaceholderTextUtil_ExpandPlaceholders(sp0C, gText_FilledStorageSpace); AddTextPrinterParameterized(gUnknown_203F440->unk3008[1], 0, sp0C, 8, 40, -1, NULL); } - CopyWindowToVram(gUnknown_203F440->unk3008[0], 2); - CopyWindowToVram(gUnknown_203F440->unk3008[1], 2); + CopyWindowToVram(gUnknown_203F440->unk3008[0], COPYWIN_GFX); + CopyWindowToVram(gUnknown_203F440->unk3008[1], COPYWIN_GFX); gUnknown_203F440->state++; break; case 10: @@ -1349,8 +1349,8 @@ static void sub_81556E0(void) AddTextPrinterParameterized(gUnknown_203F440->unk3008[1], 2, gText_Yes, 8, 2, -1, NULL); AddTextPrinterParameterized(gUnknown_203F440->unk3008[1], 2, gText_No, 8, 16, -1, NULL); AddTextPrinterParameterized(gUnknown_203F440->unk3008[1], 2, gText_SelectorArrow2, 0, 2, -1, NULL); - CopyWindowToVram(gUnknown_203F440->unk3008[0], 2); - CopyWindowToVram(gUnknown_203F440->unk3008[1], 2); + CopyWindowToVram(gUnknown_203F440->unk3008[0], COPYWIN_GFX); + CopyWindowToVram(gUnknown_203F440->unk3008[1], COPYWIN_GFX); gUnknown_203F440->state++; break; case 2: @@ -1370,7 +1370,7 @@ static void sub_81556E0(void) AddTextPrinterParameterized(gUnknown_203F440->unk3008[1], 2, gText_Yes, 8, 2, -1, NULL); AddTextPrinterParameterized(gUnknown_203F440->unk3008[1], 2, gText_No, 8, 16, -1, NULL); AddTextPrinterParameterized(gUnknown_203F440->unk3008[1], 2, gText_SelectorArrow2, 0, y == 1 ? 2 : 16, -1, NULL); - CopyWindowToVram(gUnknown_203F440->unk3008[1], 3); + CopyWindowToVram(gUnknown_203F440->unk3008[1], COPYWIN_BOTH); // Increment state only if A or B button have been pressed. if (JOY_NEW(A_BUTTON)) { @@ -1425,18 +1425,18 @@ static void sub_8155A78(void) gUnknown_203F440->state++; break; case 1: - CopyWindowToVram(0, 3); + CopyWindowToVram(0, COPYWIN_BOTH); gUnknown_203F440->state++; break; case 2: if (!IsDma3ManagerBusyWithBgCopy()) { - CreateTask(sub_80DA634, 0); + CreateTask(Task_SaveGame_UpdatedLinkRecords, 0); gUnknown_203F440->state++; } break; case 3: - if (!FuncIsActiveTask(sub_80DA634)) + if (!FuncIsActiveTask(Task_SaveGame_UpdatedLinkRecords)) gUnknown_203F440->state++; break; default: @@ -1460,7 +1460,7 @@ static void sub_8155B4C(void) case 1: FillWindowPixelBuffer(gUnknown_203F440->unk3008[0], PIXEL_FILL(1)); AddTextPrinterParameterized(gUnknown_203F440->unk3008[0], 2, gText_CommunicationStandby3, 0, 6, -1, NULL); - CopyWindowToVram(gUnknown_203F440->unk3008[0], 2); + CopyWindowToVram(gUnknown_203F440->unk3008[0], COPYWIN_GFX); gUnknown_203F440->state++; break; case 2: @@ -1500,7 +1500,7 @@ static void sub_8155C80(void) case 1: FillWindowPixelBuffer(gUnknown_203F440->unk3008[0], PIXEL_FILL(1)); AddTextPrinterParameterized(gUnknown_203F440->unk3008[0], 2, gText_SomeoneDroppedOut, 0, 6, TEXT_SPEED_FF, NULL); - CopyWindowToVram(gUnknown_203F440->unk3008[0], 2); + CopyWindowToVram(gUnknown_203F440->unk3008[0], COPYWIN_GFX); gUnknown_203F440->state++; break; case 2: diff --git a/src/easy_chat_3.c b/src/easy_chat_3.c index 1501762bc..c904494bb 100644 --- a/src/easy_chat_3.c +++ b/src/easy_chat_3.c @@ -1323,7 +1323,7 @@ static void PrintTitleText(void) FillWindowPixelBuffer(0, PIXEL_FILL(0)); EC_AddTextPrinterParameterized2(0, 1, titleText, xOffset, 0, TEXT_SPEED_FF, TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY); PutWindowTilemap(0); - CopyWindowToVram(0, 3); + CopyWindowToVram(0, COPYWIN_BOTH); } static void EC_AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16)) @@ -1379,7 +1379,7 @@ static void PrintECInterfaceTextById(u8 direction) if (text2) EC_AddTextPrinterParameterized(1, 1, text2, 0, 16, TEXT_SPEED_FF, NULL); - CopyWindowToVram(1, 3); + CopyWindowToVram(1, COPYWIN_BOTH); } static void EC_CreateYesNoMenuWithInitialCursorPos(u8 initialCursorPos) @@ -1454,7 +1454,7 @@ static void PrintECFields(void) EC_AddTextPrinterParameterized(sEasyChatGraphicsResources->windowId, 1, sEasyChatGraphicsResources->ecPrintBuffer, 0, i * 16, TEXT_SPEED_FF, NULL); } - CopyWindowToVram(sEasyChatGraphicsResources->windowId, 3); + CopyWindowToVram(sEasyChatGraphicsResources->windowId, COPYWIN_BOTH); } static void DrawECFrameInTilemapBuffer(u16 *tilemap) @@ -1537,7 +1537,7 @@ static void PrintECMenuById(u32 id) break; } - CopyWindowToVram(2, 2); + CopyWindowToVram(2, COPYWIN_GFX); } static void PrintECGroupOrAlphaMenu(void) @@ -1659,7 +1659,7 @@ static void PrintECRowsWin2(u8 row, u8 remrow) } - CopyWindowToVram(2, 2); + CopyWindowToVram(2, COPYWIN_GFX); } static void ClearECRowsWin2(u8 row, u8 remrow) @@ -1690,7 +1690,7 @@ static void ClearECRowsWin2(u8 row, u8 remrow) static void ClearWin2AndCopyToVram(void) { FillWindowPixelBuffer(2, PIXEL_FILL(1)); - CopyWindowToVram(2, 2); + CopyWindowToVram(2, COPYWIN_GFX); } static void StartWin2FrameAnim(int animNo) diff --git a/src/fame_checker.c b/src/fame_checker.c index cccdbf604..395babb23 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -792,7 +792,7 @@ static void Setup_DrawMsgAndListBoxes(void) static void FC_PutWindowTilemapAndCopyWindowToVramMode3(u8 windowId) { PutWindowTilemap(windowId); - CopyWindowToVram(windowId, 3); + CopyWindowToVram(windowId, COPYWIN_BOTH); } static bool8 SetMessageSelectorIconObjMode(u8 spriteId, u8 objMode) @@ -853,7 +853,7 @@ static void FC_DestroyWindow(u8 windowId) { FillWindowPixelBuffer(windowId, 0); ClearWindowTilemap(windowId); - CopyWindowToVram(windowId, 2); + CopyWindowToVram(windowId, COPYWIN_GFX); RemoveWindow(windowId); } @@ -1376,7 +1376,7 @@ static u8 FC_PopulateListMenu(void) static void FC_PutWindowTilemapAndCopyWindowToVramMode3_2(u8 windowId) { PutWindowTilemap(windowId); - CopyWindowToVram(windowId, 3); + CopyWindowToVram(windowId, COPYWIN_BOTH); } static void FC_CreateScrollIndicatorArrowPair(void) diff --git a/src/field_door.c b/src/field_door.c index e17ef0d5a..59b72f3ab 100644 --- a/src/field_door.c +++ b/src/field_door.c @@ -470,7 +470,7 @@ bool8 FieldIsDoorAnimationRunning(void) return FuncIsActiveTask(Task_AnimateDoor); } -u16 GetDoorSoundEffect(x, y) +u16 GetDoorSoundEffect(int x, int y) { if (GetDoorSoundType(sDoorGraphics, x, y) == DOOR_SOUND_NORMAL) return MUS_W_DOOR; diff --git a/src/field_fadetransition.c b/src/field_fadetransition.c index 478c89bad..7f89bc8b5 100644 --- a/src/field_fadetransition.c +++ b/src/field_fadetransition.c @@ -668,7 +668,7 @@ static void Task_ReturnFromLinkRoomWarp(u8 taskId) } break; case 2: - if (gReceivedRemoteLinkPlayers == 0) + if (!gReceivedRemoteLinkPlayers) { WarpIntoMap(); SetMainCallback2(CB2_LoadMap); diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c index a926e5937..db5173651 100644 --- a/src/field_screen_effect.c +++ b/src/field_screen_effect.c @@ -396,7 +396,7 @@ static void Task_RushInjuredPokemonToCenter(u8 taskId) Menu_LoadStdPalAt(0xF0); FillWindowPixelBuffer(windowId, PIXEL_FILL(0)); PutWindowTilemap(windowId); - CopyWindowToVram(windowId, 3); + CopyWindowToVram(windowId, COPYWIN_BOTH); loc = GetHealLocation(1); if (gSaveBlock1Ptr->lastHealLocation.mapGroup == loc->group && gSaveBlock1Ptr->lastHealLocation.mapNum == loc->map @@ -425,7 +425,7 @@ static void Task_RushInjuredPokemonToCenter(u8 taskId) case 5: windowId = gTasks[taskId].data[1]; ClearWindowTilemap(windowId); - CopyWindowToVram(windowId, 1); + CopyWindowToVram(windowId, COPYWIN_MAP); RemoveWindow(windowId); palette_bg_faded_fill_black(); FadeInFromBlack(); diff --git a/src/field_specials.c b/src/field_specials.c index 26a1d75e6..a127eb774 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -1104,7 +1104,7 @@ void DrawElevatorCurrentFloorWindow(void) strwidth = GetStringWidth(2, floorname, 0); AddTextPrinterParameterized(sElevatorCurrentFloorWindowId, 2, floorname, 56 - strwidth, 16, 0xFF, NULL); PutWindowTilemap(sElevatorCurrentFloorWindowId); - CopyWindowToVram(sElevatorCurrentFloorWindowId, 3); + CopyWindowToVram(sElevatorCurrentFloorWindowId, COPYWIN_BOTH); } } @@ -1365,7 +1365,7 @@ static void Task_CreateScriptListMenu(u8 taskId) Task_CreateMenuRemoveScrollIndicatorArrowPair(taskId); task->data[14] = ListMenuInit(&sFieldSpecialsListMenuTemplate, task->data[7], task->data[8]); PutWindowTilemap(task->data[13]); - CopyWindowToVram(task->data[13], 3); + CopyWindowToVram(task->data[13], COPYWIN_BOTH); gTasks[taskId].func = Task_ListMenuHandleInput; } @@ -1448,7 +1448,7 @@ static void Task_DestroyListMenu(u8 taskId) ClearStdWindowAndFrameToTransparent(task->data[13], TRUE); FillWindowPixelBuffer(task->data[13], PIXEL_FILL(0)); ClearWindowTilemap(task->data[13]); - CopyWindowToVram(task->data[13], 2); + CopyWindowToVram(task->data[13], COPYWIN_GFX); RemoveWindow(task->data[13]); DestroyTask(taskId); EnableBothScriptContexts(); diff --git a/src/fldeff_flash.c b/src/fldeff_flash.c index 58cb4c251..0c5f96cb3 100644 --- a/src/fldeff_flash.c +++ b/src/fldeff_flash.c @@ -436,7 +436,7 @@ static void Task_MapPreviewScreen_0(u8 taskId) if (!MapPreview_IsGfxLoadFinished()) { data[4] = MapPreview_CreateMapNameWindow(data[3]); - CopyWindowToVram(data[4], 3); + CopyWindowToVram(data[4], COPYWIN_BOTH); data[0]++; } break; diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c index 1652538a3..2838675f7 100644 --- a/src/hall_of_fame.c +++ b/src/hall_of_fame.c @@ -456,7 +456,7 @@ static void Task_Hof_InitTeamSaveData(u8 taskId) DrawDialogueFrame(0, 0); AddTextPrinterParameterized2(0, 2, gText_SavingDontTurnOffThePower2, 0, NULL, 2, 1, 3); - CopyWindowToVram(0, 3); + CopyWindowToVram(0, COPYWIN_BOTH); gTasks[taskId].func = Task_Hof_TrySaveData; } @@ -594,7 +594,7 @@ static void Task_Hof_ApplauseAndConfetti(u8 taskId) } BeginNormalPaletteFade(sSelectedPaletteIndices, 0, 12, 12, HALL_OF_FAME_BG_PAL); FillWindowPixelBuffer(0, PIXEL_FILL(0)); - CopyWindowToVram(0, 3); + CopyWindowToVram(0, COPYWIN_BOTH); gTasks[taskId].data[3] = 7; gTasks[taskId].func = Task_Hof_WaitBorderFadeAway; } @@ -642,7 +642,7 @@ static void Task_Hof_WaitAndPrintPlayerInfo(u8 taskId) HallOfFame_PrintPlayerInfo(1, 2); DrawDialogueFrame(0, 0); AddTextPrinterParameterized2(0, 2, gText_LeagueChamp, 0, NULL, 2, 1, 3); - CopyWindowToVram(0, 3); + CopyWindowToVram(0, COPYWIN_BOTH); gTasks[taskId].func = Task_Hof_ExitOnKeyPressed; } } @@ -972,7 +972,7 @@ static void Task_HofPC_PrintDataIsCorrupted(u8 taskId) TopBarWindowPrintString(gText_ABUTTONExit, 8, TRUE); DrawDialogueFrame(0, 0); AddTextPrinterParameterized2(0, 2, gText_HOFCorrupted, 0, NULL, 2, 1, 3); - CopyWindowToVram(0, 3); + CopyWindowToVram(0, COPYWIN_BOTH); gTasks[taskId].func = Task_HofPC_ExitOnButtonPress; } @@ -988,7 +988,7 @@ static void HallOfFame_PrintWelcomeText(u8 not, u8 used) FillWindowPixelBuffer(0, PIXEL_FILL(0)); PutWindowTilemap(0); AddTextPrinterParameterized3(0, 2, x, 1, sTextColors[0], 0, gText_WelcomeToHOF); - CopyWindowToVram(0, 3); + CopyWindowToVram(0, COPYWIN_BOTH); } static void HallOfFame_PrintMonInfo(struct HallofFameMon* currMon, u8 unused1, u8 unused2) @@ -1075,7 +1075,7 @@ static void HallOfFame_PrintMonInfo(struct HallofFameMon* currMon, u8 unused1, u AddTextPrinterParameterized3(0, 2, 0x60, 0x11, sTextColors[0], 0, text); } - CopyWindowToVram(0, 3); + CopyWindowToVram(0, COPYWIN_BOTH); } static void HallOfFame_PrintPlayerInfo(u8 unused1, u8 unused2) @@ -1118,7 +1118,7 @@ static void HallOfFame_PrintPlayerInfo(u8 unused1, u8 unused2) AddTextPrinterParameterized3(1, 2, textWidth - 36, 32, sTextColors[1], 0, text); - CopyWindowToVram(1, 3); + CopyWindowToVram(1, COPYWIN_BOTH); } static void ClearVramOamPltt_LoadHofPal(void) diff --git a/src/help_system.c b/src/help_system.c index eeeb0a65f..9c794f878 100644 --- a/src/help_system.c +++ b/src/help_system.c @@ -74,9 +74,9 @@ u8 RunHelpSystemCallback(void) sVideoState.state = 2; break; case 2: - RequestDma3Fill(0, (void *)BG_CHAR_ADDR(3), BG_CHAR_SIZE, 0); - RequestDma3Copy(sPals, (void *)PLTT, sizeof(sPals), 0); - RequestDma3Copy(sTiles, gDecompressionBuffer + 0x3EE0, sizeof(sTiles), 0); + RequestDma3Fill(0, (void *)BG_CHAR_ADDR(3), BG_CHAR_SIZE, DMA3_16BIT); + RequestDma3Copy(sPals, (void *)PLTT, sizeof(sPals), DMA3_16BIT); + RequestDma3Copy(sTiles, gDecompressionBuffer + 0x3EE0, sizeof(sTiles), DMA3_16BIT); sVideoState.state = 3; break; case 3: @@ -160,7 +160,7 @@ void SaveMapGPURegs(void) void SaveMapTiles(void) { - RequestDma3Copy((void *)BG_CHAR_ADDR(3), sMapTilesBackup, BG_CHAR_SIZE, 0); + RequestDma3Copy((void *)BG_CHAR_ADDR(3), sMapTilesBackup, BG_CHAR_SIZE, DMA3_16BIT); } void SaveMapTextColors(void) @@ -189,7 +189,7 @@ void RestoreGPURegs(void) void RestoreMapTiles(void) { - RequestDma3Copy(sMapTilesBackup, (void *)BG_CHAR_ADDR(3), BG_CHAR_SIZE, 0); + RequestDma3Copy(sMapTilesBackup, (void *)BG_CHAR_ADDR(3), BG_CHAR_SIZE, DMA3_16BIT); } void RestoreMapTextColors(void) @@ -203,7 +203,7 @@ void RestoreMapTextColors(void) void CommitTilemap(void) { - RequestDma3Copy(gDecompressionBuffer, (void *)BG_CHAR_ADDR(3), BG_CHAR_SIZE, 0); + RequestDma3Copy(gDecompressionBuffer, (void *)BG_CHAR_ADDR(3), BG_CHAR_SIZE, DMA3_16BIT); } void HS_DrawBgTilemapRect(u16 baseTile, u8 left, u8 top, u8 width, u8 height, u16 increment) diff --git a/src/help_system_812B1E0.c b/src/help_system_812B1E0.c index f3ec0ba85..d9ee16cfa 100644 --- a/src/help_system_812B1E0.c +++ b/src/help_system_812B1E0.c @@ -1880,7 +1880,7 @@ bool8 HelpSystem_UpdateHasntSeenIntro(void) bool8 sub_812B45C(void) { - if (gReceivedRemoteLinkPlayers == 1) + if (gReceivedRemoteLinkPlayers == TRUE) return FALSE; return TRUE; } diff --git a/src/intro.c b/src/intro.c index ec15d7473..802c00851 100644 --- a/src/intro.c +++ b/src/intro.c @@ -47,18 +47,18 @@ static EWRAM_DATA u16 gUnknown_203AB06 = 0; static EWRAM_DATA u16 gUnknown_203AB08 = 0; static EWRAM_DATA u16 gUnknown_203AB0A = 0; static EWRAM_DATA u16 gUnknown_203AB0C = 0; -static EWRAM_DATA u16 gUnknown_203AB0E = 0; -static EWRAM_DATA u16 gUnknown_203AB10 = 0; -static EWRAM_DATA u16 gUnknown_203AB12 = 0; -static EWRAM_DATA u16 gUnknown_203AB14 = 0; -static EWRAM_DATA u16 gUnknown_203AB16 = 0; -static EWRAM_DATA u16 gUnknown_203AB18 = 0; -static EWRAM_DATA u16 gUnknown_203AB1A = 0; -static EWRAM_DATA u16 gUnknown_203AB1C = 0; -static EWRAM_DATA u16 gUnknown_203AB1E = 0; -static EWRAM_DATA u16 gUnknown_203AB20 = 0; -static EWRAM_DATA u16 gUnknown_203AB22 = 0; -static EWRAM_DATA u16 gUnknown_203AB24 = 0; +static EWRAM_DATA u16 sLargeStarXSpeed = 0; +static EWRAM_DATA u16 sLargeStarYSpeed = 0; +static EWRAM_DATA u16 sTrailingSparklesXmodMask = 0; +static EWRAM_DATA u16 sUnusedVarRelatedToGameFreakStars = 0; +static EWRAM_DATA u16 sTrailingSparklesSpawnRate = 0; +static EWRAM_DATA u16 sTrailingSparklesFlickerStartTime = 0; +static EWRAM_DATA u16 sTrailingSparklesDestroySpriteTime = 0; +static EWRAM_DATA u16 sTrailingSparklesGravityShift = 0; +static EWRAM_DATA u16 sTrailingSparklesXspeed = 0; +static EWRAM_DATA u16 sTrailingSparklesYspeed = 0; +static EWRAM_DATA u16 sTrailingSparklesXprecision = 0; +static EWRAM_DATA u16 sTrailingSparklesYprecision = 0; static void CB2_SetUpIntro(void); static void CB2_Intro(void); @@ -181,30 +181,111 @@ static const u32 sSpriteTiles_GengarSwipe[] = INCBIN_U32("graphics/intro/unk_840 static const u32 sSpriteTiles_NidorinoRecoilDust[] = INCBIN_U32("graphics/intro/unk_840BAE0.4bpp.lz"); static const struct BgTemplate sBgTemplates_GameFreakScene[] = { - { 3, 3, 31, 0, 0, 3, 0x000 }, - { 2, 3, 30, 0, 0, 2, 0x010 } + { + .bg = 3, + .charBaseIndex = 3, + .mapBaseIndex = 31, + .screenSize = 0, + .paletteMode = 0, + .priority = 3, + .baseTile = 0x000 + }, { + .bg = 2, + .charBaseIndex = 3, + .mapBaseIndex = 30, + .screenSize = 0, + .paletteMode = 0, + .priority = 2, + .baseTile = 0x010 + } }; static const struct BgTemplate sBgTemplates_FightScene1[] = { - { 0, 0, 28, 2, 0, 0, 0x000 }, - { 1, 1, 30, 2, 0, 0, 0x000 } + { + .bg = 0, + .charBaseIndex = 0, + .mapBaseIndex = 28, + .screenSize = 2, + .paletteMode = 0, + .priority = 0, + .baseTile = 0x000 + }, { + .bg = 1, + .charBaseIndex = 1, + .mapBaseIndex = 30, + .screenSize = 2, + .paletteMode = 0, + .priority = 0, + .baseTile = 0x000 + } }; static const struct BgTemplate sBgTemplates_FightScene2[] = { - { 3, 1, 30, 2, 0, 3, 0x000 }, - { 0, 0, 29, 0, 0, 0, 0x000 }, - { 2, 3, 27, 0, 0, 2, 0x000 }, - { 1, 2, 28, 0, 0, 1, 0x000 } + { + .bg = 3, + .charBaseIndex = 1, + .mapBaseIndex = 30, + .screenSize = 2, + .paletteMode = 0, + .priority = 3, + .baseTile = 0x000 + }, { + .bg = 0, + .charBaseIndex = 0, + .mapBaseIndex = 29, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0x000 + }, { + .bg = 2, + .charBaseIndex = 3, + .mapBaseIndex = 27, + .screenSize = 0, + .paletteMode = 0, + .priority = 2, + .baseTile = 0x000 + }, { + .bg = 1, + .charBaseIndex = 2, + .mapBaseIndex = 28, + .screenSize = 0, + .paletteMode = 0, + .priority = 1, + .baseTile = 0x000 + } }; static const struct BgTemplate sBgTemplates_FightScene3[] = { - { 1, 0, 29, 0, 0, 1, 0x000 }, - { 0, 1, 30, 2, 0, 0, 0x000 } + { + .bg = 1, + .charBaseIndex = 0, + .mapBaseIndex = 29, + .screenSize = 0, + .paletteMode = 0, + .priority = 1, + .baseTile = 0x000 + }, { + .bg = 0, + .charBaseIndex = 1, + .mapBaseIndex = 30, + .screenSize = 2, + .paletteMode = 0, + .priority = 0, + .baseTile = 0x000 + } }; static const struct WindowTemplate sWindowTemplate[] = { - { 2, 6, 4, 18, 9, 0xD, 0x000 }, - DUMMY_WIN_TEMPLATE + { + .bg = 2, + .tilemapLeft = 6, + .tilemapTop = 4, + .width = 18, + .height = 9, + .paletteNum = 0xD, + .baseBlock = 0x000 + }, DUMMY_WIN_TEMPLATE }; static const u8 sGengarBackSpritePos2UpdateMods[][2] = { @@ -241,9 +322,31 @@ static const struct Coords16 sTrailingSparkleCoords[] = { {0x0098, 0x0056} }; -static const struct OamData gOamData_840BC2C = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_1, .tileNum = 0x000, .priority = 2, .paletteNum = 0 }; +static const struct OamData gOamData_840BC2C = { + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = ST_OAM_SQUARE, + .matrixNum = 0, + .size = ST_OAM_SIZE_1, + .tileNum = 0x000, + .priority = 2, + .paletteNum = 0 +}; -static const struct OamData gOamData_840BC34 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_0, .tileNum = 0x000, .priority = 2, .paletteNum = 0 }; +static const struct OamData gOamData_840BC34 = { + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = ST_OAM_SQUARE, + .matrixNum = 0, + .size = ST_OAM_SIZE_0, + .tileNum = 0x000, + .priority = 2, + .paletteNum = 0 +}; static const union AnimCmd gAnimCmd_840BC3C[] = { ANIMCMD_FRAME(0, 4), @@ -266,11 +369,38 @@ static const union AnimCmd *const gAnimCmdTable_840BC64[] = { gAnimCmd_840BC50 }; -static const struct SpriteTemplate sSpriteTemplate_LargeStar = {0, 0, &gOamData_840BC2C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCB_LargeStar}; +static const struct SpriteTemplate sSpriteTemplate_LargeStar = { + .tileTag = 0, + .paletteTag = 0, + .oam = &gOamData_840BC2C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_LargeStar +}; -static const struct SpriteTemplate sSpriteTemplate_TrailingSparkles = {1, 1, &gOamData_840BC34, gAnimCmdTable_840BC64, NULL, gDummySpriteAffineAnimTable, SpriteCB_TrailingSparkles}; +static const struct SpriteTemplate sSpriteTemplate_TrailingSparkles = { + .tileTag = 1, + .paletteTag = 1, + .oam = &gOamData_840BC34, + .anims = gAnimCmdTable_840BC64, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_TrailingSparkles +}; -static const struct OamData gOamData_840BC9C = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_2, .tileNum = 0x000, .priority = 2, .paletteNum = 0 }; +static const struct OamData gOamData_840BC9C = { + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = ST_OAM_SQUARE, + .matrixNum = 0, + .size = ST_OAM_SIZE_2, + .tileNum = 0x000, + .priority = 2, + .paletteNum = 0 +}; static const union AnimCmd gAnimCmd_840BCA4[] = { ANIMCMD_FRAME(0, 8), @@ -284,17 +414,74 @@ static const union AnimCmd *const gAnimCmdTable_840BCB8[] = { gAnimCmd_840BCA4 }; -static const struct SpriteTemplate sSpriteTemplate_RevealGameFreakTextSparkles = {2, 1, &gOamData_840BC9C, gAnimCmdTable_840BCB8, NULL, gDummySpriteAffineAnimTable, SpriteCB_RevealGameFreakTextSparkles}; +static const struct SpriteTemplate sSpriteTemplate_RevealGameFreakTextSparkles = { + .tileTag = 2, + .paletteTag = 1, + .oam = &gOamData_840BC9C, + .anims = gAnimCmdTable_840BCB8, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_RevealGameFreakTextSparkles +}; -static const struct OamData gOamData_840BCD4 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_BLEND, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_V_RECTANGLE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 3, .paletteNum = 0 }; +static const struct OamData gOamData_840BCD4 = { + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_BLEND, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = ST_OAM_V_RECTANGLE, + .matrixNum = 0, + .size = ST_OAM_SIZE_3, + .tileNum = 0x000, + .priority = 3, + .paletteNum = 0 +}; -static const struct SpriteTemplate sSpriteTemplate_GameFreakLogoArt = {3, 3, &gOamData_840BCD4, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy}; +static const struct SpriteTemplate sSpriteTemplate_GameFreakLogoArt = { + .tileTag = 3, + .paletteTag = 3, + .oam = &gOamData_840BCD4, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; -static const struct OamData gOamData_840BCF4 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_BLEND, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_H_RECTANGLE, .matrixNum = 0, .size = ST_OAM_SIZE_1, .tileNum = 0x000, .priority = 3, .paletteNum = 0 }; +static const struct OamData gOamData_840BCF4 = { + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_BLEND, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = ST_OAM_H_RECTANGLE, + .matrixNum = 0, + .size = ST_OAM_SIZE_1, + .tileNum = 0x000, + .priority = 3, + .paletteNum = 0 +}; -static const struct SpriteTemplate sSpriteTemplate_PresentsText = {4, 3, &gOamData_840BCF4, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy}; +static const struct SpriteTemplate sSpriteTemplate_PresentsText = { + .tileTag = 4, + .paletteTag = 3, + .oam = &gOamData_840BCF4, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; -static const struct OamData gOamData_840BD14 = { .affineMode = ST_OAM_AFFINE_DOUBLE, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 1, .paletteNum = 0 }; +static const struct OamData gOamData_840BD14 = { + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = ST_OAM_SQUARE, + .matrixNum = 0, + .size = ST_OAM_SIZE_3, + .tileNum = 0x000, + .priority = 1, + .paletteNum = 0 +}; static const union AnimCmd gAnimCmd_840BD1C[] = { ANIMCMD_FRAME(0, 1), @@ -345,15 +532,61 @@ static const union AffineAnimCmd *const sAffineAnimTable_NidorinoAnim[] = { gAffineAnimCmd_840BD68 }; -static const struct SpriteTemplate sSpriteTemplate_NidorinoAnim = {5, 7, &gOamData_840BD14, sAnimTable_NidorinoAnim, NULL, sAffineAnimTable_NidorinoAnim, SpriteCallbackDummy}; +static const struct SpriteTemplate sSpriteTemplate_NidorinoAnim = { + .tileTag = 5, + .paletteTag = 7, + .oam = &gOamData_840BD14, + .anims = sAnimTable_NidorinoAnim, + .images = NULL, + .affineAnims = sAffineAnimTable_NidorinoAnim, + .callback = SpriteCallbackDummy +}; -static const struct OamData gOamData_840BDA0 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 1, .paletteNum = 0 }; +static const struct OamData gOamData_840BDA0 = { + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = ST_OAM_SQUARE, + .matrixNum = 0, + .size = ST_OAM_SIZE_3, + .tileNum = 0x000, + .priority = 1, + .paletteNum = 0 +}; -static const struct SpriteTemplate sSpriteTemplate_NidorinoStatic = {7, 7, &gOamData_840BDA0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy}; +static const struct SpriteTemplate sSpriteTemplate_NidorinoStatic = { + .tileTag = 7, + .paletteTag = 7, + .oam = &gOamData_840BDA0, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; -static const struct SpriteTemplate sSpriteTemplate_GengarStatic = {6, 6, &gOamData_840BDA0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy}; +static const struct SpriteTemplate sSpriteTemplate_GengarStatic = { + .tileTag = 6, + .paletteTag = 6, + .oam = &gOamData_840BDA0, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; -static const struct OamData gOamData_840BDD8 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_H_RECTANGLE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 0, .paletteNum = 0 }; +static const struct OamData gOamData_840BDD8 = { + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = ST_OAM_H_RECTANGLE, + .matrixNum = 0, + .size = ST_OAM_SIZE_3, + .tileNum = 0x000, + .priority = 0, + .paletteNum = 0 +}; static const union AnimCmd gAnimCmds_840BDE0[] = { ANIMCMD_FRAME(0, 0), @@ -371,9 +604,28 @@ static const union AnimCmd *const gAnimCmdTable_840BDF4[] = { gAnimCmds_840BDE8 }; -static const struct SpriteTemplate sSpriteTemplate_Grass = {8, 8, &gOamData_840BDD8, gAnimCmdTable_840BDF4, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy}; +static const struct SpriteTemplate sSpriteTemplate_Grass = { + .tileTag = 8, + .paletteTag = 8, + .oam = &gOamData_840BDD8, + .anims = gAnimCmdTable_840BDF4, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; -static const struct OamData gOamData_840BE14 = { .affineMode = ST_OAM_AFFINE_DOUBLE, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 1, .paletteNum = 0 }; +static const struct OamData gOamData_840BE14 = { + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = ST_OAM_SQUARE, + .matrixNum = 0, + .size = ST_OAM_SIZE_3, + .tileNum = 0x000, + .priority = 1, + .paletteNum = 0 +}; static const union AnimCmd gAnimCmd_840BE1C[] = { ANIMCMD_FRAME(0, 0), @@ -402,9 +654,28 @@ static const union AnimCmd *const gAnimCmdTable_840BE3C[] = { gAnimCmd_840BE34 }; -static const struct SpriteTemplate sSpriteTemplate_GengarBack = {9, 6, &gOamData_840BE14, gAnimCmdTable_840BE3C, NULL, sAffineAnimTable_NidorinoAnim, SpriteCallbackDummy}; +static const struct SpriteTemplate sSpriteTemplate_GengarBack = { + .tileTag = 9, + .paletteTag = 6, + .oam = &gOamData_840BE14, + .anims = gAnimCmdTable_840BE3C, + .images = NULL, + .affineAnims = sAffineAnimTable_NidorinoAnim, + .callback = SpriteCallbackDummy +}; -static const struct OamData gOamData_840BE64 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_V_RECTANGLE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 1, .paletteNum = 0 }; +static const struct OamData gOamData_840BE64 = { + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = ST_OAM_V_RECTANGLE, + .matrixNum = 0, + .size = ST_OAM_SIZE_3, + .tileNum = 0x000, + .priority = 1, + .paletteNum = 0 +}; static const union AnimCmd gAnimCmd_840BE6C[] = { ANIMCMD_FRAME(0, 8), @@ -423,9 +694,28 @@ static const union AnimCmd *const gAnimCmdTable_840BE84[] = { gAnimCmd_840BE78 }; -static const struct SpriteTemplate sSpriteTemplate_GengarSwipe = {10, 10, &gOamData_840BE64, gAnimCmdTable_840BE84, NULL, gDummySpriteAffineAnimTable, SpriteCB_GengarSwipe}; +static const struct SpriteTemplate sSpriteTemplate_GengarSwipe = { + .tileTag = 10, + .paletteTag = 10, + .oam = &gOamData_840BE64, + .anims = gAnimCmdTable_840BE84, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_GengarSwipe +}; -static const struct OamData gOamData_840BEA4 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_1, .tileNum = 0x000, .priority = 1, .paletteNum = 0 }; +static const struct OamData gOamData_840BEA4 = { + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = ST_OAM_SQUARE, + .matrixNum = 0, + .size = ST_OAM_SIZE_1, + .tileNum = 0x000, + .priority = 1, + .paletteNum = 0 +}; static const union AnimCmd gAnimCmd_840BEAC[] = { ANIMCMD_FRAME(0, 10), @@ -439,7 +729,15 @@ static const union AnimCmd *const gAnimCmdTable_840BEC0[] = { gAnimCmd_840BEAC }; -static const struct SpriteTemplate sSpriteTemplate_NidorinoRecoilDust = {11, 11, &gOamData_840BEA4, gAnimCmdTable_840BEC0, NULL, gDummySpriteAffineAnimTable, SpriteCB_NidorinoRecoilDust}; +static const struct SpriteTemplate sSpriteTemplate_NidorinoRecoilDust = { + .tileTag = 11, + .paletteTag = 11, + .oam = &gOamData_840BEA4, + .anims = gAnimCmdTable_840BEC0, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_NidorinoRecoilDust +}; static const struct CompressedSpriteSheet sFightSceneSpriteSheets[] = { {sSpriteTiles_GengarStatic, 0x0800, 6}, @@ -694,7 +992,7 @@ static void IntroCB_Init(struct IntroSequenceData * this) FillWindowPixelBuffer(0, PIXEL_FILL(0)); BlitBitmapToWindow(0, this->gamefreakTextBitmap, 0, 40, 144, 16); PutWindowTilemap(0); - CopyWindowToVram(0, 3); + CopyWindowToVram(0, COPYWIN_BOTH); this->state++; break; case 1: @@ -820,7 +1118,7 @@ static void IntroCB_GameFreakScene_CreateGameFreakLogo(struct IntroSequenceData { BlitBitmapToWindow(0, this->gamefreakLogoArtSpriteTiles, 0x38, 0x06, 0x20, 0x40); BlitBitmapToWindow(0, this->gamefreakTextBitmap, 0x00, 0x28, 0x90, 0x10); - CopyWindowToVram(0, 2); + CopyWindowToVram(0, COPYWIN_GFX); this->state++; } break; @@ -1473,58 +1771,58 @@ static void GameFreakScene_LoadGfxCreateStar(void) { int i; u8 spriteId; - static EWRAM_DATA u32 gUnknown_203AB28 = 0; + static EWRAM_DATA u32 sTrailingSparklesRngSeed = 0; for (i = 0; i < NELEMS(sSpriteSheets_GameFreakScene); i++) { LoadCompressedSpriteSheet(&sSpriteSheets_GameFreakScene[i]); } LoadSpritePalettes(sSpritePalettes_GameFreakScene); - gUnknown_203AB0E = 0x60; - gUnknown_203AB10 = 0x10; - gUnknown_203AB12 = 0x07; - gUnknown_203AB14 = 0x05; - gUnknown_203AB16 = 0x08; - gUnknown_203AB18 = 0x5A; - gUnknown_203AB1A = 0x78; - gUnknown_203AB1E = 0x01; - gUnknown_203AB20 = 0x01; - gUnknown_203AB22 = 0x05; - gUnknown_203AB24 = 0x05; - if (gUnknown_203AB28 == 0) - gUnknown_203AB28 = 354128453; + sLargeStarXSpeed = 0x60; + sLargeStarYSpeed = 0x10; + sTrailingSparklesXmodMask = 0x07; + sUnusedVarRelatedToGameFreakStars = 5; + sTrailingSparklesSpawnRate = 8; + sTrailingSparklesFlickerStartTime = 90; + sTrailingSparklesDestroySpriteTime = 120; + sTrailingSparklesXspeed = 1; + sTrailingSparklesYspeed = 1; + sTrailingSparklesXprecision = 5; + sTrailingSparklesYprecision = 5; + if (sTrailingSparklesRngSeed == 0) + sTrailingSparklesRngSeed = 354128453; spriteId = CreateSprite(&sSpriteTemplate_LargeStar, 0xF8, 0x37, 0); if (spriteId != MAX_SPRITES) { gSprites[spriteId].data[0] = 0xF80; gSprites[spriteId].data[1] = 0x370; - gSprites[spriteId].data[2] = gUnknown_203AB0E; - gSprites[spriteId].data[3] = gUnknown_203AB10; - StoreWordInTwoHalfwords((u16 *)&gSprites[spriteId].data[6], gUnknown_203AB28); + gSprites[spriteId].data[2] = sLargeStarXSpeed; + gSprites[spriteId].data[3] = sLargeStarYSpeed; + StoreWordInTwoHalfwords((u16 *)&gSprites[spriteId].data[6], sTrailingSparklesRngSeed); } } static void GameFreakScene_TrailingSparklesGen(s16 x, s16 y, u16 a2) { - static EWRAM_DATA s16 gUnknown_203AB2C = 0; + static EWRAM_DATA s16 sYmod = 0; u8 spriteId; - s16 r4 = (a2 & gUnknown_203AB12) + 2; - s16 r2 = gUnknown_203AB2C; - gUnknown_203AB2C++; - if (gUnknown_203AB2C > 3) - gUnknown_203AB2C = -3; - x += r4; - y += r2; + s16 xMod = (a2 & sTrailingSparklesXmodMask) + 2; + s16 yMod = sYmod; + sYmod++; + if (sYmod > 3) + sYmod = -3; + x += xMod; + y += yMod; if (x >= 1 && x <= 0xEF) { spriteId = CreateSprite(&sSpriteTemplate_TrailingSparkles, x, y, 1); if (spriteId != MAX_SPRITES) { - gSprites[spriteId].data[0] = x << gUnknown_203AB22; - gSprites[spriteId].data[1] = y << gUnknown_203AB24; - gSprites[spriteId].data[2] = gUnknown_203AB1E * r4; - gSprites[spriteId].data[3] = gUnknown_203AB20 * r2; + gSprites[spriteId].data[0] = x << sTrailingSparklesXprecision; + gSprites[spriteId].data[1] = y << sTrailingSparklesYprecision; + gSprites[spriteId].data[2] = sTrailingSparklesXspeed * xMod; + gSprites[spriteId].data[3] = sTrailingSparklesYspeed * yMod; } } } @@ -1747,7 +2045,7 @@ static void Task_FightScene3_Bg0Scroll(u8 taskId) static void SpriteCB_LargeStar(struct Sprite * sprite) { - u32 v; + unsigned v; sprite->data[0] -= sprite->data[2]; sprite->data[1] += sprite->data[3]; sprite->data[4] += 48; @@ -1755,7 +2053,7 @@ static void SpriteCB_LargeStar(struct Sprite * sprite) sprite->pos1.y = sprite->data[1] >> 4; sprite->pos2.y = gSineTable[(sprite->data[4] >> 4) + 0x40] >> 5; sprite->data[5]++; - if (sprite->data[5] % gUnknown_203AB16) + if (sprite->data[5] % sTrailingSparklesSpawnRate) { LoadWordFromTwoHalfwords(&sprite->data[6], &v); v = v * 1103515245 + 24691; @@ -1776,14 +2074,14 @@ static void SpriteCB_TrailingSparkles(struct Sprite * sprite) sprite->data[4]++; sprite->data[5] += sprite->data[4]; sprite->data[7]++; - sprite->pos1.x = (u16)sprite->data[0] >> gUnknown_203AB22; - sprite->pos1.y = sprite->data[1] >> gUnknown_203AB24; - if (gUnknown_203AB1C && sprite->data[3] < 0) - sprite->pos2.y = sprite->data[5] >> gUnknown_203AB1C; - if (sprite->data[7] > gUnknown_203AB18) + sprite->pos1.x = (u16)sprite->data[0] >> sTrailingSparklesXprecision; + sprite->pos1.y = sprite->data[1] >> sTrailingSparklesYprecision; + if (sTrailingSparklesGravityShift && sprite->data[3] < 0) + sprite->pos2.y = sprite->data[5] >> sTrailingSparklesGravityShift; + if (sprite->data[7] > sTrailingSparklesFlickerStartTime) { sprite->invisible = !sprite->invisible; - if (sprite->data[7] > gUnknown_203AB1A) + if (sprite->data[7] > sTrailingSparklesDestroySpriteTime) DestroySprite(sprite); } if (sprite->pos1.y + sprite->pos2.y < 0 || sprite->pos1.y + sprite->pos2.y > 160) diff --git a/src/item_menu.c b/src/item_menu.c index ff59f0985..5ab87c9a0 100644 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -1596,7 +1596,7 @@ static void Task_ItemMenuAction_ToggleSelect(u8 taskId) DestroyListMenuTask(data[0], &gBagMenuState.cursorPos[gBagMenuState.pocket], &gBagMenuState.itemsAbove[gBagMenuState.pocket]); Bag_BuildListMenuTemplate(gBagMenuState.pocket); data[0] = ListMenuInit(&gMultiuseListMenuTemplate, gBagMenuState.cursorPos[gBagMenuState.pocket], gBagMenuState.itemsAbove[gBagMenuState.pocket]); - CopyWindowToVram(0, 1); + CopyWindowToVram(0, COPYWIN_MAP); Task_ItemMenuAction_Cancel(taskId); } @@ -1608,7 +1608,7 @@ static void Task_ItemMenuAction_Give(u8 taskId) HideBagWindow(6); PutWindowTilemap(0); PutWindowTilemap(1); - CopyWindowToVram(0, 1); + CopyWindowToVram(0, COPYWIN_MAP); if (!CanWriteMailHere(itemId)) DisplayItemMessageInBag(taskId, 2, gText_CantWriteMailHere, Task_WaitAButtonAndCloseContextMenu); else if (!itemid_is_unique(itemId)) @@ -1694,7 +1694,7 @@ static void Task_ItemMenuAction_BattleUse(u8 taskId) HideBagWindow(6); PutWindowTilemap(0); PutWindowTilemap(1); - CopyWindowToVram(0, 1); + CopyWindowToVram(0, COPYWIN_MAP); ItemId_GetBattleFunc(gSpecialVar_ItemId)(taskId); } } @@ -2131,7 +2131,7 @@ static void Task_Bag_OldManTutorial(u8 taskId) HideBagWindow(6); PutWindowTilemap(0); PutWindowTilemap(1); - CopyWindowToVram(0, 1); + CopyWindowToVram(0, COPYWIN_MAP); DestroyListMenuTask(data[0], NULL, NULL); RestorePlayerBag(); Bag_BeginCloseWin0Animation(); @@ -2242,7 +2242,7 @@ static void Task_Bag_TeachyTvRegister(u8 taskId) data[0] = ListMenuInit(&gMultiuseListMenuTemplate, gBagMenuState.cursorPos[gBagMenuState.pocket], gBagMenuState.itemsAbove[gBagMenuState.pocket]); Bag_FillMessageBoxWithPalette(0); bag_menu_print_cursor_(data[0], 1); - CopyWindowToVram(0, 1); + CopyWindowToVram(0, COPYWIN_MAP); break; case 510: case 612: @@ -2305,7 +2305,7 @@ static void Task_Bag_TeachyTvCatching(u8 taskId) HideBagWindow(6); PutWindowTilemap(0); PutWindowTilemap(1); - CopyWindowToVram(0, 1); + CopyWindowToVram(0, COPYWIN_MAP); DestroyListMenuTask(data[0], NULL, NULL); RestorePlayerBag(); Bag_BeginCloseWin0Animation(); @@ -2347,7 +2347,7 @@ static void Task_Bag_TeachyTvStatus(u8 taskId) HideBagWindow(6); PutWindowTilemap(0); PutWindowTilemap(1); - CopyWindowToVram(0, 1); + CopyWindowToVram(0, COPYWIN_MAP); DestroyListMenuTask(data[0], NULL, NULL); RestorePlayerBag(); gItemUseCB = ItemUseCB_MedicineStep; @@ -2388,7 +2388,7 @@ static void Task_Bag_TeachyTvTMs(u8 taskId) HideBagWindow(6); PutWindowTilemap(0); PutWindowTilemap(1); - CopyWindowToVram(0, 1); + CopyWindowToVram(0, COPYWIN_MAP); DestroyListMenuTask(data[0], NULL, NULL); RestorePlayerBag(); sBagMenuDisplay->exitCB = Pokedude_InitTMCase; diff --git a/src/item_pc.c b/src/item_pc.c index dce96d59d..8ce9cd6a9 100644 --- a/src/item_pc.c +++ b/src/item_pc.c @@ -120,14 +120,14 @@ static const struct MenuAction sItemPcSubmenuOptions[] = { {gFameCheckerText_Cancel, {.void_u8 = Task_ItemPcCancel}} }; -static const u8 gUnknown_8453F8C[][3] = { - {0, 1, 2}, - {0, 2, 3}, - {0, 3, 2}, - {0, 10, 2} +static const u8 sTextColors[][3] = { + {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY}, + {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY}, + {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_LIGHT_GREY, TEXT_COLOR_DARK_GREY}, + {TEXT_COLOR_TRANSPARENT, TEXT_DYNAMIC_COLOR_1, TEXT_COLOR_DARK_GREY} }; -static const struct WindowTemplate gUnknown_8453F98[] = { +static const struct WindowTemplate sWindowTemplates[] = { { .bg = 0, .tilemapLeft = 0x07, @@ -179,7 +179,7 @@ static const struct WindowTemplate gUnknown_8453F98[] = { }, DUMMY_WIN_TEMPLATE }; -static const struct WindowTemplate gUnknown_8453FD0[] = { +static const struct WindowTemplate sSubwindowTemplates[] = { { .bg = 0, .tilemapLeft = 0x06, @@ -207,11 +207,11 @@ static const struct WindowTemplate gUnknown_8453FD0[] = { } }; -void ItemPc_Init(u8 a0, MainCallback callback) +void ItemPc_Init(u8 kind, MainCallback callback) { u8 i; - if (a0 >= 2) + if (kind >= 2) { SetMainCallback2(callback); return; @@ -221,7 +221,7 @@ void ItemPc_Init(u8 a0, MainCallback callback) SetMainCallback2(callback); return; } - if (a0 != 1) + if (kind != 1) { sListMenuState.savedCallback = callback; sListMenuState.scroll = sListMenuState.row = 0; @@ -373,7 +373,7 @@ static bool8 ItemPc_DoGfxSetup(void) else { BeginPCScreenEffect_TurnOn(0, 0, 0); - ItemPc_SetInitializedFlag(1); + ItemPc_SetInitializedFlag(TRUE); PlaySE(SE_PC_LOGIN); } gMain.state++; @@ -702,15 +702,15 @@ static void ItemPc_SetScrollPosition(void) } } -static void ItemPc_SetMessageWindowPalette(int a0) +static void ItemPc_SetMessageWindowPalette(int palIdx) { - SetBgTilemapPalette(1, 0, 14, 30, 6, a0 + 1); + SetBgTilemapPalette(1, 0, 14, 30, 6, palIdx + 1); ScheduleBgCopyTilemapToVram(1); } -void ItemPc_SetInitializedFlag(u8 a0) +void ItemPc_SetInitializedFlag(bool8 flag) { - sListMenuState.initialized = a0; + sListMenuState.initialized = flag; } static void Task_ItemPcMain(u8 taskId) @@ -740,7 +740,7 @@ static void Task_ItemPcMain(u8 taskId) break; case -2: PlaySE(SE_SELECT); - ItemPc_SetInitializedFlag(0); + ItemPc_SetInitializedFlag(FALSE); gTasks[taskId].func = Task_ItemPcTurnOff1; break; default: @@ -965,9 +965,9 @@ static void ItemPc_WithdrawMultipleInitWindow(u16 slotId) ScheduleBgCopyTilemapToVram(0); } -static void sub_810E670(s16 quantity) +static void UpdateWithdrawQuantityDisplay(s16 quantity) { - FillWindowPixelRect(3, 0x11, 10, 10, 28, 12); + FillWindowPixelRect(3, PIXEL_FILL(1), 10, 10, 28, 12); ConvertIntToDecimalStringN(gStringVar1, quantity, STR_CONV_MODE_LEADING_ZEROS, 3); StringExpandPlaceholders(gStringVar4, gText_TimesStrVar1); ItemPc_AddTextPrinterParameterized(3, 0, gStringVar4, 8, 10, 1, 0, 0, 1); @@ -978,7 +978,7 @@ static void Task_ItemPcHandleWithdrawMultiple(u8 taskId) s16 * data = gTasks[taskId].data; if (AdjustQuantityAccordingToDPadInput(&data[8], data[2]) == TRUE) - sub_810E670(data[8]); + UpdateWithdrawQuantityDisplay(data[8]); else if (JOY_NEW(A_BUTTON)) { PlaySE(SE_SELECT); @@ -1067,7 +1067,7 @@ static void ItemPc_InitWindows(void) { u8 i; - InitWindows(gUnknown_8453F98); + InitWindows(sWindowTemplates); DeactivateAllTextPrinters(); TextWindow_SetUserSelectedFrame(0, 0x3C0, 0xE0); TextWindow_SetStdFrame0_WithPal(0, 0x3A3, 0xC0); @@ -1106,7 +1106,7 @@ static void unused_ItemPc_AddTextPrinterParameterized(u8 windowId, const u8 * st static void ItemPc_AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx) { - AddTextPrinterParameterized4(windowId, fontId, x, y, letterSpacing, lineSpacing, gUnknown_8453F8C[colorIdx], speed, str); + AddTextPrinterParameterized4(windowId, fontId, x, y, letterSpacing, lineSpacing, sTextColors[colorIdx], speed, str); } static void ItemPc_SetBorderStyleOnWindow(u8 windowId) @@ -1118,7 +1118,7 @@ static u8 ItemPc_GetOrCreateSubwindow(u8 idx) { if (sSubmenuWindowIds[idx] == 0xFF) { - sSubmenuWindowIds[idx] = AddWindow(&gUnknown_8453FD0[idx]); + sSubmenuWindowIds[idx] = AddWindow(&sSubwindowTemplates[idx]); DrawStdFrameWithCustomTileAndPalette(sSubmenuWindowIds[idx], TRUE, 0x3A3, 0x0C); } diff --git a/src/learn_move.c b/src/learn_move.c index d444b5d40..c28e99647 100644 --- a/src/learn_move.c +++ b/src/learn_move.c @@ -594,7 +594,7 @@ static void PrintTeachWhichMoveToStrVar1(bool8 onInit) StringExpandPlaceholders(gStringVar4, gText_TeachWhichMoveToMon); PrintTextOnWindow(7, gStringVar4, 0, 2, 0, 2); PutWindowTilemap(7); - CopyWindowToVram(7, 3); + CopyWindowToVram(7, COPYWIN_BOTH); } } @@ -714,7 +714,7 @@ static void MoveRelearnerMenuHandleInput(void) static void MoveLearnerInitListMenu(void) { sMoveRelearner->listMenuTaskId = ListMenuInit(&gMultiuseListMenuTemplate, sMoveRelearner->listMenuScrollPos, sMoveRelearner->listMenuScrollRow); - CopyWindowToVram(6, 1); + CopyWindowToVram(6, COPYWIN_MAP); } static void PrintMoveInfo(u16 move) @@ -760,8 +760,8 @@ static void LoadMoveInfoUI(void) PutWindowTilemap(5); PutWindowTilemap(2); PutWindowTilemap(7); - CopyWindowToVram(0, 2); - CopyWindowToVram(1, 2); + CopyWindowToVram(0, COPYWIN_GFX); + CopyWindowToVram(1, COPYWIN_GFX); } static void PrintMoveInfoHandleCancel_CopyToVram(void) @@ -776,15 +776,15 @@ static void PrintMoveInfoHandleCancel_CopyToVram(void) for (i = 2; i < 6; i++) { FillWindowPixelBuffer(i, PIXEL_FILL(0)); - CopyWindowToVram(i, 2); + CopyWindowToVram(i, COPYWIN_GFX); } } - CopyWindowToVram(3, 2); - CopyWindowToVram(4, 2); - CopyWindowToVram(2, 2); - CopyWindowToVram(2, 2); - CopyWindowToVram(5, 2); - CopyWindowToVram(7, 3); + CopyWindowToVram(3, COPYWIN_GFX); + CopyWindowToVram(4, COPYWIN_GFX); + CopyWindowToVram(2, COPYWIN_GFX); + CopyWindowToVram(2, COPYWIN_GFX); + CopyWindowToVram(5, COPYWIN_GFX); + CopyWindowToVram(7, COPYWIN_BOTH); } static void MoveRelearnerMenu_MoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu *list) @@ -803,7 +803,7 @@ static s8 YesNoMenuProcessInput(void) if (input != -2) { PutWindowTilemap(6); - CopyWindowToVram(6, 1); + CopyWindowToVram(6, COPYWIN_MAP); } return input; } diff --git a/src/link.c b/src/link.c index e11ba4f29..eac984b47 100644 --- a/src/link.c +++ b/src/link.c @@ -380,7 +380,7 @@ void OpenLink(void) { sub_80F86F4(); } - gReceivedRemoteLinkPlayers = 0; + gReceivedRemoteLinkPlayers = FALSE; for (i = 0; i < MAX_LINK_PLAYERS; i++) { gRemoteLinkPlayersNotReceived[i] = TRUE; @@ -515,9 +515,9 @@ void HandleReceiveRemoteLinkPlayer(u8 who) { count += gRemoteLinkPlayersNotReceived[i]; } - if (count == 0 && gReceivedRemoteLinkPlayers == 0) + if (count == 0 && !gReceivedRemoteLinkPlayers) { - gReceivedRemoteLinkPlayers = 1; + gReceivedRemoteLinkPlayers = TRUE; } } @@ -1513,7 +1513,7 @@ void sub_800AE1C(void) PutWindowTilemap(0); PutWindowTilemap(2); CopyWindowToVram(0, 0); - CopyWindowToVram(2, 3); + CopyWindowToVram(2, COPYWIN_BOTH); ShowBg(0); ShowBg(1); } @@ -1526,7 +1526,7 @@ void sub_800AED0(void) PutWindowTilemap(1); PutWindowTilemap(2); CopyWindowToVram(1, 0); - CopyWindowToVram(2, 3); + CopyWindowToVram(2, COPYWIN_BOTH); ShowBg(0); } @@ -1656,7 +1656,7 @@ bool8 HandleLinkConnection(void) { gLinkStatus = LinkMain1(&gShouldAdvanceLinkState, gSendCmd, gRecvCmds); LinkMain2(&gMain.heldKeys); - if ((gLinkStatus & LINK_STAT_RECEIVED_NOTHING) && sub_8058318() == TRUE) + if ((gLinkStatus & LINK_STAT_RECEIVED_NOTHING) && IsSendingKeysOverCable() == TRUE) { return TRUE; } @@ -1665,7 +1665,7 @@ bool8 HandleLinkConnection(void) { r4 = LinkRfuMain1(); r5 = LinkRfuMain2(); - if (sub_8058318() == TRUE) + if (IsSendingKeysOverCable() == TRUE) { if (r4 == TRUE || IsRfuRecvQueueEmpty() || r5) { @@ -1678,7 +1678,7 @@ bool8 HandleLinkConnection(void) void SetWirelessCommType1(void) { - if (gReceivedRemoteLinkPlayers == 0) + if (!gReceivedRemoteLinkPlayers) { gWirelessCommType = 1; } @@ -1686,7 +1686,7 @@ void SetWirelessCommType1(void) static void SetWirelessCommType0(void) { - if (gReceivedRemoteLinkPlayers == 0) + if (!gReceivedRemoteLinkPlayers) { gWirelessCommType = 0; } @@ -1694,7 +1694,7 @@ static void SetWirelessCommType0(void) void SetWirelessCommType0_UnusedCopy(void) { - if (gReceivedRemoteLinkPlayers == 0) + if (!gReceivedRemoteLinkPlayers) { gWirelessCommType = 0; } diff --git a/src/link_rfu_2.c b/src/link_rfu_2.c index f3e7ce274..77672f5d8 100644 --- a/src/link_rfu_2.c +++ b/src/link_rfu_2.c @@ -45,7 +45,7 @@ static void RfuFunc_SendNextBlock(void); static void RfuFunc_SendLastBlock(void); static void CallRfuFunc(void); static void sub_80FA738(void); -static int sub_80FA788(void); +static s32 sub_80FA788(void); static void sub_80FA834(u8 taskId); static void sub_80FA9D0(u16 a0); static void ValidateAndReceivePokemonSioInfo(void * a0); @@ -712,7 +712,7 @@ static bool32 sub_80F911C(void) if (!lman.acceptSlot_flag) { LinkRfu_Shutdown(); - gReceivedRemoteLinkPlayers = 0; + gReceivedRemoteLinkPlayers = FALSE; return FALSE; } } @@ -985,7 +985,7 @@ static void RfuHandleReceiveCommand(u8 unused) switch (gRecvCmds[i][0] & 0xff00) { case RFU_COMMAND_0x7800: - if (Rfu.parent_child == MODE_CHILD && gReceivedRemoteLinkPlayers != 0) + if (Rfu.parent_child == MODE_CHILD && gReceivedRemoteLinkPlayers) return; // fallthrough case RFU_COMMAND_0x7700: @@ -1017,7 +1017,7 @@ static void RfuHandleReceiveCommand(u8 unused) { Rfu.cmd_8800_recvbuf[i].receiving = 2; Rfu_SetBlockReceivedFlag(i); - if (GetHostRFUtgtGname()->activity == (ACTIVITY_CHAT | IN_UNION_ROOM) && gReceivedRemoteLinkPlayers != 0 && Rfu.parent_child == MODE_CHILD) + if (GetHostRFUtgtGname()->activity == (ACTIVITY_CHAT | IN_UNION_ROOM) && gReceivedRemoteLinkPlayers && Rfu.parent_child == MODE_CHILD) ValidateAndReceivePokemonSioInfo(gBlockRecvBuffer); } } @@ -1035,11 +1035,11 @@ static void RfuHandleReceiveCommand(u8 unused) case RFU_COMMAND_0xed00: if (Rfu.parent_child == MODE_CHILD) { - if (gReceivedRemoteLinkPlayers != 0) + if (gReceivedRemoteLinkPlayers) { if (gRecvCmds[i][1] & gRfuLinkStatus->connSlotFlag) { - gReceivedRemoteLinkPlayers = 0; + gReceivedRemoteLinkPlayers = FALSE; rfu_LMAN_requestChangeAgbClockMaster(); Rfu.unk_ce4 = gRecvCmds[i][2]; } @@ -1283,7 +1283,7 @@ static void RfuFunc_End5F00_PowerDownRfu(void) { rfu_clearAllSlot(); rfu_LMAN_powerDownRFU(); - gReceivedRemoteLinkPlayers = 0; + gReceivedRemoteLinkPlayers = FALSE; Rfu.isShuttingDown = TRUE; Rfu.RfuFunc = NULL; } @@ -1682,7 +1682,7 @@ static void sub_80FA834(u8 taskId) break; case 6: DestroyTask(taskId); - gReceivedRemoteLinkPlayers = 1; + gReceivedRemoteLinkPlayers = TRUE; Rfu.unk_ce8 = FALSE; rfu_LMAN_setLinkRecovery(1, 600); if (Rfu.unionRoomChatters) @@ -1836,7 +1836,7 @@ static void sub_80FACF0(u8 taskId) { ReceiveRfuLinkPlayers((const struct SioInfo *)gBlockRecvBuffer); ResetBlockReceivedFlag(0); - gReceivedRemoteLinkPlayers = 1; + gReceivedRemoteLinkPlayers = TRUE; DestroyTask(taskId); } break; diff --git a/src/list_menu.c b/src/list_menu.c index 5232708f3..b794953de 100644 --- a/src/list_menu.c +++ b/src/list_menu.c @@ -122,7 +122,7 @@ s32 DoMysteryGiftListMenu(const struct WindowTemplate *windowTemplate, const str gMultiuseListMenuTemplate = *listMenuTemplate; gMultiuseListMenuTemplate.windowId = sMysteryGiftLinkMenu.windowId; sMysteryGiftLinkMenu.listTaskId = ListMenuInit(&gMultiuseListMenuTemplate, 0, 0); - CopyWindowToVram(sMysteryGiftLinkMenu.windowId, 1); + CopyWindowToVram(sMysteryGiftLinkMenu.windowId, COPYWIN_MAP); sMysteryGiftLinkMenu.state = 1; break; case 1: @@ -155,7 +155,7 @@ s32 DoMysteryGiftListMenu(const struct WindowTemplate *windowTemplate, const str break; } } - CopyWindowToVram(sMysteryGiftLinkMenu.windowId, 1); + CopyWindowToVram(sMysteryGiftLinkMenu.windowId, COPYWIN_MAP); } break; case 2: @@ -171,7 +171,7 @@ u8 ListMenuInit(const struct ListMenuTemplate *listMenuTemplate, u16 cursorPos, { u8 taskId = ListMenuInitInternal(listMenuTemplate, cursorPos, itemsAbove); PutWindowTilemap(listMenuTemplate->windowId); - CopyWindowToVram(listMenuTemplate->windowId, 2); + CopyWindowToVram(listMenuTemplate->windowId, COPYWIN_GFX); return taskId; } @@ -182,7 +182,7 @@ u8 ListMenuInitInRect(const struct ListMenuTemplate *listMenuTemplate, const str for (i = 0; rect[i].palNum != 0xFF; i++) PutWindowRectTilemapOverridePalette(listMenuTemplate->windowId, rect[i].x, rect[i].y, rect[i].width, rect[i].height, rect[i].palNum); - CopyWindowToVram(listMenuTemplate->windowId, 2); + CopyWindowToVram(listMenuTemplate->windowId, COPYWIN_GFX); return taskId; } @@ -266,7 +266,7 @@ void RedrawListMenu(u8 listTaskId) FillWindowPixelBuffer(list->template.windowId, PIXEL_FILL(list->template.fillValue)); ListMenuPrintEntries(list, list->cursorPos, 0, list->template.maxShowed); ListMenuDrawCursor(list); - CopyWindowToVram(list->template.windowId, 2); + CopyWindowToVram(list->template.windowId, COPYWIN_GFX); } static void ChangeListMenuPals(u8 listTaskId, u8 cursorPal, u8 fillValue, u8 cursorShadowPal) @@ -611,7 +611,7 @@ static bool8 ListMenuChangeSelection(struct ListMenu *list, bool8 updateCursorAn ListMenuErasePrintedCursor(list, oldSelectedRow); ListMenuDrawCursor(list); ListMenuCallSelectionChangedCallback(list, FALSE); - CopyWindowToVram(list->template.windowId, 2); + CopyWindowToVram(list->template.windowId, COPYWIN_GFX); break; case 2: case 3: @@ -619,7 +619,7 @@ static bool8 ListMenuChangeSelection(struct ListMenu *list, bool8 updateCursorAn ListMenuScroll(list, cursorCount, movingDown); ListMenuDrawCursor(list); ListMenuCallSelectionChangedCallback(list, FALSE); - CopyWindowToVram(list->template.windowId, 2); + CopyWindowToVram(list->template.windowId, COPYWIN_GFX); break; } } diff --git a/src/mail.c b/src/mail.c index 0e9a8db41..34242f1b6 100644 --- a/src/mail.c +++ b/src/mail.c @@ -677,8 +677,8 @@ static void AddMailMessagePrinters(void) width = GetStringWidth(1, gText_From, 0); AddTextPrinterParameterized3(1, 1, sMailViewResources->nameX, sMailViewResources->messageLayout->nameY, sTextColor, 0, gText_From); AddTextPrinterParameterized3(1, 1, sMailViewResources->nameX + width, sMailViewResources->messageLayout->nameY, sTextColor, 0, sMailViewResources->authorNameBuffer); - CopyWindowToVram(0, 3); - CopyWindowToVram(1, 3); + CopyWindowToVram(0, COPYWIN_BOTH); + CopyWindowToVram(1, COPYWIN_BOTH); } static void VBlankCB_ShowMail(void) diff --git a/src/main.c b/src/main.c index be025c79f..1573a2c5b 100644 --- a/src/main.c +++ b/src/main.c @@ -28,11 +28,15 @@ const u8 gGameVersion = GAME_VERSION; const u8 gGameLanguage = GAME_LANGUAGE; +#if MODERN +const char BuildDateTime[] = __DATE__ " " __TIME__; +#else #if REVISION == 0 const char BuildDateTime[] = "2004 04 26 11:20"; #else const char BuildDateTime[] = "2004 07 20 09:30"; -#endif +#endif //REVISION +#endif //MODERN const IntrFunc gIntrTableTemplate[] = { @@ -84,7 +88,37 @@ void EnableVCountIntrAtLine150(void); void AgbMain() { +#if MODERN + // Modern compilers are liberal with the stack on entry to this function, + // so RegisterRamReset may crash if it resets IWRAM. + RegisterRamReset(RESET_ALL & ~RESET_IWRAM); + asm("mov\tr1, #0xC0\n" + "\tlsl\tr1, r1, #0x12\n" + "\tmov\tr2, #0xFC\n" + "\tlsl\tr2, r2, #0x7\n" + "\tadd\tr2, r1, r2\n" + "\tmov\tr0, #0\n" + "\tmov\tr3, r0\n" + "\tmov\tr4, r0\n" + "\tmov\tr5, r0\n" + ".LCU%=:\n" + "\tstmia\tr1!, {r0, r3, r4, r5}\n" + "\tstmia\tr1!, {r0, r3, r4, r5}\n" + "\tstmia\tr1!, {r0, r3, r4, r5}\n" + "\tstmia\tr1!, {r0, r3, r4, r5}\n" + "\tstmia\tr1!, {r0, r3, r4, r5}\n" + "\tstmia\tr1!, {r0, r3, r4, r5}\n" + "\tstmia\tr1!, {r0, r3, r4, r5}\n" + "\tstmia\tr1!, {r0, r3, r4, r5}\n" + "\tcmp\tr1, r2\n" + "\tbcc\t.LCU%=\n" + : + : + : "r0", "r1", "r2", "r3", "r4", "r5", "memory" + ); +#else RegisterRamReset(RESET_ALL); +#endif //MODERN *(vu16 *)BG_PLTT = RGB_WHITE; InitGpuRegManager(); REG_WAITCNT = WAITCNT_PREFETCH_ENABLE | WAITCNT_WS0_S_1 | WAITCNT_WS0_N_3; @@ -98,7 +132,7 @@ void AgbMain() InitMapMusic(); ClearDma3Requests(); ResetBgs(); - InitHeap(gHeap, 0x1C000); + InitHeap(gHeap, HEAP_SIZE); SetDefaultFontsPointer(); gSoftResetDisabled = FALSE; @@ -128,7 +162,7 @@ void AgbMain() DoSoftReset(); } - if (sub_80582E0() == 1) + if (Overworld_SendKeysToLinkIsRunning() == TRUE) { gLinkTransferringData = TRUE; UpdateLinkAndCallCallbacks(); @@ -139,7 +173,7 @@ void AgbMain() gLinkTransferringData = FALSE; UpdateLinkAndCallCallbacks(); - if (sub_8058274() == 1) + if (Overworld_RecvKeysFromLinkIsRunning() == 1) { gMain.newKeys = 0; ClearSpriteCopyRequests(); @@ -259,16 +293,16 @@ static void ReadKeys(void) gMain.heldKeys = gMain.heldKeysRaw; // Remap L to A if the L=A option is enabled. - if (gSaveBlock2Ptr->optionsButtonMode == 2) + if (gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_L_EQUALS_A) { - if (gMain.newKeys & L_BUTTON) + if (JOY_NEW(L_BUTTON)) gMain.newKeys |= A_BUTTON; - if (gMain.heldKeys & L_BUTTON) + if (JOY_HELD(L_BUTTON)) gMain.heldKeys |= A_BUTTON; } - if (gMain.newKeys & gMain.watchedKeysMask) + if (JOY_NEW(gMain.watchedKeysMask)) gMain.watchedKeysPressed = TRUE; } @@ -289,7 +323,7 @@ void InitIntrHandlers(void) REG_IME = 1; - EnableInterrupts(0x1); + EnableInterrupts(INTR_FLAG_VBLANK); } void SetVBlankCallback(IntrCallback callback) diff --git a/src/main_menu.c b/src/main_menu.c index 00ecd0fe3..8d5343852 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -352,7 +352,7 @@ static void Task_PrintMainMenuText(u8 taskId) AddTextPrinterParameterized3(MAIN_MENU_WINDOW_NEWGAME_ONLY, 2, 2, 2, sTextColor1, -1, gText_NewGame); MainMenu_DrawWindow(&sWindowTemplate[MAIN_MENU_WINDOW_NEWGAME_ONLY]); PutWindowTilemap(MAIN_MENU_WINDOW_NEWGAME_ONLY); - CopyWindowToVram(MAIN_MENU_WINDOW_NEWGAME_ONLY, 3); + CopyWindowToVram(MAIN_MENU_WINDOW_NEWGAME_ONLY, COPYWIN_BOTH); break; case MAIN_MENU_CONTINUE: FillWindowPixelBuffer(MAIN_MENU_WINDOW_CONTINUE, PIXEL_FILL(10)); @@ -364,8 +364,8 @@ static void Task_PrintMainMenuText(u8 taskId) MainMenu_DrawWindow(&sWindowTemplate[MAIN_MENU_WINDOW_NEWGAME]); PutWindowTilemap(MAIN_MENU_WINDOW_CONTINUE); PutWindowTilemap(MAIN_MENU_WINDOW_NEWGAME); - CopyWindowToVram(MAIN_MENU_WINDOW_CONTINUE, 2); - CopyWindowToVram(MAIN_MENU_WINDOW_NEWGAME, 3); + CopyWindowToVram(MAIN_MENU_WINDOW_CONTINUE, COPYWIN_GFX); + CopyWindowToVram(MAIN_MENU_WINDOW_NEWGAME, COPYWIN_BOTH); break; case MAIN_MENU_MYSTERYGIFT: FillWindowPixelBuffer(MAIN_MENU_WINDOW_CONTINUE, PIXEL_FILL(10)); @@ -382,9 +382,9 @@ static void Task_PrintMainMenuText(u8 taskId) PutWindowTilemap(MAIN_MENU_WINDOW_CONTINUE); PutWindowTilemap(MAIN_MENU_WINDOW_NEWGAME); PutWindowTilemap(MAIN_MENU_WINDOW_MYSTERYGIFT); - CopyWindowToVram(MAIN_MENU_WINDOW_CONTINUE, 2); - CopyWindowToVram(MAIN_MENU_WINDOW_NEWGAME, 2); - CopyWindowToVram(MAIN_MENU_WINDOW_MYSTERYGIFT, 3); + CopyWindowToVram(MAIN_MENU_WINDOW_CONTINUE, COPYWIN_GFX); + CopyWindowToVram(MAIN_MENU_WINDOW_NEWGAME, COPYWIN_GFX); + CopyWindowToVram(MAIN_MENU_WINDOW_MYSTERYGIFT, COPYWIN_BOTH); break; } gTasks[taskId].func = Task_WaitDma3AndFadeIn; @@ -392,7 +392,7 @@ static void Task_PrintMainMenuText(u8 taskId) static void Task_WaitDma3AndFadeIn(u8 taskId) { - if (CheckForSpaceForDma3Request(-1) != -1) + if (WaitDma3Request(-1) != -1) { gTasks[taskId].func = Task_UpdateVisualSelection; BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0xFFFF); @@ -534,7 +534,7 @@ static void Task_ReturnToTileScreen(u8 taskId) static void MoveWindowByMenuTypeAndCursorPos(u8 menuType, u8 cursorPos) { u16 win0vTop, win0vBot; - SetGpuReg(REG_OFFSET_WIN0H, 0x12DE); + SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(18, 222)); switch (menuType) { default: @@ -578,8 +578,8 @@ static bool8 HandleMenuInput(u8 taskId) { PlaySE(SE_SELECT); BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); - SetGpuReg(REG_OFFSET_WIN0H, 0xF0); - SetGpuReg(REG_OFFSET_WIN0V, 0xA0); + SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(0, 240)); + SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(0, 160)); gTasks[taskId].func = Task_ReturnToTileScreen; } else if (JOY_NEW(DPAD_UP) && gTasks[taskId].tCursorPos > 0) @@ -602,9 +602,9 @@ static void PrintMessageOnWindow4(const u8 *str) MainMenu_DrawWindow(&sWindowTemplate[4]); AddTextPrinterParameterized3(MAIN_MENU_WINDOW_ERROR, 2, 0, 2, sTextColor1, 2, str); PutWindowTilemap(MAIN_MENU_WINDOW_ERROR); - CopyWindowToVram(MAIN_MENU_WINDOW_ERROR, 2); - SetGpuReg(REG_OFFSET_WIN0H, 0x13DD); - SetGpuReg(REG_OFFSET_WIN0V, 0x739D); + CopyWindowToVram(MAIN_MENU_WINDOW_ERROR, COPYWIN_GFX); + SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE( 19, 221)); + SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(115, 157)); } static void PrintContinueStats(void) diff --git a/src/map_name_popup.c b/src/map_name_popup.c index b490722a5..6629fcac5 100644 --- a/src/map_name_popup.c +++ b/src/map_name_popup.c @@ -84,7 +84,7 @@ static void Task_MapNamePopup(u8 taskId) if (task->tReshow) { MapNamePopupPrintMapNameOnWindow(task->tWindowId); - CopyWindowToVram(task->tWindowId, 2); + CopyWindowToVram(task->tWindowId, COPYWIN_GFX); task->tState = 1; task->tReshow = FALSE; } @@ -100,7 +100,7 @@ static void Task_MapNamePopup(u8 taskId) if (task->tWindowExists && !task->tWindowCleared) { rbox_fill_rectangle(task->tWindowId); - CopyWindowToVram(task->tWindowId, 1); + CopyWindowToVram(task->tWindowId, COPYWIN_MAP); task->tWindowCleared = TRUE; } task->tState = 7; @@ -183,7 +183,7 @@ static u16 MapNamePopupCreateWindow(bool32 palintoFadedBuffer) DrawTextBorderOuter(windowId, r6, 0xD); PutWindowTilemap(windowId); MapNamePopupPrintMapNameOnWindow(windowId); - CopyWindowToVram(windowId, 3); + CopyWindowToVram(windowId, COPYWIN_BOTH); return windowId; } diff --git a/src/map_preview_screen.c b/src/map_preview_screen.c index 33e69a8a0..91f2c64c9 100644 --- a/src/map_preview_screen.c +++ b/src/map_preview_screen.c @@ -479,7 +479,7 @@ static void Task_RunMapPreviewScreenForest(u8 taskId) case 0: if (!MapPreview_IsGfxLoadFinished() && !IsDma3ManagerBusyWithBgCopy()) { - CopyWindowToVram(data[11], 3); + CopyWindowToVram(data[11], COPYWIN_BOTH); data[0]++; } break; diff --git a/src/math_util.c b/src/math_util.c index 466a31921..f77c82608 100644 --- a/src/math_util.c +++ b/src/math_util.c @@ -1,6 +1,6 @@ #include "global.h" -s16 sub_80D8AA0(s16 x, s16 y) +s16 MathUtil_Mul16(s16 x, s16 y) { s32 result; @@ -10,7 +10,7 @@ s16 sub_80D8AA0(s16 x, s16 y) return result; } -s16 sub_80D8ABC(u8 s, s16 x, s16 y) +s16 MathUtil_Mul16Shift(u8 s, s16 x, s16 y) { s32 result; @@ -20,7 +20,7 @@ s16 sub_80D8ABC(u8 s, s16 x, s16 y) return result; } -s32 sub_80D8AE0(s32 x, s32 y) +s32 MathUtil_Mul32(s32 x, s32 y) { s64 result; @@ -30,7 +30,7 @@ s32 sub_80D8AE0(s32 x, s32 y) return result; } -s16 sub_80D8B1C(s16 x, s16 y) +s16 MathUtil_Div16(s16 x, s16 y) { if (y == 0) { @@ -39,7 +39,7 @@ s16 sub_80D8B1C(s16 x, s16 y) return (x << 8) / y; } -s16 sub_80D8B40(u8 s, s16 x, s16 y) +s16 MathUtil_Div16Shift(u8 s, s16 x, s16 y) { if (y == 0) { @@ -48,7 +48,7 @@ s16 sub_80D8B40(u8 s, s16 x, s16 y) return (x << s) / y; } -s32 sub_80D8B68(s32 x, s32 y) +s32 MathUtil_Div32(s32 x, s32 y) { s64 _x; @@ -61,7 +61,7 @@ s32 sub_80D8B68(s32 x, s32 y) return _x / y; } -s16 sub_80D8B90(s16 y) +s16 MathUtil_Inv16(s16 y) { s32 x; @@ -69,7 +69,7 @@ s16 sub_80D8B90(s16 y) return x / y; } -s16 sub_80D8BA8(u8 s, s16 y) +s16 MathUtil_Inv16Shift(u8 s, s16 y) { s32 x; @@ -77,7 +77,7 @@ s16 sub_80D8BA8(u8 s, s16 y) return x / y; } -s32 sub_80D8BC8(s32 y) +s32 MathUtil_Inv32(s32 y) { s64 x; diff --git a/src/menu.c b/src/menu.c index 03cdaed09..9b7abe642 100644 --- a/src/menu.c +++ b/src/menu.c @@ -44,7 +44,7 @@ void DrawDialogFrameWithCustomTileAndPalette(u8 windowId, bool8 copyToVram, u16 FillWindowPixelBuffer(windowId, PIXEL_FILL(1)); PutWindowTilemap(windowId); if (copyToVram == TRUE) - CopyWindowToVram(windowId, 3); + CopyWindowToVram(windowId, COPYWIN_BOTH); } // not used @@ -56,7 +56,7 @@ static void DrawDialogFrameWithCustomTile(u8 windowId, bool8 copyToVram, u16 til FillWindowPixelBuffer(windowId, PIXEL_FILL(1)); PutWindowTilemap(windowId); if (copyToVram == TRUE) - CopyWindowToVram(windowId, 3); + CopyWindowToVram(windowId, COPYWIN_BOTH); } static void WindowFunc_DrawDialogFrameWithCustomTileAndPalette(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum) @@ -96,7 +96,7 @@ void ClearDialogWindowAndFrameToTransparent(u8 windowId, bool8 copyToVram) FillWindowPixelBuffer(windowId, PIXEL_FILL(0)); ClearWindowTilemap(windowId); if (copyToVram == TRUE) - CopyWindowToVram(windowId, 3); + CopyWindowToVram(windowId, COPYWIN_BOTH); } static void WindowFunc_ClearDialogWindowAndFrameNullPalette(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum) @@ -112,7 +112,7 @@ void DrawStdFrameWithCustomTileAndPalette(u8 windowId, bool8 copyToVram, u16 bas FillWindowPixelBuffer(windowId, PIXEL_FILL(1)); PutWindowTilemap(windowId); if (copyToVram == TRUE) - CopyWindowToVram(windowId, 3); + CopyWindowToVram(windowId, COPYWIN_BOTH); } // not used @@ -124,7 +124,7 @@ static void DrawStdFrameWithCustomTile(u8 windowId, bool8 copyToVram, u16 baseTi FillWindowPixelBuffer(windowId, PIXEL_FILL(1)); PutWindowTilemap(windowId); if (copyToVram == TRUE) - CopyWindowToVram(windowId, 3); + CopyWindowToVram(windowId, COPYWIN_BOTH); } static void WindowFunc_DrawStdFrameWithCustomTileAndPalette(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum) @@ -145,7 +145,7 @@ void ClearStdWindowAndFrameToTransparent(u8 windowId, bool8 copyToVram) FillWindowPixelBuffer(windowId, PIXEL_FILL(0)); ClearWindowTilemap(windowId); if (copyToVram == TRUE) - CopyWindowToVram(windowId, 3); + CopyWindowToVram(windowId, COPYWIN_BOTH); } static void WindowFunc_ClearStdWindowAndFrameToTransparent(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum) @@ -195,7 +195,7 @@ void TopBarWindowPrintString(const u8 *string, u8 unused, bool8 copyToVram) width = GetStringWidth(0, string, 0); AddTextPrinterParameterized3(sTopBarWindowId, 0, -20 - width, 1, gUnknown_8456618, 0, string); if (copyToVram) - CopyWindowToVram(sTopBarWindowId, 3); + CopyWindowToVram(sTopBarWindowId, COPYWIN_BOTH); } } @@ -228,7 +228,7 @@ void TopBarWindowPrintTwoStrings(const u8 *string, const u8 *string2, bool8 fgCo } AddTextPrinterParameterized4(sTopBarWindowId, 1, 4, 1, 0, 0, color, 0, string); if (copyToVram) - CopyWindowToVram(sTopBarWindowId, 3); + CopyWindowToVram(sTopBarWindowId, COPYWIN_BOTH); } } @@ -236,7 +236,7 @@ void TopBarWindowPrintTwoStrings(const u8 *string, const u8 *string2, bool8 fgCo static void CopyTopBarWindowToVram(void) { if (sTopBarWindowId != 0xFF) - CopyWindowToVram(sTopBarWindowId, 3); + CopyWindowToVram(sTopBarWindowId, COPYWIN_BOTH); } void ClearTopBarWindow(void) @@ -244,7 +244,7 @@ void ClearTopBarWindow(void) if (sTopBarWindowId != 0xFF) { FillWindowPixelBuffer(sTopBarWindowId, PIXEL_FILL(15)); - CopyWindowToVram(sTopBarWindowId, 3); + CopyWindowToVram(sTopBarWindowId, COPYWIN_BOTH); } } @@ -254,7 +254,7 @@ void DestroyTopBarWindow(void) { FillWindowPixelBuffer(sTopBarWindowId, PIXEL_FILL(0)); ClearWindowTilemap(sTopBarWindowId); - CopyWindowToVram(sTopBarWindowId, 3); + CopyWindowToVram(sTopBarWindowId, COPYWIN_BOTH); RemoveWindow(sTopBarWindowId); sTopBarWindowId = 0xFF; } @@ -457,7 +457,7 @@ void PrintTextArray(u8 windowId, u8 fontId, u8 left, u8 top, u8 lineHeight, u8 i for (i = 0; i < itemCount; i++) AddTextPrinterParameterized(windowId, fontId, strs[i].text, left, (lineHeight * i) + top, 0xFF, NULL); - CopyWindowToVram(windowId, 2); + CopyWindowToVram(windowId, COPYWIN_GFX); } void MultichoiceList_PrintItems(u8 windowId, u8 fontId, u8 left, u8 top, u8 lineHeight, u8 itemCount, const struct MenuAction *strs, u8 letterSpacing, u8 lineSpacing) @@ -466,7 +466,7 @@ void MultichoiceList_PrintItems(u8 windowId, u8 fontId, u8 left, u8 top, u8 line for (i = 0; i < itemCount; i++) AddTextPrinterParameterized5(windowId, fontId, strs[i].text, left, (lineHeight * i) + top, 0xFF, NULL, letterSpacing, lineSpacing); - CopyWindowToVram(windowId, 2); + CopyWindowToVram(windowId, COPYWIN_GFX); } void UnionRoomAndTradeMenuPrintOptions(u8 windowId, u8 fontId, u8 lineHeight, u8 itemCount, const struct MenuAction *strs) @@ -498,7 +498,7 @@ void AddItemMenuActionTextPrinters(u8 windowId, u8 fontId, u8 left, u8 top, u8 l printer.currentY = printer.y; AddTextPrinter(&printer, 0xFF, NULL); } - CopyWindowToVram(windowId, 2); + CopyWindowToVram(windowId, COPYWIN_GFX); } // not used @@ -583,7 +583,7 @@ void MultichoiceGrid_PrintItems(u8 windowId, u8 fontId, u8 itemWidth, u8 itemHei for (i = 0; i < rows; ++i) for (j = 0; j < cols; ++j) AddTextPrinterParameterized(windowId, fontId, strs[i * cols + j].text, itemWidth * j + width, yOffset + itemHeight * i, 0xFF, 0); - CopyWindowToVram(windowId, 2); + CopyWindowToVram(windowId, COPYWIN_GFX); } //not used @@ -598,7 +598,7 @@ static void MultichoiceGrid_PrintItemsCustomOrder(u8 windowId, u8 fontId, u8 ite for (i = 0; i < rows; ++i) for (j = 0; j < cols; ++j) AddTextPrinterParameterized(windowId, fontId, strs[orderArray[i * cols + j]].text, itemWidth * j + width, itemHeight * i, 0xFF, 0); - CopyWindowToVram(windowId, 2); + CopyWindowToVram(windowId, COPYWIN_GFX); } static u8 MultichoiceGrid_InitCursorInternal(u8 windowId, u8 fontId, u8 left, u8 top, u8 optionWidth, u8 cursorHeight, u8 cols, u8 rows, u8 numChoices, u8 cursorPos) diff --git a/src/menu_helpers.c b/src/menu_helpers.c index a4794e1af..6649a543a 100644 --- a/src/menu_helpers.c +++ b/src/menu_helpers.c @@ -169,17 +169,17 @@ void ResetAllBgsCoordinatesAndBgCntRegs(void) ChangeBgY(3, 0, 0); } -bool8 AdjustQuantityAccordingToDPadInput(s16 *arg0, u16 arg1) +bool8 AdjustQuantityAccordingToDPadInput(s16 *quantity_p, u16 qmax) { - s16 valBefore = (*arg0); + s16 valBefore = (*quantity_p); if (JOY_REPT(DPAD_ANY) == DPAD_UP) { - (*arg0)++; - if ((*arg0) > arg1) - (*arg0) = 1; + (*quantity_p)++; + if ((*quantity_p) > qmax) + (*quantity_p) = 1; - if ((*arg0) == valBefore) + if ((*quantity_p) == valBefore) { return FALSE; } @@ -191,10 +191,10 @@ bool8 AdjustQuantityAccordingToDPadInput(s16 *arg0, u16 arg1) } else if (JOY_REPT(DPAD_ANY) == DPAD_DOWN) { - (*arg0)--; - if ((*arg0) <= 0) - (*arg0) = arg1; - if ((*arg0) == valBefore) + (*quantity_p)--; + if ((*quantity_p) <= 0) + (*quantity_p) = qmax; + if ((*quantity_p) == valBefore) { return FALSE; } @@ -206,10 +206,10 @@ bool8 AdjustQuantityAccordingToDPadInput(s16 *arg0, u16 arg1) } else if (JOY_REPT(DPAD_ANY) == DPAD_RIGHT) { - (*arg0) += 10; - if ((*arg0) > arg1) - (*arg0) = arg1; - if ((*arg0) == valBefore) + (*quantity_p) += 10; + if ((*quantity_p) > qmax) + (*quantity_p) = qmax; + if ((*quantity_p) == valBefore) { return FALSE; } @@ -221,10 +221,10 @@ bool8 AdjustQuantityAccordingToDPadInput(s16 *arg0, u16 arg1) } else if (JOY_REPT(DPAD_ANY) == DPAD_LEFT) { - (*arg0) -= 10; - if ((*arg0) <= 0) - (*arg0) = 1; - if ((*arg0) == valBefore) + (*quantity_p) -= 10; + if ((*quantity_p) <= 0) + (*quantity_p) = 1; + if ((*quantity_p) == valBefore) { return FALSE; } diff --git a/src/mevent_show_card.c b/src/mevent_show_card.c index 0452c60b9..a23f26f42 100644 --- a/src/mevent_show_card.c +++ b/src/mevent_show_card.c @@ -397,7 +397,7 @@ static void sub_8145D18(u8 whichWindow) } break; } - CopyWindowToVram(windowId, 3); + CopyWindowToVram(windowId, COPYWIN_BOTH); } static void sub_8146060(void) diff --git a/src/mevent_show_news.c b/src/mevent_show_news.c index 029a6ca99..df03e8aa2 100644 --- a/src/mevent_show_news.c +++ b/src/mevent_show_news.c @@ -326,8 +326,8 @@ static void sub_8146A30(void) { AddTextPrinterParameterized3(sWork->windowIds[1], 3, 0, 16 * i + 2, sTextPals[sWork->bgSpec->textPal2], 0, sWork->messages[i]); } - CopyWindowToVram(sWork->windowIds[0], 3); - CopyWindowToVram(sWork->windowIds[1], 3); + CopyWindowToVram(sWork->windowIds[0], COPYWIN_BOTH); + CopyWindowToVram(sWork->windowIds[1], COPYWIN_BOTH); } static void sub_8146B58(void) diff --git a/src/mon_markings.c b/src/mon_markings.c index feb8a255a..7e44a77b0 100644 --- a/src/mon_markings.c +++ b/src/mon_markings.c @@ -507,8 +507,8 @@ static struct Sprite * CreateMonMarkingSprite(u16 tileTag, u16 paletteTag, const return NULL; } -void sub_80BEBD0(u8 markings, void * dest) +void RequestDma3LoadMonMarking(u8 markings, void * dest) { - RequestDma3Copy(&sMonMarkingsTiles[64 * markings], dest, 0x80, 1); + RequestDma3Copy(&sMonMarkingsTiles[64 * markings], dest, 0x80, DMA3_32BIT); } diff --git a/src/money.c b/src/money.c index 3fa52bb8c..4fdb1311d 100644 --- a/src/money.c +++ b/src/money.c @@ -131,6 +131,6 @@ void DrawMoneyBox(int amount, u8 x, u8 y) void HideMoneyBox(void) { ClearStdWindowAndFrameToTransparent(sMoneyBoxWindowId, FALSE); - CopyWindowToVram(sMoneyBoxWindowId, 2); + CopyWindowToVram(sMoneyBoxWindowId, COPYWIN_GFX); RemoveWindow(sMoneyBoxWindowId); } diff --git a/src/multiboot.c b/src/multiboot.c index cfc9821d2..b44c421dc 100644 --- a/src/multiboot.c +++ b/src/multiboot.c @@ -1,7 +1,7 @@ #include "global.h" #include "multiboot.h" -static IWRAM_DATA u16 MultiBoot_required_data[MULTIBOOT_NCHILD]; +static u16 MultiBoot_required_data[MULTIBOOT_NCHILD]; static int MultiBootSend(struct MultiBootParam *mp, u16 data); static int MultiBootHandShake(struct MultiBootParam *mp); @@ -390,7 +390,7 @@ static int MultiBootHandShake(struct MultiBootParam *mp) #undef must_data } -static void MultiBootWaitCycles(u32 cycles) +static NOINLINE void MultiBootWaitCycles(u32 cycles) { asm("mov r2, pc"); asm("lsr r2, #24"); diff --git a/src/mystery_gift_menu.c b/src/mystery_gift_menu.c index a207cee96..3c4766dcd 100644 --- a/src/mystery_gift_menu.c +++ b/src/mystery_gift_menu.c @@ -478,7 +478,7 @@ void PrintMysteryGiftOrEReaderTopMenu(bool8 mg_or_ereader, bool32 usePickOkCance AddTextPrinterParameterized4(0, 2, 2, 2, 0, 0, sMG_Ereader_TextColor_1, 0, gJPText_MysteryGift); AddTextPrinterParameterized4(0, 0, 0x78, 2, 0, 0, sMG_Ereader_TextColor_1, 0, gJPText_DecideStop); } - CopyWindowToVram(0, 2); + CopyWindowToVram(0, COPYWIN_GFX); PutWindowTilemap(0); } @@ -530,14 +530,14 @@ void AddTextPrinterToWindow1(const u8 *str) AddTextPrinterParameterized4(1, 2, 0, 2, 0, 2, sMG_Ereader_TextColor_2, 0, gStringVar4); DrawTextBorderOuter(1, 0x001, 0xF); PutWindowTilemap(1); - CopyWindowToVram(1, 3); + CopyWindowToVram(1, COPYWIN_BOTH); } void ClearTextWindow(void) { rbox_fill_rectangle(1); ClearWindowTilemap(1); - CopyWindowToVram(1, 1); + CopyWindowToVram(1, COPYWIN_MAP); } bool32 MG_PrintTextOnWindow1AndWaitButton(u8 *textState, const u8 *str) @@ -645,7 +645,7 @@ u32 MysteryGift_HandleThreeOptionMenu(u8 * unused0, u16 * unused1, u8 whichMenu) if (response != -1) { ClearWindowTilemap(2); - CopyWindowToVram(2, 1); + CopyWindowToVram(2, COPYWIN_MAP); } return response; } @@ -670,7 +670,7 @@ s8 mevent_message_print_and_prompt_yes_no(u8 * textState, u16 * windowId, bool8 FillWindowPixelBuffer(*windowId, 0x11); AddTextPrinterParameterized4(*windowId, 2, 0, 2, 0, 2, sMG_Ereader_TextColor_2, 0, gStringVar4); DrawTextBorderOuter(*windowId, 0x001, 0x0F); - CopyWindowToVram(*windowId, 2); + CopyWindowToVram(*windowId, COPYWIN_GFX); PutWindowTilemap(*windowId); (*textState)++; break; @@ -694,7 +694,7 @@ s8 mevent_message_print_and_prompt_yes_no(u8 * textState, u16 * windowId, bool8 *textState = 0; rbox_fill_rectangle(*windowId); ClearWindowTilemap(*windowId); - CopyWindowToVram(*windowId, 1); + CopyWindowToVram(*windowId, COPYWIN_MAP); RemoveWindow(*windowId); return input; } @@ -703,7 +703,7 @@ s8 mevent_message_print_and_prompt_yes_no(u8 * textState, u16 * windowId, bool8 *textState = 0; rbox_fill_rectangle(*windowId); ClearWindowTilemap(*windowId); - CopyWindowToVram(*windowId, 1); + CopyWindowToVram(*windowId, COPYWIN_MAP); RemoveWindow(*windowId); return -1; } @@ -731,7 +731,7 @@ s32 HandleMysteryGiftListMenu(u8 * textState, u16 * windowId, bool32 cannotToss, FillWindowPixelBuffer(*windowId, 0x11); AddTextPrinterParameterized4(*windowId, 2, 0, 2, 0, 2, sMG_Ereader_TextColor_2, 0, gStringVar4); DrawTextBorderOuter(*windowId, 0x001, 0x0F); - CopyWindowToVram(*windowId, 2); + CopyWindowToVram(*windowId, COPYWIN_GFX); PutWindowTilemap(*windowId); (*textState)++; break; @@ -764,7 +764,7 @@ s32 HandleMysteryGiftListMenu(u8 * textState, u16 * windowId, bool32 cannotToss, *textState = 0; rbox_fill_rectangle(*windowId); ClearWindowTilemap(*windowId); - CopyWindowToVram(*windowId, 1); + CopyWindowToVram(*windowId, COPYWIN_MAP); RemoveWindow(*windowId); return input; } @@ -773,7 +773,7 @@ s32 HandleMysteryGiftListMenu(u8 * textState, u16 * windowId, bool32 cannotToss, *textState = 0; rbox_fill_rectangle(*windowId); ClearWindowTilemap(*windowId); - CopyWindowToVram(*windowId, 1); + CopyWindowToVram(*windowId, COPYWIN_MAP); RemoveWindow(*windowId); return -2; } @@ -1252,7 +1252,7 @@ void task00_mystery_gift(u8 taskId) data->state = 6; break; case 6: - if (gReceivedRemoteLinkPlayers != 0) + if (gReceivedRemoteLinkPlayers) { ClearScreenInBg0(TRUE); data->state = 7; @@ -1600,7 +1600,7 @@ void task00_mystery_gift(u8 taskId) } break; case 30: - if (gReceivedRemoteLinkPlayers != 0) + if (gReceivedRemoteLinkPlayers) { ClearScreenInBg0(1); data->state = 31; diff --git a/src/naming_screen.c b/src/naming_screen.c index 1a41c8c0b..5d00cefbc 100644 --- a/src/naming_screen.c +++ b/src/naming_screen.c @@ -708,7 +708,7 @@ static void pokemon_transfer_to_pc_with_message(void) DrawDialogueFrame(0, FALSE); gTextFlags.canABSpeedUpPrint = TRUE; AddTextPrinterParameterized2(0, 2, gStringVar4, GetTextSpeedSetting(), NULL, TEXT_COLOR_DARK_GREY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GREY); - CopyWindowToVram(0, 3); + CopyWindowToVram(0, COPYWIN_BOTH); } static bool8 sub_809E1D4(void) @@ -1804,7 +1804,7 @@ static void PrintBufferCharactersOnScreen(void) } CallAddGenderIconFunc(); - CopyWindowToVram(sNamingScreenData->windows[2], 2); + CopyWindowToVram(sNamingScreenData->windows[2], COPYWIN_GFX); PutWindowTilemap(sNamingScreenData->windows[2]); } @@ -1887,7 +1887,7 @@ static void sub_809FAE4(void) FillWindowPixelBuffer(sNamingScreenData->windows[4], PIXEL_FILL(15)); AddTextPrinterParameterized3(sNamingScreenData->windows[4], 0, 236 - strwidth, 0, color, 0, gText_MoveOkBack); PutWindowTilemap(sNamingScreenData->windows[4]); - CopyWindowToVram(sNamingScreenData->windows[4], 3); + CopyWindowToVram(sNamingScreenData->windows[4], COPYWIN_BOTH); } static void sub_809FB70(void) diff --git a/src/new_menu_helpers.c b/src/new_menu_helpers.c index 9da0dea80..556d83a69 100644 --- a/src/new_menu_helpers.c +++ b/src/new_menu_helpers.c @@ -299,7 +299,7 @@ void DecompressAndLoadBgGfxUsingHeap2(u8 bgId, const void *src, u32 size, u16 of static void TaskFreeBufAfterCopyingTileDataToVram(u8 taskId) { - if (!CheckForSpaceForDma3Request(gTasks[taskId].data[0])) + if (!WaitDma3Request(gTasks[taskId].data[0])) { Free((void *)GetWordTaskArg(taskId, 1)); DestroyTask(taskId); @@ -471,7 +471,7 @@ void DrawDialogueFrame(u8 windowId, bool8 copyToVram) FillWindowPixelBuffer(windowId, PIXEL_FILL(1)); PutWindowTilemap(windowId); if (copyToVram == TRUE) - CopyWindowToVram(windowId, 3); + CopyWindowToVram(windowId, COPYWIN_BOTH); } void DrawStdWindowFrame(u8 windowId, bool8 copyToVram) @@ -480,7 +480,7 @@ void DrawStdWindowFrame(u8 windowId, bool8 copyToVram) FillWindowPixelBuffer(windowId, PIXEL_FILL(1)); PutWindowTilemap(windowId); if (copyToVram == TRUE) - CopyWindowToVram(windowId, 3); + CopyWindowToVram(windowId, COPYWIN_BOTH); } void ClearDialogWindowAndFrame(u8 windowId, bool8 copyToVram) @@ -489,7 +489,7 @@ void ClearDialogWindowAndFrame(u8 windowId, bool8 copyToVram) FillWindowPixelBuffer(windowId, PIXEL_FILL(1)); ClearWindowTilemap(windowId); if (copyToVram == TRUE) - CopyWindowToVram(windowId, 3); + CopyWindowToVram(windowId, COPYWIN_BOTH); if (gQuestLogState == QL_STATE_PLAYBACK) CommitQuestLogWindow1(); } @@ -500,7 +500,7 @@ void ClearStdWindowAndFrame(u8 windowId, bool8 copyToVram) FillWindowPixelBuffer(windowId, PIXEL_FILL(1)); ClearWindowTilemap(windowId); if (copyToVram == TRUE) - CopyWindowToVram(windowId, 3); + CopyWindowToVram(windowId, COPYWIN_BOTH); } static void WindowFunc_DrawStandardFrame(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum) @@ -644,7 +644,7 @@ void DisplayItemMessageOnField(u8 taskId, u8 textSpeed, const u8 *string, TaskFu { LoadStdWindowFrameGfx(); DisplayMessageAndContinueTask(taskId, 0, DLG_WINDOW_BASE_TILE_NUM, DLG_WINDOW_PALETTE_NUM, textSpeed, GetTextSpeedSetting(), string, callback); - CopyWindowToVram(0, 3); + CopyWindowToVram(0, COPYWIN_BOTH); } void DisplayYesNoMenuDefaultYes(void) diff --git a/src/oak_speech.c b/src/oak_speech.c index 3d0c656d7..e279091c2 100644 --- a/src/oak_speech.c +++ b/src/oak_speech.c @@ -584,7 +584,7 @@ static void CreateHelpDocsPage1(void) PutWindowTilemap(sOakSpeechResources->unk_0014[0]); FillWindowPixelBuffer(sOakSpeechResources->unk_0014[0], 0x00); AddTextPrinterParameterized4(sOakSpeechResources->unk_0014[0], 2, 2, 0, 1, 1, sTextColor_HelpSystem, 0, gNewGame_HelpDocs1); - CopyWindowToVram(sOakSpeechResources->unk_0014[0], 3); + CopyWindowToVram(sOakSpeechResources->unk_0014[0], COPYWIN_BOTH); FillBgTilemapBufferRect_Palette0(1, 0x3000, 1, 3, 5, 16); CopyBgTilemapBufferToVram(1); } @@ -606,7 +606,7 @@ static void Task_OakSpeech4(u8 taskId) PutWindowTilemap(sOakSpeechResources->unk_0014[i]); FillWindowPixelBuffer(sOakSpeechResources->unk_0014[i], 0x00); AddTextPrinterParameterized4(sOakSpeechResources->unk_0014[i], 2, 6, 0, 1, 1, sTextColor_HelpSystem, 0, sHelpDocsPtrs[i + r7 * 3]); - CopyWindowToVram(sOakSpeechResources->unk_0014[i], 3); + CopyWindowToVram(sOakSpeechResources->unk_0014[i], COPYWIN_BOTH); } if (sOakSpeechResources->unk_0012 == 1) @@ -675,7 +675,7 @@ static void Task_OakSpeech3(u8 taskId) { FillWindowPixelBuffer(sOakSpeechResources->unk_0014[i], 0x00); ClearWindowTilemap(sOakSpeechResources->unk_0014[i]); - CopyWindowToVram(sOakSpeechResources->unk_0014[i], 3); + CopyWindowToVram(sOakSpeechResources->unk_0014[i], COPYWIN_BOTH); RemoveWindow(sOakSpeechResources->unk_0014[i]); sOakSpeechResources->unk_0014[i] = 0; } @@ -699,7 +699,7 @@ static void Task_OakSpeech5(u8 taskId) { FillWindowPixelBuffer(sOakSpeechResources->unk_0014[i], 0x00); ClearWindowTilemap(sOakSpeechResources->unk_0014[i]); - CopyWindowToVram(sOakSpeechResources->unk_0014[i], 3); + CopyWindowToVram(sOakSpeechResources->unk_0014[i], COPYWIN_BOTH); RemoveWindow(sOakSpeechResources->unk_0014[i]); sOakSpeechResources->unk_0014[i] = 0; } @@ -733,7 +733,7 @@ static void Task_OakSpeech6(u8 taskId) data[14] = AddWindow(&sNewGameAdventureIntroWindowTemplates[0]); PutWindowTilemap(data[14]); FillWindowPixelBuffer(data[14], 0x00); - CopyWindowToVram(data[14], 3); + CopyWindowToVram(data[14], COPYWIN_BOTH); sOakSpeechResources->unk_0012 = 0; gMain.state = 0; data[15] = 16; @@ -856,7 +856,7 @@ static void Task_OakSpeech8(u8 taskId) DestroyTopBarWindow(); FillWindowPixelBuffer(data[14], 0x00); ClearWindowTilemap(data[14]); - CopyWindowToVram(data[14], 3); + CopyWindowToVram(data[14], COPYWIN_BOTH); RemoveWindow(data[14]); data[14] = 0; FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 30, 20); @@ -902,7 +902,7 @@ static void Task_OakSpeech9(u8 taskId) { \ AddTextPrinterParameterized2(0, 4, str, speed, NULL, 2, 1, 3); \ } \ - CopyWindowToVram(0, 3); \ + CopyWindowToVram(0, COPYWIN_BOTH); \ }) static void Task_OakSpeech10(u8 taskId) @@ -1072,7 +1072,7 @@ static void Task_OakSpeech19(u8 taskId) sOakSpeechResources->textColor[2] = 3; AddTextPrinterParameterized3(gTasks[taskId].data[13], 2, 8, 17, sOakSpeechResources->textColor, 0, gText_Girl); Menu_InitCursor(gTasks[taskId].data[13], 2, 0, 1, GetFontAttribute(2, 1) + 2, 2, 0); - CopyWindowToVram(gTasks[taskId].data[13], 3); + CopyWindowToVram(gTasks[taskId].data[13], COPYWIN_BOTH); gTasks[taskId].func = Task_OakSpeech20; } } @@ -1419,8 +1419,8 @@ static void Task_OakSpeech39(u8 taskId) PlaySE(SE_TK_WARPIN); r0 = data[2]; data[2] -= 32; - x = sub_80D8B90(r0 - 8); - y = sub_80D8B90(data[2] - 16); + x = MathUtil_Inv16(r0 - 8); + y = MathUtil_Inv16(data[2] - 16); SetBgAffine(2, 0x7800, 0x5400, 0x78, 0x54, x, y, 0); if (data[2] <= 96) { @@ -1869,7 +1869,7 @@ static void PrintNameChoiceOptions(u8 taskId, u8 state) AddTextPrinterParameterized(data[13], 2, textPtrs[i], 8, 16 * (i + 1) + 1, 0, NULL); } Menu_InitCursor(data[13], 2, 0, 1, 16, 5, 0); - CopyWindowToVram(data[13], 3); + CopyWindowToVram(data[13], COPYWIN_BOTH); } static void GetDefaultName(u8 arg0, u8 namePick) diff --git a/src/option_menu.c b/src/option_menu.c index 5a7bc42e4..383f21ae1 100644 --- a/src/option_menu.c +++ b/src/option_menu.c @@ -318,7 +318,7 @@ static void OptionMenu_PickSwitchCancel(void) FillWindowPixelBuffer(2, PIXEL_FILL(15)); AddTextPrinterParameterized3(2, 0, x, 0, sOptionMenuPickSwitchCancelTextColor, 0, gText_PickSwitchCancel); PutWindowTilemap(2); - CopyWindowToVram(2, 3); + CopyWindowToVram(2, COPYWIN_BOTH); } static void OptionMenu_ResetSpriteData(void) @@ -500,7 +500,7 @@ static void BufferOptionMenuString(u8 selection) break; } PutWindowTilemap(1); - CopyWindowToVram(1, 3); + CopyWindowToVram(1, COPYWIN_BOTH); } static void CloseAndSaveOptionMenu(u8 taskId) @@ -524,7 +524,7 @@ static void PrintOptionMenuHeader(void) FillWindowPixelBuffer(0, PIXEL_FILL(1)); AddTextPrinterParameterized(WIN_TEXT_OPTION, 2, gText_MenuOption, 8, 1, TEXT_SPEED_FF, NULL); PutWindowTilemap(0); - CopyWindowToVram(0, 3); + CopyWindowToVram(0, COPYWIN_BOTH); } static void DrawOptionMenuBg(void) diff --git a/src/overworld.c b/src/overworld.c index f36429dde..505541e51 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -3192,7 +3192,7 @@ bool32 Overworld_LinkRecvQueueLengthMoreThan2(void) return sReceivingFromLink; } -bool32 sub_8058274(void) +bool32 Overworld_RecvKeysFromLinkIsRunning(void) { u8 temp; @@ -3218,7 +3218,7 @@ bool32 sub_8058274(void) return FALSE; } -bool32 sub_80582E0(void) +bool32 Overworld_SendKeysToLinkIsRunning(void) { if (GetLinkSendQueueLength() < 2) return FALSE; @@ -3232,7 +3232,7 @@ bool32 sub_80582E0(void) return FALSE; } -bool32 sub_8058318(void) +bool32 IsSendingKeysOverCable(void) { if (gWirelessCommType != 0) return FALSE; @@ -3298,17 +3298,17 @@ static void InitLinkPlayerObjectEventPos(struct ObjectEvent *objEvent, s16 x, s1 ObjectEventUpdateZCoord(objEvent); } -static void sub_8058488(u8 linkPlayerId, u8 a2) +static void SetLinkPlayerObjectRange(u8 linkPlayerId, u8 range) { if (gLinkPlayerObjectEvents[linkPlayerId].active) { u8 objEventId = gLinkPlayerObjectEvents[linkPlayerId].objEventId; struct ObjectEvent *objEvent = &gObjectEvents[objEventId]; - objEvent->range.as_byte = a2; + objEvent->range.as_byte = range; } } -static void sub_80584B8(u8 linkPlayerId) +static void DestroyLinkPlayerOBject(u8 linkPlayerId) { struct LinkPlayerObjectEvent *linkPlayerObjEvent = &gLinkPlayerObjectEvents[linkPlayerId]; u8 objEventId = linkPlayerObjEvent->objEventId; @@ -3349,7 +3349,7 @@ static u8 GetLinkPlayerElevation(u8 linkPlayerId) return objEvent->currentElevation; } -static s32 sub_8058590(u8 linkPlayerId) +static s32 GetLinkPlayerObjectStepTimer(u8 linkPlayerId) { u8 objEventId = gLinkPlayerObjectEvents[linkPlayerId].objEventId; struct ObjectEvent *objEvent = &gObjectEvents[objEventId]; diff --git a/src/party_menu.c b/src/party_menu.c index 93c6c6398..b8ad7d830 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -731,7 +731,7 @@ static void RenderPartyMenuBox(u8 slot) { DisplayPartyPokemonDataForMultiBattle(slot); LoadPartyBoxPalette(&sPartyMenuBoxes[slot], PARTY_PAL_MULTI_ALT); - CopyWindowToVram(sPartyMenuBoxes[slot].windowId, 2); + CopyWindowToVram(sPartyMenuBoxes[slot].windowId, COPYWIN_GFX); PutWindowTilemap(sPartyMenuBoxes[slot].windowId); ScheduleBgCopyTilemapToVram(2); } @@ -740,7 +740,7 @@ static void RenderPartyMenuBox(u8 slot) if (GetMonData(&gPlayerParty[slot], MON_DATA_SPECIES) == SPECIES_NONE) { DrawEmptySlot(sPartyMenuBoxes[slot].windowId); - CopyWindowToVram(sPartyMenuBoxes[slot].windowId, 2); + CopyWindowToVram(sPartyMenuBoxes[slot].windowId, COPYWIN_GFX); } else { @@ -2159,7 +2159,7 @@ static void CreateCancelConfirmWindows(bool8 chooseHalf) FillWindowPixelBuffer(confirmWindowId, PIXEL_FILL(0)); AddTextPrinterParameterized4(confirmWindowId, 0, (48 - GetStringWidth(0, gMenuText_Confirm, 0)) / 2u, 1, 0, 0, sFontColorTable[0], -1, gMenuText_Confirm); PutWindowTilemap(confirmWindowId); - CopyWindowToVram(confirmWindowId, 2); + CopyWindowToVram(confirmWindowId, COPYWIN_GFX); cancelWindowId = AddWindow(&sMultiCancelButtonWindowTemplate); offset = 0; } @@ -2181,7 +2181,7 @@ static void CreateCancelConfirmWindows(bool8 chooseHalf) AddTextPrinterParameterized3(cancelWindowId, 0, offset, 1, sFontColorTable[0], -1, gOtherText_Exit); } PutWindowTilemap(cancelWindowId); - CopyWindowToVram(cancelWindowId, 2); + CopyWindowToVram(cancelWindowId, COPYWIN_GFX); ScheduleBgCopyTilemapToVram(0); } } @@ -2467,7 +2467,7 @@ static void DisplayPartyPokemonHPBar(u16 hp, u16 maxhp, struct PartyMenuBox *men FillWindowPixelRect(menuBox->windowId, 0x0D, menuBox->infoRects->dimensions[20] + hpFraction, menuBox->infoRects->dimensions[21], menuBox->infoRects->dimensions[22] - hpFraction, 1); FillWindowPixelRect(menuBox->windowId, 0x02, menuBox->infoRects->dimensions[20] + hpFraction, menuBox->infoRects->dimensions[21] + 1, menuBox->infoRects->dimensions[22] - hpFraction, 2); } - CopyWindowToVram(menuBox->windowId, 2); + CopyWindowToVram(menuBox->windowId, COPYWIN_GFX); } static void DisplayPartyPokemonDescriptionText(u8 stringId, struct PartyMenuBox *menuBox, u8 c) @@ -5132,7 +5132,7 @@ static void DisplayLevelUpStatsPg1(u8 taskId) arrayPtr[12] = CreateLevelUpStatsWindow(); DrawLevelUpWindowPg1(arrayPtr[12], arrayPtr, &arrayPtr[6], 1, 2, 3); - CopyWindowToVram(arrayPtr[12], 2); + CopyWindowToVram(arrayPtr[12], COPYWIN_GFX); ScheduleBgCopyTilemapToVram(2); } @@ -5141,7 +5141,7 @@ static void DisplayLevelUpStatsPg2(u8 taskId) s16 *arrayPtr = sPartyMenuInternal->data; DrawLevelUpWindowPg2(arrayPtr[12], &arrayPtr[6], 1, 2, 3); - CopyWindowToVram(arrayPtr[12], 2); + CopyWindowToVram(arrayPtr[12], COPYWIN_GFX); ScheduleBgCopyTilemapToVram(2); } diff --git a/src/play_time.c b/src/play_time.c index 04f4b2040..966840505 100644 --- a/src/play_time.c +++ b/src/play_time.c @@ -1,6 +1,6 @@ #include "play_time.h" -static IWRAM_DATA u8 sPlayTimeCounterState; +static u8 sPlayTimeCounterState; enum { diff --git a/src/player_pc.c b/src/player_pc.c index 1c6c9c3d4..63131f83e 100644 --- a/src/player_pc.c +++ b/src/player_pc.c @@ -392,7 +392,7 @@ static void Task_WithdrawItem_WaitFadeAndGoToItemStorage(u8 taskId) static void Task_WithdrawItemBeginFade(u8 taskId) { gTasks[taskId].func = Task_WithdrawItem_WaitFadeAndGoToItemStorage; - ItemPc_SetInitializedFlag(0); + ItemPc_SetInitializedFlag(FALSE); FadeScreen(FADE_TO_BLACK, 0); } @@ -401,7 +401,7 @@ static void Task_PlayerPcCancel(u8 taskId) s16 *data = gTasks[taskId].data; ClearStdWindowAndFrameToTransparent(tWindowId, FALSE); ClearWindowTilemap(tWindowId); - CopyWindowToVram(tWindowId, 1); + CopyWindowToVram(tWindowId, COPYWIN_MAP); RemoveWindow(tWindowId); Task_ReturnToTopMenu(taskId); } diff --git a/src/pokedex_screen.c b/src/pokedex_screen.c index d80a2eefa..2216a94df 100644 --- a/src/pokedex_screen.c +++ b/src/pokedex_screen.c @@ -516,11 +516,11 @@ void sub_8102C28(void) FillWindowPixelBuffer(1, PIXEL_FILL(15)); sub_8104C2C(gUnknown_8415DB8); PutWindowTilemap(0); - CopyWindowToVram(0, 2); + CopyWindowToVram(0, COPYWIN_GFX); PutWindowTilemap(1); - CopyWindowToVram(1, 2); + CopyWindowToVram(1, COPYWIN_GFX); PutWindowTilemap(gUnknown_203ACF0->field_16); - CopyWindowToVram(gUnknown_203ACF0->field_16, 2); + CopyWindowToVram(gUnknown_203ACF0->field_16, COPYWIN_GFX); } void sub_8102EC0(s32 itemIndex, bool8 onInit, struct ListMenu *list) @@ -538,7 +538,7 @@ void sub_8102EC0(s32 itemIndex, bool8 onInit, struct ListMenu *list) LoadPalette(gUnknown_84520F4[itemIndex].pal, 0x10, 0x20); } PutWindowTilemap(gUnknown_203ACF0->field_15); - CopyWindowToVram(gUnknown_203ACF0->field_15, 2); + CopyWindowToVram(gUnknown_203ACF0->field_15, COPYWIN_GFX); } void sub_8102F48(u8 windowId, s32 itemId, u8 y) @@ -631,8 +631,8 @@ void sub_810317C(void) sub_8106E78(gUnknown_8415F3D, 1); FillWindowPixelBuffer(1, PIXEL_FILL(15)); sub_8104C2C(gText_PickOKExit); - CopyWindowToVram(0, 2); - CopyWindowToVram(1, 2); + CopyWindowToVram(0, COPYWIN_GFX); + CopyWindowToVram(1, COPYWIN_GFX); } void sub_8103238(u8 taskId) @@ -717,8 +717,8 @@ void sub_810345C(void) sub_8106E78(gUnknown_8415F4A, 1); FillWindowPixelBuffer(1, PIXEL_FILL(15)); sub_8104C2C(gText_PickOKExit); - CopyWindowToVram(0, 2); - CopyWindowToVram(1, 2); + CopyWindowToVram(0, COPYWIN_GFX); + CopyWindowToVram(1, COPYWIN_GFX); } u16 sub_8103518(u8 a0) @@ -1841,7 +1841,7 @@ bool8 sub_8104C64(u16 a0, u8 a1, u8 a2) FillWindowPixelBuffer(gUnknown_203ACF0->field_20[a1], PIXEL_FILL(0)); sub_81049FC(gUnknown_203ACF0->field_20[a1], a0, a1 * 16 + 16); PutWindowTilemap(gUnknown_203ACF0->field_20[a1]); - CopyWindowToVram(gUnknown_203ACF0->field_20[a1], 2); + CopyWindowToVram(gUnknown_203ACF0->field_20[a1], COPYWIN_GFX); } else PutWindowTilemap(gUnknown_203ACF0->field_20[a1]); @@ -1861,7 +1861,7 @@ bool8 sub_8104C64(u16 a0, u8 a1, u8 a2) if (sub_8104AB0(a0, FLAG_GET_CAUGHT, TRUE)) BlitBitmapRectToWindow(gUnknown_203ACF0->field_24[a1], gUnknown_8443600, 0, 0, 8, 8, 2, 3, 8, 8); PutWindowTilemap(gUnknown_203ACF0->field_24[a1]); - CopyWindowToVram(gUnknown_203ACF0->field_24[a1], 2); + CopyWindowToVram(gUnknown_203ACF0->field_24[a1], COPYWIN_GFX); } } else @@ -1906,11 +1906,11 @@ bool8 sub_8104F0C(bool8 a0) sub_8106E78(gDexCategoryNamePtrs[gUnknown_203ACF0->field_28], 0); sub_8104EC0(0, sub_8106AF8(gUnknown_203ACF0->field_2B), sub_8106AF8(gUnknown_203ACF0->field_2A - 1), 160, 2); } - CopyWindowToVram(0, 2); + CopyWindowToVram(0, COPYWIN_GFX); FillWindowPixelBuffer(1, PIXEL_FILL(15)); if (!a0) sub_8104C2C(gUnknown_8415F6C); - CopyWindowToVram(1, 2); + CopyWindowToVram(1, COPYWIN_GFX); if (gUnknown_203ACF0->field_18[0] != 0xFFFF) sub_8104C64(gUnknown_203ACF0->field_18[0], 0, gUnknown_203ACF0->field_2C); if (gUnknown_203ACF0->field_18[1] != 0xFFFF) diff --git a/src/pokemon_jump.c b/src/pokemon_jump.c index 063176151..2b2d77d91 100644 --- a/src/pokemon_jump.c +++ b/src/pokemon_jump.c @@ -234,7 +234,7 @@ static void sub_8147A34(u8 taskId) u16 packet[6]; s16 *data = gTasks[taskId].data; - if (gReceivedRemoteLinkPlayers != 0) + if (gReceivedRemoteLinkPlayers) { if (gRecvCmds[0][1] == 0x7FFF) data[11] = gRecvCmds[0][2]; diff --git a/src/pokemon_jump_2.c b/src/pokemon_jump_2.c index 9f2f9e404..f1f6e2906 100644 --- a/src/pokemon_jump_2.c +++ b/src/pokemon_jump_2.c @@ -1003,12 +1003,12 @@ static bool32 sub_814881C(void) case 2: if (sub_8149804()) { - CreateTask(sub_80DA634, 6); + CreateTask(Task_SaveGame_UpdatedLinkRecords, 6); gUnknown_203F3D4->unk8++; } break; case 3: - if (!FuncIsActiveTask(sub_80DA634)) + if (!FuncIsActiveTask(Task_SaveGame_UpdatedLinkRecords)) { sub_814A6CC(); gUnknown_203F3D4->unk8++; diff --git a/src/pokemon_jump_4.c b/src/pokemon_jump_4.c index 123aafdc1..f72710c42 100644 --- a/src/pokemon_jump_4.c +++ b/src/pokemon_jump_4.c @@ -337,7 +337,7 @@ static void sub_814A0C8(void) case 0: gUnknown_203F3D8->unk12 = sub_814A754(1, 8, 20, 2); AddTextPrinterParameterized(gUnknown_203F3D8->unk12, 2, gText_WantToPlayAgain2, 0, 2, TEXT_SPEED_FF, NULL); - CopyWindowToVram(gUnknown_203F3D8->unk12, 2); + CopyWindowToVram(gUnknown_203F3D8->unk12, COPYWIN_GFX); gUnknown_203F3D8->unk4++; break; case 1: @@ -364,7 +364,7 @@ static void sub_814A174(void) case 0: gUnknown_203F3D8->unk12 = sub_814A754(2, 7, 26, 4); AddTextPrinterParameterized(gUnknown_203F3D8->unk12, 2, gText_SavingDontTurnOffPower, 0, 2, TEXT_SPEED_FF, NULL); - CopyWindowToVram(gUnknown_203F3D8->unk12, 2); + CopyWindowToVram(gUnknown_203F3D8->unk12, COPYWIN_GFX); gUnknown_203F3D8->unk4++; break; case 1: @@ -407,7 +407,7 @@ static void sub_814A264(void) case 0: gUnknown_203F3D8->unk12 = sub_814A754(2, 8, 22, 4); AddTextPrinterParameterized(gUnknown_203F3D8->unk12, 2, gText_SomeoneDroppedOut2, 0, 2, TEXT_SPEED_FF, NULL); - CopyWindowToVram(gUnknown_203F3D8->unk12, 2); + CopyWindowToVram(gUnknown_203F3D8->unk12, COPYWIN_GFX); gUnknown_203F3D8->unk4++; break; case 1: @@ -433,7 +433,7 @@ static void sub_814A308(void) case 0: gUnknown_203F3D8->unk12 = sub_814A754(7, 10, 16, 2); AddTextPrinterParameterized(gUnknown_203F3D8->unk12, 2, gText_CommunicationStandby4, 0, 2, TEXT_SPEED_FF, NULL); - CopyWindowToVram(gUnknown_203F3D8->unk12, 2); + CopyWindowToVram(gUnknown_203F3D8->unk12, COPYWIN_GFX); gUnknown_203F3D8->unk4++; break; case 1: @@ -526,7 +526,7 @@ void sub_814A468(u16 itemId, u16 quantity) DynamicPlaceholderTextUtil_ExpandPlaceholders(gUnknown_203F3D8->strBuff, gText_AwesomeWonF701F700); gUnknown_203F3D8->unk12 = sub_814A754(4, 8, 22, 4); AddTextPrinterParameterized(gUnknown_203F3D8->unk12, 2, gUnknown_203F3D8->strBuff, 0, 2, TEXT_SPEED_FF, NULL); - CopyWindowToVram(gUnknown_203F3D8->unk12, 2); + CopyWindowToVram(gUnknown_203F3D8->unk12, COPYWIN_GFX); gUnknown_203F3D8->unk14 = MUS_FANFA1; gUnknown_203F3D8->unkD = 0; } @@ -539,7 +539,7 @@ void sub_814A53C(u16 itemId) DynamicPlaceholderTextUtil_ExpandPlaceholders(gUnknown_203F3D8->strBuff, gText_FilledStorageSpace2); gUnknown_203F3D8->unk12 = sub_814A754(4, 8, 22, 4); AddTextPrinterParameterized(gUnknown_203F3D8->unk12, 2, gUnknown_203F3D8->strBuff, 0, 2, TEXT_SPEED_FF, NULL); - CopyWindowToVram(gUnknown_203F3D8->unk12, 2); + CopyWindowToVram(gUnknown_203F3D8->unk12, COPYWIN_GFX); gUnknown_203F3D8->unk14 = 0; gUnknown_203F3D8->unkD = 0; } @@ -552,7 +552,7 @@ void sub_814A5B4(u16 itemId) DynamicPlaceholderTextUtil_ExpandPlaceholders(gUnknown_203F3D8->strBuff, gText_CantHoldMore); gUnknown_203F3D8->unk12 = sub_814A754(4, 9, 22, 2); AddTextPrinterParameterized(gUnknown_203F3D8->unk12, 2, gUnknown_203F3D8->strBuff, 0, 2, TEXT_SPEED_FF, NULL); - CopyWindowToVram(gUnknown_203F3D8->unk12, 2); + CopyWindowToVram(gUnknown_203F3D8->unk12, COPYWIN_GFX); gUnknown_203F3D8->unk14 = 0; gUnknown_203F3D8->unkD = 0; } @@ -596,7 +596,7 @@ void sub_814A6CC(void) if (gUnknown_203F3D8->unk12 != 0xFF) { rbox_fill_rectangle(gUnknown_203F3D8->unk12); - CopyWindowToVram(gUnknown_203F3D8->unk12, 1); + CopyWindowToVram(gUnknown_203F3D8->unk12, COPYWIN_MAP); gUnknown_203F3D8->unkD = 0; } } @@ -857,7 +857,7 @@ static void sub_814AB98(int multiplayerId, u8 clr1, u8 clr2, u8 clr3) x = 64 - GetStringWidth(0, sub_81499E0(multiplayerId), -1); x /= 2; AddTextPrinterParameterized3(gUnknown_203F3D8->unk1C[multiplayerId], 0, x, 2, colors, -1, sub_81499E0(multiplayerId)); - CopyWindowToVram(gUnknown_203F3D8->unk1C[multiplayerId], 2); + CopyWindowToVram(gUnknown_203F3D8->unk1C[multiplayerId], COPYWIN_GFX); } static void sub_814AC30(bool32 arg0) diff --git a/src/pokemon_jump_6.c b/src/pokemon_jump_6.c index 1e213ad75..575c5c8a1 100644 --- a/src/pokemon_jump_6.c +++ b/src/pokemon_jump_6.c @@ -76,7 +76,7 @@ static void Task_ShowPokemonJumpRecords(u8 taskId) case 0: data[1] = AddWindow(&gUnknown_846E2CC); sub_814B5C4(data[1]); - CopyWindowToVram(data[1], 3); + CopyWindowToVram(data[1], COPYWIN_BOTH); data[0]++; break; case 1: @@ -87,7 +87,7 @@ static void Task_ShowPokemonJumpRecords(u8 taskId) if (JOY_NEW(A_BUTTON | B_BUTTON)) { rbox_fill_rectangle(data[1]); - CopyWindowToVram(data[1], 1); + CopyWindowToVram(data[1], COPYWIN_MAP); data[0]++; } break; diff --git a/src/pokemon_special_anim_scene.c b/src/pokemon_special_anim_scene.c index 2d65c24a7..b2e04e7e0 100644 --- a/src/pokemon_special_anim_scene.c +++ b/src/pokemon_special_anim_scene.c @@ -336,12 +336,12 @@ void InitPokemonSpecialAnimScene(struct PokemonSpecialAnimScene * buffer, u16 an ChangeBgY(3, 0, 0); SetBgTilemapBuffer(0, buffer->field_0914); SetBgTilemapBuffer(3, buffer->field_1914); - RequestDma3Fill(0, (void *)BG_VRAM, 0x20, TRUE); + RequestDma3Fill(0, (void *)BG_VRAM, 0x20, DMA3_32BIT); FillBgTilemapBufferRect_Palette0(0, 0x000, 0, 0, 32, 32); LoadBgGfxByAnimType(animType); FillWindowPixelBuffer(0, PIXEL_FILL(0)); TextWindow_SetUserSelectedFrame(0, 0x000, 0xe0); - CopyWindowToVram(0, 3); + CopyWindowToVram(0, COPYWIN_BOTH); ShowBg(0); ShowBg(3); HideBg(1); @@ -370,14 +370,14 @@ void PSA_ShowMessageWindow(void) PutWindowTilemap(0); FillWindowPixelBuffer(0, PIXEL_FILL(1)); DrawTextBorderOuter(0, 0x001, 0xE); - CopyWindowToVram(0, 3); + CopyWindowToVram(0, COPYWIN_BOTH); } void PSA_HideMessageWindow(void) { ClearWindowTilemap(0); ClearStdWindowAndFrameToTransparent(0, FALSE); - CopyWindowToVram(0, 1); + CopyWindowToVram(0, COPYWIN_MAP); } void PSA_PrintMessage(u8 messageId) @@ -448,7 +448,7 @@ void PSA_PrintMessage(u8 messageId) void PSA_AfterPoof_ClearMessageWindow(void) { FillWindowPixelBuffer(0, PIXEL_FILL(1)); - CopyWindowToVram(0, 2); + CopyWindowToVram(0, COPYWIN_GFX); } bool8 PSA_IsMessagePrintTaskActive(void) @@ -612,12 +612,12 @@ UNUSED void PSA_DrawLevelUpWindowPg1(u16 *statsBefore, u16 *statsAfter) DrawTextBorderOuter(1, 0x001, 0xE); DrawLevelUpWindowPg1(1, statsBefore, statsAfter, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY); PutWindowTilemap(1); - CopyWindowToVram(1, 3); + CopyWindowToVram(1, COPYWIN_BOTH); } UNUSED void PSA_DrawLevelUpWindowPg2(u16 *currStats) { DrawLevelUpWindowPg2(1, currStats, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY); - CopyWindowToVram(1, 2); + CopyWindowToVram(1, COPYWIN_GFX); } UNUSED bool8 PSA_IsCopyingLevelUpWindowToVram(void) diff --git a/src/pokemon_storage_system_2.c b/src/pokemon_storage_system_2.c index b806e7afa..d8be81b62 100644 --- a/src/pokemon_storage_system_2.c +++ b/src/pokemon_storage_system_2.c @@ -247,8 +247,8 @@ static void Task_PokemonStorageSystemPC(u8 taskId) DrawDialogueFrame(0, 0); FillWindowPixelBuffer(0, PIXEL_FILL(1)); AddTextPrinterParameterized2(0, 2, sUnknown_83CDA20[task->data[1]].desc, TEXT_SPEED_FF, NULL, TEXT_COLOR_DARK_GREY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GREY); - CopyWindowToVram(0, 3); - CopyWindowToVram(task->data[15], 3); + CopyWindowToVram(0, COPYWIN_BOTH); + CopyWindowToVram(task->data[15], COPYWIN_BOTH); task->data[0]++; break; case 1: diff --git a/src/pokemon_storage_system_3.c b/src/pokemon_storage_system_3.c index 7ae451b69..6cb7b5640 100644 --- a/src/pokemon_storage_system_3.c +++ b/src/pokemon_storage_system_3.c @@ -74,8 +74,8 @@ static void LoadPSSMenuGfx(void); static bool8 InitPSSWindows(void); static void LoadWaveformSpritePalette(void); static void sub_808F078(void); -static void sub_808F0F4(void); -static void sub_808F164(void); +static void PSS_CreateMonMarkingSprite(void); +static void CreateWaveformSprites(void); static void RefreshCursorMonData(void); static void BoxSetMosaic(void); static void SpriteCB_CursorMon_Mosaic(struct Sprite * sprite); @@ -2158,22 +2158,22 @@ static void sub_808F078(void) SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(1) | BGCNT_CHARBASE(1) | BGCNT_16COLOR | BGCNT_SCREENBASE(30)); LoadCursorMonSprite(); - sub_808F0F4(); - sub_808F164(); + PSS_CreateMonMarkingSprite(); + CreateWaveformSprites(); RefreshCursorMonData(); } -static void sub_808F0F4(void) +static void PSS_CreateMonMarkingSprite(void) { - gPSSData->field_D94 = CreateMonMarkingSprite_AllOff(TAG_TILE_10, TAG_PAL_DAC8, NULL); - gPSSData->field_D94->oam.priority = 1; - gPSSData->field_D94->subpriority = 1; - gPSSData->field_D94->pos1.x = 40; - gPSSData->field_D94->pos1.y = 150; - gPSSData->field_DA0 = (void *)OBJ_VRAM0 + 32 * GetSpriteTileStartByTag(TAG_TILE_10); + gPSSData->monMarkingSprite = CreateMonMarkingSprite_AllOff(TAG_TILE_10, TAG_PAL_DAC8, NULL); + gPSSData->monMarkingSprite->oam.priority = 1; + gPSSData->monMarkingSprite->subpriority = 1; + gPSSData->monMarkingSprite->pos1.x = 40; + gPSSData->monMarkingSprite->pos1.y = 150; + gPSSData->monMarkingSpriteTileStart = (void *)OBJ_VRAM0 + 32 * GetSpriteTileStartByTag(TAG_TILE_10); } -static void sub_808F164(void) +static void CreateWaveformSprites(void) { u16 i; struct SpriteSheet sheet = sWaveformSpriteSheet; @@ -2309,15 +2309,15 @@ static void PrintCursorMonInfo(void) } } - CopyWindowToVram(0, 2); + CopyWindowToVram(0, COPYWIN_GFX); if (gPSSData->cursorMonSpecies != SPECIES_NONE) { - sub_80BEBD0(gPSSData->cursorMonMarkings, gPSSData->field_DA0); - gPSSData->field_D94->invisible = FALSE; + RequestDma3LoadMonMarking(gPSSData->cursorMonMarkings, gPSSData->monMarkingSpriteTileStart); + gPSSData->monMarkingSprite->invisible = FALSE; } else { - gPSSData->field_D94->invisible = TRUE; + gPSSData->monMarkingSprite->invisible = TRUE; } } @@ -2597,7 +2597,7 @@ static void PrintStorageActionText(u8 id) AddTextPrinterParameterized(1, 1, gPSSData->field_2190, 0, 2, TEXT_SPEED_FF, NULL); DrawTextBorderOuter(1, 2, 13); PutWindowTilemap(1); - CopyWindowToVram(1, 2); + CopyWindowToVram(1, COPYWIN_GFX); ScheduleBgCopyTilemapToVram(0); } diff --git a/src/pokemon_storage_system_4.c b/src/pokemon_storage_system_4.c index 392d17574..b1b5408fe 100644 --- a/src/pokemon_storage_system_4.c +++ b/src/pokemon_storage_system_4.c @@ -996,10 +996,10 @@ static void sub_8091420(u8 taskId) case 0: gPSSData->field_2D2 = 0; gPSSData->bg2_X = 0; - task->data[1] = RequestDma3Fill(0, gPSSData->field_4AC4, 0x1000, 1); + task->data[1] = RequestDma3Fill(0, gPSSData->field_4AC4, 0x1000, DMA3_32BIT); break; case 1: - if (CheckForSpaceForDma3Request(task->data[1]) == -1) + if (WaitDma3Request(task->data[1]) == -1) return; SetBgTilemapBuffer(2, gPSSData->field_4AC4); diff --git a/src/pokemon_storage_system_7.c b/src/pokemon_storage_system_7.c index 367477a89..769787c24 100644 --- a/src/pokemon_storage_system_7.c +++ b/src/pokemon_storage_system_7.c @@ -128,7 +128,7 @@ static bool8 sub_8095138(void) sub_80956A4(sMoveMonsPtr->fromRow, sMoveMonsPtr->fromColumn); SetBgAttribute(0, BG_ATTR_PALETTEMODE, 1); PutWindowTilemap(gPSSData->field_2200); - CopyWindowToVram8Bit(gPSSData->field_2200, 3); + CopyWindowToVram8Bit(gPSSData->field_2200, COPYWIN_BOTH); BlendPalettes(0x3F00, 8, RGB_WHITE); sub_8094D14(2); SetGpuRegBits(REG_OFFSET_BG0CNT, BGCNT_256COLOR); @@ -184,7 +184,7 @@ static bool8 sub_80952A0(void) sub_8095520(); sMoveMonsPtr->toRow = sMoveMonsPtr->field_6; sMoveMonsPtr->toColumn = sMoveMonsPtr->field_7; - CopyWindowToVram8Bit(gPSSData->field_2200, 2); + CopyWindowToVram8Bit(gPSSData->field_2200, COPYWIN_GFX); sMoveMonsPtr->state++; } break; diff --git a/src/quest_log.c b/src/quest_log.c index 2ba377bd9..c149217d9 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -503,15 +503,15 @@ void DrawPreviouslyOnQuestHeader(u8 sceneNum) AddTextPrinterParameterized4(sQuestLogHeaderWindowIds[0], 2, 2, 2, 1, 2, sTextColors, 0, gStringVar4); PutWindowTilemap(sQuestLogHeaderWindowIds[0]); PutWindowTilemap(sQuestLogHeaderWindowIds[1]); - CopyWindowToVram(sQuestLogHeaderWindowIds[0], 2); - CopyWindowToVram(sQuestLogHeaderWindowIds[2], 2); - CopyWindowToVram(sQuestLogHeaderWindowIds[1], 3); + CopyWindowToVram(sQuestLogHeaderWindowIds[0], COPYWIN_GFX); + CopyWindowToVram(sQuestLogHeaderWindowIds[2], COPYWIN_GFX); + CopyWindowToVram(sQuestLogHeaderWindowIds[1], COPYWIN_BOTH); } void CommitQuestLogWindow1(void) { PutWindowTilemap(sQuestLogHeaderWindowIds[1]); - CopyWindowToVram(sQuestLogHeaderWindowIds[1], 1); + CopyWindowToVram(sQuestLogHeaderWindowIds[1], COPYWIN_MAP); } static void QuestLogPlaybackSetObjectEventTemplates(u8 sceneNum) @@ -1040,9 +1040,9 @@ static void QuestLog_CloseTextWindow(void) { ClearWindowTilemap(sQuestLogHeaderWindowIds[2]); FillWindowPixelRect(sQuestLogHeaderWindowIds[2], 15, 0, 0, 0xf0, 0x30); - CopyWindowToVram(sQuestLogHeaderWindowIds[2], 2); + CopyWindowToVram(sQuestLogHeaderWindowIds[2], COPYWIN_GFX); PutWindowTilemap(sQuestLogHeaderWindowIds[1]); - CopyWindowToVram(sQuestLogHeaderWindowIds[1], 1); + CopyWindowToVram(sQuestLogHeaderWindowIds[1], COPYWIN_MAP); } static void QuestLog_SkipToEndOfPlayback(s8 delay) @@ -1163,7 +1163,7 @@ static void Task_EndQuestLog(u8 taskId) for (i = 0; i < 3; i++) { ClearWindowTilemap(sQuestLogHeaderWindowIds[i]); - CopyWindowToVram(sQuestLogHeaderWindowIds[i], 1); + CopyWindowToVram(sQuestLogHeaderWindowIds[i], COPYWIN_MAP); RemoveWindow(sQuestLogHeaderWindowIds[i]); } tTimer = 0; @@ -1207,8 +1207,8 @@ static bool8 sub_81121D8(u8 taskId) sub_80716F8(gPlttBufferUnfaded + 0x100, gPlttBufferFaded + 0x100, 0x100, 0x0F - data[1]); FillWindowPixelRect(sQuestLogHeaderWindowIds[0], 0x00, 0, sQuestLogHeaderWindowTemplates[0].height * 8 - 1 - data[1], sQuestLogHeaderWindowTemplates[0].width * 8, 1); FillWindowPixelRect(sQuestLogHeaderWindowIds[1], 0x00, 0, data[1], sQuestLogHeaderWindowTemplates[1].width * 8, 1); - CopyWindowToVram(sQuestLogHeaderWindowIds[0], 2); - CopyWindowToVram(sQuestLogHeaderWindowIds[1], 2); + CopyWindowToVram(sQuestLogHeaderWindowIds[0], COPYWIN_GFX); + CopyWindowToVram(sQuestLogHeaderWindowIds[1], COPYWIN_GFX); data[1]++; return FALSE; } diff --git a/src/region_map.c b/src/region_map.c index 81bd4aca4..bbc8a40f9 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -1889,7 +1889,7 @@ static void DisplayCurrentMapName(void) GetMapName(sRegionMap->mapName, GetMapsecUnderCursor(), 0); AddTextPrinterParameterized3(WIN_MAP_NAME, 2, 2, 2, sTextColor_White, 0, sRegionMap->mapName); PutWindowTilemap(WIN_MAP_NAME); - CopyWindowToVram(WIN_MAP_NAME, 2); + CopyWindowToVram(WIN_MAP_NAME, COPYWIN_GFX); SetGpuWindowDims(WIN_MAP_NAME, &sMapsecNameWindowDims[WIN_MAP_NAME]); } } @@ -1921,16 +1921,16 @@ static void DisplayCurrentDungeonName(void) StringCopy(sRegionMap->dungeonName, sMapNames[descOffset]); AddTextPrinterParameterized3(WIN_DUNGEON_NAME, 2, 12, 2, sTextColorTable[GetSelectedMapsecType(LAYER_DUNGEON) - 2], 0, sRegionMap->dungeonName); PutWindowTilemap(WIN_DUNGEON_NAME); - CopyWindowToVram(WIN_DUNGEON_NAME, 3); + CopyWindowToVram(WIN_DUNGEON_NAME, COPYWIN_BOTH); } } static void ClearMapsecNameText(void) { FillWindowPixelBuffer(WIN_MAP_NAME, PIXEL_FILL(0)); - CopyWindowToVram(WIN_MAP_NAME, 3); + CopyWindowToVram(WIN_MAP_NAME, COPYWIN_BOTH); FillWindowPixelBuffer(WIN_DUNGEON_NAME, PIXEL_FILL(0)); - CopyWindowToVram(WIN_DUNGEON_NAME, 3); + CopyWindowToVram(WIN_DUNGEON_NAME, COPYWIN_BOTH); } static void BufferRegionMapBg(u8 bg, u16 *map) @@ -2493,7 +2493,7 @@ static void Task_DrawDungeonMapPreviewFlavorText(u8 taskId) break; case 2: FillWindowPixelBuffer(WIN_MAP_PREVIEW, PIXEL_FILL(0)); - CopyWindowToVram(WIN_MAP_PREVIEW, 3); + CopyWindowToVram(WIN_MAP_PREVIEW, COPYWIN_BOTH); PutWindowTilemap(WIN_MAP_PREVIEW); sDungeonMapPreview->drawState++; break; @@ -2503,7 +2503,7 @@ static void Task_DrawDungeonMapPreviewFlavorText(u8 taskId) { AddTextPrinterParameterized3(WIN_MAP_PREVIEW, 2, 4, 0, sTextColor_Green, -1, GetDungeonName(GetDungeonMapsecUnderCursor())); AddTextPrinterParameterized3(WIN_MAP_PREVIEW, 2, 2, 14, sTextColor_White, -1, GetDungeonFlavorText(GetDungeonMapsecUnderCursor())); - CopyWindowToVram(WIN_MAP_PREVIEW, 3); + CopyWindowToVram(WIN_MAP_PREVIEW, COPYWIN_BOTH); sDungeonMapPreview->drawState++; } // Tint image @@ -2522,7 +2522,7 @@ static void Task_DrawDungeonMapPreviewFlavorText(u8 taskId) if (JOY_NEW(B_BUTTON) || JOY_NEW(A_BUTTON)) { FillWindowPixelBuffer(WIN_MAP_PREVIEW, PIXEL_FILL(0)); - CopyWindowToVram(WIN_MAP_PREVIEW, 3); + CopyWindowToVram(WIN_MAP_PREVIEW, COPYWIN_BOTH); sDungeonMapPreview->mainState++; sDungeonMapPreview->drawState++; } @@ -3002,8 +3002,8 @@ static void Task_MapCloseAnim(u8 taskId) { case 0: ClearOrDrawTopBar(TRUE); - CopyWindowToVram(WIN_TOPBAR_LEFT, 3); - CopyWindowToVram(WIN_TOPBAR_RIGHT, 3); + CopyWindowToVram(WIN_TOPBAR_LEFT, COPYWIN_BOTH); + CopyWindowToVram(WIN_TOPBAR_RIGHT, COPYWIN_BOTH); sMapOpenCloseAnim->closeState++; break; case 1: @@ -4285,7 +4285,7 @@ static void PrintTopBarTextLeft(const u8 *str) else FillWindowPixelBuffer(WIN_TOPBAR_LEFT, PIXEL_FILL(15)); AddTextPrinterParameterized3(WIN_TOPBAR_LEFT, 0, 0, 0, sTextColors, 0, str); - CopyWindowToVram(WIN_TOPBAR_LEFT, 2); + CopyWindowToVram(WIN_TOPBAR_LEFT, COPYWIN_GFX); } static void PrintTopBarTextRight(const u8 *str) @@ -4295,7 +4295,7 @@ static void PrintTopBarTextRight(const u8 *str) else FillWindowPixelBuffer(WIN_TOPBAR_RIGHT, PIXEL_FILL(15)); AddTextPrinterParameterized3(WIN_TOPBAR_RIGHT, 0, 0, 0, sTextColors, 0, str); - CopyWindowToVram(WIN_TOPBAR_RIGHT, 3); + CopyWindowToVram(WIN_TOPBAR_RIGHT, COPYWIN_BOTH); } static void ClearOrDrawTopBar(bool8 clear) diff --git a/src/save.c b/src/save.c index 3c192c098..d5993182c 100644 --- a/src/save.c +++ b/src/save.c @@ -846,7 +846,7 @@ u32 TryWriteSpecialSaveSection(u8 sector, u8* src) return 1; } -void sub_80DA634(u8 taskId) +void Task_SaveGame_UpdatedLinkRecords(u8 taskId) { switch (gTasks[taskId].data[0]) { diff --git a/src/save_failed_screen.c b/src/save_failed_screen.c index e71910485..9c29323ba 100644 --- a/src/save_failed_screen.c +++ b/src/save_failed_screen.c @@ -53,8 +53,8 @@ bool32 RunSaveFailedScreen(void) sSaveFailedScreenState = 2; break; case 2: - RequestDma3Fill(0, (void *)BG_CHAR_ADDR(3), BG_CHAR_SIZE, 0); - RequestDma3Copy(sSaveFailedScreenPals, (void *)PLTT, 0x20, 0); + RequestDma3Fill(0, (void *)BG_CHAR_ADDR(3), BG_CHAR_SIZE, DMA3_16BIT); + RequestDma3Copy(sSaveFailedScreenPals, (void *)PLTT, 0x20, DMA3_16BIT); sSaveFailedScreenState = 3; break; case 3: @@ -118,12 +118,12 @@ static void BlankPalettes(void) static void RequestDmaCopyFromScreenBuffer(void) { - RequestDma3Copy(gDecompressionBuffer + 0x3800, (void *)BG_SCREEN_ADDR(31), 0x500, 0); + RequestDma3Copy(gDecompressionBuffer + 0x3800, (void *)BG_SCREEN_ADDR(31), 0x500, DMA3_16BIT); } static void RequestDmaCopyFromCharBuffer(void) { - RequestDma3Copy(gDecompressionBuffer + 0x020, (void *)BG_CHAR_ADDR(3) + 0x20, 0x2300, 0); + RequestDma3Copy(gDecompressionBuffer + 0x020, (void *)BG_CHAR_ADDR(3) + 0x20, 0x2300, DMA3_16BIT); } static void FillBgMapBufferRect(u16 baseBlock, u8 left, u8 top, u8 width, u8 height, u16 blockOffset) diff --git a/src/scrcmd.c b/src/scrcmd.c index 75761f0a3..3b6c73b68 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -1277,7 +1277,7 @@ bool8 ScrCmd_loadhelp(struct ScriptContext * ctx) if (msg == NULL) msg = (const u8 *)ctx->data[0]; DrawHelpMessageWindowWithText(msg); - CopyWindowToVram(GetStartMenuWindowId(), 1); + CopyWindowToVram(GetStartMenuWindowId(), COPYWIN_MAP); return FALSE; } diff --git a/src/shop.c b/src/shop.c index 66b9fdb49..37dffdb81 100644 --- a/src/shop.c +++ b/src/shop.c @@ -227,7 +227,7 @@ static u8 CreateShopMenu(u8 a0) PrintTextArray(sShopMenuWindowId, 2, GetMenuCursorDimensionByFont(2, 0), 2, 16, 3, sShopMenuActions_BuySellQuit); Menu_InitCursor(sShopMenuWindowId, 2, 0, 2, 16, 3, 0); PutWindowTilemap(sShopMenuWindowId); - CopyWindowToVram(sShopMenuWindowId, 1); + CopyWindowToVram(sShopMenuWindowId, COPYWIN_MAP); return CreateTask(Task_ShopMenu, 8); } @@ -657,7 +657,7 @@ static void BuyMenuPrintCursorAtYPosition(u8 y, u8 a1) if (a1 == 0xFF) { FillWindowPixelRect(4, 0, 1, y, GetFontAttribute(2, FONTATTR_MAX_LETTER_WIDTH), GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT)); - CopyWindowToVram(4, 2); + CopyWindowToVram(4, COPYWIN_GFX); } else { diff --git a/src/slot_machine.c b/src/slot_machine.c index 7fb199419..074e8a36f 100644 --- a/src/slot_machine.c +++ b/src/slot_machine.c @@ -1952,9 +1952,9 @@ static bool8 SlotsTask_GraphicsInit(u8 * state, struct SlotMachineSetupTaskData SetVBlankCallback(NULL); ResetSpriteData(); FreeAllSpritePalettes(); - RequestDma3Fill(0, (void *)OAM, OAM_SIZE, 1); - RequestDma3Fill(0, (void *)VRAM, 0x20, 1); - RequestDma3Fill(0, (void *)(VRAM + 0xC000), 0x20, 1); + RequestDma3Fill(0, (void *)OAM, OAM_SIZE, DMA3_32BIT); + RequestDma3Fill(0, (void *)VRAM, 0x20, DMA3_32BIT); + RequestDma3Fill(0, (void *)(VRAM + 0xC000), 0x20, DMA3_32BIT); SetGpuReg(REG_OFFSET_DISPCNT, 0); ResetBgPositions(); ResetBgsAndClearDma3BusyFlags(FALSE); @@ -2119,7 +2119,7 @@ static bool8 SlotsTask_MessageOutOfCoins(u8 * state, struct SlotMachineSetupTask { case 0: Slot_PrintOnWindow0(gString_OutOfCoins); - CopyWindowToVram(0, 3); + CopyWindowToVram(0, COPYWIN_BOTH); (*state)++; break; case 1: @@ -2137,7 +2137,7 @@ static bool8 SlotsTask_AskQuitPlaying(u8 * state, struct SlotMachineSetupTaskDat case 0: Slot_PrintOnWindow0(gString_QuitPlaying); Slot_CreateYesNoMenu(0); - CopyWindowToVram(0, 3); + CopyWindowToVram(0, COPYWIN_BOTH); (*state)++; break; case 1: @@ -2155,7 +2155,7 @@ static bool8 SlotsTask_DestroyYesNoMenu(u8 * state, struct SlotMachineSetupTaskD case 0: Slot_ClearWindow0(); Slot_DestroyYesNoMenu(); - CopyWindowToVram(0, 3); + CopyWindowToVram(0, COPYWIN_BOTH); (*state)++; break; case 1: diff --git a/src/sound.c b/src/sound.c index ed3f368ad..7f93f7a59 100644 --- a/src/sound.c +++ b/src/sound.c @@ -23,11 +23,11 @@ EWRAM_DATA struct MusicPlayerInfo* gMPlay_PokemonCry = NULL; EWRAM_DATA u8 gPokemonCryBGMDuckingCounter = 0; // iwram bss -/*IWRAM_DATA*/ static u16 sCurrentMapMusic; -/*IWRAM_DATA*/ static u16 sNextMapMusic; -/*IWRAM_DATA*/ static u8 sMapMusicState; -/*IWRAM_DATA*/ static u8 sMapMusicFadeInSpeed; -/*IWRAM_DATA*/ static u16 sFanfareCounter; +static u16 sCurrentMapMusic; +static u16 sNextMapMusic; +static u8 sMapMusicState; +static u8 sMapMusicFadeInSpeed; +static u16 sFanfareCounter; // iwram common bool8 gDisableMusic; diff --git a/src/start_menu.c b/src/start_menu.c index d52ef47ef..1cc06aa99 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -255,7 +255,7 @@ static void DrawSafariZoneStatsWindow(void) ConvertIntToDecimalStringN(gStringVar3, gNumSafariBalls, STR_CONV_MODE_RIGHT_ALIGN, 2); StringExpandPlaceholders(gStringVar4, gUnknown_84162A9); AddTextPrinterParameterized(sSafariZoneStatsWindowId,2, gStringVar4, 4, 3, 0xFF, NULL); - CopyWindowToVram(sSafariZoneStatsWindowId, 2); + CopyWindowToVram(sSafariZoneStatsWindowId, COPYWIN_GFX); } static void DestroySafariZoneStatsWindow(void) @@ -263,7 +263,7 @@ static void DestroySafariZoneStatsWindow(void) if (GetSafariZoneFlag()) { ClearStdWindowAndFrameToTransparent(sSafariZoneStatsWindowId, FALSE); - CopyWindowToVram(sSafariZoneStatsWindowId, 2); + CopyWindowToVram(sSafariZoneStatsWindowId, COPYWIN_GFX); RemoveWindow(sSafariZoneStatsWindowId); } } @@ -324,7 +324,7 @@ static s8 DoDrawStartMenu(void) { DrawHelpMessageWindowWithText(sStartMenuDescPointers[sStartMenuOrder[sStartMenuCursorPos]]); } - CopyWindowToVram(GetStartMenuWindowId(), 1); + CopyWindowToVram(GetStartMenuWindowId(), COPYWIN_MAP); return TRUE; } return FALSE; @@ -913,7 +913,7 @@ static void task50_after_link_battle_save(u8 taskId) AddTextPrinterParameterized2(0, 2, gText_SavingDontTurnOffThePower2, 0xFF, NULL, 2, 1, 3); DrawTextBorderOuter(0, 0x008, 0x0F); PutWindowTilemap(0); - CopyWindowToVram(0, 3); + CopyWindowToVram(0, COPYWIN_BOTH); BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK); if (gWirelessCommType != 0 && InUnionRoom()) data[0] = 5; @@ -942,11 +942,11 @@ static void task50_after_link_battle_save(u8 taskId) DestroyTask(taskId); break; case 5: - CreateTask(sub_80DA634, 5); + CreateTask(Task_SaveGame_UpdatedLinkRecords, 5); data[0] = 6; break; case 6: - if (!FuncIsActiveTask(sub_80DA634)) + if (!FuncIsActiveTask(Task_SaveGame_UpdatedLinkRecords)) data[0] = 3; break; } @@ -981,7 +981,7 @@ static void PrintSaveStats(void) AddTextPrinterParameterized3(sSaveStatsWindowId, 0, 2, y, sTextColor_StatName, -1, gSaveStatName_Time); SaveStatToString(SAVE_STAT_TIME, gStringVar4, 2); AddTextPrinterParameterized3(sSaveStatsWindowId, 0, 60, y, sTextColor_StatValue, -1, gStringVar4); - CopyWindowToVram(sSaveStatsWindowId, 2); + CopyWindowToVram(sSaveStatsWindowId, COPYWIN_GFX); } static void CloseSaveStatsWindow(void) diff --git a/src/strings.c b/src/strings.c index 29bbd2fdf..eefd52b90 100644 --- a/src/strings.c +++ b/src/strings.c @@ -1023,15 +1023,15 @@ const u8 gText_WantToPlayAgain[] = _("Want to play again?"); const u8 gText_SomeoneDroppedOut[] = _("Somebody dropped out.\nThe link will be canceled."); const u8 gText_SpacePoints[] = _(" points"); const u8 gText_CommunicationStandby3[] = _("Communication standby…"); -ALIGNED(4) const u8 gUnknown_841CE3C[] = _("Are you ready to BERRY-CRUSH?\nPlease pick a BERRY for use.\p"); -ALIGNED(4) const u8 gUnknown_841CE78[] = _("Please wait while each member\nchooses a BERRY."); -ALIGNED(4) const u8 gUnknown_841CEA8[] = _("{PAUSE_MUSIC}{PLAY_BGM MUS_FANFA1}You ended up with {STR_VAR_1} units of\nsilky-smooth BERRY POWDER.{RESUME_MUSIC}\pYour total amount of BERRY POWDER\nis {STR_VAR_2}.\p"); -ALIGNED(4) const u8 gUnknown_841CF14[] = _("Recording your game results in the\nsave file.\nPlease wait."); -ALIGNED(4) const u8 gUnknown_841CF50[] = _("Want to play BERRY CRUSH again?"); -ALIGNED(4) const u8 gUnknown_841CF70[] = _("You have no BERRIES.\nThe game will be canceled."); -ALIGNED(4) const u8 gUnknown_841CFA0[] = _("A member dropped out.\nThe game will be canceled."); -ALIGNED(4) const u8 gUnknown_841CFD4[] = _("Time's up.\pGood BERRY POWDER could not be\nmade…\p"); -ALIGNED(4) const u8 gUnknown_841D008[] = _("Communication standby…"); +ALIGNED(4) const u8 gText_BerryCrush_AreYouReady[] = _("Are you ready to BERRY-CRUSH?\nPlease pick a BERRY for use.\p"); +ALIGNED(4) const u8 gText_BerryCrush_WaitForOthersToChooseBerry[] = _("Please wait while each member\nchooses a BERRY."); +ALIGNED(4) const u8 gText_BerryCrush_GainedXUnitsOfPowder[] = _("{PAUSE_MUSIC}{PLAY_BGM MUS_FANFA1}You ended up with {STR_VAR_1} units of\nsilky-smooth BERRY POWDER.{RESUME_MUSIC}\pYour total amount of BERRY POWDER\nis {STR_VAR_2}.\p"); +ALIGNED(4) const u8 gText_BerryCrush_RecordingGameResults[] = _("Recording your game results in the\nsave file.\nPlease wait."); +ALIGNED(4) const u8 gText_BerryCrush_WantToPlayAgain[] = _("Want to play BERRY CRUSH again?"); +ALIGNED(4) const u8 gText_BerryCrush_NoBerries[] = _("You have no BERRIES.\nThe game will be canceled."); +ALIGNED(4) const u8 gText_BerryCrush_MemberDroppedOut[] = _("A member dropped out.\nThe game will be canceled."); +ALIGNED(4) const u8 gText_BerryCrush_TimeUp[] = _("Time's up.\pGood BERRY POWDER could not be\nmade…\p"); +ALIGNED(4) const u8 gText_BerryCrush_CommunicationStandby[] = _("Communication standby…"); ALIGNED(4) const u8 gText_1_ClrLtGryShdwBlk_Dynamic0[] = _("1. {COLOR LIGHT_GRAY}{SHADOW BLACK}{DYNAMIC 0x00}"); const u8 gText_1_Dynamic0[] = _("1. {DYNAMIC 0x00}"); ALIGNED(4) const u8 gText_SpaceTimes[] = _(" times"); diff --git a/src/task.c b/src/task.c index fafa7c70d..83800a440 100644 --- a/src/task.c +++ b/src/task.c @@ -201,7 +201,7 @@ u8 GetTaskCount(void) return count; } -void SetWordTaskArg(u8 taskId, u8 dataElem, u32 value) +void SetWordTaskArg(u8 taskId, u8 dataElem, unsigned long value) { if (dataElem <= 14) { diff --git a/src/teachy_tv.c b/src/teachy_tv.c index 6924f8e9d..f919220c9 100644 --- a/src/teachy_tv.c +++ b/src/teachy_tv.c @@ -541,7 +541,7 @@ static void TeachyTvCreateAndRenderRbox(void) FillWindowPixelBuffer(0, 0xCC); PutWindowTilemap(0); PutWindowTilemap(1); - CopyWindowToVram(0, 2); + CopyWindowToVram(0, COPYWIN_GFX); } static u8 TeachyTvSetupWindow(void) @@ -811,7 +811,7 @@ static void TeachyTvRenderMsgAndSwitchClusterFuncs(u8 taskId) sResources->grassAnimDisabled = 1; TeachyTvSetSpriteCoordsAndSwitchFrame(data[1], 0, 0, 0); FillWindowPixelBuffer(0, 0xCC); - CopyWindowToVram(0, 2); + CopyWindowToVram(0, COPYWIN_GFX); TeachyTvClearBg1EndGraphicText(); data[2] = 0; data[3] = 0; @@ -937,7 +937,7 @@ static void TTVcmd_EraseTextWindowIfKeyPressed(u8 taskId) if (JOY_NEW(A_BUTTON | B_BUTTON)) { FillWindowPixelBuffer(0, 0xCC); - CopyWindowToVram(0, 2); + CopyWindowToVram(0, COPYWIN_GFX); ++data[3]; } } diff --git a/src/text.c b/src/text.c index 9e0bb4c5f..7d739f564 100644 --- a/src/text.c +++ b/src/text.c @@ -876,7 +876,7 @@ u16 RenderText(struct TextPrinter *textPrinter) ScrollWindow(textPrinter->printerTemplate.windowId, 0, sWindowVerticalScrollSpeeds[gSaveBlock2Ptr->optionsTextSpeed], PIXEL_FILL(textPrinter->printerTemplate.bgColor)); textPrinter->scrollDistance -= sWindowVerticalScrollSpeeds[gSaveBlock2Ptr->optionsTextSpeed]; } - CopyWindowToVram(textPrinter->printerTemplate.windowId, 2); + CopyWindowToVram(textPrinter->printerTemplate.windowId, COPYWIN_GFX); } else { diff --git a/src/text_printer.c b/src/text_printer.c index 28377b55a..0d1f86114 100644 --- a/src/text_printer.c +++ b/src/text_printer.c @@ -108,7 +108,7 @@ bool16 AddTextPrinter(struct TextPrinterTemplate *textSubPrinter, u8 speed, void } if (speed != TEXT_SPEED_FF) - CopyWindowToVram(sTempTextPrinter.printerTemplate.windowId, 2); + CopyWindowToVram(sTempTextPrinter.printerTemplate.windowId, COPYWIN_GFX); sTextPrinters[textSubPrinter->windowId].active = 0; } return TRUE; @@ -126,7 +126,7 @@ void RunTextPrinters(void) temp = RenderFont(&sTextPrinters[i]); switch (temp) { case 0: - CopyWindowToVram(sTextPrinters[i].printerTemplate.windowId, 2); + CopyWindowToVram(sTextPrinters[i].printerTemplate.windowId, COPYWIN_GFX); case 3: if (sTextPrinters[i].callback != 0) sTextPrinters[i].callback(&sTextPrinters[i].printerTemplate, temp); diff --git a/src/tm_case.c b/src/tm_case.c index 0ec19d134..060723949 100644 --- a/src/tm_case.c +++ b/src/tm_case.c @@ -602,7 +602,7 @@ static void PrintListMenuCursorAt_WithColorIdx(u8 a0, u8 a1) if (a1 == 0xFF) { FillWindowPixelRect(0, 0, 0, a0, GetFontAttribute(2, 0), GetFontAttribute(2, 1)); - CopyWindowToVram(0, 2); + CopyWindowToVram(0, COPYWIN_GFX); } else { @@ -797,7 +797,7 @@ static void Task_SelectTMAction_FromFieldBag(u8 taskId) if (itemid_is_unique(gSpecialVar_ItemId)) { PlaceHMTileInWindow(2, 0, 2); - CopyWindowToVram(2, 2); + CopyWindowToVram(2, COPYWIN_GFX); } ScheduleBgCopyTilemapToVram(0); ScheduleBgCopyTilemapToVram(1); @@ -1341,7 +1341,7 @@ static void DrawMoveInfoUIMarkers(void) BlitMoveInfoIcon(4, 20, 0, 12); BlitMoveInfoIcon(4, 21, 0, 24); BlitMoveInfoIcon(4, 22, 0, 36); - CopyWindowToVram(4, 2); + CopyWindowToVram(4, COPYWIN_GFX); } static void TMCase_MoveCursor_UpdatePrintedTMInfo(u16 itemId) @@ -1357,7 +1357,7 @@ static void TMCase_MoveCursor_UpdatePrintedTMInfo(u16 itemId) { AddTextPrinterParameterized_ColorByIndex(5, 3, gText_ThreeHyphens, 7, 12 * i, 0, 0, 0xFF, 3); } - CopyWindowToVram(5, 2); + CopyWindowToVram(5, COPYWIN_GFX); } else { @@ -1381,7 +1381,7 @@ static void TMCase_MoveCursor_UpdatePrintedTMInfo(u16 itemId) AddTextPrinterParameterized_ColorByIndex(5, 3, str, 7, 24, 0, 0, 0xFF, 3); ConvertIntToDecimalStringN(gStringVar1, gBattleMoves[move].pp, STR_CONV_MODE_RIGHT_ALIGN, 3); AddTextPrinterParameterized_ColorByIndex(5, 3, gStringVar1, 7, 36, 0, 0, 0xFF, 3); - CopyWindowToVram(5, 2); + CopyWindowToVram(5, COPYWIN_GFX); } } diff --git a/src/trade.c b/src/trade.c index 81403cb7d..7da209d60 100644 --- a/src/trade.c +++ b/src/trade.c @@ -1233,7 +1233,7 @@ static void TradeMenuCB_13(void) } else { - if (gReceivedRemoteLinkPlayers == 0) + if (!gReceivedRemoteLinkPlayers) { Free(sSpriteTextTileBuffer); FreeAllWindowBuffers(); @@ -1742,7 +1742,7 @@ static void TradeMenuCB_0(void) UnionRoomAndTradeMenuPrintOptions(1, 3, 16, 2, sMenuAction_SummaryTrade); Menu_InitCursor(1, 3, 0, 0, 16, 2, 0); PutWindowTilemap(1); - CopyWindowToVram(1, 3); + CopyWindowToVram(1, COPYWIN_BOTH); sTradeMenuResourcesPtr->tradeMenuCBnum = 1; } else if (sTradeMenuResourcesPtr->tradeMenuCursorPosition < 12) @@ -1915,7 +1915,7 @@ static void CommitWindows(void) for (i = 0; i < sTradeMenuResourcesPtr->partyCounts[1] - 4; i++) { PutWindowTilemap(i + 12); - CopyWindowToVram(i + 12, 1); + CopyWindowToVram(i + 12, COPYWIN_MAP); } } @@ -2174,9 +2174,9 @@ static void HandleRedrawTradeMenuOnSide(u8 side) BuildMovesString(movesString, whichParty, partyIdx); AddTextPrinterParameterized4((side * 2) + 15, 1, 0, 0, 0, 0, sTextColor_PartyMonNickname, 0, movesString); PutWindowTilemap((side * 2) + 14); - CopyWindowToVram((side * 2) + 14, 3); + CopyWindowToVram((side * 2) + 14, COPYWIN_BOTH); PutWindowTilemap((side * 2) + 15); - CopyWindowToVram((side * 2) + 15, 3); + CopyWindowToVram((side * 2) + 15, COPYWIN_BOTH); sTradeMenuResourcesPtr->menuRedrawState[side]++; break; case 4: @@ -2244,7 +2244,7 @@ static void PrintPartyMonNickname(u8 whichParty, u8 windowId, const u8 *str) xPos = (64u - GetStringWidth(0, str, GetFontAttribute(0, FONTATTR_LETTER_SPACING))) / 2; AddTextPrinterParameterized3(windowId, 0, xPos, 4, sTextColor_PartyMonNickname, speed, str); PutWindowTilemap(windowId); - CopyWindowToVram(windowId, 3); + CopyWindowToVram(windowId, COPYWIN_BOTH); } static void PrintPartyNicknames(u8 whichParty) @@ -2455,7 +2455,7 @@ static void PrintTradeErrorOrStatusMessage(u8 idx) AddTextPrinterParameterized(0, 3, sTradeErrorOrStatusMessagePtrs[idx], 0, 2, 0xFF, NULL); DrawTextBorderOuter(0, 0x014, 12); PutWindowTilemap(0); - CopyWindowToVram(0, 3); + CopyWindowToVram(0, COPYWIN_BOTH); } static bool8 LoadUISprites(void) @@ -2686,7 +2686,7 @@ s32 Trade_CalcLinkPlayerCompatibilityParam(void) s32 val; u16 version; - if (gReceivedRemoteLinkPlayers != 0) + if (gReceivedRemoteLinkPlayers) { val = 0; version = (gLinkPlayers[GetMultiplayerId() ^ 1].version & 0xFF); diff --git a/src/trade_scene.c b/src/trade_scene.c index e23a2e307..cc78d9a1e 100644 --- a/src/trade_scene.c +++ b/src/trade_scene.c @@ -923,7 +923,7 @@ void LinkTradeDrawWindow(void) { FillWindowPixelBuffer(0, PIXEL_FILL(15)); PutWindowTilemap(0); - CopyWindowToVram(0, 3); + CopyWindowToVram(0, COPYWIN_BOTH); } static void TradeAnimInit_LoadGfx(void) @@ -1000,7 +1000,7 @@ static void CB2_InitTradeAnim_InGameTrade(void) LoadTradeMonPic(1, 1); FillWindowPixelBuffer(0, PIXEL_FILL(15)); PutWindowTilemap(0); - CopyWindowToVram(0, 3); + CopyWindowToVram(0, COPYWIN_BOTH); gMain.state++; break; case 9: @@ -1331,7 +1331,7 @@ static bool8 DoTradeAnim_Cable(void) { SetTradeSequenceBgGpuRegs(4); FillWindowPixelBuffer(0, PIXEL_FILL(15)); - CopyWindowToVram(0, 3); + CopyWindowToVram(0, COPYWIN_BOTH); sTradeData->state++; } break; @@ -1828,7 +1828,7 @@ static bool8 DoTradeAnim_Wireless(void) { SetTradeSequenceBgGpuRegs(4); FillWindowPixelBuffer(0, PIXEL_FILL(15)); - CopyWindowToVram(0, 3); + CopyWindowToVram(0, COPYWIN_BOTH); sTradeData->state++; } break; @@ -2769,7 +2769,7 @@ void DrawTextOnTradeWindow(u8 windowId, const u8 *str, s8 speed) sTradeData->textColor[1] = 1; sTradeData->textColor[2] = 6; AddTextPrinterParameterized4(windowId, 2, 0, 2, 0, 2, sTradeData->textColor, speed, str); - CopyWindowToVram(windowId, 3); + CopyWindowToVram(windowId, COPYWIN_BOTH); } static void Task_AnimateWirelessSignal(u8 taskId) diff --git a/src/trainer_card.c b/src/trainer_card.c index 33440e5a5..98799b502 100644 --- a/src/trainer_card.c +++ b/src/trainer_card.c @@ -624,7 +624,7 @@ static void Task_TrainerCard(u8 taskId) Link_TryStartSend5FFF(); DrawDialogueFrame(0, 1); AddTextPrinterParameterized(0, 2, gText_WaitingTrainerFinishReading, 0, 1, TEXT_SPEED_FF, 0); - CopyWindowToVram(0, 3); + CopyWindowToVram(0, COPYWIN_BOTH); sTrainerCardDataPtr->mainState = STATE_CLOSE_CARD_LINK; break; case STATE_CLOSE_CARD_LINK: @@ -1467,7 +1467,7 @@ static void LoadStickerGfx(void) static void DrawTrainerCardWindow(u8 windowId) { PutWindowTilemap(windowId); - CopyWindowToVram(windowId, 3); + CopyWindowToVram(windowId, COPYWIN_BOTH); } static bool8 SetTrainerCardBgsAndPals(void) @@ -1765,7 +1765,7 @@ static bool8 Task_DrawFlippedCardSide(struct Task* task) return FALSE; } sTrainerCardDataPtr->flipDrawState++; - } while (gReceivedRemoteLinkPlayers == 0); + } while (!gReceivedRemoteLinkPlayers); return FALSE; } diff --git a/src/trainer_tower.c b/src/trainer_tower.c index 06c4a2fad..60f096cda 100644 --- a/src/trainer_tower.c +++ b/src/trainer_tower.c @@ -915,7 +915,7 @@ static void ShowResultsBoard(void) } PutWindowTilemap(windowId); - CopyWindowToVram(windowId, 3); + CopyWindowToVram(windowId, COPYWIN_BOTH); VarSet(VAR_TEMP_1, windowId); } @@ -1068,7 +1068,7 @@ void PrintTrainerTowerRecords(void) } PutWindowTilemap(windowId); - CopyWindowToVram(windowId, 3); + CopyWindowToVram(windowId, COPYWIN_BOTH); FreeTrainerTowerDataStruct(); } diff --git a/src/union_room.c b/src/union_room.c index ea9b213ab..1eb5f3ed1 100644 --- a/src/union_room.c +++ b/src/union_room.c @@ -687,7 +687,7 @@ static void PrintNumPlayersWaitingForMsg(u8 windowId, u8 capacityCode, u8 count) break; } - CopyWindowToVram(windowId, 2); + CopyWindowToVram(windowId, COPYWIN_GFX); } static void PrintPlayerNameAndIdOnWindow(u8 windowId) @@ -770,7 +770,7 @@ static void Task_TryBecomeLinkLeader(u8 taskId) FillWindowPixelBuffer(data->bButtonCancelWindowId, PIXEL_FILL(2)); UR_AddTextPrinterParameterized(data->bButtonCancelWindowId, 0, gUnknown_845747C, 8, 2, UR_COLOR_WHT_DKE_LTE); PutWindowTilemap(data->bButtonCancelWindowId); - CopyWindowToVram(data->bButtonCancelWindowId, 2); + CopyWindowToVram(data->bButtonCancelWindowId, COPYWIN_GFX); DrawStdWindowFrame(data->listWindowId, FALSE); gMultiuseListMenuTemplate = sListMenuTemplate_PossibleGroupMembers; @@ -779,7 +779,7 @@ static void Task_TryBecomeLinkLeader(u8 taskId) DrawStdWindowFrame(data->nPlayerModeWindowId, FALSE); PutWindowTilemap(data->nPlayerModeWindowId); - CopyWindowToVram(data->nPlayerModeWindowId, 2); + CopyWindowToVram(data->nPlayerModeWindowId, COPYWIN_GFX); CopyBgTilemapBufferToVram(0); data->playerCount = 1; @@ -1034,7 +1034,7 @@ static void Task_TryBecomeLinkLeader(u8 taskId) } else { - if (gReceivedRemoteLinkPlayers != 0) + if (gReceivedRemoteLinkPlayers) { UpdateGameData_GroupLockedIn(TRUE); CreateTask_RunScriptAndFadeToActivity(); @@ -1312,7 +1312,7 @@ static void Task_TryJoinLinkGroup(u8 taskId) FillWindowPixelBuffer(data->bButtonCancelWindowId, PIXEL_FILL(2)); UR_AddTextPrinterParameterized(data->bButtonCancelWindowId, 0, gUnknown_8458FC8, 8, 2, UR_COLOR_WHT_DKE_LTE); PutWindowTilemap(data->bButtonCancelWindowId); - CopyWindowToVram(data->bButtonCancelWindowId, 2); + CopyWindowToVram(data->bButtonCancelWindowId, COPYWIN_GFX); DrawStdWindowFrame(data->listWindowId, FALSE); gMultiuseListMenuTemplate = sListMenuTemplate_UnionRoomGroups; @@ -1322,7 +1322,7 @@ static void Task_TryJoinLinkGroup(u8 taskId) DrawStdWindowFrame(data->playerNameAndIdWindowId, FALSE); PutWindowTilemap(data->playerNameAndIdWindowId); PrintPlayerNameAndIdOnWindow(data->playerNameAndIdWindowId); - CopyWindowToVram(data->playerNameAndIdWindowId, 2); + CopyWindowToVram(data->playerNameAndIdWindowId, COPYWIN_GFX); CopyBgTilemapBufferToVram(0); data->leaderId = 0; @@ -1385,7 +1385,7 @@ static void Task_TryJoinLinkGroup(u8 taskId) } break; case 6: - if (gReceivedRemoteLinkPlayers != 0) + if (gReceivedRemoteLinkPlayers) { sPlayerCurrActivity = data->field_0->arr[data->leaderId].gname_uname.gname.activity; RfuSetErrorStatus(0, 0); @@ -2233,7 +2233,7 @@ static void Task_MEvent_Leader(u8 taskId) { data->state = 13; } - else if (gReceivedRemoteLinkPlayers != 0) + else if (gReceivedRemoteLinkPlayers) { UpdateGameData_GroupLockedIn(TRUE); data->state++; @@ -2313,7 +2313,7 @@ static void Task_CardOrNewsWithFriend(u8 taskId) FillWindowPixelBuffer(data->playerNameAndIdWindowId, PIXEL_FILL(1)); PutWindowTilemap(data->playerNameAndIdWindowId); PrintPlayerNameAndIdOnWindow(data->playerNameAndIdWindowId); - CopyWindowToVram(data->playerNameAndIdWindowId, 2); + CopyWindowToVram(data->playerNameAndIdWindowId, COPYWIN_GFX); CopyBgTilemapBufferToVram(0); data->leaderId = 0; @@ -2365,7 +2365,7 @@ static void Task_CardOrNewsWithFriend(u8 taskId) data->state = 5; break; case 5: - if (gReceivedRemoteLinkPlayers != 0) + if (gReceivedRemoteLinkPlayers) { sPlayerCurrActivity = data->field_0->arr[data->leaderId].gname_uname.gname.activity; data->state = 10; @@ -2530,7 +2530,7 @@ static void Task_CardOrNewsOverWireless(u8 taskId) data->state = 5; break; case 5: - if (gReceivedRemoteLinkPlayers != 0) + if (gReceivedRemoteLinkPlayers) { sPlayerCurrActivity = data->field_0->arr[data->leaderId].gname_uname.gname.activity; data->state = 12; @@ -2855,7 +2855,7 @@ static void Task_RunUnionRoom(u8 taskId) break; } - if (gReceivedRemoteLinkPlayers != 0) + if (gReceivedRemoteLinkPlayers) { CreateTrainerCardInBuffer(gBlockSendBuffer, TRUE); CreateTask(Task_ExchangeCards, 5); @@ -2872,7 +2872,7 @@ static void Task_RunUnionRoom(u8 taskId) } break; case 30: - if (gReceivedRemoteLinkPlayers == 0) + if (!gReceivedRemoteLinkPlayers) { HandleCancelTrade(FALSE); UpdateUnionGroupMemberFacing(taskData[0], taskData[1], data->field_0); @@ -2888,7 +2888,7 @@ static void Task_RunUnionRoom(u8 taskId) var5 = ListMenuHandler_AllItemsAvailable(&data->textState, &data->topListMenuWindowId, &data->topListMenuListMenuId, &sWindowTemplate_InviteToActivity, &sListMenuTemplate_InviteToActivity); if (var5 != -1) { - if (gReceivedRemoteLinkPlayers == 0) + if (!gReceivedRemoteLinkPlayers) { data->state = 28; } @@ -2947,7 +2947,7 @@ static void Task_RunUnionRoom(u8 taskId) data->state = 29; break; case 29: - if (gReceivedRemoteLinkPlayers == 0) + if (!gReceivedRemoteLinkPlayers) { StringCopy(gStringVar4, gUnknown_8458434); data->state = 28; @@ -3064,7 +3064,7 @@ static void Task_RunUnionRoom(u8 taskId) else UnionRoom_ScheduleFieldMessageWithFollowupState(30, gUnknown_84585E8[playerGender]); } - if (gReceivedRemoteLinkPlayers != 0) + if (gReceivedRemoteLinkPlayers) data->state = 16; break; case 11: @@ -3079,7 +3079,7 @@ static void Task_RunUnionRoom(u8 taskId) HandleCancelTrade(FALSE); data->state = 2; } - else if (gReceivedRemoteLinkPlayers != 0) + else if (gReceivedRemoteLinkPlayers) { CreateTrainerCardInBuffer(gBlockSendBuffer, TRUE); CreateTask(Task_ExchangeCards, 5); @@ -3168,7 +3168,7 @@ static void Task_RunUnionRoom(u8 taskId) break; case 36: // You said no - if (gReceivedRemoteLinkPlayers == 0) + if (!gReceivedRemoteLinkPlayers) { sPlayerCurrActivity = IN_UNION_ROOM; UnionRoom_ScheduleFieldMessageWithFollowupState(37, gStringVar4); @@ -3859,7 +3859,7 @@ static u8 CreateTradeBoardWindow(const struct WindowTemplate * template) FillWindowPixelBuffer(windowId, PIXEL_FILL(15)); UR_AddTextPrinterParameterized(windowId, 0, gUnknown_8459378, 8, 1, UR_COLOR_DN5_DN6_LTB); PutWindowTilemap(windowId); - CopyWindowToVram(windowId, 2); + CopyWindowToVram(windowId, COPYWIN_GFX); return windowId; } diff --git a/src/union_room_battle.c b/src/union_room_battle.c index c6b5f485b..3d5ef39eb 100644 --- a/src/union_room_battle.c +++ b/src/union_room_battle.c @@ -78,7 +78,7 @@ static bool32 UnionRoomBattle_PrintTextOnWindow0(s16 * state, const u8 * str, s3 DrawTextBorderOuter(0, 0x001, 0xD); UnionRoomBattle_CreateTextPrinter(0, str, 0, 2, speed); PutWindowTilemap(0); - CopyWindowToVram(0, 3); + CopyWindowToVram(0, COPYWIN_BOTH); (*state)++; break; case 1: @@ -190,7 +190,7 @@ void CB2_UnionRoomBattle(void) } break; case 6: - if (gReceivedRemoteLinkPlayers == 0) + if (!gReceivedRemoteLinkPlayers) { gMain.state++; } @@ -202,7 +202,7 @@ void CB2_UnionRoomBattle(void) } break; case 8: - if (gReceivedRemoteLinkPlayers == 0) + if (!gReceivedRemoteLinkPlayers) { gMain.state++; } diff --git a/src/union_room_chat.c b/src/union_room_chat.c index 4ac4c62cb..5d19dc9cd 100644 --- a/src/union_room_chat.c +++ b/src/union_room_chat.c @@ -543,7 +543,7 @@ static void ChatEntryRoutine_AskQuitChatting(void) } break; case 5: - if (gReceivedRemoteLinkPlayers == 0) + if (!gReceivedRemoteLinkPlayers) { GoToRoutine(CHATENTRYROUTINE_SAVEANDEXIT); } diff --git a/src/union_room_chat_display.c b/src/union_room_chat_display.c index 54aef8d65..27ce26a02 100644 --- a/src/union_room_chat_display.c +++ b/src/union_room_chat_display.c @@ -488,7 +488,7 @@ static bool32 DisplaySubtask_PrintWin3(u8 *state) { case 0: PrintKeyboardSwapTextsOnWin3(); - CopyWindowToVram(3, 3); + CopyWindowToVram(3, COPYWIN_BOTH); break; case 1: return IsDma3ManagerBusyWithBgCopy(); @@ -504,7 +504,7 @@ static bool32 DisplaySubtask_HideWin3(u8 *state) { case 0: ClearWin3(); - CopyWindowToVram(3, 3); + CopyWindowToVram(3, COPYWIN_BOTH); break; case 1: return IsDma3ManagerBusyWithBgCopy(); @@ -524,7 +524,7 @@ static bool32 DisplaySubtask_SwitchPages(u8 *state) return TRUE; PrintCurrentKeyboardPage(); - CopyWindowToVram(2, 2); + CopyWindowToVram(2, COPYWIN_GFX); break; case 1: if (IsDma3ManagerBusyWithBgCopy()) @@ -557,7 +557,7 @@ static bool32 DisplaySubtask_ShowQuitChattingDialog(u8 *state) case 0: PlaceStdMessageWindow(STDMESSAGE_QUIT_CHATTING, 0); PlaceYesNoMenuAt(23, 11, 1); - CopyWindowToVram(sWork->messageWindowId, 3); + CopyWindowToVram(sWork->messageWindowId, COPYWIN_BOTH); break; case 1: return IsDma3ManagerBusyWithBgCopy(); @@ -601,7 +601,7 @@ static bool32 DisplaySubtask_UpdateMessageBuffer(u8 *state) FillWin1Rect(start, length, PIXEL_FILL(0)); str = UnionRoomChat_GetMessageEntryBuffer(); PrintOnWin1Parameterized(0, str, TEXT_COLOR_LIGHT_GREY, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY); - CopyWindowToVram(1, 2); + CopyWindowToVram(1, COPYWIN_GFX); break; case 1: if (!IsDma3ManagerBusyWithBgCopy()) @@ -630,13 +630,13 @@ static bool32 DisplaySubtask_PrintRegisterWhere(u8 *state) length = StringLength_Multibyte(str); FillWin1Rect(var0, length, PIXEL_FILL(6)); PrintOnWin1Parameterized(var0, str, TEXT_COLOR_TRANSPARENT, TEXT_COLOR_RED, TEXT_COLOR_LIGHT_RED); - CopyWindowToVram(1, 2); + CopyWindowToVram(1, COPYWIN_GFX); break; case 1: if (!IsDma3ManagerBusyWithBgCopy()) { PlaceStdMessageWindow(STDMESSAGE_REGISTER_WHERE, 16); - CopyWindowToVram(sWork->messageWindowId, 3); + CopyWindowToVram(sWork->messageWindowId, COPYWIN_BOTH); } else { @@ -671,13 +671,13 @@ static bool32 DisplaySubtask_CancelRegister(u8 *state) length = StringLength_Multibyte(str); FillWin1Rect(x, length, PIXEL_FILL(0)); PrintOnWin1Parameterized(x, str, TEXT_COLOR_LIGHT_GREY, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY); - CopyWindowToVram(1, 2); + CopyWindowToVram(1, COPYWIN_GFX); break; case 1: if (!IsDma3ManagerBusyWithBgCopy()) { HideStdMessageWindow(); - CopyWindowToVram(sWork->messageWindowId, 3); + CopyWindowToVram(sWork->messageWindowId, COPYWIN_BOTH); } else { @@ -709,7 +709,7 @@ static bool32 DisplaySubtask_ReturnToKeyboard(u8 *state) { case 0: PrintCurrentKeyboardPage(); - CopyWindowToVram(2, 2); + CopyWindowToVram(2, COPYWIN_GFX); (*state)++; break; case 1: @@ -735,7 +735,7 @@ static bool32 DisplaySubtask_ScrollChat(u8 *state) str = UnionRoomChat_GetLastReceivedMessage(); colorIdx = UnionRoomChat_GetReceivedPlayerIndex(); PrintTextOnWin0Colorized(row, str, colorIdx); - CopyWindowToVram(0, 2); + CopyWindowToVram(0, COPYWIN_GFX); break; case 1: if (IsDma3ManagerBusyWithBgCopy()) @@ -755,7 +755,7 @@ static bool32 DisplaySubtask_ScrollChat(u8 *state) // fall through case 2: ScrollWindow(0, 0, 5, PIXEL_FILL(1)); - CopyWindowToVram(0, 2); + CopyWindowToVram(0, COPYWIN_GFX); sWork->scrollCount++; (*state)++; // fall through @@ -800,7 +800,7 @@ static bool32 DisplaySubtask_PrintInputText(u8 *state) { case 0: PlaceStdMessageWindow(STDMESSAGE_INPUT_TEXT, 16); - CopyWindowToVram(sWork->messageWindowId, 3); + CopyWindowToVram(sWork->messageWindowId, COPYWIN_BOTH); (*state)++; break; case 1: @@ -816,7 +816,7 @@ static bool32 DisplaySubtask_PrintExitingChat(u8 *state) { case 0: PlaceStdMessageWindow(STDMESSAGE_EXITING_CHAT, 0); - CopyWindowToVram(sWork->messageWindowId, 3); + CopyWindowToVram(sWork->messageWindowId, COPYWIN_BOTH); (*state)++; break; case 1: @@ -837,7 +837,7 @@ static bool32 DisplaySubtask_PrintLeaderLeft(u8 *state) str = UnionRoomChat_GetNameOfPlayerWhoDisbandedChat(); DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, str); PlaceStdMessageWindow(STDMESSAGE_LEADER_LEFT, 0); - CopyWindowToVram(sWork->messageWindowId, 3); + CopyWindowToVram(sWork->messageWindowId, COPYWIN_BOTH); (*state)++; break; case 1: @@ -854,7 +854,7 @@ static bool32 DisplaySubtask_AskSave(u8 *state) case 0: PlaceStdMessageWindow(STDMESSAGE_ASK_SAVE, 0); PlaceYesNoMenuAt(23, 10, 1); - CopyWindowToVram(sWork->messageWindowId, 3); + CopyWindowToVram(sWork->messageWindowId, COPYWIN_BOTH); (*state)++; break; case 1: @@ -871,7 +871,7 @@ static bool32 DisplaySubtask_AskOverwriteSave(u8 *state) case 0: PlaceStdMessageWindow(STDMESSAGE_ASK_OVERWRITE, 0); PlaceYesNoMenuAt(23, 10, 1); - CopyWindowToVram(sWork->messageWindowId, 3); + CopyWindowToVram(sWork->messageWindowId, COPYWIN_BOTH); (*state)++; break; case 1: @@ -887,7 +887,7 @@ static bool32 DisplaySubtask_PrintSavingDontTurnOffPower(u8 *state) { case 0: PlaceStdMessageWindow(STDMESSAGE_SAVING_NO_OFF, 0); - CopyWindowToVram(sWork->messageWindowId, 3); + CopyWindowToVram(sWork->messageWindowId, COPYWIN_BOTH); (*state)++; break; case 1: @@ -905,7 +905,7 @@ static bool32 DisplaySubtask_PrintSavedTheGame(u8 *state) DynamicPlaceholderTextUtil_Reset(); DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gSaveBlock2Ptr->playerName); PlaceStdMessageWindow(STDMESSAGE_SAVED_THE_GAME, 0); - CopyWindowToVram(sWork->messageWindowId, 3); + CopyWindowToVram(sWork->messageWindowId, COPYWIN_BOTH); (*state)++; break; case 1: @@ -922,7 +922,7 @@ static bool32 DisplaySubtask_ShowConfirmLeaderLeaveDialog(u8 *state) case 0: PlaceStdMessageWindow(STDMESSAGE_WARN_LEADER_LEAVE, 0); PlaceYesNoMenuAt(23, 10, 1); - CopyWindowToVram(sWork->messageWindowId, 3); + CopyWindowToVram(sWork->messageWindowId, COPYWIN_BOTH); (*state)++; break; case 1: @@ -1252,7 +1252,7 @@ static void SetBgTilemapWorkBuffers(void) static void ClearBg0(void) { - RequestDma3Fill(0, (void *)BG_CHAR_ADDR(0), 0x20, 1); + RequestDma3Fill(0, (void *)BG_CHAR_ADDR(0), 0x20, DMA3_32BIT); FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 32, 32); CopyBgTilemapBufferToVram(0); } @@ -1279,7 +1279,7 @@ static void LoadLinkMiscMenuGfx(void) static void LoadBg1Pal8(void) { LoadPalette(sBg1Pal8, 0x80, 0x20); - RequestDma3Fill(0, (void *)BG_CHAR_ADDR(1) + 0x20, 0x20, 1); + RequestDma3Fill(0, (void *)BG_CHAR_ADDR(1) + 0x20, 0x20, DMA3_32BIT); } static void LoadWin0(void) @@ -1287,21 +1287,21 @@ static void LoadWin0(void) LoadPalette(sWin0PalF, 0xF0, 0x20); PutWindowTilemap(0); FillWindowPixelBuffer(0, PIXEL_FILL(1)); - CopyWindowToVram(0, 3); + CopyWindowToVram(0, COPYWIN_BOTH); } static void LoadWin2(void) { PutWindowTilemap(2); PrintCurrentKeyboardPage(); - CopyWindowToVram(2, 3); + CopyWindowToVram(2, COPYWIN_BOTH); } static void LoadWin1(void) { FillWindowPixelBuffer(1, PIXEL_FILL(0)); PutWindowTilemap(1); - CopyWindowToVram(1, 3); + CopyWindowToVram(1, COPYWIN_BOTH); } static void LoadWin3(void) diff --git a/src/util.c b/src/util.c index b32799584..5423e0a2d 100644 --- a/src/util.c +++ b/src/util.c @@ -120,13 +120,13 @@ u8 CreateInvisibleSpriteWithCallback(void (*callback)(struct Sprite *)) return sprite; } -void StoreWordInTwoHalfwords(u16 *h, u32 w) +void StoreWordInTwoHalfwords(u16 *h, unsigned w) { h[0] = (u16)(w); h[1] = (u16)(w >> 16); } -void LoadWordFromTwoHalfwords(u16 *h, u32 *w) +void LoadWordFromTwoHalfwords(u16 *h, unsigned *w) { *w = h[0] | (s16)h[1] << 16; } diff --git a/src/window.c b/src/window.c index a7cec4186..1828202a6 100644 --- a/src/window.c +++ b/src/window.c @@ -21,11 +21,11 @@ bool16 InitWindows(const struct WindowTemplate *templates) void *bgTilemapBuffer; int j; u8 bgLayer; - u16 attrib; + u16 bgSize; u8* allocatedTilemapBuffer; int allocatedBaseBlock; - for (i = 0; i < 0x4; ++i) + for (i = 0; i < 4; ++i) { bgTilemapBuffer = GetBgTilemapBuffer(i); if (bgTilemapBuffer != NULL) @@ -34,13 +34,13 @@ bool16 InitWindows(const struct WindowTemplate *templates) gWindowBgTilemapBuffers[i] = bgTilemapBuffer; } - for (i = 0; i < 0x20; ++i) + for (i = 0; i < WINDOWS_MAX; ++i) { gWindows[i].window = sDummyWindowTemplate; gWindows[i].tileData = NULL; } - for (i = 0, allocatedBaseBlock = 0, bgLayer = templates[i].bg; bgLayer != 0xFF && i < 0x20; ++i, bgLayer = templates[i].bg) + for (i = 0, allocatedBaseBlock = 0, bgLayer = templates[i].bg; bgLayer != 0xFF && i < WINDOWS_MAX; ++i, bgLayer = templates[i].bg) { if (gWindowTileAutoAllocEnabled == TRUE) { @@ -51,11 +51,11 @@ bool16 InitWindows(const struct WindowTemplate *templates) if (gWindowBgTilemapBuffers[bgLayer] == NULL) { - attrib = GetBgAttribute(bgLayer, 0x8); + bgSize = GetBgAttribute(bgLayer, BG_ATTR_MAPSIZE); - if (attrib != 0xFFFF) + if (bgSize != 0xFFFF) { - allocatedTilemapBuffer = Alloc(attrib); + allocatedTilemapBuffer = Alloc(bgSize); if (allocatedTilemapBuffer == NULL) { @@ -63,7 +63,7 @@ bool16 InitWindows(const struct WindowTemplate *templates) return FALSE; } - for (j = 0; j < attrib; ++j) + for (j = 0; j < bgSize; ++j) allocatedTilemapBuffer[j] = 0; gWindowBgTilemapBuffers[bgLayer] = allocatedTilemapBuffer; @@ -103,17 +103,17 @@ u16 AddWindow(const struct WindowTemplate *template) u16 win; u8 bgLayer; int allocatedBaseBlock; - u16 attrib; + u16 bgSize; u8 *allocatedTilemapBuffer; int i; - for (win = 0; win < 0x20; ++win) + for (win = 0; win < WINDOWS_MAX; ++win) { if ((bgLayer = gWindows[win].window.bg) == 0xFF) break; } - if (win == 0x20) + if (win == WINDOWS_MAX) return 0xFF; bgLayer = template->bg; @@ -129,16 +129,16 @@ u16 AddWindow(const struct WindowTemplate *template) if (gWindowBgTilemapBuffers[bgLayer] == NULL) { - attrib = GetBgAttribute(bgLayer, 0x8); + bgSize = GetBgAttribute(bgLayer, BG_ATTR_MAPSIZE); - if (attrib != 0xFFFF) + if (bgSize != 0xFFFF) { - allocatedTilemapBuffer = Alloc(attrib); + allocatedTilemapBuffer = Alloc(bgSize); if (allocatedTilemapBuffer == NULL) return 0xFF; - for (i = 0; i < attrib; ++i) + for (i = 0; i < bgSize; ++i) allocatedTilemapBuffer[i] = 0; gWindowBgTilemapBuffers[bgLayer] = allocatedTilemapBuffer; @@ -210,7 +210,7 @@ void FreeAllWindowBuffers(void) } } - for (i = 0; i < 0x20; ++i) + for (i = 0; i < WINDOWS_MAX; ++i) { if (gWindows[i].tileData != NULL) { @@ -227,13 +227,13 @@ void CopyWindowToVram(u8 windowId, u8 mode) switch (mode) { - case 1: + case COPYWIN_MAP: CopyBgTilemapBufferToVram(windowLocal.window.bg); break; - case 2: + case COPYWIN_GFX: LoadBgTiles(windowLocal.window.bg, windowLocal.tileData, windowSize, windowLocal.window.baseBlock); break; - case 3: + case COPYWIN_BOTH: LoadBgTiles(windowLocal.window.bg, windowLocal.tileData, windowSize, windowLocal.window.baseBlock); CopyBgTilemapBufferToVram(windowLocal.window.bg); break; @@ -246,7 +246,7 @@ void PutWindowTilemap(u8 windowId) WriteSequenceToBgTilemapBuffer( windowLocal.window.bg, - GetBgAttribute(windowLocal.window.bg, 0xA) + windowLocal.window.baseBlock, + GetBgAttribute(windowLocal.window.bg, BG_ATTR_BASETILE) + windowLocal.window.baseBlock, windowLocal.window.tilemapLeft, windowLocal.window.tilemapTop, windowLocal.window.width, @@ -258,7 +258,7 @@ void PutWindowTilemap(u8 windowId) void PutWindowRectTilemapOverridePalette(u8 windowId, u8 x, u8 y, u8 width, u8 height, u8 palette) { struct Window windowLocal = gWindows[windowId]; - u16 currentRow = windowLocal.window.baseBlock + (y * windowLocal.window.width) + x + GetBgAttribute(windowLocal.window.bg, 0xA); + u16 currentRow = windowLocal.window.baseBlock + (y * windowLocal.window.width) + x + GetBgAttribute(windowLocal.window.bg, BG_ATTR_BASETILE); int i; for (i = 0; i < height; ++i) @@ -294,7 +294,7 @@ void ClearWindowTilemap(u8 windowId) void PutWindowRectTilemap(u8 windowId, u8 x, u8 y, u8 width, u8 height) { struct Window windowLocal = gWindows[windowId]; - u16 currentRow = windowLocal.window.baseBlock + (y * windowLocal.window.width) + x + GetBgAttribute(windowLocal.window.bg, 0xA); + u16 currentRow = windowLocal.window.baseBlock + (y * windowLocal.window.width) + x + GetBgAttribute(windowLocal.window.bg, BG_ATTR_BASETILE); int i; for (i = 0; i < height; ++i) diff --git a/src/window_8bpp.c b/src/window_8bpp.c index 441dbbef8..a96785339 100644 --- a/src/window_8bpp.c +++ b/src/window_8bpp.c @@ -16,7 +16,7 @@ u16 AddWindow8Bit(const struct WindowTemplate *template) u8* memAddress; u8 bgLayer; - for (windowId = 0; windowId < 32; windowId++) + for (windowId = 0; windowId < WINDOWS_MAX; windowId++) { if (gWindows[windowId].window.bg == 0xFF) break; @@ -24,9 +24,9 @@ u16 AddWindow8Bit(const struct WindowTemplate *template) if (windowId == WINDOWS_MAX) return 0xFF; bgLayer = template->bg; - if (gWindowBgTilemapBuffers[bgLayer] == 0) + if (gWindowBgTilemapBuffers[bgLayer] == NULL) { - u16 attribute = GetBgAttribute(bgLayer, 8); + u16 attribute = GetBgAttribute(bgLayer, BG_ATTR_MAPSIZE); if (attribute != 0xFFFF) { s32 i; @@ -101,13 +101,13 @@ void CopyWindowToVram8Bit(u8 windowId, u8 mode) switch (mode) { - case 1: + case COPYWIN_MAP: CopyBgTilemapBufferToVram(sWindowPtr->window.bg); break; - case 2: + case COPYWIN_GFX: LoadBgTiles(sWindowPtr->window.bg, sWindowPtr->tileData, sWindowSize, sWindowPtr->window.baseBlock); break; - case 3: + case COPYWIN_BOTH: LoadBgTiles(sWindowPtr->window.bg, sWindowPtr->tileData, sWindowSize, sWindowPtr->window.baseBlock); CopyBgTilemapBufferToVram(sWindowPtr->window.bg); break; diff --git a/src/wireless_communication_status_screen.c b/src/wireless_communication_status_screen.c index f8f552711..f67da122f 100644 --- a/src/wireless_communication_status_screen.c +++ b/src/wireless_communication_status_screen.c @@ -254,9 +254,9 @@ static void PrintHeaderTexts(void) } WCSS_AddTextPrinterParameterized(1, 3, sHeaderTextPtrs[i + 1], 0, 30 * i + 10, 2); PutWindowTilemap(0); - CopyWindowToVram(0, 2); + CopyWindowToVram(0, COPYWIN_GFX); PutWindowTilemap(1); - CopyWindowToVram(1, 2); + CopyWindowToVram(1, COPYWIN_GFX); } static void Task_WirelessCommunicationScreen(u8 taskId) @@ -292,7 +292,7 @@ static void Task_WirelessCommunicationScreen(u8 taskId) WCSS_AddTextPrinterParameterized(2, 3, gStringVar4, 4, 100, 2); } PutWindowTilemap(2); - CopyWindowToVram(2, 3); + CopyWindowToVram(2, COPYWIN_BOTH); } if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON)) { |