summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2021-06-05 16:55:46 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2021-06-05 16:55:46 -0400
commitc87b617058767519480ef2d19e233fe0e99ca01d (patch)
tree690c7ca357b58415f85c754048e90b1e693df945
parent0ae4f320d929e4d8914002836055c1aad35d5ce3 (diff)
Fix GX_vramcnt symbol names
-rw-r--r--arm9/global.inc22
-rw-r--r--arm9/lib/include/GX_g2.h10
-rw-r--r--arm9/lib/include/GX_vramcnt.h24
-rw-r--r--arm9/lib/include/OS_interrupt.h2
-rw-r--r--arm9/lib/include/gx.h10
-rw-r--r--arm9/lib/include/registers.h71
-rw-r--r--arm9/lib/src/GX_load2d.c4
-rw-r--r--arm9/lib/src/GX_vramcnt.c88
-rw-r--r--arm9/modules/06/asm/module_06.s6
-rw-r--r--arm9/modules/13/asm/module_13_arm2.s20
-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
-rw-r--r--include/GX_layers.h6
-rw-r--r--include/bg_window.h16
-rw-r--r--include/timer3.h6
17 files changed, 267 insertions, 180 deletions
diff --git a/arm9/global.inc b/arm9/global.inc
index 37eb8509..325ba1ec 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -5795,10 +5795,10 @@
.extern NNS_SndArcPlayerStartSeqEx
.extern NNS_SndArcPlayerStartSeq
.extern NNS_SndArcPlayerSetup
-.extern FUN_020C5D8C
-.extern FUN_020C5E04
-.extern FUN_020C6034
-.extern FUN_020C605C
+.extern GX_GetBankForTex
+.extern GX_DisableBankForSubBG
+.extern GX_ResetBankForSubBGExtPltt
+.extern GX_ResetBankForSubOBJ
.extern CARDi_TryWaitAsync
.extern FUN_020D9564
.extern FX_Atan
@@ -5903,12 +5903,12 @@
.extern GX_DisableBankForClearImage
.extern GX_DisableBankForLCDC
.extern GX_DisableBankForOBJExtPltt
-.extern GX_DisableBankForOBJExtPltt_2
+.extern GX_DisableBankForOBJ
.extern GX_DisableBankForSubBGExtPltt
.extern GX_DisableBankForSubOBJExtPltt
-.extern GX_DisableBankForSubOBJExtPltt_2
+.extern GX_DisableBankForSubOBJ
.extern GX_DisableBankForTexPltt
-.extern GX_DisableBankForTexPltt_2
+.extern GX_DisableBankForTex
.extern GX_DispOff
.extern GX_DispOn
.extern GX_EndLoadBGExtPltt
@@ -5917,12 +5917,12 @@
.extern GX_EndLoadTex
.extern GX_EndLoadTexPltt
.extern GX_GetBankForBGExtPltt
-.extern GX_GetBankForBGExtPltt_2
+.extern GX_GetBankForBG
.extern GX_GetBankForLCDC
.extern GX_GetBankForOBJ
.extern GX_GetBankForOBJExtPltt
.extern GX_GetBankForSubBGExtPltt
-.extern GX_GetBankForSubBGExtPltt_2
+.extern GX_GetBankForSubBG
.extern GX_GetBankForSubOBJ
.extern GX_GetBankForSubOBJExtPltt
.extern GX_GetBankForTexPltt
@@ -5953,7 +5953,7 @@
.extern GX_ResetBankForOBJ
.extern GX_ResetBankForOBJExtPltt
.extern GX_ResetBankForSubBG
-.extern GX_ResetBankForSubOBJ
+.extern GX_ResetBankForSubOBJExtPltt
.extern GX_ResetBankForTex
.extern GX_ResetBankForTexPltt
.extern GX_SendFifo48B
@@ -8400,7 +8400,7 @@
.extern atod
.extern atol
.extern cardi_common
-.extern disableBankForX_
+.extern GX_DisableBankForBG
.extern double2hex
.extern double2hex_wide
.extern exit
diff --git a/arm9/lib/include/GX_g2.h b/arm9/lib/include/GX_g2.h
index 987bda38..97fa0e10 100644
--- a/arm9/lib/include/GX_g2.h
+++ b/arm9/lib/include/GX_g2.h
@@ -111,6 +111,16 @@ static inline void G2S_SetBG3Affine(const struct Mtx22 *mtx, int centerX, int ce
G2x_SetBGyAffine_((u32)&reg_G2S_DB_BG3PA, mtx, centerX, centerY, x1, y1);
}
+static inline void G2_BlendNone(void)
+{
+ reg_G2_BLDCNT = 0;
+}
+
+static inline void G2S_BlendNone(void)
+{
+ reg_G2S_DB_BLDCNT = 0;
+}
+
//The g2 and g2_oam headers contain a lot of inline functions and enums that may want to be ported over at some point
#endif //GUARD_GX_G2_H
diff --git a/arm9/lib/include/GX_vramcnt.h b/arm9/lib/include/GX_vramcnt.h
index 6fe677bc..3b82d28c 100644
--- a/arm9/lib/include/GX_vramcnt.h
+++ b/arm9/lib/include/GX_vramcnt.h
@@ -16,7 +16,7 @@ void GX_SetBankForSubBG(s32 subbg);
void GX_SetBankForSubOBJ(s32 subobj);
void GX_SetBankForSubBGExtPltt(s32 subbgextpltt);
void GX_SetBankForSubOBJExtPltt(s32 subobjextpltt);
-u32 FUN_020C6130(u16 *ptr);
+u32 resetBankForX_(u16 *ptr);
u32 GX_ResetBankForBG();
u32 GX_ResetBankForOBJ();
u32 GX_ResetBankForBGExtPltt();
@@ -25,31 +25,31 @@ u32 GX_ResetBankForTex();
u32 GX_ResetBankForTexPltt();
u32 GX_ResetBankForClearImage();
u32 GX_ResetBankForSubBG();
-u32 FUN_020C605C();
-u32 FUN_020C6034();
u32 GX_ResetBankForSubOBJ();
-u32 FUN_020C5F28(u16 *ptr);
-u32 disableBankForX_();
-u32 GX_DisableBankForOBJExtPltt_2();
+u32 GX_ResetBankForSubBGExtPltt();
+u32 GX_ResetBankForSubOBJExtPltt();
+u32 disableBankForX_(u16 *ptr);
+u32 GX_DisableBankForBG();
+u32 GX_DisableBankForOBJ();
u32 GX_DisableBankForBGExtPltt();
u32 GX_DisableBankForOBJExtPltt();
-u32 GX_DisableBankForTexPltt_2();
+u32 GX_DisableBankForTex();
u32 GX_DisableBankForTexPltt();
u32 GX_DisableBankForClearImage();
u32 GX_DisableBankForARM7();
u32 GX_DisableBankForLCDC();
+u32 GX_DisableBankForSubBG();
+u32 GX_DisableBankForSubOBJ();
u32 GX_DisableBankForSubBGExtPltt();
-u32 GX_DisableBankForSubOBJExtPltt_2();
-u32 FUN_020C5E04();
u32 GX_DisableBankForSubOBJExtPltt();
-u32 GX_GetBankForBGExtPltt_2();
+u32 GX_GetBankForBG();
u32 GX_GetBankForOBJ();
u32 GX_GetBankForBGExtPltt();
u32 GX_GetBankForOBJExtPltt();
-u32 FUN_020C5D8C();
+u32 GX_GetBankForTex();
u32 GX_GetBankForTexPltt();
u32 GX_GetBankForLCDC();
-u32 GX_GetBankForSubBGExtPltt_2();
+u32 GX_GetBankForSubBG();
u32 GX_GetBankForSubOBJ();
u32 GX_GetBankForSubBGExtPltt();
u32 GX_GetBankForSubOBJExtPltt();
diff --git a/arm9/lib/include/OS_interrupt.h b/arm9/lib/include/OS_interrupt.h
index d063b817..130ad2de 100644
--- a/arm9/lib/include/OS_interrupt.h
+++ b/arm9/lib/include/OS_interrupt.h
@@ -12,6 +12,8 @@
#define OS_IE_V_COUNT (1UL << REG_OS_IE_VE_SHIFT)
#define OS_IE_TIMER0 (1UL << REG_OS_IE_T0_SHIFT)
#define OS_IE_TIMER1 (1UL << REG_OS_IE_T1_SHIFT)
+#define OS_IE_TIMER2 (1UL << REG_OS_IE_T2_SHIFT)
+#define OS_IE_TIMER3 (1UL << REG_OS_IE_T3_SHIFT)
#define OS_IE_SPFIFO_RECV (1UL << REG_OS_IE_IFN_SHIFT)
#define OS_IE_CARD_DATA (1UL << REG_OS_IE_MC_SHIFT)
diff --git a/arm9/lib/include/gx.h b/arm9/lib/include/gx.h
index 7ba8d1f3..cce14e57 100644
--- a/arm9/lib/include/gx.h
+++ b/arm9/lib/include/gx.h
@@ -216,4 +216,14 @@ static inline void GX_SetBGCharOffset(GXBGCharOffset offset)
reg_GX_DISPCNT = (u32)((reg_GX_DISPCNT & ~REG_GX_DISPCNT_BGCHAROFFSET_MASK) | (offset << REG_GX_DISPCNT_BGCHAROFFSET_SHIFT));
}
+static inline void GX_SetVisibleWnd(int window)
+{
+ reg_GX_DISPCNT = (u32)((reg_GX_DISPCNT & ~(REG_GX_DISPCNT_W0_MASK | REG_GX_DISPCNT_W1_MASK | REG_GX_DISPCNT_OW_MASK)) | (window << REG_GX_DISPCNT_W0_SHIFT));
+}
+
+static inline void GXS_SetVisibleWnd(int window)
+{
+ reg_GXS_DB_DISPCNT = (u32)((reg_GXS_DB_DISPCNT & ~(REG_GXS_DB_DISPCNT_W0_MASK | REG_GXS_DB_DISPCNT_W1_MASK | REG_GXS_DB_DISPCNT_OW_MASK)) | (window << REG_GXS_DB_DISPCNT_W0_SHIFT));
+}
+
#endif //GUARD_GX_H
diff --git a/arm9/lib/include/registers.h b/arm9/lib/include/registers.h
index 27796cf7..b4fd8ce7 100644
--- a/arm9/lib/include/registers.h
+++ b/arm9/lib/include/registers.h
@@ -350,12 +350,11 @@
#define REG_OS_IE_VE_SHIFT 2
#define REG_OS_IE_T0_SHIFT 3
#define REG_OS_IE_T1_SHIFT 4
+#define REG_OS_IE_T2_SHIFT 5
+#define REG_OS_IE_T3_SHIFT 6
#define REG_OS_IE_IFN_SHIFT 18
#define REG_OS_IE_MC_SHIFT 19
-#define REG_OS_TM0CNT_H_I_MASK 0x0040
-#define REG_OS_TM0CNT_H_E_MASK 0x0080
-
#define REG_PAD_KEYINPUT_L_SHIFT 9
#define REG_PAD_KEYINPUT_L_SIZE 1
#define REG_PAD_KEYINPUT_L_MASK 0x0200
@@ -1001,4 +1000,70 @@
#define REG_G2S_DB_BG3OFS_HOFFSET_SIZE 9
#define REG_G2S_DB_BG3OFS_HOFFSET_MASK 0x000001ff
+// Timer control
+
+#define REG_OS_TM0CNT_L_TIMER0CNT_SHIFT 0
+#define REG_OS_TM0CNT_L_TIMER0CNT_SIZE 16
+#define REG_OS_TM0CNT_L_TIMER0CNT_MASK 0xffff
+
+#define REG_OS_TM0CNT_H_E_SHIFT 7
+#define REG_OS_TM0CNT_H_E_SIZE 1
+#define REG_OS_TM0CNT_H_E_MASK 0x0080
+
+#define REG_OS_TM0CNT_H_I_SHIFT 6
+#define REG_OS_TM0CNT_H_I_SIZE 1
+#define REG_OS_TM0CNT_H_I_MASK 0x0040
+
+#define REG_OS_TM0CNT_H_PS_SHIFT 0
+#define REG_OS_TM0CNT_H_PS_SIZE 2
+#define REG_OS_TM0CNT_H_PS_MASK 0x0003
+
+#define REG_OS_TM1CNT_L_TIMER0CNT_SHIFT 0
+#define REG_OS_TM1CNT_L_TIMER0CNT_SIZE 16
+#define REG_OS_TM1CNT_L_TIMER0CNT_MASK 0xffff
+
+#define REG_OS_TM1CNT_H_E_SHIFT 7
+#define REG_OS_TM1CNT_H_E_SIZE 1
+#define REG_OS_TM1CNT_H_E_MASK 0x0080
+
+#define REG_OS_TM1CNT_H_I_SHIFT 6
+#define REG_OS_TM1CNT_H_I_SIZE 1
+#define REG_OS_TM1CNT_H_I_MASK 0x0040
+
+#define REG_OS_TM1CNT_H_PS_SHIFT 0
+#define REG_OS_TM1CNT_H_PS_SIZE 2
+#define REG_OS_TM1CNT_H_PS_MASK 0x0003
+
+#define REG_OS_TM2CNT_L_TIMER0CNT_SHIFT 0
+#define REG_OS_TM2CNT_L_TIMER0CNT_SIZE 16
+#define REG_OS_TM2CNT_L_TIMER0CNT_MASK 0xffff
+
+#define REG_OS_TM2CNT_H_E_SHIFT 7
+#define REG_OS_TM2CNT_H_E_SIZE 1
+#define REG_OS_TM2CNT_H_E_MASK 0x0080
+
+#define REG_OS_TM2CNT_H_I_SHIFT 6
+#define REG_OS_TM2CNT_H_I_SIZE 1
+#define REG_OS_TM2CNT_H_I_MASK 0x0040
+
+#define REG_OS_TM2CNT_H_PS_SHIFT 0
+#define REG_OS_TM2CNT_H_PS_SIZE 2
+#define REG_OS_TM2CNT_H_PS_MASK 0x0003
+
+#define REG_OS_TM3CNT_L_TIMER0CNT_SHIFT 0
+#define REG_OS_TM3CNT_L_TIMER0CNT_SIZE 16
+#define REG_OS_TM3CNT_L_TIMER0CNT_MASK 0xffff
+
+#define REG_OS_TM3CNT_H_E_SHIFT 7
+#define REG_OS_TM3CNT_H_E_SIZE 1
+#define REG_OS_TM3CNT_H_E_MASK 0x0080
+
+#define REG_OS_TM3CNT_H_I_SHIFT 6
+#define REG_OS_TM3CNT_H_I_SIZE 1
+#define REG_OS_TM3CNT_H_I_MASK 0x0040
+
+#define REG_OS_TM3CNT_H_PS_SHIFT 0
+#define REG_OS_TM3CNT_H_PS_SIZE 2
+#define REG_OS_TM3CNT_H_PS_MASK 0x0003
+
#endif //POKEDIAMOND_ARM9_REGISTERS_H
diff --git a/arm9/lib/src/GX_load2d.c b/arm9/lib/src/GX_load2d.c
index 132de9ee..6bff54be 100644
--- a/arm9/lib/src/GX_load2d.c
+++ b/arm9/lib/src/GX_load2d.c
@@ -195,7 +195,7 @@ ARM_FUNC void GX_EndLoadOBJExtPltt(){
}
ARM_FUNC void GXS_BeginLoadBGExtPltt(){
- sSubBGExtPltt = (s32)FUN_020C6034();
+ sSubBGExtPltt = (s32)GX_ResetBankForSubBGExtPltt();
}
ARM_FUNC void GXS_LoadBGExtPltt(void *src, u32 offset, u32 size){
@@ -209,7 +209,7 @@ ARM_FUNC void GXS_EndLoadBGExtPltt(){
}
ARM_FUNC void GXS_BeginLoadOBJExtPltt(){
- sSubOBJExtPltt = (s32)GX_ResetBankForSubOBJ();
+ sSubOBJExtPltt = (s32)GX_ResetBankForSubOBJExtPltt();
}
ARM_FUNC void GXS_LoadOBJExtPltt(void *src, u32 offset, u32 size){
diff --git a/arm9/lib/src/GX_vramcnt.c b/arm9/lib/src/GX_vramcnt.c
index c9d5a1bd..abfcd77e 100644
--- a/arm9/lib/src/GX_vramcnt.c
+++ b/arm9/lib/src/GX_vramcnt.c
@@ -396,7 +396,7 @@ ARM_FUNC void GX_SetBankForSubOBJExtPltt(s32 subobjextpltt){
GX_VRAMCNT_SetLCDC_(gGXState.lcdc);
}
-ARM_FUNC u32 FUN_020C6130(u16 *ptr){
+ARM_FUNC u32 resetBankForX_(u16 *ptr){
u16 temp = *ptr;
*ptr = 0;
gGXState.lcdc |= temp;
@@ -405,54 +405,54 @@ ARM_FUNC u32 FUN_020C6130(u16 *ptr){
}
ARM_FUNC u32 GX_ResetBankForBG(){
- return FUN_020C6130(&gGXState.bg);
+ return resetBankForX_(&gGXState.bg);
}
ARM_FUNC u32 GX_ResetBankForOBJ(){
- return FUN_020C6130(&gGXState.obj);
+ return resetBankForX_(&gGXState.obj);
}
ARM_FUNC u32 GX_ResetBankForBGExtPltt(){
reg_GX_DISPCNT &= ~0x40000000;
- return FUN_020C6130(&gGXState.bgExtPltt);
+ return resetBankForX_(&gGXState.bgExtPltt);
}
ARM_FUNC u32 GX_ResetBankForOBJExtPltt(){
reg_GX_DISPCNT &= ~0x80000000;
- return FUN_020C6130(&gGXState.objExtPltt);
+ return resetBankForX_(&gGXState.objExtPltt);
}
ARM_FUNC u32 GX_ResetBankForTex(){
- return FUN_020C6130(&gGXState.tex);
+ return resetBankForX_(&gGXState.tex);
}
ARM_FUNC u32 GX_ResetBankForTexPltt(){
- return FUN_020C6130(&gGXState.texPltt);
+ return resetBankForX_(&gGXState.texPltt);
}
ARM_FUNC u32 GX_ResetBankForClearImage(){
- return FUN_020C6130(&gGXState.clrImg);
+ return resetBankForX_(&gGXState.clrImg);
}
ARM_FUNC u32 GX_ResetBankForSubBG(){
- return FUN_020C6130(&gGXState.sub_bg);
+ return resetBankForX_(&gGXState.sub_bg);
}
-ARM_FUNC u32 FUN_020C605C(){
- return FUN_020C6130(&gGXState.sub_obj);
+ARM_FUNC u32 GX_ResetBankForSubOBJ(){
+ return resetBankForX_(&gGXState.sub_obj);
}
-ARM_FUNC u32 FUN_020C6034(){
- reg_GXS_DB_DISPCNT &= ~0x40000000;
- return FUN_020C6130(&gGXState.sub_bgExtPltt);
+ARM_FUNC u32 GX_ResetBankForSubBGExtPltt(){
+ reg_GXS_DB_DISPCNT &= ~REG_GXS_DB_DISPCNT_BG_MASK;
+ return resetBankForX_(&gGXState.sub_bgExtPltt);
}
-ARM_FUNC u32 GX_ResetBankForSubOBJ(){
- reg_GXS_DB_DISPCNT &= ~0x80000000;
- return FUN_020C6130(&gGXState.sub_objExtPltt);
+ARM_FUNC u32 GX_ResetBankForSubOBJExtPltt(){
+ reg_GXS_DB_DISPCNT &= ~REG_GXS_DB_DISPCNT_O_MASK;
+ return resetBankForX_(&gGXState.sub_objExtPltt);
}
-ARM_FUNC u32 FUN_020C5F28(u16 *ptr){
+ARM_FUNC u32 disableBankForX_(u16 *ptr){
u32 temp = *ptr;
*ptr = 0;
if (temp & (0x1 << 0))
@@ -477,63 +477,63 @@ ARM_FUNC u32 FUN_020C5F28(u16 *ptr){
return temp;
}
-ARM_FUNC u32 disableBankForX_(){
- return FUN_020C5F28(&gGXState.bg);
+ARM_FUNC u32 GX_DisableBankForBG(){
+ return disableBankForX_(&gGXState.bg);
}
-ARM_FUNC u32 GX_DisableBankForOBJExtPltt_2(){
- return FUN_020C5F28(&gGXState.obj);
+ARM_FUNC u32 GX_DisableBankForOBJ(){
+ return disableBankForX_(&gGXState.obj);
}
ARM_FUNC u32 GX_DisableBankForBGExtPltt(){
- reg_GX_DISPCNT &= ~0x40000000;
- return FUN_020C5F28(&gGXState.bgExtPltt);
+ reg_GX_DISPCNT &= ~REG_GX_DISPCNT_BG_MASK;
+ return disableBankForX_(&gGXState.bgExtPltt);
}
ARM_FUNC u32 GX_DisableBankForOBJExtPltt(){
- reg_GX_DISPCNT &= ~0x80000000;
- return FUN_020C5F28(&gGXState.objExtPltt);
+ reg_GX_DISPCNT &= ~REG_GX_DISPCNT_O_MASK;
+ return disableBankForX_(&gGXState.objExtPltt);
}
-ARM_FUNC u32 GX_DisableBankForTexPltt_2(){
- return FUN_020C5F28(&gGXState.tex);
+ARM_FUNC u32 GX_DisableBankForTex(){
+ return disableBankForX_(&gGXState.tex);
}
ARM_FUNC u32 GX_DisableBankForTexPltt(){
- return FUN_020C5F28(&gGXState.texPltt);
+ return disableBankForX_(&gGXState.texPltt);
}
ARM_FUNC u32 GX_DisableBankForClearImage(){
- return FUN_020C5F28(&gGXState.clrImg);
+ return disableBankForX_(&gGXState.clrImg);
}
ARM_FUNC u32 GX_DisableBankForARM7(){
- return FUN_020C5F28(&gGXState.arm7);
+ return disableBankForX_(&gGXState.arm7);
}
ARM_FUNC u32 GX_DisableBankForLCDC(){
- return FUN_020C5F28(&gGXState.lcdc);
+ return disableBankForX_(&gGXState.lcdc);
}
-ARM_FUNC u32 GX_DisableBankForSubBGExtPltt(){
- return FUN_020C5F28(&gGXState.sub_bg);
+ARM_FUNC u32 GX_DisableBankForSubBG(){
+ return disableBankForX_(&gGXState.sub_bg);
}
-ARM_FUNC u32 GX_DisableBankForSubOBJExtPltt_2(){
- return FUN_020C5F28(&gGXState.sub_obj);
+ARM_FUNC u32 GX_DisableBankForSubOBJ(){
+ return disableBankForX_(&gGXState.sub_obj);
}
-ARM_FUNC u32 FUN_020C5E04(){
- reg_GXS_DB_DISPCNT &= ~0x40000000;
- return FUN_020C5F28(&gGXState.sub_bgExtPltt);
+ARM_FUNC u32 GX_DisableBankForSubBGExtPltt(){
+ reg_GXS_DB_DISPCNT &= ~REG_GX_DISPCNT_BG_MASK;
+ return disableBankForX_(&gGXState.sub_bgExtPltt);
}
ARM_FUNC u32 GX_DisableBankForSubOBJExtPltt(){
- reg_GXS_DB_DISPCNT &= ~0x80000000;
- return FUN_020C5F28(&gGXState.sub_objExtPltt);
+ reg_GXS_DB_DISPCNT &= ~REG_GX_DISPCNT_O_MASK;
+ return disableBankForX_(&gGXState.sub_objExtPltt);
}
-ARM_FUNC u32 GX_GetBankForBGExtPltt_2(){
+ARM_FUNC u32 GX_GetBankForBG(){
return gGXState.bg;
}
@@ -549,7 +549,7 @@ ARM_FUNC u32 GX_GetBankForOBJExtPltt(){
return gGXState.objExtPltt;
}
-ARM_FUNC u32 FUN_020C5D8C(){
+ARM_FUNC u32 GX_GetBankForTex(){
return gGXState.tex;
}
@@ -561,7 +561,7 @@ ARM_FUNC u32 GX_GetBankForLCDC(){
return gGXState.lcdc;
}
-ARM_FUNC u32 GX_GetBankForSubBGExtPltt_2(){
+ARM_FUNC u32 GX_GetBankForSubBG(){
return gGXState.sub_bg;
}
diff --git a/arm9/modules/06/asm/module_06.s b/arm9/modules/06/asm/module_06.s
index 555d56cb..6f2604e6 100644
--- a/arm9/modules/06/asm/module_06.s
+++ b/arm9/modules/06/asm/module_06.s
@@ -90,11 +90,11 @@ MOD06_02239728: ; 0x02239728
MOD06_0223972C: ; 0x0223972C
push {r4, lr}
add r4, r0, #0
- bl GX_GetBankForBGExtPltt_2
+ bl GX_GetBankForBG
str r0, [r4]
bl GX_GetBankForBGExtPltt
str r0, [r4, #4]
- bl GX_GetBankForSubBGExtPltt_2
+ bl GX_GetBankForSubBG
str r0, [r4, #8]
bl GX_GetBankForSubBGExtPltt
str r0, [r4, #0xc]
@@ -106,7 +106,7 @@ MOD06_0223972C: ; 0x0223972C
str r0, [r4, #0x18]
bl GX_GetBankForSubOBJExtPltt
str r0, [r4, #0x1c]
- bl FUN_020C5D8C
+ bl GX_GetBankForTex
str r0, [r4, #0x20]
bl GX_GetBankForTexPltt
str r0, [r4, #0x24]
diff --git a/arm9/modules/13/asm/module_13_arm2.s b/arm9/modules/13/asm/module_13_arm2.s
index 5aee0b46..36288367 100644
--- a/arm9/modules/13/asm/module_13_arm2.s
+++ b/arm9/modules/13/asm/module_13_arm2.s
@@ -35163,10 +35163,10 @@ _0223BEA4: .word 0x05000400
MOD13_0223BEA8: ; 0x0223BEA8
stmdb sp!, {lr}
sub sp, sp, #4
- bl disableBankForX_
- bl GX_DisableBankForOBJExtPltt_2
- bl GX_DisableBankForSubBGExtPltt
- bl GX_DisableBankForSubOBJExtPltt_2
+ bl GX_DisableBankForBG
+ bl GX_DisableBankForOBJ
+ bl GX_DisableBankForSubBG
+ bl GX_DisableBankForSubOBJ
bl MOD13_0223BE1C
ldr r0, _0223BFB8 ; =0x022431D8
ldr r0, [r0]
@@ -35246,10 +35246,10 @@ _0223BFE0: .word 0x0400101C
MOD13_0223BFE4: ; 0x0223BFE4
stmdb sp!, {lr}
sub sp, sp, #4
- bl disableBankForX_
+ bl GX_DisableBankForBG
ldr r1, _0223C09C ; =0x022431D8
str r0, [r1]
- bl GX_DisableBankForOBJExtPltt_2
+ bl GX_DisableBankForOBJ
ldr r1, _0223C09C ; =0x022431D8
str r0, [r1, #4]
bl GX_DisableBankForBGExtPltt
@@ -35258,7 +35258,7 @@ MOD13_0223BFE4: ; 0x0223BFE4
bl GX_DisableBankForOBJExtPltt
ldr r1, _0223C09C ; =0x022431D8
str r0, [r1, #0xc]
- bl GX_DisableBankForTexPltt_2
+ bl GX_DisableBankForTex
ldr r1, _0223C09C ; =0x022431D8
str r0, [r1, #0x10]
bl GX_DisableBankForTexPltt
@@ -35267,13 +35267,13 @@ MOD13_0223BFE4: ; 0x0223BFE4
bl GX_DisableBankForClearImage
ldr r1, _0223C09C ; =0x022431D8
str r0, [r1, #0x18]
- bl GX_DisableBankForSubBGExtPltt
+ bl GX_DisableBankForSubBG
ldr r1, _0223C09C ; =0x022431D8
str r0, [r1, #0x1c]
- bl GX_DisableBankForSubOBJExtPltt_2
+ bl GX_DisableBankForSubOBJ
ldr r1, _0223C09C ; =0x022431D8
str r0, [r1, #0x20]
- bl FUN_020C5E04
+ bl GX_DisableBankForSubBGExtPltt
ldr r1, _0223C09C ; =0x022431D8
str r0, [r1, #0x24]
bl GX_DisableBankForSubOBJExtPltt
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;
}
diff --git a/include/GX_layers.h b/include/GX_layers.h
index aca0154b..03c20df6 100644
--- a/include/GX_layers.h
+++ b/include/GX_layers.h
@@ -5,12 +5,6 @@
#include "global.h"
#include "gx.h"
-struct GX_LayerData
-{
- u32 EngineB_DISPCNT_LayerMask;
- u32 EngineA_DISPCNT_LayerMask;
-};
-
typedef enum {
GX_LAYER_TOGGLE_OFF,
diff --git a/include/bg_window.h b/include/bg_window.h
index 91026b4d..24ed152b 100644
--- a/include/bg_window.h
+++ b/include/bg_window.h
@@ -12,10 +12,10 @@
struct BgTemplate
{
- u32 unk00;
- u32 unk04;
+ u32 x;
+ u32 y;
u32 bufferSize;
- u32 unk0c;
+ u32 baseTile;
u8 size;
u8 colorMode;
@@ -85,10 +85,16 @@ struct Window
u8 height;
u8 paletteNum;
u16 baseTile : 15;
- u16 unk0b_15 : 1;
+ u16 colorMode : 1;
void *pixelBuffer;
};
+enum GFBppMode
+{
+ GF_BG_CLR_4BPP = 0,
+ GF_BG_CLR_8BPP,
+};
+
enum GFBgLayer
{
GF_BG_LYR_MAIN_0 = 0,
@@ -112,6 +118,8 @@ enum GFBgLayer
GF_BG_LYR_SUB_1_F = 1 << (GF_BG_LYR_SUB_1 - GF_BG_LYR_SUB_FIRST),
GF_BG_LYR_SUB_2_F = 1 << (GF_BG_LYR_SUB_2 - GF_BG_LYR_SUB_FIRST),
GF_BG_LYR_SUB_3_F = 1 << (GF_BG_LYR_SUB_3 - GF_BG_LYR_SUB_FIRST),
+
+ GF_BG_LYR_UNALLOC = 0xFF,
};
enum GFBgType
diff --git a/include/timer3.h b/include/timer3.h
index 3220c7a3..a49cf3e6 100644
--- a/include/timer3.h
+++ b/include/timer3.h
@@ -4,12 +4,6 @@
#include "global.h"
-struct Timer3Data
-{
- BOOL NeedReset;
- vu64 Timer3Counter;
-};
-
void Init_Timer3();
void CountUpTimer3();
u64 internal_GetTimer3Count();