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_