summaryrefslogtreecommitdiff
path: root/arm9/src
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/src')
-rw-r--r--arm9/src/GX_layers.c28
-rw-r--r--arm9/src/bg_window.c42
-rw-r--r--arm9/src/error_message_reset.c46
-rw-r--r--arm9/src/timer3.c46
4 files changed, 83 insertions, 79 deletions
diff --git a/arm9/src/GX_layers.c b/arm9/src/GX_layers.c
index 790b13bb..28147dbd 100644
--- a/arm9/src/GX_layers.c
+++ b/arm9/src/GX_layers.c
@@ -3,19 +3,19 @@
#include "gx.h"
#include "main.h"
-
-struct GX_LayerData layer_data;
+static u32 EngineA_DISPCNT_LayerMask;
+static u32 EngineB_DISPCNT_LayerMask;
THUMB_FUNC void GX_SetBanks(const struct GraphicsBanks *banks)
{
GX_ResetBankForBG();
GX_ResetBankForBGExtPltt();
GX_ResetBankForSubBG();
- FUN_020C6034();
+ GX_ResetBankForSubBGExtPltt();
GX_ResetBankForOBJ();
GX_ResetBankForOBJExtPltt();
- FUN_020C605C();
GX_ResetBankForSubOBJ();
+ GX_ResetBankForSubOBJExtPltt();
GX_ResetBankForTex();
GX_ResetBankForTexPltt();
@@ -34,58 +34,58 @@ THUMB_FUNC void GX_SetBanks(const struct GraphicsBanks *banks)
THUMB_FUNC void GX_DisableEngineALayers()
{
- layer_data.EngineA_DISPCNT_LayerMask = 0;
+ EngineA_DISPCNT_LayerMask = 0;
}
THUMB_FUNC void GX_EngineAToggleLayers(u32 layer_mask, GX_LayerToggle layer_toggle)
{
if (layer_toggle == GX_LAYER_TOGGLE_ON)
{
- if ((layer_data.EngineA_DISPCNT_LayerMask & layer_mask) != 0)
+ if ((EngineA_DISPCNT_LayerMask & layer_mask) != 0)
{
return;
}
}
else
{
- if ((layer_data.EngineA_DISPCNT_LayerMask & layer_mask) == 0)
+ if ((EngineA_DISPCNT_LayerMask & layer_mask) == 0)
{
return;
}
}
- GX_SetVisiblePlane(layer_data.EngineA_DISPCNT_LayerMask ^= layer_mask);
+ GX_SetVisiblePlane(EngineA_DISPCNT_LayerMask ^= layer_mask);
}
THUMB_FUNC void GX_SetEngineALayers(u32 layer_mask)
{
- layer_data.EngineA_DISPCNT_LayerMask = layer_mask;
+ EngineA_DISPCNT_LayerMask = layer_mask;
GX_SetVisiblePlane(layer_mask);
}
THUMB_FUNC void GX_DisableEngineBLayers()
{
- layer_data.EngineB_DISPCNT_LayerMask = 0;
+ EngineB_DISPCNT_LayerMask = 0;
}
THUMB_FUNC void GX_EngineBToggleLayers(u32 layer_mask, GX_LayerToggle layer_toggle)
{
if (layer_toggle == GX_LAYER_TOGGLE_ON)
{
- if ((layer_data.EngineB_DISPCNT_LayerMask & layer_mask) != 0)
+ if ((EngineB_DISPCNT_LayerMask & layer_mask) != 0)
{
return;
}
}
else
{
- if ((layer_data.EngineB_DISPCNT_LayerMask & layer_mask) == 0)
+ if ((EngineB_DISPCNT_LayerMask & layer_mask) == 0)
{
return;
}
}
- GXS_SetVisiblePlane(layer_data.EngineB_DISPCNT_LayerMask ^= layer_mask);
+ GXS_SetVisiblePlane(EngineB_DISPCNT_LayerMask ^= layer_mask);
}
THUMB_FUNC void GX_BothDispOn()
@@ -108,5 +108,5 @@ THUMB_FUNC void GX_SwapDisplay()
THUMB_FUNC u32 GX_GetEngineALayers()
{
- return layer_data.EngineA_DISPCNT_LayerMask;
+ return EngineA_DISPCNT_LayerMask;
}
diff --git a/arm9/src/bg_window.c b/arm9/src/bg_window.c
index 23763d76..2986645f 100644
--- a/arm9/src/bg_window.c
+++ b/arm9/src/bg_window.c
@@ -215,7 +215,7 @@ THUMB_FUNC void InitBgFromTemplate(
MI_CpuClear16(bgConfig->bgs[bgId].tilemapBuffer, template->bufferSize);
bgConfig->bgs[bgId].bufferSize = template->bufferSize;
- bgConfig->bgs[bgId].baseTile = template->unk0c;
+ bgConfig->bgs[bgId].baseTile = template->baseTile;
}
else
{
@@ -228,7 +228,7 @@ THUMB_FUNC void InitBgFromTemplate(
bgConfig->bgs[bgId].mode = bgMode;
bgConfig->bgs[bgId].colorMode = template->colorMode;
- if (bgMode == GF_BG_TYPE_TEXT && template->colorMode == 0)
+ if (bgMode == GF_BG_TYPE_TEXT && template->colorMode == GX_BG_COLORMODE_16)
{
bgConfig->bgs[bgId].tileSize = 0x20;
}
@@ -237,8 +237,8 @@ THUMB_FUNC void InitBgFromTemplate(
bgConfig->bgs[bgId].tileSize = 0x40;
}
- BgSetPosTextAndCommit(bgConfig, bgId, BG_POS_OP_SET_X, template->unk00);
- BgSetPosTextAndCommit(bgConfig, bgId, BG_POS_OP_SET_Y, template->unk04);
+ BgSetPosTextAndCommit(bgConfig, bgId, BG_POS_OP_SET_X, template->x);
+ BgSetPosTextAndCommit(bgConfig, bgId, BG_POS_OP_SET_Y, template->y);
}
THUMB_FUNC void SetBgControlParam(struct BgConfig *config, u8 bgId, u32 attr, u8 value)
@@ -893,7 +893,7 @@ THUMB_FUNC void BG_LoadScreenTilemapData(
THUMB_FUNC void BG_LoadCharTilesData(
struct BgConfig *bgConfig, u32 bgId, u32 *charData, u32 offset, u32 numTiles)
{
- if (bgConfig->bgs[bgId].colorMode == 0)
+ if (bgConfig->bgs[bgId].colorMode == GX_BG_COLORMODE_16)
{
BG_LoadCharPixelData(bgConfig, bgId, charData, offset, numTiles << 5);
return;
@@ -1874,7 +1874,7 @@ THUMB_FUNC struct Window *AllocWindows(u32 heap_id, s32 size)
THUMB_FUNC void InitWindow(struct Window *window)
{
window->bgConfig = NULL;
- window->bgId = 0xff;
+ window->bgId = GF_BG_LYR_UNALLOC;
window->tilemapLeft = 0;
window->tilemapTop = 0;
window->width = 0;
@@ -1884,7 +1884,7 @@ THUMB_FUNC void InitWindow(struct Window *window)
window->baseTile = 0;
window->pixelBuffer = NULL;
- window->unk0b_15 = 0;
+ window->colorMode = GF_BG_CLR_4BPP;
}
THUMB_FUNC BOOL WindowIsInUse(struct Window *window)
@@ -1897,12 +1897,6 @@ THUMB_FUNC BOOL WindowIsInUse(struct Window *window)
return TRUE;
}
-enum UnkEnum1
-{
- UnkEnum1_0 = 0,
- UnkEnum1_1 = 1
-};
-
THUMB_FUNC void AddWindowParameterized(struct BgConfig *param0,
struct Window *window,
u8 bgId,
@@ -1935,17 +1929,7 @@ THUMB_FUNC void AddWindowParameterized(struct BgConfig *param0,
window->baseTile = baseTile;
window->pixelBuffer = ptr;
- enum UnkEnum1 r2;
- if (param0->bgs[bgId].colorMode == 0)
- {
- r2 = UnkEnum1_0;
- }
- else
- {
- r2 = UnkEnum1_1;
- }
-
- window->unk0b_15 = r2;
+ window->colorMode = param0->bgs[bgId].colorMode == GX_BG_COLORMODE_16 ? GF_BG_CLR_4BPP : GF_BG_CLR_8BPP;
}
THUMB_FUNC void AddTextWindowTopLeftCorner(struct BgConfig *param0,
@@ -1969,7 +1953,7 @@ THUMB_FUNC void AddTextWindowTopLeftCorner(struct BgConfig *param0,
window->height = height;
window->baseTile = baseTile;
window->pixelBuffer = ptr;
- window->unk0b_15 = 0;
+ window->colorMode = GF_BG_CLR_4BPP;
}
}
@@ -2314,7 +2298,7 @@ THUMB_FUNC void BlitBitmapRect(struct Window *window,
window->pixelBuffer, (u16)(window->width << 3), (u16)(window->height << 3)
};
- if (window->bgConfig->bgs[window->bgId].colorMode == 0)
+ if (window->bgConfig->bgs[window->bgId].colorMode == GX_BG_COLORMODE_16)
{
BlitBitmapRect4Bit(&st1c, &st14, param2, param3, param6, param7, param8, param9, param10);
}
@@ -2331,7 +2315,7 @@ THUMB_FUNC void FillWindowPixelRect(
window->pixelBuffer, (u16)(window->width << 3), (u16)(window->height << 3)
};
- if (window->bgConfig->bgs[window->bgId].colorMode == 0)
+ if (window->bgConfig->bgs[window->bgId].colorMode == GX_BG_COLORMODE_16)
{
FillBitmapRect4Bit(&st8, x, y, width, height, fillValue);
}
@@ -4909,7 +4893,7 @@ _0201A8BC: // 0x0201A8BC
THUMB_FUNC void ScrollWindow(struct Window *window, u32 param1, u8 param2, u8 param3)
{
- if (window->bgConfig->bgs[window->bgId].colorMode == 0)
+ if (window->bgConfig->bgs[window->bgId].colorMode == GX_BG_COLORMODE_16)
{
ScrollWindow4bpp(window, param1, param2, param3);
}
@@ -5375,7 +5359,7 @@ THUMB_FUNC u32 DoesPixelAtScreenXYMatchPtrVal(
xPixOffs = (u8)(x & 7);
yPixOffs = (u8)(y & 7);
- if (bgConfig->bgs[bgId].colorMode == 0)
+ if (bgConfig->bgs[bgId].colorMode == GX_BG_COLORMODE_16)
{
u16 *tilemapBuffer = bgConfig->bgs[bgId].tilemapBuffer;
u8 *ptr = AllocFromHeapAtEnd(bgConfig->heap_id, 0x40);
diff --git a/arm9/src/error_message_reset.c b/arm9/src/error_message_reset.c
index 0c6ac0fe..e0d01bde 100644
--- a/arm9/src/error_message_reset.c
+++ b/arm9/src/error_message_reset.c
@@ -7,17 +7,37 @@
#include "PAD_pad.h"
-const struct WindowTemplate UNK_020FF49C = {0, 3, 3, 0x1a, 0x12, 1, 0x23 };
+const struct WindowTemplate UNK_020FF49C = {
+ .bgId = GF_BG_LYR_MAIN_0,
+ .tilemapLeft = 3,
+ .tilemapTop = 3,
+ .width = 26,
+ .height = 18,
+ .paletteNum = 1,
+ .baseTile = 0x23
+};
const struct HeapParam UNK_020FF4A4[] = {
{0x00020000, OS_ARENA_MAIN}
};
-const struct GraphicsModes UNK_020FF4AC = { dispMode : GX_DISPMODE_GRAPHICS };
-
-const struct BgTemplate UNK_020FF4BC = { 0, 0, 0x800, 0, 1, 0, 0, 6, 0, 1, 0, 0, 0 };
+const struct GraphicsModes UNK_020FF4AC = { .dispMode = GX_DISPMODE_GRAPHICS };
+
+const struct BgTemplate UNK_020FF4BC = {
+ .x = 0,
+ .y = 0,
+ .bufferSize = 0x800,
+ .baseTile = 0,
+ .size = GF_BG_SCR_SIZE_256x256,
+ .colorMode = GX_BG_COLORMODE_16,
+ .screenBase = GX_BG_SCRBASE_0x0000, .charBase = GX_BG_CHARBASE_0x18000,
+ .bgExtPltt = GX_BG_EXTPLTT_01,
+ .priority = 1,
+ .areaOver = 0,
+ .mosaic = FALSE
+};
-const struct GraphicsBanks UNK_020FF4D8 = { bg : 3 };
+const struct GraphicsBanks UNK_020FF4D8 = { .bg = 3 };
u32 sErrorMessagePrinterLock;
@@ -30,8 +50,7 @@ extern void FUN_0200A274(u32 param0, u32 param1, u32 param2);
THUMB_FUNC void VBlankHandler()
{
- *(vu32 *)HW_INTR_CHECK_BUF |= 1;
-
+ OS_SetIrqCheckFlag(OS_IE_V_BLANK);
MI_WaitDma(3);
}
@@ -61,18 +80,19 @@ THUMB_FUNC void PrintErrorMessageAndReset()
GX_DisableEngineALayers();
GX_DisableEngineBLayers();
- reg_GX_DISPCNT &= ~REG_GX_DISPCNT_DISPLAY_MASK;
- reg_GXS_DB_DISPCNT &= ~REG_GXS_DB_DISPCNT_DISPLAY_MASK;
+ GX_SetVisiblePlane(0);
+ GXS_SetVisiblePlane(0);
SetKeyRepeatTimers(4, 8);
gMain.unk65 = 0;
GX_SwapDisplay();
- reg_G2_BLDCNT = 0;
- reg_G2S_DB_BLDCNT = 0;
- reg_GX_DISPCNT &= ~(REG_GX_DISPCNT_OW_MASK | REG_GX_DISPCNT_W1_MASK | REG_GX_DISPCNT_W0_MASK);
- reg_GXS_DB_DISPCNT &= ~(REG_GXS_DB_DISPCNT_OW_MASK | REG_GXS_DB_DISPCNT_W1_MASK | REG_GXS_DB_DISPCNT_W0_MASK);
+ G2_BlendNone();
+ G2S_BlendNone();
+
+ GX_SetVisibleWnd(0);
+ GXS_SetVisibleWnd(0);
GX_SetBanks(&UNK_020FF4D8);
ptr = BgConfig_Alloc(0);
diff --git a/arm9/src/timer3.c b/arm9/src/timer3.c
index 1799fd24..d4e8f8a1 100644
--- a/arm9/src/timer3.c
+++ b/arm9/src/timer3.c
@@ -1,37 +1,37 @@
#include "timer3.h"
-struct Timer3Data timer3_data;
+static BOOL timer3_needReset;
+static vu64 timer3_counter;
THUMB_FUNC void Init_Timer3()
{
- timer3_data.Timer3Counter = 0;
- timer3_data.NeedReset = FALSE;
+ timer3_counter = 0;
+ timer3_needReset = FALSE;
- reg_OS_TM3CNT_H = 0;
- reg_OS_TM3CNT_L = 0;
- reg_OS_TM3CNT_H = 0xc1; // start timer3 with f/64 and irq enable
+ OS_SetTimerControl(OS_TIMER_3, 0);
+ OS_SetTimerCount(OS_TIMER_3, 0);
+ OS_SetTimerControl(OS_TIMER_3, REG_OS_TM3CNT_H_E_MASK | REG_OS_TM3CNT_H_I_MASK | OS_TIMER_PRESCALER_64); // start timer3 with f/64 and irq enable
- OS_SetIrqFunction(0x40, &CountUpTimer3);
- OS_EnableIrqMask(0x40); // irq on timer3 overflow
+ OS_SetIrqFunction(OS_IE_TIMER3, &CountUpTimer3);
+ OS_EnableIrqMask(OS_IE_TIMER3); // irq on timer3 overflow
}
THUMB_FUNC void CountUpTimer3()
{
- timer3_data.Timer3Counter++;
+ timer3_counter++;
- if (timer3_data.NeedReset)
+ if (timer3_needReset)
{
- reg_OS_TM3CNT_H = 0;
- reg_OS_TM3CNT_L = 0;
- reg_OS_TM3CNT_H = 0xc1;
- timer3_data.NeedReset = FALSE;
+ OS_SetTimerControl(OS_TIMER_3, 0);
+ OS_SetTimerCount(OS_TIMER_3, 0);
+ OS_SetTimerControl(OS_TIMER_3, REG_OS_TM3CNT_H_E_MASK | REG_OS_TM3CNT_H_I_MASK | OS_TIMER_PRESCALER_64);
+ timer3_needReset = FALSE;
}
- *(vu32 *)HW_INTR_CHECK_BUF |= 0x40;
-
- OS_SetIrqFunction(0x40, &CountUpTimer3);
+ OS_SetIrqCheckFlag(OS_IE_TIMER3);
+ OS_SetIrqFunction(OS_IE_TIMER3, &CountUpTimer3);
}
THUMB_FUNC u64 internal_GetTimer3Count()
@@ -39,15 +39,15 @@ THUMB_FUNC u64 internal_GetTimer3Count()
OSIntrMode intr_mode = OS_DisableInterrupts();
vu16 timer3 = reg_OS_TM3CNT_L;
- vu64 timer3_counter = timer3_data.Timer3Counter & 0x0000ffffffffffff;
+ vu64 counter = timer3_counter & 0x0000ffffffffffff;
- if (reg_OS_IF & 0x40 && !(timer3 & 0x8000))
+ if (reg_OS_IF & OS_IE_TIMER3 && !(timer3 & 0x8000))
{
- timer3_counter++;
+ counter++;
}
OS_RestoreInterrupts(intr_mode);
- return (timer3_counter << 16) | timer3;
+ return (counter << 16) | timer3;
}
THUMB_FUNC u64 GetTimer3Count()
@@ -57,10 +57,10 @@ THUMB_FUNC u64 GetTimer3Count()
THUMB_FUNC u64 Timer3CountToMilliSeconds(u64 count)
{
- return (count *64) / 33514;
+ return (count * 64) / (HW_SYSTEM_CLOCK / 1000);
}
THUMB_FUNC u64 Timer3CountToSeconds(u64 count)
{
- return (count *64) / HW_SYSTEM_CLOCK;
+ return (count * 64) / HW_SYSTEM_CLOCK;
}