summaryrefslogtreecommitdiff
path: root/arm9/lib/include
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-05-10 19:19:53 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2020-05-10 19:19:53 -0400
commit518b493af185999b3f362af392533cdcf9ca9786 (patch)
treec9bc151fc13e2d5b403b3f3850953d80cb45b8d6 /arm9/lib/include
parentee0060c513ce99b24cf0e303ae7684eaa2f99538 (diff)
Through FUN_02000FE8
Diffstat (limited to 'arm9/lib/include')
-rw-r--r--arm9/lib/include/PAD_pad.h38
-rw-r--r--arm9/lib/include/SPI_pm.h12
-rw-r--r--arm9/lib/include/registers.h65
3 files changed, 115 insertions, 0 deletions
diff --git a/arm9/lib/include/PAD_pad.h b/arm9/lib/include/PAD_pad.h
new file mode 100644
index 00000000..0cb8a6f0
--- /dev/null
+++ b/arm9/lib/include/PAD_pad.h
@@ -0,0 +1,38 @@
+#ifndef NITRO_PAD_PAD_H_
+#define NITRO_PAD_PAD_H_
+
+
+//================================================================================
+// BUTTONS
+
+//---- masked value
+#define PAD_PLUS_KEY_MASK 0x00f0 // mask : cross keys
+#define PAD_BUTTON_MASK 0x2f0f // mask : buttons
+#define PAD_DEBUG_BUTTON_MASK 0x2000 // mask : debug button
+#define PAD_ALL_MASK 0x2fff // mask : all buttons
+#define PAD_RCNTPORT_MASK 0x2c00 // mask : factors ARM7 can read from RCNT register
+#define PAD_KEYPORT_MASK 0x03ff // mask : factors ARM7/9 can read from KEY register
+
+#define PAD_DETECT_FOLD_MASK 0x8000 // mask : folding
+
+//---- button and key
+#define PAD_BUTTON_A 0x0001 // A
+#define PAD_BUTTON_B 0x0002 // B
+#define PAD_BUTTON_SELECT 0x0004 // SELECT
+#define PAD_BUTTON_START 0x0008 // START
+#define PAD_KEY_RIGHT 0x0010 // RIGHT of cross key
+#define PAD_KEY_LEFT 0x0020 // LEFT of cross key
+#define PAD_KEY_UP 0x0040 // UP of cross key
+#define PAD_KEY_DOWN 0x0080 // DOWN of cross key
+#define PAD_BUTTON_R 0x0100 // R
+#define PAD_BUTTON_L 0x0200 // L
+#define PAD_BUTTON_X 0x0400 // X
+#define PAD_BUTTON_Y 0x0800 // Y
+#define PAD_BUTTON_DEBUG 0x2000 // Debug button
+
+static inline BOOL PAD_DetectFold(void)
+{
+ return (BOOL)((*(vu16 *)HW_BUTTON_XY_BUF & PAD_DETECT_FOLD_MASK) >> 15);
+}
+
+#endif //NITRO_PAD_PAD_H_
diff --git a/arm9/lib/include/SPI_pm.h b/arm9/lib/include/SPI_pm.h
index 1cf37f02..25fe470a 100644
--- a/arm9/lib/include/SPI_pm.h
+++ b/arm9/lib/include/SPI_pm.h
@@ -3,6 +3,17 @@
ENUMS_ALWAYS_INT_ON
+#define PM_TRIGGER_KEY (1 << 0)
+#define PM_TRIGGER_RTC_ALARM (1 << 1)
+#define PM_TRIGGER_COVER_OPEN (1 << 2)
+#define PM_TRIGGER_CARD (1 << 3)
+#define PM_TRIGGER_CARTRIDGE (1 << 4)
+typedef u32 PMWakeUpTrigger;
+
+#define PM_PAD_LOGIC_OR (0 << REG_PAD_KEYCNT_LOGIC_SHIFT)
+#define PM_PAD_LOGIC_AND (1 << REG_PAD_KEYCNT_LOGIC_SHIFT)
+typedef u32 PMLogic;
+
typedef enum
{
PM_BACKLIGHT_OFF = 0,
@@ -10,6 +21,7 @@ typedef enum
} PMBackLightSwitch;
void PM_GetBackLight(PMBackLightSwitch * top, PMBackLightSwitch * bottom);
+void PM_GoSleepMode(PMWakeUpTrigger trigger, PMLogic logic, u16 keyPattern);
ENUMS_ALWAYS_INT_RESET
diff --git a/arm9/lib/include/registers.h b/arm9/lib/include/registers.h
index a28f9800..d59411e6 100644
--- a/arm9/lib/include/registers.h
+++ b/arm9/lib/include/registers.h
@@ -107,4 +107,69 @@
((u32)(a) << REG_PAD_KEYINPUT_A_SHIFT))
#endif
+#define REG_PAD_KEYCNT_LOGIC_SHIFT 15
+#define REG_PAD_KEYCNT_LOGIC_SIZE 1
+#define REG_PAD_KEYCNT_LOGIC_MASK 0x8000
+
+#define REG_PAD_KEYCNT_INTR_SHIFT 14
+#define REG_PAD_KEYCNT_INTR_SIZE 1
+#define REG_PAD_KEYCNT_INTR_MASK 0x4000
+
+#define REG_PAD_KEYCNT_L_SHIFT 9
+#define REG_PAD_KEYCNT_L_SIZE 1
+#define REG_PAD_KEYCNT_L_MASK 0x0200
+
+#define REG_PAD_KEYCNT_R_SHIFT 8
+#define REG_PAD_KEYCNT_R_SIZE 1
+#define REG_PAD_KEYCNT_R_MASK 0x0100
+
+#define REG_PAD_KEYCNT_DOWN_SHIFT 7
+#define REG_PAD_KEYCNT_DOWN_SIZE 1
+#define REG_PAD_KEYCNT_DOWN_MASK 0x0080
+
+#define REG_PAD_KEYCNT_UP_SHIFT 6
+#define REG_PAD_KEYCNT_UP_SIZE 1
+#define REG_PAD_KEYCNT_UP_MASK 0x0040
+
+#define REG_PAD_KEYCNT_LEFT_SHIFT 5
+#define REG_PAD_KEYCNT_LEFT_SIZE 1
+#define REG_PAD_KEYCNT_LEFT_MASK 0x0020
+
+#define REG_PAD_KEYCNT_RIGHT_SHIFT 4
+#define REG_PAD_KEYCNT_RIGHT_SIZE 1
+#define REG_PAD_KEYCNT_RIGHT_MASK 0x0010
+
+#define REG_PAD_KEYCNT_START_SHIFT 3
+#define REG_PAD_KEYCNT_START_SIZE 1
+#define REG_PAD_KEYCNT_START_MASK 0x0008
+
+#define REG_PAD_KEYCNT_SEL_SHIFT 2
+#define REG_PAD_KEYCNT_SEL_SIZE 1
+#define REG_PAD_KEYCNT_SEL_MASK 0x0004
+
+#define REG_PAD_KEYCNT_B_SHIFT 1
+#define REG_PAD_KEYCNT_B_SIZE 1
+#define REG_PAD_KEYCNT_B_MASK 0x0002
+
+#define REG_PAD_KEYCNT_A_SHIFT 0
+#define REG_PAD_KEYCNT_A_SIZE 1
+#define REG_PAD_KEYCNT_A_MASK 0x0001
+
+#ifndef SDK_ASM
+#define REG_PAD_KEYCNT_FIELD( logic, intr, l, r, down, up, left, right, start, sel, b, a ) \
+ (u16)( \
+ ((u32)(logic) << REG_PAD_KEYCNT_LOGIC_SHIFT) | \
+ ((u32)(intr) << REG_PAD_KEYCNT_INTR_SHIFT) | \
+ ((u32)(l) << REG_PAD_KEYCNT_L_SHIFT) | \
+ ((u32)(r) << REG_PAD_KEYCNT_R_SHIFT) | \
+ ((u32)(down) << REG_PAD_KEYCNT_DOWN_SHIFT) | \
+ ((u32)(up) << REG_PAD_KEYCNT_UP_SHIFT) | \
+ ((u32)(left) << REG_PAD_KEYCNT_LEFT_SHIFT) | \
+ ((u32)(right) << REG_PAD_KEYCNT_RIGHT_SHIFT) | \
+ ((u32)(start) << REG_PAD_KEYCNT_START_SHIFT) | \
+ ((u32)(sel) << REG_PAD_KEYCNT_SEL_SHIFT) | \
+ ((u32)(b) << REG_PAD_KEYCNT_B_SHIFT) | \
+ ((u32)(a) << REG_PAD_KEYCNT_A_SHIFT))
+#endif
+
#endif //POKEDIAMOND_REGISTERS_H