summaryrefslogtreecommitdiff
path: root/arm9/lib/include
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/lib/include')
-rw-r--r--arm9/lib/include/OS_interrupt.h24
-rw-r--r--arm9/lib/include/PAD_pad.h6
-rw-r--r--arm9/lib/include/mmap.h28
-rw-r--r--arm9/lib/include/registers.h28
-rw-r--r--arm9/lib/include/tp.h37
5 files changed, 123 insertions, 0 deletions
diff --git a/arm9/lib/include/OS_interrupt.h b/arm9/lib/include/OS_interrupt.h
index 893e6d65..08417872 100644
--- a/arm9/lib/include/OS_interrupt.h
+++ b/arm9/lib/include/OS_interrupt.h
@@ -4,6 +4,11 @@
#include "consts.h"
#include "nitro/OS_interrupt_shared.h"
+#define REG_OS_IME_IME_SHIFT 0
+
+#define OS_IME_DISABLE (0UL << REG_OS_IME_IME_SHIFT)
+#define OS_IME_ENABLE (1UL << REG_OS_IME_IME_SHIFT)
+
#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)
@@ -22,4 +27,23 @@ OSIrqMask OS_DisableIrqMask(OSIrqMask mask);
OSIrqMask OS_ResetRequestIrqMask(OSIrqMask mask);
void OS_SetIrqStackChecker(void);
+static inline BOOL OS_DisableIrq(void)
+{
+ u16 prep = reg_OS_IME;
+ reg_OS_IME = OS_IME_DISABLE;
+ return (BOOL)prep;
+}
+
+static inline BOOL OS_EnableIrq(void)
+{
+ u16 prep = reg_OS_IME;
+ reg_OS_IME = OS_IME_ENABLE;
+ return (BOOL)prep;
+}
+
+static inline OSIrqMask OS_GetIrqMask(void)
+{
+ return reg_OS_IE;
+}
+
#endif //POKEDIAMOND_ARM9_OS_INTERRUPT_H
diff --git a/arm9/lib/include/PAD_pad.h b/arm9/lib/include/PAD_pad.h
index 0cb8a6f0..327d306d 100644
--- a/arm9/lib/include/PAD_pad.h
+++ b/arm9/lib/include/PAD_pad.h
@@ -30,6 +30,12 @@
#define PAD_BUTTON_Y 0x0800 // Y
#define PAD_BUTTON_DEBUG 0x2000 // Debug button
+static inline u16 PAD_Read(void)
+{
+ return (u16)(((reg_PAD_KEYINPUT | *(vu16 *)HW_BUTTON_XY_BUF) ^
+ (PAD_PLUS_KEY_MASK | PAD_BUTTON_MASK)) & (PAD_PLUS_KEY_MASK | PAD_BUTTON_MASK));
+}
+
static inline BOOL PAD_DetectFold(void)
{
return (BOOL)((*(vu16 *)HW_BUTTON_XY_BUF & PAD_DETECT_FOLD_MASK) >> 15);
diff --git a/arm9/lib/include/mmap.h b/arm9/lib/include/mmap.h
index 8b30ffc8..81d47a7e 100644
--- a/arm9/lib/include/mmap.h
+++ b/arm9/lib/include/mmap.h
@@ -56,4 +56,32 @@ extern u32 SDK_AUTOLOAD_DTCM_START[];
#define OSi_WRAM_MAIN_ARENA_HI_DEFAULT (HW_WRAM)
#define OSi_WRAM_MAIN_ARENA_LO_DEFAULT (HW_WRAM)
+#define HW_BG_PLTT 0x05000000
+#define HW_BG_PLTT_END 0x05000200
+#define HW_BG_PLTT_SIZE (HW_BG_PLTT_END-HW_BG_PLTT)
+#define HW_OBJ_PLTT 0x05000200
+#define HW_OBJ_PLTT_END 0x05000400
+#define HW_OBJ_PLTT_SIZE (HW_OBJ_PLTT_END-HW_OBJ_PLTT)
+#define HW_PLTT HW_BG_PLTT
+#define HW_PLTT_END HW_OBJ_PLTT_END
+#define HW_PLTT_SIZE (HW_PLTT_END-HW_PLTT)
+#define HW_DB_BG_PLTT 0x05000400
+#define HW_DB_BG_PLTT_END 0x05000600
+#define HW_DB_BG_PLTT_SIZE (HW_DB_BG_PLTT_END-HW_DB_BG_PLTT)
+#define HW_DB_OBJ_PLTT 0x05000600
+#define HW_DB_OBJ_PLTT_END 0x05000800
+#define HW_DB_OBJ_PLTT_SIZE (HW_DB_OBJ_PLTT_END-HW_DB_OBJ_PLTT)
+#define HW_DB_PLTT HW_DB_BG_PLTT
+#define HW_DB_PLTT_END HW_DB_OBJ_PLTT_END
+#define HW_DB_PLTT_SIZE (HW_DB_PLTT_END-HW_DB_PLTT)
+#define HW_LCDC_VRAM 0x6800000
+#define HW_LCDC_VRAM_END 0x68a4000
+#define HW_LCDC_VRAM_SIZE (HW_LCDC_VRAM_END - HW_LCDC_VRAM)
+#define HW_OAM 0x07000000
+#define HW_OAM_END 0x07000400
+#define HW_OAM_SIZE (HW_OAM_END-HW_OAM)
+#define HW_DB_OAM 0x07000400
+#define HW_DB_OAM_END 0x07000800
+#define HW_DB_OAM_SIZE (HW_DB_OAM_END-HW_DB_OAM)
+
#endif //POKEDIAMOND_ARM9_MMAP_H \ No newline at end of file
diff --git a/arm9/lib/include/registers.h b/arm9/lib/include/registers.h
index b2915f8c..ae5b7adc 100644
--- a/arm9/lib/include/registers.h
+++ b/arm9/lib/include/registers.h
@@ -485,4 +485,32 @@
((u32)(a) << REG_PAD_KEYCNT_A_SHIFT))
#endif
+#define REG_GX_POWCNT_GE_SHIFT 3
+#define REG_GX_POWCNT_GE_SIZE 1
+#define REG_GX_POWCNT_GE_MASK 0x0008
+
+#define REG_GX_POWCNT_RE_SHIFT 2
+#define REG_GX_POWCNT_RE_SIZE 1
+#define REG_GX_POWCNT_RE_MASK 0x0004
+
+#define REG_GX_POWCNT_E2DG_SHIFT 1
+#define REG_GX_POWCNT_E2DG_SIZE 1
+#define REG_GX_POWCNT_E2DG_MASK 0x0002
+
+#define REG_GX_POWCNT_LCD_SHIFT 0
+#define REG_GX_POWCNT_LCD_SIZE 1
+#define REG_GX_POWCNT_LCD_MASK 0x0001
+
+#define REG_GX_POWCNT_LCDB_SHIFT 8
+#define REG_GX_POWCNT_LCDB_SIZE 1
+#define REG_GX_POWCNT_LCDB_MASK 0x0100
+
+#define REG_GX_POWCNT_E2DGB_SHIFT 9
+#define REG_GX_POWCNT_E2DGB_SIZE 1
+#define REG_GX_POWCNT_E2DGB_MASK 0x0200
+
+#define REG_GX_POWCNT_DSEL_SHIFT 15
+#define REG_GX_POWCNT_DSEL_SIZE 1
+#define REG_GX_POWCNT_DSEL_MASK 0x8000
+
#endif //POKEDIAMOND_ARM9_REGISTERS_H
diff --git a/arm9/lib/include/tp.h b/arm9/lib/include/tp.h
new file mode 100644
index 00000000..d2687545
--- /dev/null
+++ b/arm9/lib/include/tp.h
@@ -0,0 +1,37 @@
+#ifndef NITRO_TP_H_
+#define NITRO_TP_H_
+
+// Touch panel input structure
+typedef struct
+{
+ u16 x; // x coordinate ( 0 - 4095 )
+ u16 y; // y coordinate ( 0 - 4095 )
+ u16 touch; // Touch yes/no
+ u16 validity; // Valid yes/no
+}
+TPData;
+
+typedef struct NvTpData
+{
+ s16 x0; // X origin coordinate
+ s16 y0; // Y origin coordinate
+ s16 xDotSize; // X dot size
+ s16 yDotSize; // Y dot size
+}
+TPCalibrateParam;
+
+void TP_Init(void);
+void TP_SetCalibrateParam(const TPCalibrateParam *param);
+BOOL TP_GetUserInfo(TPCalibrateParam *calibrate);
+void TP_RequestSamplingAsync(void);
+u32 TP_WaitRawResult(TPData *result);
+void TP_GetLatestRawPointInAuto(TPData *result);
+void TP_GetCalibratedPoint(TPData *disp, const TPData *raw);
+
+static inline u32 TP_RequestRawSampling(TPData *result)
+{
+ TP_RequestSamplingAsync();
+ return TP_WaitRawResult(result);
+}
+
+#endif //NITRO_TP_H_