Mercurial > repos > blastem
annotate mediaplayer.h @ 2436:f50b9ed42ebd
Fix polarity of pico ADPCM busy flag
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sat, 10 Feb 2024 17:28:05 -0800 |
parents | 30e59954eab9 |
children | fb8f49b0aece |
rev | line source |
---|---|
2289
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
1 #ifndef MEDIAPLAYER_H_ |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
2 #define MEDIAPLAYER_H_ |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
3 |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
4 #include <stdint.h> |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
5 #include "system.h" |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
6 #include "vgm.h" |
2290
c4980d89614b
Support WAVE files in media player
Michael Pavone <pavone@retrodev.com>
parents:
2289
diff
changeset
|
7 #include "wave.h" |
2296
789802d99629
Add basic FLAC decoder and add FLAC playback support to the media player
Michael Pavone <pavone@retrodev.com>
parents:
2290
diff
changeset
|
8 #include "flac.h" |
2374
97f164d1f0f6
Re-enable VGM looping. Enable oscilloscope in VGM player. Fix VGM player PSG output
Michael Pavone <pavone@retrodev.com>
parents:
2296
diff
changeset
|
9 #include "oscilloscope.h" |
2290
c4980d89614b
Support WAVE files in media player
Michael Pavone <pavone@retrodev.com>
parents:
2289
diff
changeset
|
10 #include "render_audio.h" |
2375
02c04196c2da
Fix mediaplayer play/pause handling
Michael Pavone <pavone@retrodev.com>
parents:
2374
diff
changeset
|
11 #include "io.h" |
2289
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
12 |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
13 typedef struct chip_info chip_info; |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
14 typedef void (*chip_run_fun)(void *context, uint32_t cycle); |
2374
97f164d1f0f6
Re-enable VGM looping. Enable oscilloscope in VGM player. Fix VGM player PSG output
Michael Pavone <pavone@retrodev.com>
parents:
2296
diff
changeset
|
15 typedef void (*chip_scope_fun)(chip_info *chip, oscilloscope *scope); |
97f164d1f0f6
Re-enable VGM looping. Enable oscilloscope in VGM player. Fix VGM player PSG output
Michael Pavone <pavone@retrodev.com>
parents:
2296
diff
changeset
|
16 typedef void (*chip_noarg_fun)(void *context); |
2289
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
17 typedef void (*chip_adjust_fun)(chip_info *chip); |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
18 struct chip_info { |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
19 void *context; |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
20 chip_run_fun run; |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
21 chip_adjust_fun adjust; |
2374
97f164d1f0f6
Re-enable VGM looping. Enable oscilloscope in VGM player. Fix VGM player PSG output
Michael Pavone <pavone@retrodev.com>
parents:
2296
diff
changeset
|
22 chip_scope_fun scope; |
97f164d1f0f6
Re-enable VGM looping. Enable oscilloscope in VGM player. Fix VGM player PSG output
Michael Pavone <pavone@retrodev.com>
parents:
2296
diff
changeset
|
23 chip_noarg_fun no_scope; |
2377
30e59954eab9
Properly free sound chips in VGM player
Michael Pavone <pavone@retrodev.com>
parents:
2376
diff
changeset
|
24 chip_noarg_fun free; |
2289
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
25 data_block *blocks; |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
26 uint32_t clock; |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
27 uint32_t samples; |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
28 uint8_t cmd; |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
29 uint8_t data_type; |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
30 }; |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
31 |
2376
1c09f5be285b
Very basic UI for media player
Michael Pavone <pavone@retrodev.com>
parents:
2375
diff
changeset
|
32 enum { |
1c09f5be285b
Very basic UI for media player
Michael Pavone <pavone@retrodev.com>
parents:
2375
diff
changeset
|
33 STATE_PLAY, |
1c09f5be285b
Very basic UI for media player
Michael Pavone <pavone@retrodev.com>
parents:
2375
diff
changeset
|
34 STATE_PAUSED |
1c09f5be285b
Very basic UI for media player
Michael Pavone <pavone@retrodev.com>
parents:
2375
diff
changeset
|
35 }; |
1c09f5be285b
Very basic UI for media player
Michael Pavone <pavone@retrodev.com>
parents:
2375
diff
changeset
|
36 |
2289
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
37 typedef struct { |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
38 system_header header; |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
39 system_media *media; |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
40 vgm_header *vgm; |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
41 vgm_extended_header *vgm_ext; |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
42 data_block *ym_seek_block; |
2290
c4980d89614b
Support WAVE files in media player
Michael Pavone <pavone@retrodev.com>
parents:
2289
diff
changeset
|
43 wave_header *wave; |
2296
789802d99629
Add basic FLAC decoder and add FLAC playback support to the media player
Michael Pavone <pavone@retrodev.com>
parents:
2290
diff
changeset
|
44 flac_file *flac; |
2290
c4980d89614b
Support WAVE files in media player
Michael Pavone <pavone@retrodev.com>
parents:
2289
diff
changeset
|
45 audio_source *audio; |
2289
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
46 chip_info *chips; |
2374
97f164d1f0f6
Re-enable VGM looping. Enable oscilloscope in VGM player. Fix VGM player PSG output
Michael Pavone <pavone@retrodev.com>
parents:
2296
diff
changeset
|
47 oscilloscope *scope; |
2289
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
48 uint32_t num_chips; |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
49 uint32_t current_offset; |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
50 uint32_t playback_time; |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
51 uint32_t wait_samples; |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
52 uint32_t ym_seek_offset; |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
53 uint32_t ym_block_offset; |
2374
97f164d1f0f6
Re-enable VGM looping. Enable oscilloscope in VGM player. Fix VGM player PSG output
Michael Pavone <pavone@retrodev.com>
parents:
2296
diff
changeset
|
54 uint32_t loop_count; |
2289
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
55 uint8_t state; |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
56 uint8_t media_type; |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
57 uint8_t should_return; |
2375
02c04196c2da
Fix mediaplayer play/pause handling
Michael Pavone <pavone@retrodev.com>
parents:
2374
diff
changeset
|
58 uint8_t button_state[NUM_GAMEPAD_BUTTONS]; |
2289
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
59 } media_player; |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
60 |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
61 media_player *alloc_media_player(system_media *media, uint32_t opts); |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
62 |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
63 |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
64 #endif //MEDIAPLAYER_H_ |