Loading...
Searching...
No Matches
sa1.h
Go to the documentation of this file.
1
24
#ifndef OPENSNES_SA1_H
25
#define OPENSNES_SA1_H
26
27
#include <
snes/types.h
>
28
29
/*============================================================================
30
* SA-1 Register Definitions ($2200-$23FF)
31
*============================================================================*/
32
33
/* --- SNES CPU → SA-1 control registers (write) --- */
34
35
#define REG_SA1_CCNT (*(volatile u8*)0x2200)
36
#define REG_SA1_SIE (*(volatile u8*)0x2201)
37
#define REG_SA1_SIC (*(volatile u8*)0x2202)
38
#define REG_SA1_CRVL (*(volatile u8*)0x2203)
39
#define REG_SA1_CRVH (*(volatile u8*)0x2204)
40
#define REG_SA1_CNVL (*(volatile u8*)0x2205)
41
#define REG_SA1_CNVH (*(volatile u8*)0x2206)
42
#define REG_SA1_CIVL (*(volatile u8*)0x2207)
43
#define REG_SA1_CIVH (*(volatile u8*)0x2208)
45
/* --- SA-1 → SNES CPU control registers (write from SA-1 side) --- */
46
47
#define REG_SA1_SCNT (*(volatile u8*)0x2209)
48
#define REG_SA1_CIE (*(volatile u8*)0x220A)
49
#define REG_SA1_CIC (*(volatile u8*)0x220B)
51
/* --- ROM banking (Super MMC) --- */
52
53
#define REG_SA1_CXB (*(volatile u8*)0x2220)
54
#define REG_SA1_DXB (*(volatile u8*)0x2221)
55
#define REG_SA1_EXB (*(volatile u8*)0x2222)
56
#define REG_SA1_FXB (*(volatile u8*)0x2223)
58
/* --- BW-RAM configuration --- */
59
60
#define REG_SA1_BMAPS (*(volatile u8*)0x2224)
61
#define REG_SA1_BMAP (*(volatile u8*)0x2225)
62
#define REG_SA1_SBWE (*(volatile u8*)0x2226)
63
#define REG_SA1_CBWE (*(volatile u8*)0x2227)
64
#define REG_SA1_BWPA (*(volatile u8*)0x2228)
66
/* --- I-RAM protection --- */
67
68
#define REG_SA1_SIWP (*(volatile u8*)0x2229)
69
#define REG_SA1_CIWP (*(volatile u8*)0x222A)
71
/* --- DMA --- */
72
73
#define REG_SA1_DCNT (*(volatile u8*)0x2230)
74
#define REG_SA1_CDMA (*(volatile u8*)0x2231)
75
#define REG_SA1_SDAL (*(volatile u8*)0x2232)
76
#define REG_SA1_SDAH (*(volatile u8*)0x2233)
77
#define REG_SA1_SDAB (*(volatile u8*)0x2234)
78
#define REG_SA1_DDAL (*(volatile u8*)0x2235)
79
#define REG_SA1_DDAH (*(volatile u8*)0x2236)
80
#define REG_SA1_DDAB (*(volatile u8*)0x2237)
81
#define REG_SA1_DTCL (*(volatile u8*)0x2238)
82
#define REG_SA1_DTCH (*(volatile u8*)0x2239)
84
/* --- Hardware arithmetic --- */
85
86
#define REG_SA1_MCNT (*(volatile u8*)0x2250)
87
#define REG_SA1_MAL (*(volatile u8*)0x2251)
88
#define REG_SA1_MAH (*(volatile u8*)0x2252)
89
#define REG_SA1_MBL (*(volatile u8*)0x2253)
90
#define REG_SA1_MBH (*(volatile u8*)0x2254)
92
/* --- Status registers (read) --- */
93
94
#define REG_SA1_SFR (*(volatile u8*)0x2300)
95
#define REG_SA1_CFR (*(volatile u8*)0x2301)
96
#define REG_SA1_HCRL (*(volatile u8*)0x2302)
97
#define REG_SA1_HCRH (*(volatile u8*)0x2303)
98
#define REG_SA1_VCRL (*(volatile u8*)0x2304)
99
#define REG_SA1_VCRH (*(volatile u8*)0x2305)
100
#define REG_SA1_MR (*(volatile u32*)0x2306)
101
#define REG_SA1_OF (*(volatile u8*)0x230B)
103
/*============================================================================
104
* SA-1 Constants
105
*============================================================================*/
106
108
#define SA1_IRAM_BASE 0x3000
109
111
#define SA1_IRAM_SIZE 2048
112
114
#define SA1_IRAM ((volatile u8*)SA1_IRAM_BASE)
115
117
#define SA1_READY_MAGIC 0xA5
118
120
#define SA1_READY_ADDR SA1_IRAM_BASE
121
122
/* CCNT ($2200) bit definitions */
123
#define SA1_CCNT_SA1_IRQ 0x80
124
#define SA1_CCNT_SA1_RDYB 0x60
125
#define SA1_CCNT_SA1_RESB 0x20
126
#define SA1_CCNT_MSG 0x0F
128
/*============================================================================
129
* SA-1 API
130
*============================================================================*/
131
140
u8
sa1Init
(
void
);
141
142
#endif
/* OPENSNES_SA1_H */
u8
unsigned char u8
8-bit unsigned integer (0 to 255)
Definition
types.h:46
sa1Init
u8 sa1Init(void)
Initialize and start the SA-1 coprocessor.
types.h
OpenSNES Standard Types.
lib
include
snes
sa1.h
Generated by
1.9.8