annotate rf5c164.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 9ead0fe69d9b
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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_