diff options
Diffstat (limited to 'arm9/lib/include')
-rw-r--r-- | arm9/lib/include/OS_interrupt.h | 24 | ||||
-rw-r--r-- | arm9/lib/include/PAD_pad.h | 6 | ||||
-rw-r--r-- | arm9/lib/include/mmap.h | 28 | ||||
-rw-r--r-- | arm9/lib/include/registers.h | 28 | ||||
-rw-r--r-- | arm9/lib/include/tp.h | 37 |
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_ |