From 94333c851f108886a0c45120539a14c46c0b7eae Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Thu, 27 Mar 2025 12:46:33 +0100 Subject: [PATCH] Match sub_8006E94 and clean-up window related functions --- src/text_1.c | 1111 +++++++++++--------------------------------------- 1 file changed, 234 insertions(+), 877 deletions(-) diff --git a/src/text_1.c b/src/text_1.c index 7fb2877e5..a99630f59 100644 --- a/src/text_1.c +++ b/src/text_1.c @@ -116,14 +116,14 @@ static const u32 sFadeInDungeon[8] = {0x88888888, 0x88888888, 0x88888888, 0x8888 static const u32 sUnknown_80B8804[4] = {0, 1, 2, 3}; static const u32 sUnknown_80B8814[4] = {1, 2, 3, 0}; -static void AddWindow(Window *windows, u32 *vram, u32 *, u16 *, u32 windowId, const WindowTemplate *winTemplate, bool8, s32 firstBlockId, DungeonPos *positionModifier, u8); +static void AddWindow(Window *windows, u32 *vram, u32 *, u16 tilemaps[4][32][32], u32 windowId, const WindowTemplate *winTemplate, bool8, s32 firstBlockId, DungeonPos *positionModifier, u8); static void ShowWindowsInternal(const WindowTemplates *winTemplates, bool8, bool8, DungeonPos *positionModifier); -static void sub_800677C(Window *window, s32, u16 *, u8); -static void sub_80069CC(Window *window, s32, s32, s32, u16 *); -static void sub_8006AC4(Window *window, s32, s32, s32, u16 *); -static void sub_8006B70(Window *window, s32, s32, s32, u16 *); -static void sub_8006C44(Window *window, s32, u16 *, u8); -static void sub_8006E94(Window *, s32, u32, const WindowHeader *, u16 *); +static void PutWindowTopBorderTilemap(Window *window, s32 y, u16 tilemaps[4][32][32], u8 a3); +static void PutWindowLeftBorderTilemap(Window *window, s32 x, s32 y, s32 a3, u16 tilemaps[4][32][32]); +static void PutWindowFillTilemap(Window *window, s32 x, s32 y, s32 a3, u16 tilemaps[4][32][32]); +static void PutWindowRightBorderTilemap(Window *window, s32 x, s32 y, s32 a3, u16 tilemaps[4][32][32]); +static void PutWindowBottomBorderTilemap(Window *window, s32, u16 tilemaps[4][32][32], u8); +static void PutHeaderWindowTopBorderTilemap(Window *window, s32 y, u32 a2, const WindowHeader *winHeader, u16 tilemaps[4][32][32]); // arm9.bin::02005448 void LoadCharmaps(void) @@ -263,7 +263,7 @@ static void ShowWindowsInternal(const WindowTemplates *winTemplates, bool8 a1, b sSavedWindows.id[i] = winTemplates->id[i]; if (winTemplates->id[i].width != 0) { - AddWindow(gWindows, (u32 *)VRAM, sUnknown_20274B4, &gBgTilemaps[0][0][0], sUnknown_80B8804[i], &winTemplates->id[i], a1, area, positionModifier, 0); + AddWindow(gWindows, (u32 *)VRAM, sUnknown_20274B4, gBgTilemaps, sUnknown_80B8804[i], &winTemplates->id[i], a1, area, positionModifier, 0); sub_80089AC(&winTemplates->id[i], positionModifier); area += winTemplates->id[i].width * winTemplates->id[i].unk10; } @@ -306,7 +306,7 @@ u32 sub_8006544(u32 index) } // arm9.bin::02004D54 -static void AddWindow(Window *windows, u32 *vram, u32 *a2, u16 *a3, u32 windowId, const WindowTemplate *winTemplate, bool8 a6, s32 firstBlockId, DungeonPos *positionModifier, u8 a9) +static void AddWindow(Window *windows, u32 *vram, u32 *a2, u16 tilemaps[4][32][32], u32 windowId, const WindowTemplate *winTemplate, bool8 a6, s32 firstBlockId, DungeonPos *positionModifier, u8 a9) { Window *newWindow; s32 x, y; @@ -349,43 +349,43 @@ static void AddWindow(Window *windows, u32 *vram, u32 *a2, u16 *a3, u32 windowId return; if ((winTemplate->unk0 & 0xA0) != 0x80) { - s32 newY = y - 1; + s32 workingY = y - 1; s32 i, j; if (newWindow->type == WINDOW_TYPE_WITH_HEADER) { uVar1 = a6 ? newWindow->unk14 : 0; - sub_8006E94(newWindow, newY, uVar1, winTemplate->header, a3); + PutHeaderWindowTopBorderTilemap(newWindow, workingY, uVar1, winTemplate->header, tilemaps); - newY = y + 2; + workingY = y + 2; uVar1 = a6 ? newWindow->unk14 + newWindow->width * (winTemplate->unk12 + 2) : 0; numI = newWindow->height - 2; } else { - sub_800677C(newWindow, newY, a3, a9); + PutWindowTopBorderTilemap(newWindow, workingY, tilemaps, a9); - newY = y; + workingY = y; uVar1 = a6 ? newWindow->unk14 : 0; numI = newWindow->height; } for (i = 0; i < numI; i++) { - s32 newX = x - 1; - sub_80069CC(newWindow, newX, newY, i, a3); - newX = x; + s32 workingX = x - 1; + PutWindowLeftBorderTilemap(newWindow, workingX, workingY, i, tilemaps); + workingX = x; for (j = 0; j < newWindow->width; j++) { - sub_8006AC4(newWindow, newX, newY, uVar1, a3); + PutWindowFillTilemap(newWindow, workingX, workingY, uVar1, tilemaps); - newX++; + workingX++; if (a6) uVar1++; } - sub_8006B70(newWindow, newX, newY, i, a3); - newY++; + PutWindowRightBorderTilemap(newWindow, workingX, workingY, i, tilemaps); + workingY++; } - sub_8006C44(newWindow, newY, a3, a9); + PutWindowBottomBorderTilemap(newWindow, workingY, tilemaps, a9); } if ((winTemplate->unk0 & 0x80) == 0) @@ -395,16 +395,16 @@ static void AddWindow(Window *windows, u32 *vram, u32 *a2, u16 *a3, u32 windowId } // arm9.bin::02004B0C -static void sub_800677C(Window *window, s32 a1, u16 *a2, u8 a3) +static void PutWindowTopBorderTilemap(Window *window, s32 y, u16 tilemaps[4][32][32], u8 a3) { - s32 iVar5; + s32 x; s32 i; - iVar5 = window->x - 1; + x = window->x - 1; - if (a1 > 28) + if (y > 28) return; - if (a1 < 0) + if (y < 0) return; switch (window->type) { @@ -414,66 +414,66 @@ static void sub_800677C(Window *window, s32 a1, u16 *a2, u8 a3) case WINDOW_TYPE_WITH_HEADER: break; case WINDOW_TYPE_NORMAL: - (a2 + a1 * 0x20)[iVar5] = 0xF2D8; + tilemaps[0][y][x] = TILEMAP_TILE_NUM(0x2D8) | TILEMAP_PAL(15); if (a3 != 0) - (a2 + a1 * 0x20)[iVar5 + 0x400] = 0xF293; + tilemaps[1][y][x] = TILEMAP_TILE_NUM(0x293) | TILEMAP_PAL(15); else - (a2 + a1 * 0x20)[iVar5 + 0x400] = 0xF2DB; - iVar5++; + tilemaps[1][y][x] = TILEMAP_TILE_NUM(0x2DB) | TILEMAP_PAL(15); + x++; for (i = 0; i < window->width; i++) { - (a2 + a1 * 0x20)[iVar5] = 0xF2D9; - (a2 + a1 * 0x20)[iVar5 + 0x400] = 0xF2DB; - iVar5++; + tilemaps[0][y][x] = TILEMAP_TILE_NUM(0x2D9) | TILEMAP_PAL(15); + tilemaps[1][y][x] = TILEMAP_TILE_NUM(0x2DB) | TILEMAP_PAL(15); + x++; } - (a2 + a1 * 0x20)[iVar5] = 0xF6D8; + tilemaps[0][y][x] = TILEMAP_TILE_NUM(0x2D8) | TILEMAP_PAL(15) | TILEMAP_FLIP_HORIZONTAL(1); if (a3 != 0) - (a2 + a1 * 0x20)[iVar5 + 0x400] = 0xF693; + tilemaps[1][y][x] = TILEMAP_TILE_NUM(0x293) | TILEMAP_PAL(15) | TILEMAP_FLIP_HORIZONTAL(1); else - (a2 + a1 * 0x20)[iVar5 + 0x400] = 0xF2DB; + tilemaps[1][y][x] = TILEMAP_TILE_NUM(0x2DB) | TILEMAP_PAL(15); break; case WINDOW_TYPE_4: - (a2 + a1 * 0x20)[iVar5] = 0xF2E8; - (a2 + a1 * 0x20)[iVar5 + 0x400] = 0xF2DB; - iVar5++; + tilemaps[0][y][x] = TILEMAP_TILE_NUM(0x2E8) | TILEMAP_PAL(15); + tilemaps[1][y][x] = TILEMAP_TILE_NUM(0x2DB) | TILEMAP_PAL(15); + x++; for (i = 0; i < window->width; i++) { - (a2 + a1 * 0x20)[iVar5] = 0xF2E9; - (a2 + a1 * 0x20)[iVar5 + 0x400] = 0xF2DB; - iVar5++; + tilemaps[0][y][x] = TILEMAP_TILE_NUM(0x2E9) | TILEMAP_PAL(15); + tilemaps[1][y][x] = TILEMAP_TILE_NUM(0x2DB) | TILEMAP_PAL(15); + x++; } - (a2 + a1 * 0x20)[iVar5] = 0xF6E8; - (a2 + a1 * 0x20)[iVar5 + 0x400] = 0xF2DB; + tilemaps[0][y][x] = TILEMAP_TILE_NUM(0x2E8) | TILEMAP_PAL(15) | TILEMAP_FLIP_HORIZONTAL(1); + tilemaps[1][y][x] = TILEMAP_TILE_NUM(0x2DB) | TILEMAP_PAL(15); break; case WINDOW_TYPE_FILL_TRANSPARENT: - (a2 + a1 * 0x20)[iVar5] = 0xF2DC; - iVar5++; + tilemaps[0][y][x] = TILEMAP_TILE_NUM(0x2DC) | TILEMAP_PAL(15); + x++; for (i = 0; i < window->width; i++) { - (a2 + a1 * 0x20)[iVar5] = 0xF2DD; - iVar5++; + tilemaps[0][y][x] = TILEMAP_TILE_NUM(0x2DD) | TILEMAP_PAL(15); + x++; } - (a2 + a1 * 0x20)[iVar5] = 0xF6DC; + tilemaps[0][y][x] = TILEMAP_TILE_NUM(0x2DC) | TILEMAP_PAL(15) | TILEMAP_FLIP_HORIZONTAL(1); break; case WINDOW_TYPE_7: - (a2 + a1 * 0x20)[iVar5] = 0xF293; - iVar5++; + tilemaps[0][y][x] = TILEMAP_TILE_NUM(0x293) | TILEMAP_PAL(15); + x++; for (i = 0; i < window->width; i++) { - (a2 + a1 * 0x20)[iVar5] = 0xF297; - iVar5++; + tilemaps[0][y][x] = TILEMAP_TILE_NUM(0x297) | TILEMAP_PAL(15); + x++; } - (a2 + a1 * 0x20)[iVar5] = 0xF693; + tilemaps[0][y][x] = TILEMAP_TILE_NUM(0x293) | TILEMAP_PAL(15) | TILEMAP_FLIP_HORIZONTAL(1); break; } } // arm9.bin::020049D0 -static void sub_80069CC(Window *window, s32 a1, s32 a2, s32 a3, u16 *a4) +static void PutWindowLeftBorderTilemap(Window *window, s32 x, s32 y, s32 a3, u16 tilemaps[4][32][32]) { - if (a2 > 28) + if (y > 28) return; - if (a2 < 0) + if (y < 0) return; switch (window->type) { @@ -482,68 +482,68 @@ static void sub_80069CC(Window *window, s32 a1, s32 a2, s32 a3, u16 *a4) break; case WINDOW_TYPE_0: if (a3 == 0) { - (a4 + a2 * 0x20)[a1] = 0xF297; - (a4 + a2 * 0x20)[a1 + 0x400] = 0xF2DB; + tilemaps[0][y][x] = TILEMAP_TILE_NUM(0x297) | TILEMAP_PAL(15); + tilemaps[1][y][x] = TILEMAP_TILE_NUM(0x2DB) | TILEMAP_PAL(15); break; } if (a3 == window->height - 1) { - (a4 + a2 * 0x20)[a1] = 0xFA97; - (a4 + a2 * 0x20)[a1 + 0x400] = 0xF2DB; + tilemaps[0][y][x] = TILEMAP_TILE_NUM(0x297) | TILEMAP_PAL(15) | TILEMAP_FLIP_VERTICAL(1); + tilemaps[1][y][x] = TILEMAP_TILE_NUM(0x2DB) | TILEMAP_PAL(15); break; } // Fallthrough case WINDOW_TYPE_NORMAL: case WINDOW_TYPE_WITH_HEADER: - (a4 + a2 * 0x20)[a1] = 0xF2DA; - (a4 + a2 * 0x20)[a1 + 0x400] = 0xF2DB; + tilemaps[0][y][x] = TILEMAP_TILE_NUM(0x2DA) | TILEMAP_PAL(15); + tilemaps[1][y][x] = TILEMAP_TILE_NUM(0x2DB) | TILEMAP_PAL(15); break; case WINDOW_TYPE_4: - (a4 + a2 * 0x20)[a1] = 0xF2EA; - (a4 + a2 * 0x20)[a1 + 0x400] = 0xF2DB; + tilemaps[0][y][x] = TILEMAP_TILE_NUM(0x2EA) | TILEMAP_PAL(15); + tilemaps[1][y][x] = TILEMAP_TILE_NUM(0x2DB) | TILEMAP_PAL(15); break; case WINDOW_TYPE_FILL_TRANSPARENT: - (a4 + a2 * 0x20)[a1] = 0xF2DE; + tilemaps[0][y][x] = TILEMAP_TILE_NUM(0x2DE) | TILEMAP_PAL(15); break; case WINDOW_TYPE_7: - (a4 + a2 * 0x20)[a1] = 0xF2B6; + tilemaps[0][y][x] = TILEMAP_TILE_NUM(0x2B6) | TILEMAP_PAL(15); break; } } // arm9.bin::020048F0 -static void sub_8006AC4(Window *window, s32 a1, s32 a2, s32 a3, u16 *a4) +static void PutWindowFillTilemap(Window *window, s32 x, s32 y, s32 a3, u16 tilemaps[4][32][32]) { - if (a2 > 28) + if (y > 28) return; - if (a2 < 0) + if (y < 0) return; switch (window->type) { case WINDOW_TYPE_2: - (a4 + a2 * 0x20)[a1] = a3 | 0xF000; - (a4 + a2 * 0x20)[a1 + 0x400] = 0xF278; + tilemaps[0][y][x] = a3 | TILEMAP_PAL(15); + tilemaps[1][y][x] = TILEMAP_TILE_NUM(0x278) | TILEMAP_PAL(15); break; case WINDOW_TYPE_0: case WINDOW_TYPE_WITHOUT_BORDER: case WINDOW_TYPE_NORMAL: case WINDOW_TYPE_4: case WINDOW_TYPE_WITH_HEADER: - (a4 + a2 * 0x20)[a1] = a3 | 0xF000; - (a4 + a2 * 0x20)[a1 + 0x400] = 0xF2DB; + tilemaps[0][y][x] = a3 | TILEMAP_PAL(15); + tilemaps[1][y][x] = TILEMAP_TILE_NUM(0x2DB) | TILEMAP_PAL(15); break; case WINDOW_TYPE_FILL_TRANSPARENT: case WINDOW_TYPE_7: - (a4 + a2 * 0x20)[a1] = a3 | 0xF000; + tilemaps[0][y][x] = a3 | TILEMAP_PAL(15); break; } } // arm9.bin::020047B4 -static void sub_8006B70(Window *window, s32 a1, s32 a2, s32 a3, u16 *a4) +static void PutWindowRightBorderTilemap(Window *window, s32 x, s32 y, s32 a3, u16 tilemaps[4][32][32]) { - if (a2 > 28) + if (y > 28) return; - if (a2 < 0) + if (y < 0) return; switch (window->type) { @@ -552,45 +552,45 @@ static void sub_8006B70(Window *window, s32 a1, s32 a2, s32 a3, u16 *a4) break; case WINDOW_TYPE_0: if (a3 == 0) { - (a4 + a2 * 0x20)[a1] = 0xF697; - (a4 + a2 * 0x20)[a1 + 0x400] = 0xF2DB; + tilemaps[0][y][x] = TILEMAP_TILE_NUM(0x297) | TILEMAP_PAL(15) | TILEMAP_FLIP_HORIZONTAL(1); + tilemaps[1][y][x] = TILEMAP_TILE_NUM(0x2DB) | TILEMAP_PAL(15); break; } if (a3 == window->height - 1) { - (a4 + a2 * 0x20)[a1] = 0xFE97; - (a4 + a2 * 0x20)[a1 + 0x400] = 0xF2DB; + tilemaps[0][y][x] = TILEMAP_TILE_NUM(0x297) | TILEMAP_PAL(15) | TILEMAP_FLIP_HORIZONTAL(1) | TILEMAP_FLIP_VERTICAL(1); + tilemaps[1][y][x] = TILEMAP_TILE_NUM(0x2DB) | TILEMAP_PAL(15); break; } // Fallthrough case WINDOW_TYPE_NORMAL: case WINDOW_TYPE_WITH_HEADER: - (a4 + a2 * 0x20)[a1] = 0xF6DA; - (a4 + a2 * 0x20)[a1 + 0x400] = 0xF2DB; + tilemaps[0][y][x] = TILEMAP_TILE_NUM(0x2DA) | TILEMAP_PAL(15) | TILEMAP_FLIP_HORIZONTAL(1); + tilemaps[1][y][x] = TILEMAP_TILE_NUM(0x2DB) | TILEMAP_PAL(15); break; case WINDOW_TYPE_4: - (a4 + a2 * 0x20)[a1] = 0xF6EA; - (a4 + a2 * 0x20)[a1 + 0x400] = 0xF2DB; + tilemaps[0][y][x] = TILEMAP_TILE_NUM(0x2EA) | TILEMAP_PAL(15) | TILEMAP_FLIP_HORIZONTAL(1); + tilemaps[1][y][x] = TILEMAP_TILE_NUM(0x2DB) | TILEMAP_PAL(15); break; case WINDOW_TYPE_FILL_TRANSPARENT: - (a4 + a2 * 0x20)[a1] = 0xF6DE; + tilemaps[0][y][x] = TILEMAP_TILE_NUM(0x2DE) | TILEMAP_PAL(15) | TILEMAP_FLIP_HORIZONTAL(1); break; case WINDOW_TYPE_7: - (a4 + a2 * 0x20)[a1] = 0xF6B6; + tilemaps[0][y][x] = TILEMAP_TILE_NUM(0x2B6) | TILEMAP_PAL(15) | TILEMAP_FLIP_HORIZONTAL(1); break; } } // arm9.bin::0200456C -static void sub_8006C44(Window *window, s32 a1, u16 *a2, u8 a3) +static void PutWindowBottomBorderTilemap(Window *window, s32 y, u16 tilemaps[4][32][32], u8 a3) { - s32 iVar5; + s32 x; s32 i; - iVar5 = window->x - 1; + x = window->x - 1; - if (a1 > 28) + if (y > 28) return; - if (a1 < 0) + if (y < 0) return; switch (window->type) { @@ -600,148 +600,159 @@ static void sub_8006C44(Window *window, s32 a1, u16 *a2, u8 a3) break; case WINDOW_TYPE_NORMAL: case WINDOW_TYPE_WITH_HEADER: - (a2 + a1 * 0x20)[iVar5] = 0xFAD8; + tilemaps[0][y][x] = TILEMAP_TILE_NUM(0x2D8) | TILEMAP_PAL(15) | TILEMAP_FLIP_VERTICAL(1); if (a3 != 0) - (a2 + a1 * 0x20)[iVar5 + 0x400] = 0xFA93; + tilemaps[1][y][x] = TILEMAP_TILE_NUM(0x293) | TILEMAP_PAL(15) | TILEMAP_FLIP_VERTICAL(1); else - (a2 + a1 * 0x20)[iVar5 + 0x400] = 0xF2DB; - iVar5++; + tilemaps[1][y][x] = TILEMAP_TILE_NUM(0x2DB) | TILEMAP_PAL(15); + x++; for (i = 0; i < window->width; i++) { - (a2 + a1 * 0x20)[iVar5] = 0xFAD9; - (a2 + a1 * 0x20)[iVar5 + 0x400] = 0xF2DB; - iVar5++; + tilemaps[0][y][x] = TILEMAP_TILE_NUM(0x2D9) | TILEMAP_PAL(15) | TILEMAP_FLIP_VERTICAL(1); + tilemaps[1][y][x] = TILEMAP_TILE_NUM(0x2DB) | TILEMAP_PAL(15); + x++; } - (a2 + a1 * 0x20)[iVar5] = 0xFED8; + tilemaps[0][y][x] = TILEMAP_TILE_NUM(0x2D8) | TILEMAP_PAL(15) | TILEMAP_FLIP_VERTICAL(1) | TILEMAP_FLIP_HORIZONTAL(1); if (a3 != 0) - (a2 + a1 * 0x20)[iVar5 + 0x400] = 0xFE93; + tilemaps[1][y][x] = TILEMAP_TILE_NUM(0x293) | TILEMAP_PAL(15) | TILEMAP_FLIP_VERTICAL(1) | TILEMAP_FLIP_HORIZONTAL(1); else - (a2 + a1 * 0x20)[iVar5 + 0x400] = 0xF2DB; + tilemaps[1][y][x] = TILEMAP_TILE_NUM(0x2DB) | TILEMAP_PAL(15); break; case WINDOW_TYPE_4: - (a2 + a1 * 0x20)[iVar5] = 0xFAE8; - (a2 + a1 * 0x20)[iVar5 + 0x400] = 0xF2DB; - iVar5++; + tilemaps[0][y][x] = TILEMAP_TILE_NUM(0x2E8) | TILEMAP_PAL(15) | TILEMAP_FLIP_VERTICAL(1); + tilemaps[1][y][x] = TILEMAP_TILE_NUM(0x2DB) | TILEMAP_PAL(15); + x++; for (i = 0; i < window->width; i++) { - (a2 + a1 * 0x20)[iVar5] = 0xFAE9; - (a2 + a1 * 0x20)[iVar5 + 0x400] = 0xF2DB; - iVar5++; + tilemaps[0][y][x] = TILEMAP_TILE_NUM(0x2E9) | TILEMAP_PAL(15) | TILEMAP_FLIP_VERTICAL(1); + tilemaps[1][y][x] = TILEMAP_TILE_NUM(0x2DB) | TILEMAP_PAL(15); + x++; } - (a2 + a1 * 0x20)[iVar5] = 0xFEE8; - (a2 + a1 * 0x20)[iVar5 + 0x400] = 0xF2DB; + tilemaps[0][y][x] = TILEMAP_TILE_NUM(0x2E8) | TILEMAP_PAL(15) | TILEMAP_FLIP_VERTICAL(1) | TILEMAP_FLIP_HORIZONTAL(1); + tilemaps[1][y][x] = TILEMAP_TILE_NUM(0x2DB) | TILEMAP_PAL(15); break; case WINDOW_TYPE_FILL_TRANSPARENT: - (a2 + a1 * 0x20)[iVar5] = 0xFADC; - iVar5++; + tilemaps[0][y][x] = TILEMAP_TILE_NUM(0x2DC) | TILEMAP_PAL(15) | TILEMAP_FLIP_VERTICAL(1); + x++; for (i = 0; i < window->width; i++) { - (a2 + a1 * 0x20)[iVar5] = 0xFADD; - iVar5++; + tilemaps[0][y][x] = TILEMAP_TILE_NUM(0x2DD) | TILEMAP_PAL(15) | TILEMAP_FLIP_VERTICAL(1); + x++; } - (a2 + a1 * 0x20)[iVar5] = 0xFEDC; + tilemaps[0][y][x] = TILEMAP_TILE_NUM(0x2DC) | TILEMAP_PAL(15) | TILEMAP_FLIP_VERTICAL(1) | TILEMAP_FLIP_HORIZONTAL(1); break; case WINDOW_TYPE_7: - (a2 + a1 * 0x20)[iVar5] = 0xFA93; - iVar5++; + tilemaps[0][y][x] = TILEMAP_TILE_NUM(0x293) | TILEMAP_PAL(15) | TILEMAP_FLIP_VERTICAL(1); + x++; for (i = 0; i < window->width; i++) { - (a2 + a1 * 0x20)[iVar5] = 0xFA97; - iVar5++; + tilemaps[0][y][x] = TILEMAP_TILE_NUM(0x297) | TILEMAP_PAL(15) | TILEMAP_FLIP_VERTICAL(1); + x++; } - (a2 + a1 * 0x20)[iVar5] = 0xFE93; + tilemaps[0][y][x] = TILEMAP_TILE_NUM(0x293) | TILEMAP_PAL(15) | TILEMAP_FLIP_VERTICAL(1) | TILEMAP_FLIP_HORIZONTAL(1); break; } } -// Not even close but I don't feel like continuing atm https://decomp.me/scratch/F58jg // arm9.bin::02004054 -/* -static void sub_8006E94(Window *a0, s32 a1, u32 a2, const WindowHeader *a3, u16 *a4) +static void PutHeaderWindowTopBorderTilemap(Window *window, s32 y, u32 a2, const WindowHeader *winHeader, u16 tilemaps[4][32][32]) { - s32 bVar1; - s32 iVar2; + // a2: color or tile type of some sort? + bool8 currHeaderDone; + s32 x; s32 iVar3; - s32 sVar4; - u16 *puVar5; - u16 *puVar6; - u16 *puVar7; - s32 iVar8; - u16 *puVar9; - u16 *puVar10; - u16 *puVar11; - s32 local_44; - u32 local_3c; - u16 *local_30; - s32 local_2c; - u16 *local_24; + s32 i, j; - iVar2 = a0->unk0; - bVar1 = -1; + x = window->x - 1; + currHeaderDone = FALSE; - if (a1 > 28) + if (y > 28) return; - if (a1 < 0) + if (y < 0) return; - (a4 + a1 * 0x20)[iVar2 - 1] = 0xF278; - (a4 + a1 * 0x20)[iVar2 - 1 + 0x400] = 0xF27A; - (a4 + a1 * 0x20)[iVar2 - 1 + 0x20] = 0xF278; - (a4 + a1 * 0x20)[iVar2 - 1 + 0x420] = 0xF27A; - (a4 + a1 * 0x20)[iVar2 - 1 + 0x40] = 0xF2D8; - (a4 + a1 * 0x20)[iVar2 - 1 + 0x440] = 0xF2DB; + tilemaps[0][y ][x] = TILEMAP_TILE_NUM(0x278) | TILEMAP_PAL(15); + tilemaps[1][y ][x] = TILEMAP_TILE_NUM(0x27A) | TILEMAP_PAL(15); + tilemaps[0][y+1][x] = TILEMAP_TILE_NUM(0x278) | TILEMAP_PAL(15); + tilemaps[1][y+1][x] = TILEMAP_TILE_NUM(0x27A) | TILEMAP_PAL(15); + tilemaps[0][y+2][x] = TILEMAP_TILE_NUM(0x2D8) | TILEMAP_PAL(15); + tilemaps[1][y+2][x] = TILEMAP_TILE_NUM(0x2DB) | TILEMAP_PAL(15); + x++; - local_2c = iVar2 * 2; - puVar5 = a4 + a1 * 0x20 + iVar2 + 0x40; - puVar7 = a4 + a1 * 0x20 + iVar2 + 0x20; - local_30 = a4 + a1 * 0x20 + iVar2 + 0x400; - puVar11 = a4 + a1 * 0x20 + iVar2 + 0x420; - puVar9 = a4 + a1 * 0x20 + iVar2; - iVar8 = a1 * 0x40; + for (i = 0; i < winHeader->count; i++) { + if (i != winHeader->currId) { + s32 tilemapNum; + if (!currHeaderDone) { + if ((winHeader->f3 >> (i) & 1)) { + tilemapNum = i == 0 ? 27 : 31; - for (local_3c = 0; local_3c < a3[0]; local_3c++) { - if (local_3c == a3[1]) { - bVar1 = TRUE; - *puVar9 = 0xF2E0; - *local_30 = 0xF2E2; - *puVar7 = 0xF2DA; - *puVar11 = 0xF2DB; - *puVar5 = 0xF6E7; - puVar9[0x440] = 0xF2DB; - puVar5++; - puVar7++; - local_30++; - puVar11++; - puVar9++; - local_2c += 2; - iVar2++; + tilemaps[0][y ][x] = (tilemapNum + 0x278) | TILEMAP_PAL(15) | TILEMAP_FLIP_HORIZONTAL(1); + tilemaps[0][y+1][x] = TILEMAP_TILE_NUM(0x2B6) | TILEMAP_PAL(15); + tilemaps[0][y+2][x] = TILEMAP_TILE_NUM(0x2D9) | TILEMAP_PAL(15); + } + else { + tilemapNum = i == 0 ? 103 : 107; - if (a2 == 0 || ++a2 == 0) - iVar3 = 0; + tilemaps[0][y ][x] = (tilemapNum + 0x278) | TILEMAP_PAL(15) | TILEMAP_FLIP_HORIZONTAL(1); + tilemaps[0][y+1][x] = TILEMAP_TILE_NUM(0x2EF) | TILEMAP_PAL(15); + tilemaps[0][y+2][x] = TILEMAP_TILE_NUM(0x2D9) | TILEMAP_PAL(15); + } + tilemaps[1][y ][x] = TILEMAP_TILE_NUM(0x27A) | TILEMAP_PAL(15); + tilemaps[1][y+1][x] = TILEMAP_TILE_NUM(0x2DB) | TILEMAP_PAL(15); + tilemaps[1][y+2][x] = TILEMAP_TILE_NUM(0x2DB) | TILEMAP_PAL(15); + } + else { + if ((winHeader->f3 >> (i) & 1)) { + tilemapNum = i == winHeader->count - 1 ? 27 : 31; + + tilemaps[0][y ][x] = (tilemapNum + 0x278) | TILEMAP_PAL(15); + tilemaps[0][y+1][x] = TILEMAP_TILE_NUM(0x2B6) | TILEMAP_PAL(15) | TILEMAP_FLIP_HORIZONTAL(1); + tilemaps[0][y+2][x] = TILEMAP_TILE_NUM(0x2D9) | TILEMAP_PAL(15); + } + else { + tilemapNum = i == winHeader->count - 1 ? 103 : 107; + + tilemaps[0][y ][x] = (tilemapNum + 0x278) | TILEMAP_PAL(15); + tilemaps[0][y+1][x] = TILEMAP_TILE_NUM(0x2EF) | TILEMAP_PAL(15) | TILEMAP_FLIP_HORIZONTAL(1); + tilemaps[0][y+2][x] = TILEMAP_TILE_NUM(0x2D9) | TILEMAP_PAL(15); + } + tilemaps[1][y ][x] = TILEMAP_TILE_NUM(0x27A) | TILEMAP_PAL(15); + tilemaps[1][y+1][x] = TILEMAP_TILE_NUM(0x2DB) | TILEMAP_PAL(15) | TILEMAP_FLIP_HORIZONTAL(1); + tilemaps[1][y+2][x] = TILEMAP_TILE_NUM(0x2DB) | TILEMAP_PAL(15); + } + x++; + if (a2) a2++; + } + else { + currHeaderDone = TRUE; + + tilemaps[0][y ][x] = TILEMAP_TILE_NUM(0x2E0) | TILEMAP_PAL(15); + tilemaps[1][y ][x] = TILEMAP_TILE_NUM(0x2E2) | TILEMAP_PAL(15); + tilemaps[0][y+1][x] = TILEMAP_TILE_NUM(0x2DA) | TILEMAP_PAL(15); + tilemaps[1][y+1][x] = TILEMAP_TILE_NUM(0x2DB) | TILEMAP_PAL(15); + tilemaps[0][y+2][x] = TILEMAP_TILE_NUM(0x2E7) | TILEMAP_PAL(15) | TILEMAP_FLIP_HORIZONTAL(1); + tilemaps[1][y+2][x] = TILEMAP_TILE_NUM(0x2DB) | TILEMAP_PAL(15); + x++; + + if (a2) a2++; + + if (a2) + iVar3 = a2 + window->width; else - iVar3 = a2 + a0->unk4; + iVar3 = 0; - local_24 = a4 + local_2c + iVar8 + 0x80; - puVar10 = a4 + local_2c + iVar8 + 0x40; - puVar6 = a4 + local_2c + iVar8; + for (j = 0; j < winHeader->width; j++) { + u32 bits; + + tilemaps[0][y ][x] = TILEMAP_TILE_NUM(0x2E1) | TILEMAP_PAL(15); + tilemaps[1][y ][x] = TILEMAP_TILE_NUM(0x2E2) | TILEMAP_PAL(15); + bits = ~(TILEMAP_TILE_NUM(0x3FF) | TILEMAP_FLIP_HORIZONTAL(1) | TILEMAP_FLIP_VERTICAL(1)); // Clear all bits except pal + tilemaps[0][y+1][x] = bits | a2; + tilemaps[1][y+1][x] = TILEMAP_TILE_NUM(0x2DB) | TILEMAP_PAL(15); + tilemaps[0][y+2][x] = bits | iVar3; + tilemaps[1][y+2][x] = TILEMAP_TILE_NUM(0x2DB) | TILEMAP_PAL(15); + x++; - for (local_44 = 0; local_44 < a3[2]; local_44++) { - *puVar6 = 0xF2E1; - puVar6[0x400] = 0xF2E2; - *puVar10 = a2 | 0xF000; - puVar6[0x420] = 0xF2DB; - *local_24 = iVar3 | 0xF000; - puVar6[0x440] = 0xF2DB; - local_24++; - puVar10++; - puVar6++; - puVar5++; - puVar7++; - local_30++; - puVar11++; - puVar9++; - local_2c += 2; - iVar2++; if (a2 != 0) a2++; @@ -749,691 +760,37 @@ static void sub_8006E94(Window *a0, s32 a1, u32 a2, const WindowHeader *a3, u16 iVar3++; } - *puVar9 = 0xF6E0; - *local_30 = 0xF2E2; - *puVar7 = 0xF6DA; - *puVar11 = 0xF2DB; - *puVar5 = 0xF2E7; - puVar9[0x440] = 0xF2DB; - } - else { - if (bVar1) { - if ((a3[3] >> (local_3c & 0xFF) & 1) == 0) { - sVar4 = 107; - if (local_3c == a3[0] - 1) - sVar4 = 103; + tilemaps[0][y ][x] = TILEMAP_TILE_NUM(0x2E0) | TILEMAP_PAL(15) | TILEMAP_FLIP_HORIZONTAL(1); + tilemaps[1][y ][x] = TILEMAP_TILE_NUM(0x2E2) | TILEMAP_PAL(15); + tilemaps[0][y+1][x] = TILEMAP_TILE_NUM(0x2DA) | TILEMAP_PAL(15) | TILEMAP_FLIP_HORIZONTAL(1); + tilemaps[1][y+1][x] = TILEMAP_TILE_NUM(0x2DB) | TILEMAP_PAL(15); + tilemaps[0][y+2][x] = TILEMAP_TILE_NUM(0x2E7) | TILEMAP_PAL(15); + tilemaps[1][y+2][x] = TILEMAP_TILE_NUM(0x2DB) | TILEMAP_PAL(15); + x++; - *puVar9 = (sVar4 + 0x278) | 0xF000; - *puVar7 = 0xF6EF; - *puVar5 = 0xF2D9; - } - else { - sVar4 = 31; - if (local_3c == a3[0] - 1) - sVar4 = 27; - - *puVar9 = (sVar4 + 0x278) | 0xF000; - *puVar7 = 0xF6B6; - *puVar5 = 0xF2D9; - } - *local_30 = 0xF27A; - *puVar11 = 0xF6DB; - } - else { - if ((a3[3] >> (local_3c & 0xFF) & 1) == 0) { - sVar4 = 107; - if (local_3c == 0) - sVar4 = 103; - - *puVar9 = (sVar4 + 0x278) | 0xF400; - *puVar7 = 0xF2EF; - *puVar5 = 0xF2D9; - } - else { - sVar4 = 31; - if (local_3c == 0) - sVar4 = 27; - - *puVar9 = (sVar4 + 0x278) | 0xF400; - *puVar7 = 0xF2B6; - *puVar5 = 0xF2D9; - } - *local_30 = 0xF27A; - *puVar11 = 0xF2DB; - } - puVar9[0x440] = 0xF2DB; - } - - local_2c += 2; - local_30++; - iVar2++; - puVar11++; - puVar5++; - puVar7++; - puVar9++; - if (a2 != 0) - a2++; - } - - iVar8 = a0->unk0 + a0->unk4; - if (iVar2 < iVar8) { - for (iVar3 = iVar8 - iVar2; iVar3 != 0; iVar3--) { - (a4 + a1 * 0x20)[iVar2 + iVar3] = 0xF278; - (a4 + a1 * 0x20)[iVar2 + 0x400 + iVar3] = 0xF27A; - (a4 + a1 * 0x20)[iVar2 + 0x20 + iVar3] = 0xF278; - (a4 + a1 * 0x20)[iVar2 + 0x420 + iVar3] = 0xF27A; - (a4 + a1 * 0x20)[iVar2 + 0x40 + iVar3] = 0xF2D9; - (a4 + a1 * 0x20)[iVar2 + 0x440 + iVar3] = 0xF2DB; - - if (a2 != 0) - a2++; - - iVar2 = iVar8; + if (a2) a2++; } } - (a4 + a1 * 0x20)[iVar2] = 0xF278; - (a4 + a1 * 0x20)[iVar2 + 0x400] = 0xF27A; - (a4 + a1 * 0x20)[iVar2 + 0x20] = 0xF278; - (a4 + a1 * 0x20)[iVar2 + 0x420] = 0xF27A; - (a4 + a1 * 0x20)[iVar2 + 0x40] = 0xF6D8; - (a4 + a1 * 0x20)[iVar2 + 0x440] = 0xF2DB; -} -*/ -NAKED -static void sub_8006E94(Window *a0, s32 a1, u32 a2, const WindowHeader *a3, u16 *a4) -{ - asm_unified( - "\tpush {r4-r7,lr}\n" - "\tmov r7, r10\n" - "\tmov r6, r9\n" - "\tmov r5, r8\n" - "\tpush {r5-r7}\n" - "\tsub sp, 0x30\n" - "\tstr r0, [sp]\n" - "\tadds r4, r1, 0\n" - "\tadds r7, r2, 0\n" - "\tstr r3, [sp, 0x4]\n" - "\tmovs r1, 0\n" - "\tldrsh r0, [r0, r1]\n" - "\tmov r10, r0\n" - "\tmovs r2, 0x1\n" - "\tnegs r2, r2\n" - "\tadd r2, r10\n" - "\tmovs r3, 0\n" - "\tstr r3, [sp, 0x8]\n" - "\tcmp r4, 0x1C\n" - "\tble _08006EBE\n" - "\tb _080072FE\n" -"_08006EBE:\n" - "\tcmp r4, 0\n" - "\tbge _08006EC4\n" - "\tb _080072FE\n" -"_08006EC4:\n" - "\tlsls r1, r2, 1\n" - "\tlsls r4, 6\n" - "\tldr r6, [sp, 0x50]\n" - "\tadds r5, r4, r6\n" - "\tadds r1, r5\n" - "\tldr r0, _08006F9C\n" - "\tadds r3, r0, 0\n" - "\tstrh r3, [r1]\n" - "\tmovs r2, 0x80\n" - "\tlsls r2, 4\n" - "\tadds r0, r1, r2\n" - "\tldr r6, _08006FA0\n" - "\tadds r2, r6, 0\n" - "\tstrh r2, [r0]\n" - "\tadds r0, r1, 0\n" - "\tadds r0, 0x40\n" - "\tstrh r3, [r0]\n" - "\tmovs r0, 0x84\n" - "\tlsls r0, 4\n" - "\tadds r0, r1, r0\n" - "\tstrh r2, [r0]\n" - "\tadds r2, r1, 0\n" - "\tadds r2, 0x80\n" - "\tldr r3, _08006FA4\n" - "\tadds r0, r3, 0\n" - "\tstrh r0, [r2]\n" - "\tmovs r6, 0x88\n" - "\tlsls r6, 4\n" - "\tadds r1, r6\n" - "\tldr r2, _08006FA8\n" - "\tadds r0, r2, 0\n" - "\tstrh r0, [r1]\n" - "\tmov r12, r10\n" - "\tmovs r3, 0\n" - "\tstr r4, [sp, 0x18]\n" - "\tldr r4, [sp, 0x4]\n" - "\tldrb r4, [r4]\n" - "\tcmp r3, r4\n" - "\tblt _08006F14\n" - "\tb _08007238\n" -"_08006F14:\n" - "\tadds r2, r5, 0\n" - "\tmov r5, r12\n" - "\tlsls r1, r5, 1\n" - "\tldr r0, [sp, 0x50]\n" - "\tadds r0, 0x80\n" - "\tldr r6, [sp, 0x18]\n" - "\tadds r0, r6, r0\n" - "\tadds r0, r1\n" - "\tmov r9, r0\n" - "\tldr r0, [sp, 0x50]\n" - "\tadds r0, 0x40\n" - "\tadds r0, r6, r0\n" - "\tadds r0, r1\n" - "\tmov r8, r0\n" - "\tldr r4, [sp, 0x50]\n" - "\tmovs r5, 0x80\n" - "\tlsls r5, 4\n" - "\tadds r0, r4, r5\n" - "\tadds r0, r6, r0\n" - "\tadds r0, r1, r0\n" - "\tstr r0, [sp, 0x20]\n" - "\tmovs r6, 0x84\n" - "\tlsls r6, 4\n" - "\tadds r0, r4, r6\n" - "\tldr r4, [sp, 0x18]\n" - "\tadds r0, r4, r0\n" - "\tadds r0, r1\n" - "\tmov r10, r0\n" - "\tadds r4, r1, r2\n" - "\tldr r5, [sp, 0x18]\n" - "\tstr r5, [sp, 0x10]\n" - "\tstr r2, [sp, 0x1C]\n" - "\tstr r1, [sp, 0x24]\n" -"_08006F56:\n" - "\tldr r6, [sp, 0x4]\n" - "\tldrb r6, [r6, 0x1]\n" - "\tcmp r3, r6\n" - "\tbne _08006F60\n" - "\tb _080070C8\n" -"_08006F60:\n" - "\tldr r0, [sp, 0x8]\n" - "\tcmp r0, 0\n" - "\tbne _08007008\n" - "\tldr r1, [sp, 0x4]\n" - "\tldrb r0, [r1, 0x3]\n" - "\tasrs r0, r3\n" - "\tmovs r1, 0x1\n" - "\tands r0, r1\n" - "\tcmp r0, 0\n" - "\tbeq _08006FB8\n" - "\tmovs r1, 0x1F\n" - "\tcmp r3, 0\n" - "\tbne _08006F7C\n" - "\tmovs r1, 0x1B\n" -"_08006F7C:\n" - "\tmovs r2, 0x9E\n" - "\tlsls r2, 2\n" - "\tadds r0, r1, r2\n" - "\tldr r5, _08006FAC\n" - "\tadds r1, r5, 0\n" - "\torrs r0, r1\n" - "\tstrh r0, [r4]\n" - "\tldr r6, _08006FB0\n" - "\tadds r0, r6, 0\n" - "\tmov r1, r8\n" - "\tstrh r0, [r1]\n" - "\tldr r5, _08006FB4\n" - "\tmov r2, r9\n" - "\tstrh r5, [r2]\n" - "\tb _08006FDC\n" - "\t.align 2, 0\n" -"_08006F9C: .4byte 0x0000f278\n" -"_08006FA0: .4byte 0x0000f27a\n" -"_08006FA4: .4byte 0x0000f2d8\n" -"_08006FA8: .4byte 0x0000f2db\n" -"_08006FAC: .4byte 0xfffff400\n" -"_08006FB0: .4byte 0x0000f2b6\n" -"_08006FB4: .4byte 0x0000f2d9\n" -"_08006FB8:\n" - "\tmovs r1, 0x6B\n" - "\tcmp r3, 0\n" - "\tbne _08006FC0\n" - "\tmovs r1, 0x67\n" -"_08006FC0:\n" - "\tmovs r6, 0x9E\n" - "\tlsls r6, 2\n" - "\tadds r0, r1, r6\n" - "\tldr r2, _08006FF4\n" - "\tadds r1, r2, 0\n" - "\torrs r0, r1\n" - "\tstrh r0, [r4]\n" - "\tldr r5, _08006FF8\n" - "\tadds r0, r5, 0\n" - "\tmov r6, r8\n" - "\tstrh r0, [r6]\n" - "\tldr r1, _08006FFC\n" - "\tmov r0, r9\n" - "\tstrh r1, [r0]\n" -"_08006FDC:\n" - "\tldr r2, _08007000\n" - "\tadds r0, r2, 0\n" - "\tldr r5, [sp, 0x20]\n" - "\tstrh r0, [r5]\n" - "\tldr r0, _08007004\n" - "\tmov r6, r10\n" - "\tstrh r0, [r6]\n" - "\tmovs r1, 0x88\n" - "\tlsls r1, 4\n" - "\tadds r0, r4, r1\n" - "\tadds r2, 0x61\n" - "\tb _0800708E\n" - "\t.align 2, 0\n" -"_08006FF4: .4byte 0xfffff400\n" -"_08006FF8: .4byte 0x0000f2ef\n" -"_08006FFC: .4byte 0x0000f2d9\n" -"_08007000: .4byte 0x0000f27a\n" -"_08007004: .4byte 0x0000f2db\n" -"_08007008:\n" - "\tldr r5, [sp, 0x4]\n" - "\tldrb r0, [r5, 0x3]\n" - "\tasrs r0, r3\n" - "\tmovs r1, 0x1\n" - "\tands r0, r1\n" - "\tcmp r0, 0\n" - "\tbeq _0800704C\n" - "\tldrb r0, [r5]\n" - "\tsubs r0, 0x1\n" - "\tmovs r1, 0x1F\n" - "\tcmp r3, r0\n" - "\tbne _08007022\n" - "\tmovs r1, 0x1B\n" -"_08007022:\n" - "\tmovs r6, 0x9E\n" - "\tlsls r6, 2\n" - "\tadds r0, r1, r6\n" - "\tldr r2, _08007040\n" - "\tadds r1, r2, 0\n" - "\torrs r0, r1\n" - "\tstrh r0, [r4]\n" - "\tldr r5, _08007044\n" - "\tadds r0, r5, 0\n" - "\tmov r6, r8\n" - "\tstrh r0, [r6]\n" - "\tldr r1, _08007048\n" - "\tmov r0, r9\n" - "\tstrh r1, [r0]\n" - "\tb _08007076\n" - "\t.align 2, 0\n" -"_08007040: .4byte 0xfffff000\n" -"_08007044: .4byte 0x0000f6b6\n" -"_08007048: .4byte 0x0000f2d9\n" -"_0800704C:\n" - "\tldr r2, [sp, 0x4]\n" - "\tldrb r0, [r2]\n" - "\tsubs r0, 0x1\n" - "\tmovs r1, 0x6B\n" - "\tcmp r3, r0\n" - "\tbne _0800705A\n" - "\tmovs r1, 0x67\n" -"_0800705A:\n" - "\tmovs r5, 0x9E\n" - "\tlsls r5, 2\n" - "\tadds r0, r1, r5\n" - "\tldr r6, _080070B0\n" - "\tadds r1, r6, 0\n" - "\torrs r0, r1\n" - "\tstrh r0, [r4]\n" - "\tldr r1, _080070B4\n" - "\tadds r0, r1, 0\n" - "\tmov r2, r8\n" - "\tstrh r0, [r2]\n" - "\tldr r6, _080070B8\n" - "\tmov r5, r9\n" - "\tstrh r6, [r5]\n" -"_08007076:\n" - "\tldr r1, _080070BC\n" - "\tadds r0, r1, 0\n" - "\tldr r2, [sp, 0x20]\n" - "\tstrh r0, [r2]\n" - "\tldr r5, _080070C0\n" - "\tadds r0, r5, 0\n" - "\tmov r6, r10\n" - "\tstrh r0, [r6]\n" - "\tmovs r1, 0x88\n" - "\tlsls r1, 4\n" - "\tadds r0, r4, r1\n" - "\tldr r2, _080070C4\n" -"_0800708E:\n" - "\tstrh r2, [r0]\n" - "\tmovs r5, 0x2\n" - "\tadd r9, r5\n" - "\tadd r8, r5\n" - "\tldr r6, [sp, 0x20]\n" - "\tadds r6, 0x2\n" - "\tstr r6, [sp, 0x20]\n" - "\tadd r10, r5\n" - "\tadds r4, 0x2\n" - "\tldr r0, [sp, 0x24]\n" - "\tadds r0, 0x2\n" - "\tstr r0, [sp, 0x24]\n" - "\tmovs r1, 0x1\n" - "\tadd r12, r1\n" - "\tadds r3, 0x1\n" - "\tstr r3, [sp, 0x14]\n" - "\tb _08007226\n" - "\t.align 2, 0\n" -"_080070B0: .4byte 0xfffff000\n" -"_080070B4: .4byte 0x0000f6ef\n" -"_080070B8: .4byte 0x0000f2d9\n" -"_080070BC: .4byte 0x0000f27a\n" -"_080070C0: .4byte 0x0000f6db\n" -"_080070C4: .4byte 0x0000f2db\n" -"_080070C8:\n" - "\tmovs r2, 0x1\n" - "\tstr r2, [sp, 0x8]\n" - "\tldr r5, _08007128\n" - "\tadds r0, r5, 0\n" - "\tstrh r0, [r4]\n" - "\tldr r6, _0800712C\n" - "\tadds r0, r6, 0\n" - "\tldr r1, [sp, 0x20]\n" - "\tstrh r0, [r1]\n" - "\tldr r2, _08007130\n" - "\tadds r0, r2, 0\n" - "\tmov r5, r8\n" - "\tstrh r0, [r5]\n" - "\tldr r0, _08007134\n" - "\tmov r6, r10\n" - "\tstrh r0, [r6]\n" - "\tldr r1, _08007138\n" - "\tadds r0, r1, 0\n" - "\tmov r2, r9\n" - "\tstrh r0, [r2]\n" - "\tmovs r5, 0x88\n" - "\tlsls r5, 4\n" - "\tadds r0, r4, r5\n" - "\tldr r6, _08007134\n" - "\tstrh r6, [r0]\n" - "\tmovs r0, 0x2\n" - "\tadd r9, r0\n" - "\tadd r8, r0\n" - "\tldr r1, [sp, 0x20]\n" - "\tadds r1, 0x2\n" - "\tstr r1, [sp, 0x20]\n" - "\tadd r10, r0\n" - "\tadds r4, 0x2\n" - "\tldr r2, [sp, 0x24]\n" - "\tadds r2, 0x2\n" - "\tstr r2, [sp, 0x24]\n" - "\tmovs r5, 0x1\n" - "\tadd r12, r5\n" - "\tcmp r7, 0\n" - "\tbeq _0800713C\n" - "\tadds r7, 0x1\n" - "\tcmp r7, 0\n" - "\tbeq _0800713C\n" - "\tldr r6, [sp]\n" - "\tmovs r1, 0x4\n" - "\tldrsh r0, [r6, r1]\n" - "\tadds r2, r7, r0\n" - "\tb _0800713E\n" - "\t.align 2, 0\n" -"_08007128: .4byte 0x0000f2e0\n" -"_0800712C: .4byte 0x0000f2e2\n" -"_08007130: .4byte 0x0000f2da\n" -"_08007134: .4byte 0x0000f2db\n" -"_08007138: .4byte 0x0000f6e7\n" -"_0800713C:\n" - "\tmovs r2, 0\n" -"_0800713E:\n" - "\tmovs r5, 0\n" - "\tstr r5, [sp, 0xC]\n" - "\tadds r3, 0x1\n" - "\tstr r3, [sp, 0x14]\n" - "\tldr r6, [sp, 0x4]\n" - "\tldrb r6, [r6, 0x2]\n" - "\tcmp r5, r6\n" - "\tbge _080071E0\n" - "\tldr r0, [sp, 0x50]\n" - "\tadds r0, 0x80\n" - "\tldr r1, [sp, 0x10]\n" - "\tadds r0, r1, r0\n" - "\tldr r3, [sp, 0x24]\n" - "\tadds r0, r3, r0\n" - "\tstr r0, [sp, 0x2C]\n" - "\tldr r0, [sp, 0x50]\n" - "\tadds r0, 0x40\n" - "\tadds r0, r1, r0\n" - "\tadds r5, r3, r0\n" - "\tldr r6, [sp, 0x1C]\n" - "\tadds r3, r6\n" -"_08007168:\n" - "\tldr r1, _08007310\n" - "\tadds r0, r1, 0\n" - "\tstrh r0, [r3]\n" - "\tmovs r6, 0x80\n" - "\tlsls r6, 4\n" - "\tadds r6, r3, r6\n" - "\tstr r6, [sp, 0x28]\n" - "\tadds r1, 0x1\n" - "\tadds r0, r1, 0\n" - "\tstrh r0, [r6]\n" - "\tadds r0, r7, 0\n" - "\tldr r6, _08007314\n" - "\torrs r0, r6\n" - "\tstrh r0, [r5]\n" - "\tmovs r1, 0x84\n" - "\tlsls r1, 4\n" - "\tadds r0, r3, r1\n" - "\tldr r6, _08007318\n" - "\tstrh r6, [r0]\n" - "\tadds r0, r2, 0\n" - "\tldr r1, _08007314\n" - "\torrs r0, r1\n" - "\tldr r6, [sp, 0x2C]\n" - "\tstrh r0, [r6]\n" - "\tmovs r1, 0x88\n" - "\tlsls r1, 4\n" - "\tadds r0, r3, r1\n" - "\tldr r6, _08007318\n" - "\tstrh r6, [r0]\n" - "\tldr r0, [sp, 0x2C]\n" - "\tadds r0, 0x2\n" - "\tstr r0, [sp, 0x2C]\n" - "\tadds r5, 0x2\n" - "\tadds r3, 0x2\n" - "\tmovs r1, 0x2\n" - "\tadd r9, r1\n" - "\tadd r8, r1\n" - "\tldr r6, [sp, 0x20]\n" - "\tadds r6, 0x2\n" - "\tstr r6, [sp, 0x20]\n" - "\tadd r10, r1\n" - "\tadds r4, 0x2\n" - "\tldr r0, [sp, 0x24]\n" - "\tadds r0, 0x2\n" - "\tstr r0, [sp, 0x24]\n" - "\tmovs r1, 0x1\n" - "\tadd r12, r1\n" - "\tcmp r7, 0\n" - "\tbeq _080071CC\n" - "\tadds r7, 0x1\n" -"_080071CC:\n" - "\tcmp r2, 0\n" - "\tbeq _080071D2\n" - "\tadds r2, 0x1\n" -"_080071D2:\n" - "\tldr r6, [sp, 0xC]\n" - "\tadds r6, 0x1\n" - "\tstr r6, [sp, 0xC]\n" - "\tldr r0, [sp, 0x4]\n" - "\tldrb r0, [r0, 0x2]\n" - "\tcmp r6, r0\n" - "\tblt _08007168\n" -"_080071E0:\n" - "\tldr r1, _0800731C\n" - "\tadds r0, r1, 0\n" - "\tstrh r0, [r4]\n" - "\tldr r2, _08007320\n" - "\tadds r0, r2, 0\n" - "\tldr r3, [sp, 0x20]\n" - "\tstrh r0, [r3]\n" - "\tldr r5, _08007324\n" - "\tadds r0, r5, 0\n" - "\tmov r6, r8\n" - "\tstrh r0, [r6]\n" - "\tldr r1, _08007318\n" - "\tmov r0, r10\n" - "\tstrh r1, [r0]\n" - "\tadds r2, 0x5\n" - "\tadds r0, r2, 0\n" - "\tmov r3, r9\n" - "\tstrh r0, [r3]\n" - "\tmovs r5, 0x88\n" - "\tlsls r5, 4\n" - "\tadds r0, r4, r5\n" - "\tstrh r1, [r0]\n" - "\tmovs r6, 0x2\n" - "\tadd r9, r6\n" - "\tadd r8, r6\n" - "\tldr r0, [sp, 0x20]\n" - "\tadds r0, 0x2\n" - "\tstr r0, [sp, 0x20]\n" - "\tadd r10, r6\n" - "\tadds r4, 0x2\n" - "\tldr r1, [sp, 0x24]\n" - "\tadds r1, 0x2\n" - "\tstr r1, [sp, 0x24]\n" - "\tmovs r2, 0x1\n" - "\tadd r12, r2\n" -"_08007226:\n" - "\tcmp r7, 0\n" - "\tbeq _0800722C\n" - "\tadds r7, 0x1\n" -"_0800722C:\n" - "\tldr r3, [sp, 0x14]\n" - "\tldr r5, [sp, 0x4]\n" - "\tldrb r5, [r5]\n" - "\tcmp r3, r5\n" - "\tbge _08007238\n" - "\tb _08006F56\n" -"_08007238:\n" - "\tldr r6, [sp]\n" - "\tmovs r0, 0\n" - "\tldrsh r1, [r6, r0]\n" - "\tmovs r2, 0x4\n" - "\tldrsh r0, [r6, r2]\n" - "\tadds r0, r1, r0\n" - "\tcmp r12, r0\n" - "\tbge _080072BC\n" - "\tldr r3, _08007328\n" - "\tadds r4, r3, 0\n" - "\tmov r8, r0\n" - "\tmov r5, r12\n" - "\tlsls r1, r5, 1\n" - "\tldr r0, [sp, 0x50]\n" - "\tadds r0, 0x80\n" - "\tldr r6, [sp, 0x18]\n" - "\tadds r0, r6, r0\n" - "\tadds r5, r1, r0\n" - "\tldr r0, [sp, 0x50]\n" - "\tadds r0, 0x40\n" - "\tadds r0, r6, r0\n" - "\tadds r3, r1, r0\n" - "\tldr r0, [sp, 0x50]\n" - "\tadds r6, r0\n" - "\tadds r2, r1, r6\n" - "\tmovs r1, 0x80\n" - "\tlsls r1, 4\n" - "\tmov r10, r1\n" - "\tmovs r6, 0x84\n" - "\tlsls r6, 4\n" - "\tmov r9, r6\n" - "\tmov r0, r8\n" - "\tmov r1, r12\n" - "\tsubs r0, r1\n" - "\tmov r12, r0\n" -"_0800727E:\n" - "\tstrh r4, [r2]\n" - "\tmov r6, r10\n" - "\tadds r0, r2, r6\n" - "\tldr r1, _0800732C\n" - "\tstrh r1, [r0]\n" - "\tstrh r4, [r3]\n" - "\tmov r6, r9\n" - "\tadds r0, r2, r6\n" - "\tstrh r1, [r0]\n" - "\tadds r1, 0x5F\n" - "\tadds r0, r1, 0\n" - "\tstrh r0, [r5]\n" - "\tmovs r6, 0x88\n" - "\tlsls r6, 4\n" - "\tadds r1, r2, r6\n" - "\tldr r6, _08007318\n" - "\tadds r0, r6, 0\n" - "\tstrh r0, [r1]\n" - "\tadds r5, 0x2\n" - "\tadds r3, 0x2\n" - "\tadds r2, 0x2\n" - "\tmovs r0, 0x1\n" - "\tnegs r0, r0\n" - "\tadd r12, r0\n" - "\tcmp r7, 0\n" - "\tbeq _080072B4\n" - "\tadds r7, 0x1\n" -"_080072B4:\n" - "\tmov r1, r12\n" - "\tcmp r1, 0\n" - "\tbne _0800727E\n" - "\tmov r12, r8\n" -"_080072BC:\n" - "\tmov r2, r12\n" - "\tlsls r1, r2, 1\n" - "\tldr r3, [sp, 0x18]\n" - "\tldr r4, [sp, 0x50]\n" - "\tadds r0, r3, r4\n" - "\tadds r1, r0\n" - "\tldr r5, _08007328\n" - "\tadds r3, r5, 0\n" - "\tstrh r3, [r1]\n" - "\tmovs r6, 0x80\n" - "\tlsls r6, 4\n" - "\tadds r0, r1, r6\n" - "\tldr r4, _0800732C\n" - "\tadds r2, r4, 0\n" - "\tstrh r2, [r0]\n" - "\tadds r0, r1, 0\n" - "\tadds r0, 0x40\n" - "\tstrh r3, [r0]\n" - "\tmovs r5, 0x84\n" - "\tlsls r5, 4\n" - "\tadds r0, r1, r5\n" - "\tstrh r2, [r0]\n" - "\tadds r2, r1, 0\n" - "\tadds r2, 0x80\n" - "\tldr r6, _08007330\n" - "\tadds r0, r6, 0\n" - "\tstrh r0, [r2]\n" - "\tmovs r0, 0x88\n" - "\tlsls r0, 4\n" - "\tadds r1, r0\n" - "\tldr r2, _08007318\n" - "\tadds r0, r2, 0\n" - "\tstrh r0, [r1]\n" -"_080072FE:\n" - "\tadd sp, 0x30\n" - "\tpop {r3-r5}\n" - "\tmov r8, r3\n" - "\tmov r9, r4\n" - "\tmov r10, r5\n" - "\tpop {r4-r7}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" -"_08007310: .4byte 0x0000f2e1\n" -"_08007314: .4byte 0xfffff000\n" -"_08007318: .4byte 0x0000f2db\n" -"_0800731C: .4byte 0x0000f6e0\n" -"_08007320: .4byte 0x0000f2e2\n" -"_08007324: .4byte 0x0000f6da\n" -"_08007328: .4byte 0x0000f278\n" -"_0800732C: .4byte 0x0000f27a\n" -"_08007330: .4byte 0x0000f6d8"); + while (x < window->x + window->width) { + tilemaps[0][y ][x] = TILEMAP_TILE_NUM(0x278) | TILEMAP_PAL(15); + tilemaps[1][y ][x] = TILEMAP_TILE_NUM(0x27A) | TILEMAP_PAL(15); + tilemaps[0][y+1][x] = TILEMAP_TILE_NUM(0x278) | TILEMAP_PAL(15); + tilemaps[1][y+1][x] = TILEMAP_TILE_NUM(0x27A) | TILEMAP_PAL(15); + tilemaps[0][y+2][x] = TILEMAP_TILE_NUM(0x2D9) | TILEMAP_PAL(15); + tilemaps[1][y+2][x] = TILEMAP_TILE_NUM(0x2DB) | TILEMAP_PAL(15); + x++; + + if (a2) a2++; + } + + tilemaps[0][y ][x] = TILEMAP_TILE_NUM(0x278) | TILEMAP_PAL(15); + tilemaps[1][y ][x] = TILEMAP_TILE_NUM(0x27A) | TILEMAP_PAL(15); + tilemaps[0][y+1][x] = TILEMAP_TILE_NUM(0x278) | TILEMAP_PAL(15); + tilemaps[1][y+1][x] = TILEMAP_TILE_NUM(0x27A) | TILEMAP_PAL(15); + tilemaps[0][y+2][x] = TILEMAP_TILE_NUM(0x2D8) | TILEMAP_PAL(15) | TILEMAP_FLIP_HORIZONTAL(1); + tilemaps[1][y+2][x] = TILEMAP_TILE_NUM(0x2DB) | TILEMAP_PAL(15); + x++; } // arm9.bin::02003FB0