diff options
author | YamaArashi <shadow962@live.com> | 2016-06-03 23:27:19 -0700 |
---|---|---|
committer | YamaArashi <shadow962@live.com> | 2016-06-05 13:43:46 -0700 |
commit | 2998cc719a41e38568468006d41539d1886412df (patch) | |
tree | 8cd0b9e274caf61efd70c6ace731637ad16e3df6 /include/gba | |
parent | 2405230037bdc7804834eb10aed91bd538dabb4e (diff) |
link.c
Diffstat (limited to 'include/gba')
-rw-r--r-- | include/gba/io_reg.h | 38 | ||||
-rw-r--r-- | include/gba/types.h | 46 |
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 |