blob: 808e5ceae50e21063bfd812f9186857902c48060 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
(*
$Id$
------------------------------------------------------------------------------
Header file for libgba serial communication functions
Copyright 2003-2004 by Dave Murphy.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA.
Please report all bugs and problems through the bug tracker at
"http://sourceforge.net/tracker/?group_id=114505&atid=668551".
------------------------------------------------------------------------------
Conversion by Legolas (http://itaprogaming.free.fr) for freepascal compiler
(http://www.freepascal.org)
Copyright (C) 2006 Francesco Lombardi
Check http://sourceforge.net/projects/libndsfpc for updates
------------------------------------------------------------------------------
$Log$
*)
{$ifdef GBA_INTERFACE}
//---------------------------------------------------------------------------------
// SIO mode control bits used with REG_SIOCNT
//---------------------------------------------------------------------------------
const
SIO_8BIT = $0000; // Normal 8-bit communication mode
SIO_32BIT = $1000; // Normal 32-bit communication mode
SIO_MULTI = $2000; // Multi-play communication mode
SIO_UART = $3000; // UART communication mode
SIO_IRQ = $4000; // Enable serial irq
//---------------------------------------------------------------------------------
// baud rate settings
//---------------------------------------------------------------------------------
SIO_9600 = $0000;
SIO_38400 = $0001;
SIO_57600 = $0002;
SIO_115200 = $0003;
SIO_CLK_INT = (1 shl 0); // Select internal clock
SIO_2MHZ_CLK = (1 shl 1); // Select 2MHz clock
SIO_RDY = (1 shl 2); // Opponent SO state
SIO_SO_HIGH = (1 shl 3); // Our SO state
SIO_START = (1 shl 7);
//---------------------------------------------------------------------------------
// SIO modes set with REG_RCNT
//---------------------------------------------------------------------------------
R_NORMAL = $0000;
R_MULTI = $0000;
R_UART = $0000;
R_GPIO = $8000;
R_JOYBUS = $C000;
//---------------------------------------------------------------------------------
// General purpose mode control bits used with REG_RCNT
//---------------------------------------------------------------------------------
GPIO_SC = $0001; // Data
GPIO_SD = $0002;
GPIO_SI = $0004;
GPIO_SO = $0008;
GPIO_SC_IO = $0010; // Select I/O
GPIO_SD_IO = $0020;
GPIO_SI_IO = $0040;
GPIO_SO_IO = $0080;
GPIO_SC_INPUT = $0000; // Input setting
GPIO_SD_INPUT = $0000;
GPIO_SI_INPUT = $0000;
GPIO_SO_INPUT = $0000;
GPIO_SC_OUTPUT = $0010; // Output setting
GPIO_SD_OUTPUT = $0020;
GPIO_SI_OUTPUT = $0040;
GPIO_SO_OUTPUT = $0080;
REG_SIOCNT : pu16 = pointer(REG_BASE + $128); // Serial Communication Control
REG_SIODATA8 : pu16 = pointer(REG_BASE + $12a); // 8bit Serial Communication Data
REG_SIODATA32 : pu32 = pointer(REG_BASE + $120); // 32bit Serial Communication Data
REG_SIOMLT_SEND : pu16 = pointer(REG_BASE + $12a); // Multi-play SIO Send Data
REG_SIOMLT_RECV : pu16 = pointer(REG_BASE + $120); // Multi-play SIO Receive Data
REG_SIOMULTI0 : pu16 = pointer(REG_BASE + $120); // Master data
REG_SIOMULTI1 : pu16 = pointer(REG_BASE + $122); // Slave 1 data
REG_SIOMULTI2 : pu16 = pointer(REG_BASE + $124); // Slave 2 data
REG_SIOMULTI3 : pu16 = pointer(REG_BASE + $126); // Slave 3 data
REG_RCNT : pu16 = pointer(REG_BASE + $134); // SIO Mode Select/General Purpose Data
REG_HS_CTRL : pu16 = pointer(REG_BASE + $140); // SIO JOY Bus Control
REG_JOYRE : pu32 = pointer(REG_BASE + $150); // SIO JOY Bus Receive Data
REG_JOYRE_L : pu16 = pointer(REG_BASE + $150);
REG_JOYRE_H : pu16 = pointer(REG_BASE + $152);
REG_JOYTR : pu32 = pointer(REG_BASE + $154); // SIO JOY Bus Transmit Data
REG_JOYTR_L : pu16 = pointer(REG_BASE + $154);
REG_JOYTR_H : pu16 = pointer(REG_BASE + $156);
REG_JSTAT : pu16 = pointer(REG_BASE + $158); // SIO JOY Bus Receive Status
{$endif GBA_INTERFACE}
|