Mercurial > repos > blastem
comparison pico_pcm.h @ 2431:61c0bfe10887
Somewhat busted support for Pico ADPCM
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Tue, 06 Feb 2024 21:47:11 -0800 |
parents | |
children | e8eba0cd5444 |
comparison
equal
deleted
inserted
replaced
2430:fb8d6ebf9d5f | 2431:61c0bfe10887 |
---|---|
1 #ifndef PICO_PCM_H_ | |
2 #define PICO_PCM_H_ | |
3 | |
4 #include <stdint.h> | |
5 #include "render_audio.h" | |
6 #include "oscilloscope.h" | |
7 | |
8 typedef struct { | |
9 audio_source *audio; | |
10 oscilloscope *scope; | |
11 uint32_t clock_inc; | |
12 uint32_t cycle; | |
13 uint16_t ctrl; | |
14 | |
15 uint16_t counter; | |
16 uint16_t rate; | |
17 uint16_t samples; | |
18 int16_t output; | |
19 | |
20 uint8_t fifo[0x40]; | |
21 uint8_t fifo_read; | |
22 uint8_t fifo_write; | |
23 uint8_t adpcm_state; | |
24 uint8_t nibble_store; | |
25 uint8_t scope_channel; | |
26 } pico_pcm; | |
27 | |
28 void pico_pcm_init(pico_pcm *pcm, uint32_t master_clock, uint32_t divider); | |
29 void pico_pcm_free(pico_pcm *pcm); | |
30 void pico_pcm_enable_scope(pico_pcm *pcm, oscilloscope *scope, uint32_t master_clock); | |
31 void pico_pcm_run(pico_pcm *pcm, uint32_t cycle); | |
32 void pico_pcm_ctrl_write(pico_pcm *pcm, uint16_t value); | |
33 void pico_pcm_data_write(pico_pcm *pcm, uint16_t value); | |
34 uint16_t pico_pcm_ctrl_read(pico_pcm *pcm); | |
35 uint16_t pico_pcm_data_read(pico_pcm *pcm); | |
36 uint32_t pico_pcm_next_int(pico_pcm *pcm); | |
37 | |
38 #endif //PICO_PCM_H_ |