Mercurial > repos > blastem
annotate pico_pcm.h @ 2681:c4256ce2c45a
Updated Android port using gradle toolchain and with basic Storage Access Framework support for Android 11+ support
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Wed, 26 Mar 2025 01:20:55 -0700 |
parents | e8eba0cd5444 |
children |
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_ |