diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2021-06-05 16:55:46 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2021-06-05 16:55:46 -0400 |
commit | c87b617058767519480ef2d19e233fe0e99ca01d (patch) | |
tree | 690c7ca357b58415f85c754048e90b1e693df945 | |
parent | 0ae4f320d929e4d8914002836055c1aad35d5ce3 (diff) |
Fix GX_vramcnt symbol names
-rw-r--r-- | arm9/global.inc | 22 | ||||
-rw-r--r-- | arm9/lib/include/GX_g2.h | 10 | ||||
-rw-r--r-- | arm9/lib/include/GX_vramcnt.h | 24 | ||||
-rw-r--r-- | arm9/lib/include/OS_interrupt.h | 2 | ||||
-rw-r--r-- | arm9/lib/include/gx.h | 10 | ||||
-rw-r--r-- | arm9/lib/include/registers.h | 71 | ||||
-rw-r--r-- | arm9/lib/src/GX_load2d.c | 4 | ||||
-rw-r--r-- | arm9/lib/src/GX_vramcnt.c | 88 | ||||
-rw-r--r-- | arm9/modules/06/asm/module_06.s | 6 | ||||
-rw-r--r-- | arm9/modules/13/asm/module_13_arm2.s | 20 | ||||
-rw-r--r-- | arm9/src/GX_layers.c | 28 | ||||
-rw-r--r-- | arm9/src/bg_window.c | 42 | ||||
-rw-r--r-- | arm9/src/error_message_reset.c | 46 | ||||
-rw-r--r-- | arm9/src/timer3.c | 46 | ||||
-rw-r--r-- | include/GX_layers.h | 6 | ||||
-rw-r--r-- | include/bg_window.h | 16 | ||||
-rw-r--r-- | include/timer3.h | 6 |
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)®_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(); |