annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2431
61c0bfe10887 Somewhat busted support for Pico ADPCM
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
1 #ifndef PICO_PCM_H_
61c0bfe10887 Somewhat busted support for Pico ADPCM
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
2 #define PICO_PCM_H_
61c0bfe10887 Somewhat busted support for Pico ADPCM
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
3
61c0bfe10887 Somewhat busted support for Pico ADPCM
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
4 #include <stdint.h>
61c0bfe10887 Somewhat busted support for Pico ADPCM
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
5 #include "render_audio.h"
61c0bfe10887 Somewhat busted support for Pico ADPCM
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
6 #include "oscilloscope.h"
61c0bfe10887 Somewhat busted support for Pico ADPCM
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
7
61c0bfe10887 Somewhat busted support for Pico ADPCM
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
8 typedef struct {
61c0bfe10887 Somewhat busted support for Pico ADPCM
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
9 audio_source *audio;
61c0bfe10887 Somewhat busted support for Pico ADPCM
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
10 oscilloscope *scope;
61c0bfe10887 Somewhat busted support for Pico ADPCM
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
11 uint32_t clock_inc;
61c0bfe10887 Somewhat busted support for Pico ADPCM
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
12 uint32_t cycle;
61c0bfe10887 Somewhat busted support for Pico ADPCM
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
13 uint16_t ctrl;
61c0bfe10887 Somewhat busted support for Pico ADPCM
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
14
61c0bfe10887 Somewhat busted support for Pico ADPCM
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
15 uint16_t counter;
61c0bfe10887 Somewhat busted support for Pico ADPCM
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
16 uint16_t rate;
61c0bfe10887 Somewhat busted support for Pico ADPCM
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
17 uint16_t samples;
61c0bfe10887 Somewhat busted support for Pico ADPCM
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
18 int16_t output;
61c0bfe10887 Somewhat busted support for Pico ADPCM
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
19
61c0bfe10887 Somewhat busted support for Pico ADPCM
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
20 uint8_t fifo[0x40];
61c0bfe10887 Somewhat busted support for Pico ADPCM
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
21 uint8_t fifo_read;
61c0bfe10887 Somewhat busted support for Pico ADPCM
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
22 uint8_t fifo_write;
61c0bfe10887 Somewhat busted support for Pico ADPCM
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
23 uint8_t adpcm_state;
61c0bfe10887 Somewhat busted support for Pico ADPCM
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
24 uint8_t nibble_store;
61c0bfe10887 Somewhat busted support for Pico ADPCM
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
25 uint8_t scope_channel;
61c0bfe10887 Somewhat busted support for Pico ADPCM
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
26 } pico_pcm;
61c0bfe10887 Somewhat busted support for Pico ADPCM
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
27
61c0bfe10887 Somewhat busted support for Pico ADPCM
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
28 void pico_pcm_init(pico_pcm *pcm, uint32_t master_clock, uint32_t divider);
61c0bfe10887 Somewhat busted support for Pico ADPCM
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
29 void pico_pcm_free(pico_pcm *pcm);
61c0bfe10887 Somewhat busted support for Pico ADPCM
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
30 void pico_pcm_enable_scope(pico_pcm *pcm, oscilloscope *scope, uint32_t master_clock);
61c0bfe10887 Somewhat busted support for Pico ADPCM
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
31 void pico_pcm_run(pico_pcm *pcm, uint32_t cycle);
61c0bfe10887 Somewhat busted support for Pico ADPCM
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
32 void pico_pcm_ctrl_write(pico_pcm *pcm, uint16_t value);
61c0bfe10887 Somewhat busted support for Pico ADPCM
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
33 void pico_pcm_data_write(pico_pcm *pcm, uint16_t value);
61c0bfe10887 Somewhat busted support for Pico ADPCM
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
34 uint16_t pico_pcm_ctrl_read(pico_pcm *pcm);
61c0bfe10887 Somewhat busted support for Pico ADPCM
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
35 uint16_t pico_pcm_data_read(pico_pcm *pcm);
61c0bfe10887 Somewhat busted support for Pico ADPCM
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
36 uint32_t pico_pcm_next_int(pico_pcm *pcm);
61c0bfe10887 Somewhat busted support for Pico ADPCM
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
37
61c0bfe10887 Somewhat busted support for Pico ADPCM
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
38 #endif //PICO_PCM_H_