summaryrefslogtreecommitdiff
path: root/include/gba
diff options
context:
space:
mode:
authorYamaArashi <shadow962@live.com>2016-06-03 23:27:19 -0700
committerYamaArashi <shadow962@live.com>2016-06-05 13:43:46 -0700
commit2998cc719a41e38568468006d41539d1886412df (patch)
tree8cd0b9e274caf61efd70c6ace731637ad16e3df6 /include/gba
parent2405230037bdc7804834eb10aed91bd538dabb4e (diff)
link.c
Diffstat (limited to 'include/gba')
-rw-r--r--include/gba/io_reg.h38
-rw-r--r--include/gba/types.h46
2 files changed, 75 insertions, 9 deletions
diff --git a/include/gba/io_reg.h b/include/gba/io_reg.h
index 87c167ab6..3c30c494e 100644
--- a/include/gba/io_reg.h
+++ b/include/gba/io_reg.h
@@ -350,6 +350,7 @@
#define REG_BG2VOFS (*(vu16 *)REG_ADDR_BG2VOFS)
#define REG_BG3HOFS (*(vu16 *)REG_ADDR_BG3HOFS)
#define REG_BG3VOFS (*(vu16 *)REG_ADDR_BG3VOFS)
+#define REG_BLDALPHA (*(vu16 *)REG_ADDR_BLDALPHA)
#define REG_SOUND1CNT_L (*(vu16 *)REG_ADDR_SOUND1CNT_L)
#define REG_NR10 (*(vu8 *)REG_ADDR_NR10)
@@ -433,9 +434,21 @@
#define REG_TM3CNT_L (*(vu16 *)REG_ADDR_TM3CNT_L)
#define REG_TM3CNT_H (*(vu16 *)REG_ADDR_TM3CNT_H)
+#define REG_SIOCNT (*(vu16 *)REG_ADDR_SIOCNT)
+#define REG_SIODATA8 (*(vu16 *)REG_ADDR_SIODATA8)
+#define REG_SIODATA32 (*(vu32 *)REG_ADDR_SIODATA32)
+#define REG_SIOMLT_SEND (*(vu16 *)REG_ADDR_SIOMLT_SEND)
+#define REG_SIOMLT_RECV (*(vu64 *)REG_ADDR_SIOMLT_RECV)
+#define REG_SIOMULTI0 (*(vu16 *)REG_ADDR_SIOMULTI0)
+#define REG_SIOMULTI1 (*(vu16 *)REG_ADDR_SIOMULTI1)
+#define REG_SIOMULTI2 (*(vu16 *)REG_ADDR_SIOMULTI2)
+#define REG_SIOMULTI3 (*(vu16 *)REG_ADDR_SIOMULTI3)
+
#define REG_KEYINPUT (*(vu16 *)REG_ADDR_KEYINPUT)
#define REG_KEYCNT (*(vu16 *)REG_ADDR_KEYCNT)
+#define REG_RCNT (*(vu16 *)REG_ADDR_RCNT)
+
#define REG_IME (*(vu16 *)REG_ADDR_IME)
#define REG_IE (*(vu16 *)REG_ADDR_IE)
#define REG_IF (*(vu16 *)REG_ADDR_IF)
@@ -526,6 +539,31 @@
#define TIMER_INTR_ENABLE 0x40
#define TIMER_ENABLE 0x80
+// serial
+#define SIO_8BIT_MODE 0x0000 // Normal 8-bit communication mode
+#define SIO_32BIT_MODE 0x1000 // Normal 32-bit communication mode
+#define SIO_MULTI_MODE 0x2000 // Multi-player communication mode
+#define SIO_UART_MODE 0x3000 // UART communication mode
+
+#define SIO_9600_BPS 0x0000 // baud rate 9600 bps
+#define SIO_38400_BPS 0x0001 // 38400 bps
+#define SIO_57600_BPS 0x0002 // 57600 bps
+#define SIO_115200_BPS 0x0003 // 115200 bps
+
+#define SIO_MULTI_SI 0x0004 // Multi-player communication SI terminal
+#define SIO_MULTI_SD 0x0008 // SD terminal
+
+#define SIO_ERROR 0x0040 // Detect error
+#define SIO_START 0x0080 // Start transfer
+#define SIO_ENABLE 0x0080 // Enable SIO
+
+#define SIO_INTR_ENABLE 0x4000
+
+#define SIO_MULTI_SI_SHIFT 2
+#define SIO_MULTI_SI_MASK 0x1
+#define SIO_MULTI_DI_SHIFT 3
+#define SIO_MULTI_DI_MASK 0x1
+
// keys
#define A_BUTTON 0x0001
#define B_BUTTON 0x0002
diff --git a/include/gba/types.h b/include/gba/types.h
index 4e1ab3003..1274d4f0d 100644
--- a/include/gba/types.h
+++ b/include/gba/types.h
@@ -1,19 +1,23 @@
#ifndef GUARD_GBA_TYPES_H
#define GUARD_GBA_TYPES_H
-typedef unsigned char u8;
-typedef unsigned short u16;
-typedef unsigned int u32;
-typedef signed char s8;
-typedef signed short s16;
-typedef signed int s32;
-
-typedef volatile u8 vu8;
+typedef unsigned char u8;
+typedef unsigned short u16;
+typedef unsigned int u32;
+typedef unsigned long long u64;
+typedef signed char s8;
+typedef signed short s16;
+typedef signed int s32;
+typedef signed long long s64;
+
+typedef volatile u8 vu8;
typedef volatile u16 vu16;
typedef volatile u32 vu32;
-typedef volatile s8 vs8;
+typedef volatile u64 vu64;
+typedef volatile s8 vs8;
typedef volatile s16 vs16;
typedef volatile s32 vs32;
+typedef volatile s64 vs64;
typedef float f32;
typedef double f64;
@@ -67,4 +71,28 @@ struct ObjAffineSrcData
u16 rotation;
};
+// Multi-player SIO Control Structure
+struct SioMultiCnt
+{
+ u16 baudRate:2; // baud rate
+ u16 si:1; // SI terminal
+ u16 sd:1; // SD terminal
+ u16 id:2; // ID
+ u16 error:1; // error flag
+ u16 enable:1; // SIO enable
+ u16 unused_11_8:4;
+ u16 mode:2; // communication mode (should equal 2)
+ u16 intrEnable:1; // IRQ enable
+ u16 unused_15:1;
+ u16 data; // data
+};
+
+#define ST_SIO_MULTI_MODE 2 // Multi-player communication mode
+
+// baud rate
+#define ST_SIO_9600_BPS 0 // 9600 bps
+#define ST_SIO_38400_BPS 1 // 38400 bps
+#define ST_SIO_57600_BPS 2 // 57600 bps
+#define ST_SIO_115200_BPS 3 // 115200 bps
+
#endif // GUARD_GBA_TYPES_H