summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjiangzhengwenjz <jiangzhengwenjzw@qq.com>2019-06-24 14:37:45 +0800
committerjiangzhengwenjz <jiangzhengwenjzw@qq.com>2019-06-26 04:52:34 +0800
commitefad45497dfb69cf2879d0bf2e318eaf8fc2252f (patch)
tree2ca2461800c7a830db7a7d023a8a98cf5d274d54 /src
parent5b7c34096cff301c4d74bb2e67a7164b66bcc5dd (diff)
through AddTextPrinterParameterized2()
Diffstat (limited to 'src')
-rw-r--r--src/bag.c8
-rw-r--r--src/daycare.c2
-rw-r--r--src/dma3_manager.c6
-rw-r--r--src/egg_hatch.c2
-rw-r--r--src/fieldmap.c4
-rw-r--r--src/fldeff_softboiled.c4
-rw-r--r--src/item_pc.c34
-rw-r--r--src/mevent_8145654.c8
-rw-r--r--src/new_menu_helpers.c281
-rw-r--r--src/oak_speech.c16
-rw-r--r--src/quest_log.c4
-rw-r--r--src/teachy_tv.c32
-rw-r--r--src/tm_case.c64
13 files changed, 373 insertions, 92 deletions
diff --git a/src/bag.c b/src/bag.c
index f2fc40d93..a580f7603 100644
--- a/src/bag.c
+++ b/src/bag.c
@@ -219,7 +219,7 @@ void sub_810B858(void)
FillWindowPixelBuffer(i, 0x00);
PutWindowTilemap(i);
}
- schedule_bg_copy_tilemap_to_vram(0);
+ ScheduleBgCopyTilemapToVram(0);
for (i = 0; i < 11; i++)
{
gUnknown_203AD34[i] = 0xFF;
@@ -258,7 +258,7 @@ u8 sub_810B9DC(u8 a0, u8 a1)
{
SetWindowBorderStyle(gUnknown_203AD34[a0], FALSE, 0x081, 0x0C);
}
- schedule_bg_copy_tilemap_to_vram(0);
+ ScheduleBgCopyTilemapToVram(0);
}
return gUnknown_203AD34[a0];
}
@@ -268,7 +268,7 @@ void sub_810BA3C(u8 a0)
ClearMenuWindow(gUnknown_203AD34[a0], FALSE);
ClearWindowTilemap(gUnknown_203AD34[a0]);
RemoveWindow(gUnknown_203AD34[a0]);
- schedule_bg_copy_tilemap_to_vram(0);
+ ScheduleBgCopyTilemapToVram(0);
gUnknown_203AD34[a0] = 0xFF;
}
@@ -289,7 +289,7 @@ void sub_810BA9C(u8 a0)
ClearWindowTilemap(gUnknown_203AD34[a0]);
RemoveWindow(gUnknown_203AD34[a0]);
PutWindowTilemap(1);
- schedule_bg_copy_tilemap_to_vram(0);
+ ScheduleBgCopyTilemapToVram(0);
gUnknown_203AD34[a0] = 0xFF;
}
diff --git a/src/daycare.c b/src/daycare.c
index 206e0b383..cc98da28e 100644
--- a/src/daycare.c
+++ b/src/daycare.c
@@ -1824,7 +1824,7 @@ static void CB2_EggHatch_0(void)
SetVBlankCallback(VBlankCB_EggHatch);
gSpecialVar_0x8005 = GetCurrentMapMusic();
- reset_temp_tile_data_buffers();
+ ResetTempTileDataBuffers();
ResetBgsAndClearDma3BusyFlags(0);
InitBgsFromTemplates(0, sBgTemplates_EggHatch, ARRAY_COUNT(sBgTemplates_EggHatch));
diff --git a/src/dma3_manager.c b/src/dma3_manager.c
index 10049a566..a06af2781 100644
--- a/src/dma3_manager.c
+++ b/src/dma3_manager.c
@@ -429,7 +429,7 @@ _08000E46:\n\
}
#endif
-int RequestDma3Copy(const void *src, void *dest, u16 size, u8 mode)
+s16 RequestDma3Copy(const void *src, void *dest, u16 size, u8 mode)
{
int cursor;
int var = 0;
@@ -466,7 +466,7 @@ int RequestDma3Copy(const void *src, void *dest, u16 size, u8 mode)
return -1;
}
-int RequestDma3Fill(s32 value, void *dest, u16 size, u8 mode)
+s16 RequestDma3Fill(s32 value, void *dest, u16 size, u8 mode)
{
int cursor;
int var = 0;
@@ -504,7 +504,7 @@ int RequestDma3Fill(s32 value, void *dest, u16 size, u8 mode)
return -1;
}
-int CheckForSpaceForDma3Request(s16 index)
+s16 CheckForSpaceForDma3Request(s16 index)
{
int current = 0;
diff --git a/src/egg_hatch.c b/src/egg_hatch.c
index 5e27a6482..1777a61f4 100644
--- a/src/egg_hatch.c
+++ b/src/egg_hatch.c
@@ -493,7 +493,7 @@ static void CB2_EggHatch_0(void)
SetVBlankCallback(VBlankCB_EggHatch);
gSpecialVar_0x8005 = GetCurrentMapMusic();
- reset_temp_tile_data_buffers();
+ ResetTempTileDataBuffers();
ResetBgsAndClearDma3BusyFlags(0);
InitBgsFromTemplates(0, sBgTemplates_EggHatch, ARRAY_COUNT(sBgTemplates_EggHatch));
diff --git a/src/fieldmap.c b/src/fieldmap.c
index 5d11c7d99..2683eaf62 100644
--- a/src/fieldmap.c
+++ b/src/fieldmap.c
@@ -897,7 +897,7 @@ void copy_tileset_patterns_to_vram(struct Tileset const *tileset, u16 numTiles,
if (!tileset->isCompressed)
LoadBgTiles(2, tileset->tiles, numTiles * 32, offset);
else
- sub_80F68F0(2, tileset->tiles, numTiles * 32, offset, 0);
+ DecompressAndCopyTileDataToVram2(2, tileset->tiles, numTiles * 32, offset, 0);
}
}
@@ -908,7 +908,7 @@ void copy_tileset_patterns_to_vram2(struct Tileset const *tileset, u16 numTiles,
if (!tileset->isCompressed)
LoadBgTiles(2, tileset->tiles, numTiles * 32, offset);
else
- sub_80F69E8(2, tileset->tiles, numTiles * 32, offset, 0);
+ DecompressAndLoadBgGfxUsingHeap2(2, tileset->tiles, numTiles * 32, offset, 0);
}
}
diff --git a/src/fldeff_softboiled.c b/src/fldeff_softboiled.c
index 50c715388..a31678669 100644
--- a/src/fldeff_softboiled.c
+++ b/src/fldeff_softboiled.c
@@ -72,7 +72,7 @@ void sub_80E583C(u8 taskId)
GetMonNickname(&gPlayerParty[gUnknown_203B0A0.unkA], gStringVar1);
StringExpandPlaceholders(gStringVar4, gUnknown_8416F27);
sub_81202F8(gStringVar4, 0);
- schedule_bg_copy_tilemap_to_vram(2);
+ ScheduleBgCopyTilemapToVram(2);
gTasks[taskId].func = sub_80E58A0;
}
@@ -104,6 +104,6 @@ void sub_80E5934(u8 taskId)
{
PlaySE(SE_SELECT);
sub_81202F8(gUnknown_84169F8, 0);
- schedule_bg_copy_tilemap_to_vram(2);
+ ScheduleBgCopyTilemapToVram(2);
gTasks[taskId].func = sub_80E5900;
}
diff --git a/src/item_pc.c b/src/item_pc.c
index afc82a73f..891fba04a 100644
--- a/src/item_pc.c
+++ b/src/item_pc.c
@@ -247,7 +247,7 @@ static void ItemPc_MainCB(void)
RunTasks();
AnimateSprites();
BuildOamBuffer();
- do_scheduled_bg_tilemap_copies_to_vram();
+ DoScheduledBgTilemapCopiesToVram();
UpdatePaletteFade();
}
@@ -276,7 +276,7 @@ static bool8 ItemPc_DoGfxSetup(void)
{
case 0:
SetVBlankHBlankCallbacksToNull();
- clear_scheduled_bg_copies_to_vram();
+ ClearScheduledBgCopiesToVram();
gMain.state++;
break;
case 1:
@@ -423,7 +423,7 @@ static bool8 ItemPc_InitBgs(void)
ResetBgsAndClearDma3BusyFlags(0);
InitBgsFromTemplates(0, sBgTemplates, NELEMS(sBgTemplates));
SetBgTilemapBuffer(1, sBg1TilemapBuffer);
- schedule_bg_copy_tilemap_to_vram(1);
+ ScheduleBgCopyTilemapToVram(1);
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON);
SetGpuReg(REG_OFFSET_BLDCNT , 0);
ShowBg(0);
@@ -436,12 +436,12 @@ static bool8 ItemPc_LoadGraphics(void)
switch (sStateDataPtr->data[0])
{
case 0:
- reset_temp_tile_data_buffers();
- decompress_and_copy_tile_data_to_vram(1, gItemPcTiles, 0, 0, 0);
+ ResetTempTileDataBuffers();
+ DecompressAndCopyTileDataToVram(1, gItemPcTiles, 0, 0, 0);
sStateDataPtr->data[0]++;
break;
case 1:
- if (free_temp_tile_data_buffers_if_possible() != TRUE)
+ if (FreeTempTileDataBuffersIfPossible() != TRUE)
{
LZDecompressWram(gItemPcTilemap, sBg1TilemapBuffer);
sStateDataPtr->data[0]++;
@@ -710,7 +710,7 @@ static void ItemPc_SetScrollPosition(void)
static void ItemPc_SetMessageWindowPalette(int a0)
{
SetBgRectPal(1, 0, 14, 30, 6, a0 + 1);
- schedule_bg_copy_tilemap_to_vram(1);
+ ScheduleBgCopyTilemapToVram(1);
}
void ItemPc_SetInitializedFlag(u8 a0)
@@ -849,7 +849,7 @@ static void Task_ItemPcSubmenuInit(u8 taskId)
CopyItemName(ItemPc_GetItemIdBySlotId(data[1]), gStringVar1);
StringExpandPlaceholders(gStringVar4, gOtherText_StrVar1);
ItemPc_AddTextPrinterParameterized(windowId, 2, gStringVar4, 0, 2, 1, 0, 0, 1);
- schedule_bg_copy_tilemap_to_vram(0);
+ ScheduleBgCopyTilemapToVram(0);
gTasks[taskId].func = Task_ItemPcSubmenuRun;
}
@@ -881,7 +881,7 @@ static void Task_ItemPcWithdraw(u8 taskId)
if (ItemPc_GetItemQuantityBySlotId(data[1]) == 1)
{
PutWindowTilemap(0);
- schedule_bg_copy_tilemap_to_vram(0);
+ ScheduleBgCopyTilemapToVram(0);
ItemPc_DoWithdraw(taskId);
}
else
@@ -952,7 +952,7 @@ static void Task_ItemPcCleanUpWithdraw(u8 taskId)
ItemPc_SetCursorPosition();
ItemPc_BuildListMenuTemplate();
data[0] = ListMenuInit(&gMultiuseListMenuTemplate, sListMenuState.scroll, sListMenuState.row);
- schedule_bg_copy_tilemap_to_vram(0);
+ ScheduleBgCopyTilemapToVram(0);
ItemPc_ReturnFromSubmenu(taskId);
}
@@ -967,7 +967,7 @@ static void ItemPc_WithdrawMultipleInitWindow(u16 slotId)
StringExpandPlaceholders(gStringVar4, gText_TimesStrVar1);
ItemPc_SetBorderStyleOnWindow(3);
ItemPc_AddTextPrinterParameterized(3, 0, gStringVar4, 8, 10, 1, 0, 0, 1);
- schedule_bg_copy_tilemap_to_vram(0);
+ ScheduleBgCopyTilemapToVram(0);
}
static void sub_810E670(s16 quantity)
@@ -991,7 +991,7 @@ static void Task_ItemPcHandleWithdrawMultiple(u8 taskId)
ClearWindowTilemap(3);
PutWindowTilemap(0);
ItemPc_PrintOrRemoveCursor(data[0], 1);
- schedule_bg_copy_tilemap_to_vram(0);
+ ScheduleBgCopyTilemapToVram(0);
ItemPc_RemoveScrollIndicatorArrowPair();
ItemPc_DoWithdraw(taskId);
}
@@ -1004,7 +1004,7 @@ static void Task_ItemPcHandleWithdrawMultiple(u8 taskId)
PutWindowTilemap(0);
PutWindowTilemap(1);
ItemPc_PrintOrRemoveCursor(data[0], 1);
- schedule_bg_copy_tilemap_to_vram(0);
+ ScheduleBgCopyTilemapToVram(0);
ItemPc_RemoveScrollIndicatorArrowPair();
ItemPc_ReturnFromSubmenu(taskId);
}
@@ -1049,7 +1049,7 @@ static void gTask_ItemPcWaitButtonAndExitSubmenu(u8 taskId)
ClearWindowTilemap(5);
PutWindowTilemap(1);
ItemPc_PrintOrRemoveCursor(data[0], 1);
- schedule_bg_copy_tilemap_to_vram(0);
+ ScheduleBgCopyTilemapToVram(0);
ItemPc_ReturnFromSubmenu(taskId);
}
}
@@ -1064,7 +1064,7 @@ static void Task_ItemPcCancel(u8 taskId)
PutWindowTilemap(0);
PutWindowTilemap(1);
ItemPc_PrintOrRemoveCursor(data[0], 1);
- schedule_bg_copy_tilemap_to_vram(0);
+ ScheduleBgCopyTilemapToVram(0);
ItemPc_ReturnFromSubmenu(taskId);
}
@@ -1084,7 +1084,7 @@ static void ItemPc_InitWindows(void)
FillWindowPixelBuffer(i, 0x00);
PutWindowTilemap(i);
}
- schedule_bg_copy_tilemap_to_vram(0);
+ ScheduleBgCopyTilemapToVram(0);
for (i = 0; i < 3; i++)
sSubmenuWindowIds[i] = 0xFF;
}
@@ -1146,5 +1146,5 @@ static u8 ItemPc_GetSubwindow(u8 idx)
static void ItemPc_PrintOnWindow5WithContinueTask(u8 taskId, const u8 * str, TaskFunc taskFunc)
{
DisplayMessageAndContinueTask(taskId, 5, 0x3AC, 0x0B, 2, GetTextSpeedSetting(), str, taskFunc);
- schedule_bg_copy_tilemap_to_vram(0);
+ ScheduleBgCopyTilemapToVram(0);
}
diff --git a/src/mevent_8145654.c b/src/mevent_8145654.c
index 034a07679..49b08a99c 100644
--- a/src/mevent_8145654.c
+++ b/src/mevent_8145654.c
@@ -175,13 +175,13 @@ s32 FadeToWonderCardMenu(void)
CopyBgTilemapBufferToVram(0);
CopyBgTilemapBufferToVram(1);
CopyBgTilemapBufferToVram(2);
- decompress_and_copy_tile_data_to_vram(2, gUnknown_203F3C8->unk_0170->tiles, 0, 0x008, 0);
+ DecompressAndCopyTileDataToVram(2, gUnknown_203F3C8->unk_0170->tiles, 0, 0x008, 0);
gUnknown_203F3C8->unk_0176[0] = AddWindow(&gUnknown_8467074[0]);
gUnknown_203F3C8->unk_0176[1] = AddWindow(&gUnknown_8467074[1]);
gUnknown_203F3C8->unk_0176[2] = AddWindow(&gUnknown_8467074[2]);
break;
case 3:
- if (free_temp_tile_data_buffers_if_possible())
+ if (FreeTempTileDataBuffersIfPossible())
return 0;
gPaletteFade.bufferTransferDisabled = TRUE;
LoadPalette(gUnknown_203F3C8->unk_0170->pal, 0x10, 0x20);
@@ -565,12 +565,12 @@ s32 FadeToWonderNewsMenu(void)
CopyBgTilemapBufferToVram(1);
CopyBgTilemapBufferToVram(2);
CopyBgTilemapBufferToVram(3);
- decompress_and_copy_tile_data_to_vram(3, gUnknown_203F3CC->unk_01BC->tiles, 0, 8, 0);
+ DecompressAndCopyTileDataToVram(3, gUnknown_203F3CC->unk_01BC->tiles, 0, 8, 0);
gUnknown_203F3CC->unk_01C8[0] = AddWindow(&gUnknown_8468040[0]);
gUnknown_203F3CC->unk_01C8[1] = AddWindow(&gUnknown_8468040[1]);
break;
case 3:
- if (free_temp_tile_data_buffers_if_possible())
+ if (FreeTempTileDataBuffersIfPossible())
return 0;
gPaletteFade.bufferTransferDisabled = TRUE;
LoadPalette(gUnknown_203F3CC->unk_01BC->pal, 0x10, 0x20);
diff --git a/src/new_menu_helpers.c b/src/new_menu_helpers.c
new file mode 100644
index 000000000..7abe277e1
--- /dev/null
+++ b/src/new_menu_helpers.c
@@ -0,0 +1,281 @@
+#include "global.h"
+#include "malloc.h"
+#include "dma3.h"
+#include "task.h"
+#include "bg.h"
+#include "gpu_regs.h"
+#include "window.h"
+#include "menu.h"
+#include "menu_helpers.h"
+#include "new_menu_helpers.h"
+#include "quest_log.h"
+#include "text.h"
+
+static EWRAM_DATA bool8 gUnknown_203AB58[4] = {FALSE}; // knizz: bgmaps_that_need_syncing
+
+EWRAM_DATA u16 gUnknown_203AB5C;
+EWRAM_DATA void *gUnknown_203AB60[0x20];
+extern const struct WindowTemplate sStandardTextBox_WindowTemplates[];
+EWRAM_DATA u8 sStartMenuWindowId;
+
+u16 CopyDecompressedTileDataToVram(u8 bgId, const void *src, u16 size, u16 offset, u8 mode);
+void TaskFreeBufAfterCopyingTileDataToVram(u8 taskId);
+
+void ClearScheduledBgCopiesToVram(void)
+{
+ memset(gUnknown_203AB58, 0, sizeof(gUnknown_203AB58));
+}
+
+void ScheduleBgCopyTilemapToVram(u8 bgId)
+{
+ gUnknown_203AB58[bgId] = TRUE;
+}
+
+void DoScheduledBgTilemapCopiesToVram(void)
+{
+ if (gUnknown_203AB58[0] == TRUE)
+ {
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_203AB58[0] = FALSE;
+ }
+ if (gUnknown_203AB58[1] == TRUE)
+ {
+ CopyBgTilemapBufferToVram(1);
+ gUnknown_203AB58[1] = FALSE;
+ }
+ if (gUnknown_203AB58[2] == TRUE)
+ {
+ CopyBgTilemapBufferToVram(2);
+ gUnknown_203AB58[2] = FALSE;
+ }
+ if (gUnknown_203AB58[3] == TRUE)
+ {
+ CopyBgTilemapBufferToVram(3);
+ gUnknown_203AB58[3] = FALSE;
+ }
+}
+
+void ResetTempTileDataBuffers(void)
+{
+ int i;
+ for (i = 0; i < (s32)ARRAY_COUNT(gUnknown_203AB60); i++)
+ {
+ gUnknown_203AB60[i] = NULL;
+ }
+ gUnknown_203AB5C = 0;
+}
+
+bool8 FreeTempTileDataBuffersIfPossible(void)
+{
+ int i;
+
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ if (gUnknown_203AB5C)
+ {
+ for (i = 0; i < gUnknown_203AB5C; i++)
+ {
+ FREE_AND_SET_NULL(gUnknown_203AB60[i]);
+ }
+ gUnknown_203AB5C = 0;
+ }
+ return FALSE;
+ }
+ else
+ {
+ return TRUE;
+ }
+}
+
+void *DecompressAndCopyTileDataToVram(u8 bgId, const void *src, u32 size, u16 offset, u8 mode)
+{
+ u32 sizeOut;
+ if (gUnknown_203AB5C < ARRAY_COUNT(gUnknown_203AB60))
+ {
+ void *ptr = MallocAndDecompress(src, &sizeOut);
+ if (!size)
+ size = sizeOut;
+ if (ptr)
+ {
+ CopyDecompressedTileDataToVram(bgId, ptr, size, offset, mode);
+ gUnknown_203AB60[gUnknown_203AB5C++] = ptr;
+ }
+ return ptr;
+ }
+ return NULL;
+}
+
+void *DecompressAndCopyTileDataToVram2(u8 bgId, const void *src, u32 size, u16 offset, u8 mode)
+{
+ u32 sizeOut;
+ if (gUnknown_203AB5C < ARRAY_COUNT(gUnknown_203AB60))
+ {
+ void *ptr = MallocAndDecompress(src, &sizeOut);
+ if (sizeOut > size)
+ sizeOut = size;
+ if (ptr)
+ {
+ CopyDecompressedTileDataToVram(bgId, ptr, sizeOut, offset, mode);
+ gUnknown_203AB60[gUnknown_203AB5C++] = ptr;
+ }
+ return ptr;
+ }
+ return NULL;
+}
+
+void DecompressAndLoadBgGfxUsingHeap(u8 bgId, const void *src, u32 size, u16 offset, u8 mode)
+{
+ u32 sizeOut;
+ void *ptr = MallocAndDecompress(src, &sizeOut);
+ if (!size)
+ size = sizeOut;
+ if (ptr)
+ {
+ u8 taskId = CreateTask(TaskFreeBufAfterCopyingTileDataToVram, 0);
+ gTasks[taskId].data[0] = CopyDecompressedTileDataToVram(bgId, ptr, size, offset, mode);
+ SetWordTaskArg(taskId, 1, (u32)ptr);
+ }
+}
+
+void DecompressAndLoadBgGfxUsingHeap2(u8 bgId, const void *src, u32 size, u16 offset, u8 mode)
+{
+ u32 sizeOut;
+ void *ptr = MallocAndDecompress(src, &sizeOut);
+ if (sizeOut > size)
+ sizeOut = size;
+ if (ptr)
+ {
+ u8 taskId = CreateTask(TaskFreeBufAfterCopyingTileDataToVram, 0);
+ gTasks[taskId].data[0] = CopyDecompressedTileDataToVram(bgId, ptr, sizeOut, offset, mode);
+ SetWordTaskArg(taskId, 1, (u32)ptr);
+ }
+}
+
+void TaskFreeBufAfterCopyingTileDataToVram(u8 taskId)
+{
+ if (!CheckForSpaceForDma3Request(gTasks[taskId].data[0]))
+ {
+ Free((void *)GetWordTaskArg(taskId, 1));
+ DestroyTask(taskId);
+ }
+}
+
+void *MallocAndDecompress(const void *src, u32 *size)
+{
+ void *ptr;
+ u8 *sizeAsBytes = (u8 *)size;
+ u8 *srcAsBytes = (u8 *)src;
+
+ sizeAsBytes[0] = srcAsBytes[1];
+ sizeAsBytes[1] = srcAsBytes[2];
+ sizeAsBytes[2] = srcAsBytes[3];
+ sizeAsBytes[3] = 0;
+
+ ptr = Alloc(*size);
+ if (ptr)
+ LZ77UnCompWram(src, ptr);
+ return ptr;
+}
+
+u16 CopyDecompressedTileDataToVram(u8 bgId, const void *src, u16 size, u16 offset, u8 mode)
+{
+ switch (mode)
+ { // different to EM
+ case 1:
+ break;
+ case 0:
+ default:
+ return LoadBgTiles(bgId, src, size, offset);
+ }
+ return LoadBgTilemap(bgId, src, size, offset);
+}
+
+void SetBgRectPal(u8 bgId, u8 left, u8 top, u8 width, u8 height, u8 palette)
+{
+ u8 i;
+ u8 j;
+ u16 *ptr = GetBgTilemapBuffer(bgId);
+
+ for (i = top; i < top + height; i++)
+ {
+ for (j = left; j < left + width; j++)
+ {
+ ptr[(i * 32) + j] = (ptr[(i * 32) + j] & 0xFFF) | (palette << 12);
+ }
+ }
+}
+
+void CopyRectIntoAltRect(u8 bgId, u16 *dest, u8 left, u8 top, u8 width, u8 height)
+{
+ u8 i;
+ u8 j;
+ const u16 *src = GetBgTilemapBuffer(bgId);
+
+ for (i = 0; i < height; i++)
+ {
+ for (j = 0; j < width; j++)
+ {
+ dest[(i * width) + j] = src[(i + top) * 32 + j + left];
+ }
+ }
+}
+
+void ResetBgPositions(void)
+{
+ ChangeBgX(0, 0, 0);
+ ChangeBgX(1, 0, 0);
+ ChangeBgX(2, 0, 0);
+ ChangeBgX(3, 0, 0);
+ ChangeBgY(0, 0, 0);
+ ChangeBgY(1, 0, 0);
+ ChangeBgY(2, 0, 0);
+ ChangeBgY(3, 0, 0);
+}
+
+void InitStandardTextBoxWindows(void)
+{
+ InitWindows(sStandardTextBox_WindowTemplates);
+ sStartMenuWindowId = 0xFF;
+ MapNamePopupWindowIdSetDummy();
+}
+
+void FreeAllOverworldWindowBuffers(void)
+{
+ FreeAllWindowBuffers();
+}
+
+void ResetBg0(void)
+{
+ ChangeBgX(0, 0, 0);
+ ChangeBgY(0, 0, 0);
+ DeactivateAllTextPrinters();
+ sub_80F6E9C();
+}
+
+u16 RunTextPrinters_CheckPrinter0Active(void)
+{
+ RunTextPrinters();
+ return IsTextPrinterActive(0);
+}
+
+u16 AddTextPrinterParameterized2(u8 windowId, u8 fontId, const u8 *str, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16), u8 fgColor, u8 bgColor, u8 shadowColor)
+{
+ struct TextPrinterTemplate printer;
+
+ printer.currentChar = str;
+ printer.windowId = windowId;
+ printer.fontId = fontId;
+ printer.x = 0;
+ printer.y = 1;
+ printer.currentX = 0;
+ printer.currentY = 1;
+ printer.letterSpacing = 1; // different to EM
+ printer.lineSpacing = 1; // different to EM
+ printer.unk = 0;
+ printer.fgColor = fgColor;
+ printer.bgColor = bgColor;
+ printer.shadowColor = shadowColor;
+ gTextFlags.useAlternateDownArrow = 0;
+ return AddTextPrinter(&printer, speed, callback);
+}
+
diff --git a/src/oak_speech.c b/src/oak_speech.c
index 3bf174778..96bb4cdd6 100644
--- a/src/oak_speech.c
+++ b/src/oak_speech.c
@@ -495,7 +495,7 @@ static void Task_OaksSpeech1(u8 taskId)
ScanlineEffect_Stop();
ResetSpriteData();
FreeAllSpritePalettes();
- reset_temp_tile_data_buffers();
+ ResetTempTileDataBuffers();
HelpSystem_SetSomeVariable2(2);
break;
case 1:
@@ -536,10 +536,10 @@ static void Task_OaksSpeech1(u8 taskId)
case 5:
sOakSpeechResources->textSpeed = GetTextSpeedSetting();
gTextFlags.canABSpeedUpPrint = TRUE;
- decompress_and_copy_tile_data_to_vram(1, sOakSpeechGfx_GameStartHelpUI, 0, 0, 0);
+ DecompressAndCopyTileDataToVram(1, sOakSpeechGfx_GameStartHelpUI, 0, 0, 0);
break;
case 6:
- if (free_temp_tile_data_buffers_if_possible())
+ if (FreeTempTileDataBuffersIfPossible())
return;
ClearDialogWindowAndFrame(0, 1);
FillBgTilemapBufferRect_Palette0(1, 0x0000, 0, 0, 32, 32);
@@ -718,7 +718,7 @@ static void Task_OakSpeech6(u8 taskId)
PlayBGM(BGM_FRLG_GAME_EXPLANATION_MIDDLE);
sub_810F71C();
PrintTextOnRightSnappedWindow(gText_ABUTTONNext, 0, 1);
- sOakSpeechResources->unk_0008 = malloc_and_decompress(sNewGameAdventureIntroTilemap, &sp14);
+ sOakSpeechResources->unk_0008 = MallocAndDecompress(sNewGameAdventureIntroTilemap, &sp14);
CopyToBgTilemapBufferRect(1, sOakSpeechResources->unk_0008, 0, 2, 30, 19);
CopyBgTilemapBufferToVram(1);
Free(sOakSpeechResources->unk_0008);
@@ -869,7 +869,7 @@ static void Task_OakSpeech9(u8 taskId)
data[3]--;
else
{
- sOakSpeechResources->solidColorsGfx = malloc_and_decompress(sOakSpeechGfx_SolidColors, &size);
+ sOakSpeechResources->solidColorsGfx = MallocAndDecompress(sOakSpeechGfx_SolidColors, &size);
LoadBgTiles(1, sOakSpeechResources->solidColorsGfx, size, 0);
CopyToBgTilemapBuffer(1, sOakSpeech_BackgroundTilemap, 0, 0);
CopyBgTilemapBufferToVram(1);
@@ -1536,7 +1536,7 @@ static void CB2_ReturnFromNamingScreen(void)
ScanlineEffect_Stop();
ResetSpriteData();
FreeAllSpritePalettes();
- reset_temp_tile_data_buffers();
+ ResetTempTileDataBuffers();
break;
case 1:
ResetBgsAndClearDma3BusyFlags(0);
@@ -1564,10 +1564,10 @@ static void CB2_ReturnFromNamingScreen(void)
LoadPalette(sHelpDocsPalette, 0, 0xe0);
break;
case 4:
- decompress_and_copy_tile_data_to_vram(1, sOakSpeechGfx_SolidColors, 0, 0, 0);
+ DecompressAndCopyTileDataToVram(1, sOakSpeechGfx_SolidColors, 0, 0, 0);
break;
case 5:
- if (free_temp_tile_data_buffers_if_possible())
+ if (FreeTempTileDataBuffersIfPossible())
return;
FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 30, 20);
CopyToBgTilemapBuffer(1, sOakSpeech_BackgroundTilemap, 0, 0);
diff --git a/src/quest_log.c b/src/quest_log.c
index 0021ee927..c1ce93ce3 100644
--- a/src/quest_log.c
+++ b/src/quest_log.c
@@ -1418,7 +1418,7 @@ void sub_8111D10(void)
PutWindowTilemap(gUnknown_203ADFE[2]);
sub_8111D90(gUnknown_203ADFE[2]);
AddTextPrinterParameterized4(gUnknown_203ADFE[2], 2, 2, gUnknown_8456698[count], 1, 0, &gUnknown_8456634, 0, gStringVar4);
- schedule_bg_copy_tilemap_to_vram(0);
+ ScheduleBgCopyTilemapToVram(0);
}
void sub_8111D90(u8 a0)
@@ -2297,7 +2297,7 @@ const struct WindowTemplate gUnknown_8456928 = {
0x00, 0, 15, 30, 5, 15, 0x008F
};
-void sub_8112EA8(void)
+void MapNamePopupWindowIdSetDummy(void)
{
gUnknown_203B020 = 0xFF;
}
diff --git a/src/teachy_tv.c b/src/teachy_tv.c
index eb5a7293d..ae6afae07 100644
--- a/src/teachy_tv.c
+++ b/src/teachy_tv.c
@@ -422,7 +422,7 @@ static void TeachyTvCallback(void)
RunTasks();
AnimateSprites();
BuildOamBuffer();
- do_scheduled_bg_tilemap_copies_to_vram();
+ DoScheduledBgTilemapCopiesToVram();
UpdatePaletteFade();
}
@@ -476,7 +476,7 @@ static void TeachyTvMainCallback(void)
sResources->grassAnimDisabled = 0;
sResources->scrollIndicatorArrowPairId = 0xFF;
SetVBlankHBlankCallbacksToNull();
- clear_scheduled_bg_copies_to_vram();
+ ClearScheduledBgCopiesToVram();
ScanlineEffect_Stop();
FreeAllSpritePalettes();
ResetPaletteFade();
@@ -487,7 +487,7 @@ static void TeachyTvMainCallback(void)
++gMain.state;
break;
case 1:
- if (free_temp_tile_data_buffers_if_possible() == TRUE)
+ if (FreeTempTileDataBuffersIfPossible() == TRUE)
return;
TeachyTvCreateAndRenderRbox();
TeachyTvInitIo();
@@ -506,10 +506,10 @@ static void TeachyTvMainCallback(void)
PlayNewMapMusic(BGM_FRLG_TEACHY_TV);
TeachyTvSetWindowRegs();
}
- schedule_bg_copy_tilemap_to_vram(0);
- schedule_bg_copy_tilemap_to_vram(1);
- schedule_bg_copy_tilemap_to_vram(2);
- schedule_bg_copy_tilemap_to_vram(3);
+ ScheduleBgCopyTilemapToVram(0);
+ ScheduleBgCopyTilemapToVram(1);
+ ScheduleBgCopyTilemapToVram(2);
+ ScheduleBgCopyTilemapToVram(3);
sub_812B1E0(9); // help system something
BlendPalettes(0xFFFFFFFF, 0x10, 0);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
@@ -542,8 +542,8 @@ static void TeachyTvSetupBg(void)
static void TeachyTvLoadGraphic(void)
{
u16 src = RGB_BLACK;
- reset_temp_tile_data_buffers();
- decompress_and_copy_tile_data_to_vram(1, gUnknown_8E86240, 0, 0, 0);
+ ResetTempTileDataBuffers();
+ DecompressAndCopyTileDataToVram(1, gUnknown_8E86240, 0, 0, 0);
LZDecompressWram(gUnknown_8E86BE8, sResources->buffer1);
LZDecompressWram(gUnknown_8E86D6C, sResources->buffer4);
LoadCompressedPalette(gUnknown_8E86F98, 0, 0x80);
@@ -656,7 +656,7 @@ static void TeachyTvBg2AnimController(void)
tilemapBuffer[32 * i + j] = ((Random() & 3) << 10) + 0x301F;
}
}
- schedule_bg_copy_tilemap_to_vram(2);
+ ScheduleBgCopyTilemapToVram(2);
}
static void TeachyTvSetupPostBattleWindowAndObj(u8 taskId)
@@ -757,7 +757,7 @@ static void TeachyTvOptionListController(u8 taskId)
DestroyListMenu(data[0], &sStaticResources.scrollOffset, &sStaticResources.selectedRow);
TeachyTvClearWindowRegs();
ClearWindowTilemap(1);
- schedule_bg_copy_tilemap_to_vram(0);
+ ScheduleBgCopyTilemapToVram(0);
TeachyTvRemoveScrollIndicatorArrowPair();
data[3] = 0;
data[2] = 0;
@@ -776,7 +776,7 @@ static void TTVcmd_TransitionRenderBg2TeachyTvGraphicInitNpcPos(u8 taskId)
{
CopyToBgTilemapBufferRect_ChangePalette(2, sResources->buffer4, 0, 0, 0x20, 0x20, 0x11);
TeachyTvSetSpriteCoordsAndSwitchFrame(data[1], 8, 0x38, 7);
- schedule_bg_copy_tilemap_to_vram(2);
+ ScheduleBgCopyTilemapToVram(2);
data[2] = 0;
++data[3];
PlayNewMapMusic(BGM_FRLG_FOLLOW_ME);
@@ -789,7 +789,7 @@ static void TTVcmd_ClearBg2TeachyTvGraphic(u8 taskId)
if (++data[2] == 134)
{
FillBgTilemapBufferRect_Palette0(2, 0, 2, 1, 0x1A, 0xC);
- schedule_bg_copy_tilemap_to_vram(2);
+ ScheduleBgCopyTilemapToVram(2);
data[2] = 0;
++data[3];
}
@@ -1040,7 +1040,7 @@ static void TTVcmd_RenderAndRemoveBg1EndGraphic(u8 taskId)
if (!data[2])
{
CopyToBgTilemapBufferRect_ChangePalette(1, sBg1EndGraphic, 20, 10, 8, 2, 0x11);
- schedule_bg_copy_tilemap_to_vram(1);
+ ScheduleBgCopyTilemapToVram(1);
}
if (++data[2] > 126)
{
@@ -1053,7 +1053,7 @@ static void TTVcmd_RenderAndRemoveBg1EndGraphic(u8 taskId)
static void TeachyTvClearBg1EndGraphicText(void)
{
FillBgTilemapBufferRect_Palette0(1, 0, 20, 10, 8, 2);
- schedule_bg_copy_tilemap_to_vram(1);
+ ScheduleBgCopyTilemapToVram(1);
}
static void TTVcmd_End(u8 taskId)
@@ -1071,7 +1071,7 @@ static void TTVcmd_End(u8 taskId)
PutWindowTilemap(0);
TeachyTvSetupScrollIndicatorArrowPair();
TeachyTvSetWindowRegs();
- schedule_bg_copy_tilemap_to_vram(0);
+ ScheduleBgCopyTilemapToVram(0);
ChangeBgX(3, 0x0, 0);
ChangeBgY(3, 0x0, 0);
ChangeBgX(3, 0x1000, 2);
diff --git a/src/tm_case.c b/src/tm_case.c
index 7c26c1c58..3f2a5fbde 100644
--- a/src/tm_case.c
+++ b/src/tm_case.c
@@ -290,7 +290,7 @@ static void CB2_Idle(void)
RunTasks();
AnimateSprites();
BuildOamBuffer();
- do_scheduled_bg_tilemap_copies_to_vram();
+ DoScheduledBgTilemapCopiesToVram();
UpdatePaletteFade();
}
@@ -322,7 +322,7 @@ static bool8 DoSetUpTMCaseUI(void)
{
case 0:
SetVBlankHBlankCallbacksToNull();
- clear_scheduled_bg_copies_to_vram();
+ ClearScheduledBgCopiesToVram();
gMain.state++;
break;
case 1:
@@ -432,8 +432,8 @@ static void LoadBGTemplates(void)
ResetBgsAndClearDma3BusyFlags(0);
InitBgsFromTemplates(0, sBGTemplates, NELEMS(sBGTemplates));
SetBgTilemapBuffer(2, *ptr);
- schedule_bg_copy_tilemap_to_vram(1);
- schedule_bg_copy_tilemap_to_vram(2);
+ ScheduleBgCopyTilemapToVram(1);
+ ScheduleBgCopyTilemapToVram(2);
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON);
SetGpuReg(REG_OFFSET_BLDCNT, 0);
ShowBg(0);
@@ -446,12 +446,12 @@ static bool8 HandleLoadTMCaseGraphicsAndPalettes(void)
switch (sTMCaseDynamicResources->seqId)
{
case 0:
- reset_temp_tile_data_buffers();
- decompress_and_copy_tile_data_to_vram(1, gUnknown_8E845D8, 0, 0, 0);
+ ResetTempTileDataBuffers();
+ DecompressAndCopyTileDataToVram(1, gUnknown_8E845D8, 0, 0, 0);
sTMCaseDynamicResources->seqId++;
break;
case 1:
- if (free_temp_tile_data_buffers_if_possible() != TRUE)
+ if (FreeTempTileDataBuffersIfPossible() != TRUE)
{
LZDecompressWram(gUnknown_8E84A24, sTilemapBuffer);
sTMCaseDynamicResources->seqId++;
@@ -596,7 +596,7 @@ static void TMCase_MoveCursor_UpdatePrintedDescription(s32 itemIndex)
static void FillBG2RowWithPalette_2timesNplus1(s32 a0)
{
SetBgRectPal(2, 0, 12, 30, 8, 2 * a0 + 1);
- schedule_bg_copy_tilemap_to_vram(2);
+ ScheduleBgCopyTilemapToVram(2);
}
static void PrintListMenuCursorByID_WithColorIdx(u8 a0, u8 a1)
@@ -806,8 +806,8 @@ static void Task_SelectTMAction_FromFieldBag(u8 taskId)
PlaceHMTileInWindow(2, 0, 2);
CopyWindowToVram(2, 2);
}
- schedule_bg_copy_tilemap_to_vram(0);
- schedule_bg_copy_tilemap_to_vram(1);
+ ScheduleBgCopyTilemapToVram(0);
+ ScheduleBgCopyTilemapToVram(1);
gTasks[taskId].func = Task_TMContextMenu_HandleInput;
}
@@ -840,8 +840,8 @@ static void TMHMContextMenuAction_Use(u8 taskId)
ClearMenuWindow(2, 0);
ClearWindowTilemap(2);
PutWindowTilemap(0);
- schedule_bg_copy_tilemap_to_vram(0);
- schedule_bg_copy_tilemap_to_vram(1);
+ ScheduleBgCopyTilemapToVram(0);
+ ScheduleBgCopyTilemapToVram(1);
if (CalculatePlayerPartyCount() == 0)
{
PrintError_ThereIsNoPokemon(taskId);
@@ -864,8 +864,8 @@ static void TMHMContextMenuAction_Give(u8 taskId)
PutWindowTilemap(1);
PutWindowTilemap(4);
PutWindowTilemap(5);
- schedule_bg_copy_tilemap_to_vram(0);
- schedule_bg_copy_tilemap_to_vram(1);
+ ScheduleBgCopyTilemapToVram(0);
+ ScheduleBgCopyTilemapToVram(1);
if (!itemid_is_unique(itemId))
{
if (CalculatePlayerPartyCount() == 0)
@@ -917,8 +917,8 @@ static void Subtask_CloseContextMenuAndReturnToMain(u8 taskId)
PutWindowTilemap(1);
PutWindowTilemap(4);
PutWindowTilemap(5);
- schedule_bg_copy_tilemap_to_vram(0);
- schedule_bg_copy_tilemap_to_vram(1);
+ ScheduleBgCopyTilemapToVram(0);
+ ScheduleBgCopyTilemapToVram(1);
Subtask_ReturnToTMCaseMain(taskId);
}
@@ -934,8 +934,8 @@ static void TMHMContextMenuAction_Exit(u8 taskId)
PutWindowTilemap(1);
PutWindowTilemap(4);
PutWindowTilemap(5);
- schedule_bg_copy_tilemap_to_vram(0);
- schedule_bg_copy_tilemap_to_vram(1);
+ ScheduleBgCopyTilemapToVram(0);
+ ScheduleBgCopyTilemapToVram(1);
Subtask_ReturnToTMCaseMain(taskId);
}
@@ -1023,8 +1023,8 @@ static void Task_SaleOfTMsCancelled(u8 taskId)
PutWindowTilemap(3);
PutWindowTilemap(4);
PutWindowTilemap(5);
- schedule_bg_copy_tilemap_to_vram(0);
- schedule_bg_copy_tilemap_to_vram(1);
+ ScheduleBgCopyTilemapToVram(0);
+ ScheduleBgCopyTilemapToVram(1);
PrintListMenuCursorByID_WithColorIdx(data[0], 1);
Subtask_ReturnToTMCaseMain(taskId);
}
@@ -1040,8 +1040,8 @@ static void Task_InitQuantitySelectUI(u8 taskId)
SellTM_PrintQuantityAndSalePrice(1, itemid_get_market_price(BagGetItemIdByPocketPosition(POCKET_TM_CASE, data[1])) / 2 * data[8]);
HandlePrintMoneyOnHand();
CreateTMCaseScrollIndicatorArrowPair_SellQuantitySelect();
- schedule_bg_copy_tilemap_to_vram(0);
- schedule_bg_copy_tilemap_to_vram(1);
+ ScheduleBgCopyTilemapToVram(0);
+ ScheduleBgCopyTilemapToVram(1);
gTasks[taskId].func = Task_QuantitySelect_HandleInput;
}
@@ -1066,8 +1066,8 @@ static void Task_QuantitySelect_HandleInput(u8 taskId)
{
PlaySE(SE_SELECT);
ClearMenuWindow(7, 0);
- schedule_bg_copy_tilemap_to_vram(0);
- schedule_bg_copy_tilemap_to_vram(1);
+ ScheduleBgCopyTilemapToVram(0);
+ ScheduleBgCopyTilemapToVram(1);
RemoveTMCaseScrollIndicatorArrowPair();
Task_AskConfirmSaleWithAmount(taskId);
}
@@ -1080,8 +1080,8 @@ static void Task_QuantitySelect_HandleInput(u8 taskId)
PutWindowTilemap(3);
PutWindowTilemap(0);
PutWindowTilemap(1);
- schedule_bg_copy_tilemap_to_vram(0);
- schedule_bg_copy_tilemap_to_vram(1);
+ ScheduleBgCopyTilemapToVram(0);
+ ScheduleBgCopyTilemapToVram(1);
RemoveTMCaseScrollIndicatorArrowPair();
PrintListMenuCursorByID_WithColorIdx(data[0], 1);
Subtask_ReturnToTMCaseMain(taskId);
@@ -1093,7 +1093,7 @@ static void Task_PrintSaleConfirmedText(u8 taskId)
s16 * data = gTasks[taskId].data;
PutWindowTilemap(0);
- schedule_bg_copy_tilemap_to_vram(0);
+ ScheduleBgCopyTilemapToVram(0);
CopyItemName(gSpecialVar_ItemId, gStringVar1);
ConvertIntToDecimalStringN(gStringVar3, itemid_get_market_price(BagGetItemIdByPocketPosition(POCKET_TM_CASE, data[1])) / 2 * data[8], STR_CONV_MODE_LEFT_ALIGN, 6);
StringExpandPlaceholders(gStringVar4, gText_TurnedOverItemsWorthYen);
@@ -1250,7 +1250,7 @@ static void Task_TMCaseDude_Playback(u8 taskId)
FillBG2RowWithPalette_2timesNplus1(0);
BeginNormalPaletteFade(0x00000400, 0, 6, 0, 0);
ClearMenuWindow_BorderThickness2(6, 0);
- schedule_bg_copy_tilemap_to_vram(1);
+ ScheduleBgCopyTilemapToVram(1);
data[8]++;
}
break;
@@ -1312,7 +1312,7 @@ static void InitWindowTemplatesAndPals(void)
PutWindowTilemap(3);
PutWindowTilemap(4);
PutWindowTilemap(5);
- schedule_bg_copy_tilemap_to_vram(0);
+ ScheduleBgCopyTilemapToVram(0);
}
static void AddTextPrinterParameterized_ColorByIndex(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx)
@@ -1333,7 +1333,7 @@ static void TMCase_SetWindowBorder2(u8 windowId)
static void TMCase_PrintMessageWithFollowupTask(u8 taskId, u8 windowId, const u8 * str, TaskFunc func)
{
DisplayMessageAndContinueTask(taskId, 6, 0x64, 0x0B, windowId, GetTextSpeedSetting(), str, func);
- schedule_bg_copy_tilemap_to_vram(1);
+ ScheduleBgCopyTilemapToVram(1);
}
static void PrintStringTMCaseOnWindow3(void)
@@ -1413,7 +1413,7 @@ static u8 AddTMContextMenu(u8 * a0, u8 a1)
{
*a0 = AddWindow(&sTMContextWindowTemplates[a1]);
TMCase_SetWindowBorder1(*a0);
- schedule_bg_copy_tilemap_to_vram(0);
+ ScheduleBgCopyTilemapToVram(0);
}
return *a0;
}
@@ -1423,7 +1423,7 @@ static void RemoveTMContextMenu(u8 * a0)
ClearMenuWindow(*a0, FALSE);
ClearWindowTilemap(*a0);
RemoveWindow(*a0);
- schedule_bg_copy_tilemap_to_vram(0);
+ ScheduleBgCopyTilemapToVram(0);
*a0 = 0xFF;
}