libdragon
Loading...
Searching...
No Matches
regsinternal.h
Go to the documentation of this file.
1
7#ifndef __LIBDRAGON_REGSINTERNAL_H
8#define __LIBDRAGON_REGSINTERNAL_H
9
10#include <stdint.h>
11
33typedef struct AI_regs_s {
35 volatile void * address;
39 uint32_t length;
42 uint32_t control;
44 uint32_t status;
49 uint32_t dacrate;
60 uint32_t bitrate;
61} AI_regs_t;
62
67typedef struct VI_regs_s {
69 uint32_t control;
73 uint32_t width;
77 uint32_t v_int;
79 uint32_t cur_line;
81 uint32_t timing;
83 uint32_t v_sync;
85 uint32_t h_sync;
87 uint32_t h_sync2;
89 uint32_t h_limits;
91 uint32_t v_limits;
93 uint32_t color_burst;
95 uint32_t h_scale;
97 uint32_t v_scale;
98} VI_regs_t;
99
104typedef struct PI_regs_s {
106 volatile void * ram_address;
108 uint32_t pi_address;
110 uint32_t read_length;
112 uint32_t write_length;
114 uint32_t status;
116 uint32_t dom1_latency;
119 // TODO: add remaining registers
120} PI_regs_t;
121
126typedef struct SI_regs_s {
128 volatile void * DRAM_addr;
130 volatile void * PIF_addr_read;
132 uint32_t reserved1;
134 uint32_t reserved2;
136 volatile void * PIF_addr_write;
138 uint32_t reserved3;
140 uint32_t status;
141} SI_regs_t;
142
147typedef struct SP_regs_s {
149 volatile void * RSP_addr;
151 volatile void * DRAM_addr;
157 uint32_t status;
159 uint32_t rsp_dma_full;
161 uint32_t rsp_dma_busy;
164} SP_regs_t;
165
166#endif
uint32_t cur_line
Current vertical line counter.
Definition regsinternal.h:79
uint32_t h_limits
Beginning and end of video horizontally.
Definition regsinternal.h:89
uint32_t color_burst
Beginning and end of color burst in vertical lines.
Definition regsinternal.h:93
uint32_t dom1_latency
Cartridge domain 1 latency in RCP clock cycles. Requires DMA status bit guards to work reliably.
Definition regsinternal.h:116
uint32_t v_limits
Beginning and end of video vertically.
Definition regsinternal.h:91
uint32_t reserved3
Reserved word.
Definition regsinternal.h:138
uint32_t rsp_dma_full
RSP DMA full.
Definition regsinternal.h:159
volatile void * DRAM_addr
RDRAM memory address.
Definition regsinternal.h:151
uint32_t h_sync2
Number of pixels in line, set identically to h_sync.
Definition regsinternal.h:87
uint32_t status
SI status, including DMA busy and IO busy.
Definition regsinternal.h:140
uint32_t control
DMA start register. Write a 1 to this register to start playing back an audio sample.
Definition regsinternal.h:42
uint32_t rsp_write_length
RDP->RDRAM DMA length.
Definition regsinternal.h:155
uint32_t status
Status of the PI, including DMA busy.
Definition regsinternal.h:114
uint32_t dom1_pulse_width
Cartridge domain 1 pulse width in RCP clock cycles. Requires DMA status bit guards to work reliably.
Definition regsinternal.h:118
uint32_t pi_address
Address of data on peripheral.
Definition regsinternal.h:108
volatile void * address
Pointer to uncached memory buffer of samples to play.
Definition regsinternal.h:35
volatile void * RSP_addr
RSP memory address (IMEM/DMEM)
Definition regsinternal.h:149
uint32_t dacrate
Rate at which the buffer should be played.
Definition regsinternal.h:49
uint32_t v_sync
Number of lines per frame.
Definition regsinternal.h:83
uint32_t write_length
How much data to write to RAM from the peripheral.
Definition regsinternal.h:112
uint32_t status
RSP status.
Definition regsinternal.h:157
uint32_t status
AI status register. Bit 31 is the full bit, bit 30 is the busy bit.
Definition regsinternal.h:44
uint32_t rsp_semaphore
RSP Semaphore.
Definition regsinternal.h:163
void * framebuffer
Pointer to uncached buffer in memory to rasterize.
Definition regsinternal.h:71
uint32_t v_scale
Vertical scaling factor from buffer to screen.
Definition regsinternal.h:97
uint32_t v_int
Vertical interrupt control register. Controls which horizontal line must be hit to generate a VI inte...
Definition regsinternal.h:77
uint32_t width
Width of the buffer in pixels.
Definition regsinternal.h:73
uint32_t bitrate
Half-rate at which each single bit of a sample is shifted into the DAC.
Definition regsinternal.h:60
uint32_t length
Size in bytes of the buffer to be played. Should be number of stereo samples * 2 * sizeof( uint16_t )
Definition regsinternal.h:39
volatile void * PIF_addr_write
Address to write when copying to PIF RAM.
Definition regsinternal.h:136
uint32_t rsp_read_length
RDRAM->RSP DMA length.
Definition regsinternal.h:153
volatile void * ram_address
Uncached address in RAM where data should be found.
Definition regsinternal.h:106
uint32_t control
VI control register. Sets up various rasterization modes.
Definition regsinternal.h:69
volatile void * DRAM_addr
Uncached address in RAM where data should be found.
Definition regsinternal.h:128
uint32_t h_scale
Horizontal scaling factor from buffer to screen.
Definition regsinternal.h:95
volatile void * PIF_addr_read
Address to read when copying from PIF RAM.
Definition regsinternal.h:130
uint32_t rsp_dma_busy
RSP DMA busy.
Definition regsinternal.h:161
uint32_t reserved2
Reserved word.
Definition regsinternal.h:134
uint32_t reserved1
Reserved word.
Definition regsinternal.h:132
uint32_t timing
Timing generation register for PAL/NTSC signals.
Definition regsinternal.h:81
uint32_t read_length
How much data to read from RAM into the peripheral.
Definition regsinternal.h:110
uint32_t h_sync
Number of pixels in line and leap pattern.
Definition regsinternal.h:85
Register definition for the AI interface.
Definition regsinternal.h:33
Register definition for the PI interface.
Definition regsinternal.h:104
Register definition for the SI interface.
Definition regsinternal.h:126
Register definition for the SP interface.
Definition regsinternal.h:147
Register definition for the VI interface.
Definition regsinternal.h:67