Mercurial > repos > blastem
annotate rf5c164.h @ 2648:e16f567be36c
Fix lsl/lsr/asl/asr with memory operand
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sat, 01 Mar 2025 17:23:43 -0800 |
parents | 9ead0fe69d9b |
children |
rev | line source |
---|---|
2082
485834c0fea7
Forgot to add PCM source files
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
1 #ifndef RF5C164_H_ |
485834c0fea7
Forgot to add PCM source files
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
2 #define RF5C164_H_ |
485834c0fea7
Forgot to add PCM source files
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
3 #include <stdint.h> |
485834c0fea7
Forgot to add PCM source files
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
4 #include "render_audio.h" |
2243
0d1d5dccdd28
Initial implementation of oscilloscope debug view
Michael Pavone <pavone@retrodev.com>
parents:
2164
diff
changeset
|
5 #include "oscilloscope.h" |
2280
9ead0fe69d9b
Implement savestate support for Sega CD
Michael Pavone <pavone@retrodev.com>
parents:
2278
diff
changeset
|
6 #include "serialize.h" |
2082
485834c0fea7
Forgot to add PCM source files
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
7 |
485834c0fea7
Forgot to add PCM source files
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
8 typedef struct { |
485834c0fea7
Forgot to add PCM source files
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
9 uint32_t cur_ptr; |
485834c0fea7
Forgot to add PCM source files
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
10 uint8_t regs[7]; |
485834c0fea7
Forgot to add PCM source files
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
11 uint8_t sample; |
485834c0fea7
Forgot to add PCM source files
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
12 uint8_t state; |
2243
0d1d5dccdd28
Initial implementation of oscilloscope debug view
Michael Pavone <pavone@retrodev.com>
parents:
2164
diff
changeset
|
13 uint8_t scope_channel; |
0d1d5dccdd28
Initial implementation of oscilloscope debug view
Michael Pavone <pavone@retrodev.com>
parents:
2164
diff
changeset
|
14 uint8_t trigger; |
2082
485834c0fea7
Forgot to add PCM source files
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
15 } rf5c164_channel; |
485834c0fea7
Forgot to add PCM source files
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
16 |
485834c0fea7
Forgot to add PCM source files
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
17 typedef struct { |
485834c0fea7
Forgot to add PCM source files
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
18 audio_source *audio; |
2243
0d1d5dccdd28
Initial implementation of oscilloscope debug view
Michael Pavone <pavone@retrodev.com>
parents:
2164
diff
changeset
|
19 oscilloscope *scope; |
2082
485834c0fea7
Forgot to add PCM source files
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
20 uint32_t cycle; |
485834c0fea7
Forgot to add PCM source files
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
21 uint32_t clock_step; |
485834c0fea7
Forgot to add PCM source files
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
22 uint16_t ram[64*1024]; |
485834c0fea7
Forgot to add PCM source files
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
23 uint16_t ram_bank; |
485834c0fea7
Forgot to add PCM source files
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
24 uint16_t pending_address; |
2145
62a53c052d9b
PCM channel add should saturate on overflow, not wrap around
Michael Pavone <pavone@retrodev.com>
parents:
2082
diff
changeset
|
25 int32_t left; |
62a53c052d9b
PCM channel add should saturate on overflow, not wrap around
Michael Pavone <pavone@retrodev.com>
parents:
2082
diff
changeset
|
26 int32_t right; |
2082
485834c0fea7
Forgot to add PCM source files
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
27 rf5c164_channel channels[8]; |
485834c0fea7
Forgot to add PCM source files
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
28 uint8_t pending_byte; |
485834c0fea7
Forgot to add PCM source files
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
29 uint8_t channel_enable; |
485834c0fea7
Forgot to add PCM source files
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
30 uint8_t selected_channel; |
485834c0fea7
Forgot to add PCM source files
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
31 uint8_t cur_channel; |
485834c0fea7
Forgot to add PCM source files
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
32 uint8_t step; |
485834c0fea7
Forgot to add PCM source files
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
33 uint8_t flags; |
485834c0fea7
Forgot to add PCM source files
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
34 } rf5c164; |
485834c0fea7
Forgot to add PCM source files
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
35 |
485834c0fea7
Forgot to add PCM source files
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
36 void rf5c164_init(rf5c164* pcm, uint32_t mclks, uint32_t divider); |
2164
4fbe1e7c4a73
Don't leak all Sega CD resources when freeing a Genesis instance
Michael Pavone <pavone@retrodev.com>
parents:
2145
diff
changeset
|
37 void rf5c164_deinit(rf5c164* pcm); |
2278
5a21bc0ec583
Implement turbo/slo mo for Sega CD
Michael Pavone <pavone@retrodev.com>
parents:
2243
diff
changeset
|
38 void rf5c164_adjust_master_clock(rf5c164* pcm, uint32_t mclks); |
2082
485834c0fea7
Forgot to add PCM source files
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
39 void rf5c164_run(rf5c164* pcm, uint32_t cycle); |
485834c0fea7
Forgot to add PCM source files
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
40 void rf5c164_write(rf5c164* pcm, uint16_t address, uint8_t value); |
485834c0fea7
Forgot to add PCM source files
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
41 uint8_t rf5c164_read(rf5c164* pcm, uint16_t address); |
2243
0d1d5dccdd28
Initial implementation of oscilloscope debug view
Michael Pavone <pavone@retrodev.com>
parents:
2164
diff
changeset
|
42 void rf5c164_enable_scope(rf5c164* pcm, oscilloscope *scope); |
2280
9ead0fe69d9b
Implement savestate support for Sega CD
Michael Pavone <pavone@retrodev.com>
parents:
2278
diff
changeset
|
43 void rf5c164_serialize(rf5c164* pcm, serialize_buffer *buf); |
9ead0fe69d9b
Implement savestate support for Sega CD
Michael Pavone <pavone@retrodev.com>
parents:
2278
diff
changeset
|
44 void rf5c164_deserialize(deserialize_buffer *buf, void *vpcm); |
2082
485834c0fea7
Forgot to add PCM source files
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
45 |
485834c0fea7
Forgot to add PCM source files
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
46 #endif //RF5C164_H_ |