annotate pico_pcm.h @ 2496:187bc857a76a default tip

Fix bug in MED mapper protection bit implementation
author Michael Pavone <pavone@retrodev.com>
date Sun, 28 Apr 2024 23:33:11 -0700
parents e8eba0cd5444
children
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);
2486
e8eba0cd5444 Implement turbo/slow for Pico and Copera
Michael Pavone <pavone@retrodev.com>
parents: 2431
diff changeset
30 void pico_pcm_adjust_master_clock(pico_pcm *pcm, uint32_t master_clock);
2431
61c0bfe10887 Somewhat busted support for Pico ADPCM
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
31 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
32 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
33 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
34 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
35 uint16_t pico_pcm_ctrl_read(pico_pcm *pcm);
61c0bfe10887 Somewhat busted support for Pico ADPCM
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
36 uint16_t pico_pcm_data_read(pico_pcm *pcm);
61c0bfe10887 Somewhat busted support for Pico ADPCM
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
37 uint32_t pico_pcm_next_int(pico_pcm *pcm);
61c0bfe10887 Somewhat busted support for Pico ADPCM
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
38
61c0bfe10887 Somewhat busted support for Pico ADPCM
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
39 #endif //PICO_PCM_H_