Mercurial > repos > blastem
annotate ym2612.h @ 2195:40290a923886
Implement Game Gear start button and region register
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sun, 21 Aug 2022 22:56:32 -0700 |
parents | 508522f08e4d |
children | 0d1d5dccdd28 |
rev | line source |
---|---|
467
140af5509ce7
Added copyright notice to source files and added GPL license text in COPYING
Mike Pavone <pavone@retrodev.com>
parents:
451
diff
changeset
|
1 /* |
140af5509ce7
Added copyright notice to source files and added GPL license text in COPYING
Mike Pavone <pavone@retrodev.com>
parents:
451
diff
changeset
|
2 Copyright 2013 Michael Pavone |
483
3e1573fa22cf
Implement turbo/slow motion feature that overclocks or underclocks the entire system at the push of a button
Mike Pavone <pavone@retrodev.com>
parents:
467
diff
changeset
|
3 This file is part of BlastEm. |
467
140af5509ce7
Added copyright notice to source files and added GPL license text in COPYING
Mike Pavone <pavone@retrodev.com>
parents:
451
diff
changeset
|
4 BlastEm is free software distributed under the terms of the GNU General Public License version 3 or greater. See COPYING for full license text. |
140af5509ce7
Added copyright notice to source files and added GPL license text in COPYING
Mike Pavone <pavone@retrodev.com>
parents:
451
diff
changeset
|
5 */ |
288
a8ee7934a1f8
Add a YM2612 stub implementation with just timers and status registers so that games that depend on it can run.
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
6 #ifndef YM2612_H_ |
a8ee7934a1f8
Add a YM2612 stub implementation with just timers and status registers so that games that depend on it can run.
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
7 #define YM2612_H_ |
a8ee7934a1f8
Add a YM2612 stub implementation with just timers and status registers so that games that depend on it can run.
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
8 |
a8ee7934a1f8
Add a YM2612 stub implementation with just timers and status registers so that games that depend on it can run.
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
9 #include <stdint.h> |
407
c3abc4ada43d
Add support for logging YM2612 channels to WAVE files
Mike Pavone <pavone@retrodev.com>
parents:
403
diff
changeset
|
10 #include <stdio.h> |
1427
4e5797b3935a
WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
1308
diff
changeset
|
11 #include "serialize.h" |
1865
4c322abd9fa5
Split generic part of audio code into a separate file so it can be used in other targets besides SDL
Michael Pavone <pavone@retrodev.com>
parents:
1808
diff
changeset
|
12 #include "render_audio.h" |
1909
508522f08e4d
Initial stab at VGM logging support
Michael Pavone <pavone@retrodev.com>
parents:
1904
diff
changeset
|
13 #include "vgm.h" |
288
a8ee7934a1f8
Add a YM2612 stub implementation with just timers and status registers so that games that depend on it can run.
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
14 |
a8ee7934a1f8
Add a YM2612 stub implementation with just timers and status registers so that games that depend on it can run.
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
15 #define NUM_PART_REGS (0xB7-0x30) |
362 | 16 #define NUM_CHANNELS 6 |
17 #define NUM_OPERATORS (4*NUM_CHANNELS) | |
18 | |
407
c3abc4ada43d
Add support for logging YM2612 channels to WAVE files
Mike Pavone <pavone@retrodev.com>
parents:
403
diff
changeset
|
19 #define YM_OPT_WAVE_LOG 1 |
1904
8312e574100a
Implement selectable YM2612/YM3834 invalid status port behavior
Michael Pavone <pavone@retrodev.com>
parents:
1902
diff
changeset
|
20 #define YM_OPT_3834 2 |
407
c3abc4ada43d
Add support for logging YM2612 channels to WAVE files
Mike Pavone <pavone@retrodev.com>
parents:
403
diff
changeset
|
21 |
362 | 22 typedef struct { |
1656
804f13c090b4
Optimize YM operator modulation
Mike Pavone <pavone@retrodev.com>
parents:
1555
diff
changeset
|
23 int16_t *mod_src[2]; |
362 | 24 uint32_t phase_counter; |
1880
e77f7a7c79a5
Cache operator phase increment for a small perf improvement
Michael Pavone <pavone@retrodev.com>
parents:
1865
diff
changeset
|
25 uint32_t phase_inc; |
362 | 26 uint16_t envelope; |
371
0f8a759f1ff4
Use signed ints for things that represent signed values in YM2612 core
Mike Pavone <pavone@retrodev.com>
parents:
364
diff
changeset
|
27 int16_t output; |
362 | 28 uint16_t total_level; |
29 uint16_t sustain_level; | |
30 uint8_t rates[4]; | |
31 uint8_t key_scaling; | |
32 uint8_t multiple; | |
33 uint8_t detune; | |
739
2317bdca03b4
Add a basic YM-2612 command to the debugger. Fix negative detune values and get the correct precision for the multiplication step of phase inc calculation
Michael Pavone <pavone@retrodev.com>
parents:
535
diff
changeset
|
34 uint8_t am; |
362 | 35 uint8_t env_phase; |
1301
babff81e4cfd
Initial implementation of YM2612 SSG-EG mode
Michael Pavone <pavone@retrodev.com>
parents:
1300
diff
changeset
|
36 uint8_t ssg; |
babff81e4cfd
Initial implementation of YM2612 SSG-EG mode
Michael Pavone <pavone@retrodev.com>
parents:
1300
diff
changeset
|
37 uint8_t inverted; |
362 | 38 } ym_operator; |
288
a8ee7934a1f8
Add a YM2612 stub implementation with just timers and status registers so that games that depend on it can run.
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
39 |
a8ee7934a1f8
Add a YM2612 stub implementation with just timers and status registers so that games that depend on it can run.
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
40 typedef struct { |
407
c3abc4ada43d
Add support for logging YM2612 channels to WAVE files
Mike Pavone <pavone@retrodev.com>
parents:
403
diff
changeset
|
41 FILE * logfile; |
362 | 42 uint16_t fnum; |
43 int16_t output; | |
527
7df7f493b3b6
Fix operator 1 self-feedback
Michael Pavone <pavone@retrodev.com>
parents:
483
diff
changeset
|
44 int16_t op1_old; |
1808
ce6881d64eef
Operator results should be delayed by one sample when used as a modulator in some cases based on relative execution time and pipeline length
Michael Pavone <pavone@retrodev.com>
parents:
1798
diff
changeset
|
45 int16_t op2_old; |
362 | 46 uint8_t block_fnum_latch; |
47 uint8_t block; | |
48 uint8_t keycode; | |
49 uint8_t algorithm; | |
50 uint8_t feedback; | |
51 uint8_t ams; | |
52 uint8_t pms; | |
53 uint8_t lr; | |
1300
4b893b02444e
Basic implementation of CSM mode that should handle documented edge cases. Dodesn't handle the weird undocumented edge cases I don't have a good understanding of yet though
Michael Pavone <pavone@retrodev.com>
parents:
1002
diff
changeset
|
54 uint8_t keyon; |
362 | 55 } ym_channel; |
56 | |
57 typedef struct { | |
383
72933100c55c
Initial implementation of channel 3 special mode
Mike Pavone <pavone@retrodev.com>
parents:
380
diff
changeset
|
58 uint16_t fnum; |
72933100c55c
Initial implementation of channel 3 special mode
Mike Pavone <pavone@retrodev.com>
parents:
380
diff
changeset
|
59 uint8_t block; |
72933100c55c
Initial implementation of channel 3 special mode
Mike Pavone <pavone@retrodev.com>
parents:
380
diff
changeset
|
60 uint8_t block_fnum_latch; |
72933100c55c
Initial implementation of channel 3 special mode
Mike Pavone <pavone@retrodev.com>
parents:
380
diff
changeset
|
61 uint8_t keycode; |
72933100c55c
Initial implementation of channel 3 special mode
Mike Pavone <pavone@retrodev.com>
parents:
380
diff
changeset
|
62 } ym_supp; |
72933100c55c
Initial implementation of channel 3 special mode
Mike Pavone <pavone@retrodev.com>
parents:
380
diff
changeset
|
63 |
451
b7c3b2d22858
Added support for saving savestates. Added gst savestate format test harness
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
64 #define YM_PART1_START 0x21 |
b7c3b2d22858
Added support for saving savestates. Added gst savestate format test harness
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
65 #define YM_PART2_START 0x30 |
b7c3b2d22858
Added support for saving savestates. Added gst savestate format test harness
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
66 #define YM_REG_END 0xB8 |
b7c3b2d22858
Added support for saving savestates. Added gst savestate format test harness
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
67 #define YM_PART1_REGS (YM_REG_END-YM_PART1_START) |
b7c3b2d22858
Added support for saving savestates. Added gst savestate format test harness
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
68 #define YM_PART2_REGS (YM_REG_END-YM_PART2_START) |
b7c3b2d22858
Added support for saving savestates. Added gst savestate format test harness
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
69 |
383
72933100c55c
Initial implementation of channel 3 special mode
Mike Pavone <pavone@retrodev.com>
parents:
380
diff
changeset
|
70 typedef struct { |
1551
ce1f93be0104
Small cleanup to audio interface between emulation code and renderer backend
Michael Pavone <pavone@retrodev.com>
parents:
1427
diff
changeset
|
71 audio_source *audio; |
1909
508522f08e4d
Initial stab at VGM logging support
Michael Pavone <pavone@retrodev.com>
parents:
1904
diff
changeset
|
72 vgm_writer *vgm; |
380
1c8d74f2ab0b
Make the PSG and YM2612 use the master clock internal with an increment based on clock divider so that they stay perflectly in sync. Run both the PSG and YM2612 whenver one of them needs to be run.
Mike Pavone <pavone@retrodev.com>
parents:
371
diff
changeset
|
73 uint32_t clock_inc; |
362 | 74 uint32_t current_cycle; |
75 uint32_t write_cycle; | |
1902
32a3aa7b4a45
Fix YM2612 busy flag timing
Michael Pavone <pavone@retrodev.com>
parents:
1880
diff
changeset
|
76 uint32_t busy_start; |
535
aaa77e351c24
Better emulation of the YM-2612 busy flag
Mike Pavone <pavone@retrodev.com>
parents:
527
diff
changeset
|
77 uint32_t busy_cycles; |
1904
8312e574100a
Implement selectable YM2612/YM3834 invalid status port behavior
Michael Pavone <pavone@retrodev.com>
parents:
1902
diff
changeset
|
78 uint32_t last_status_cycle; |
8312e574100a
Implement selectable YM2612/YM3834 invalid status port behavior
Michael Pavone <pavone@retrodev.com>
parents:
1902
diff
changeset
|
79 uint32_t invalid_status_decay; |
8312e574100a
Implement selectable YM2612/YM3834 invalid status port behavior
Michael Pavone <pavone@retrodev.com>
parents:
1902
diff
changeset
|
80 uint32_t status_address_mask; |
1798
5278b6e44fc1
Optionally emulate the offset around zero in the imperfect DAC of a discrete YM2612
Michael Pavone <pavone@retrodev.com>
parents:
1656
diff
changeset
|
81 int32_t volume_mult; |
5278b6e44fc1
Optionally emulate the offset around zero in the imperfect DAC of a discrete YM2612
Michael Pavone <pavone@retrodev.com>
parents:
1656
diff
changeset
|
82 int32_t volume_div; |
362 | 83 ym_operator operators[NUM_OPERATORS]; |
84 ym_channel channels[NUM_CHANNELS]; | |
1798
5278b6e44fc1
Optionally emulate the offset around zero in the imperfect DAC of a discrete YM2612
Michael Pavone <pavone@retrodev.com>
parents:
1656
diff
changeset
|
85 int16_t zero_offset; |
362 | 86 uint16_t timer_a; |
87 uint16_t timer_a_load; | |
364
62177cc39049
Incredibly broken YM2612 support plus a fix to Z80 bus request
Mike Pavone <pavone@retrodev.com>
parents:
362
diff
changeset
|
88 uint16_t env_counter; |
383
72933100c55c
Initial implementation of channel 3 special mode
Mike Pavone <pavone@retrodev.com>
parents:
380
diff
changeset
|
89 ym_supp ch3_supp[3]; |
845
3a18b5f63afc
Small fix to how manual YM-2612 timer reloads work. Seems to better match a small test program and gets audio to match up in TM.EE's "I've got Italo Inside" track.
Michael Pavone <pavone@retrodev.com>
parents:
739
diff
changeset
|
90 uint8_t timer_b; |
3a18b5f63afc
Small fix to how manual YM-2612 timer reloads work. Seems to better match a small test program and gets audio to match up in TM.EE's "I've got Italo Inside" track.
Michael Pavone <pavone@retrodev.com>
parents:
739
diff
changeset
|
91 uint8_t sub_timer_b; |
3a18b5f63afc
Small fix to how manual YM-2612 timer reloads work. Seems to better match a small test program and gets audio to match up in TM.EE's "I've got Italo Inside" track.
Michael Pavone <pavone@retrodev.com>
parents:
739
diff
changeset
|
92 uint8_t timer_b_load; |
383
72933100c55c
Initial implementation of channel 3 special mode
Mike Pavone <pavone@retrodev.com>
parents:
380
diff
changeset
|
93 uint8_t ch3_mode; |
364
62177cc39049
Incredibly broken YM2612 support plus a fix to Z80 bus request
Mike Pavone <pavone@retrodev.com>
parents:
362
diff
changeset
|
94 uint8_t current_op; |
62177cc39049
Incredibly broken YM2612 support plus a fix to Z80 bus request
Mike Pavone <pavone@retrodev.com>
parents:
362
diff
changeset
|
95 uint8_t current_env_op; |
451
b7c3b2d22858
Added support for saving savestates. Added gst savestate format test harness
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
96 |
362 | 97 uint8_t timer_control; |
98 uint8_t dac_enable; | |
411
baf4688901f2
Initial stab at LFO phase modulation
Mike Pavone <pavone@retrodev.com>
parents:
407
diff
changeset
|
99 uint8_t lfo_enable; |
baf4688901f2
Initial stab at LFO phase modulation
Mike Pavone <pavone@retrodev.com>
parents:
407
diff
changeset
|
100 uint8_t lfo_freq; |
baf4688901f2
Initial stab at LFO phase modulation
Mike Pavone <pavone@retrodev.com>
parents:
407
diff
changeset
|
101 uint8_t lfo_counter; |
baf4688901f2
Initial stab at LFO phase modulation
Mike Pavone <pavone@retrodev.com>
parents:
407
diff
changeset
|
102 uint8_t lfo_am_step; |
baf4688901f2
Initial stab at LFO phase modulation
Mike Pavone <pavone@retrodev.com>
parents:
407
diff
changeset
|
103 uint8_t lfo_pm_step; |
1300
4b893b02444e
Basic implementation of CSM mode that should handle documented edge cases. Dodesn't handle the weird undocumented edge cases I don't have a good understanding of yet though
Michael Pavone <pavone@retrodev.com>
parents:
1002
diff
changeset
|
104 uint8_t csm_keyon; |
362 | 105 uint8_t status; |
1904
8312e574100a
Implement selectable YM2612/YM3834 invalid status port behavior
Michael Pavone <pavone@retrodev.com>
parents:
1902
diff
changeset
|
106 uint8_t last_status; |
362 | 107 uint8_t selected_reg; |
108 uint8_t selected_part; | |
451
b7c3b2d22858
Added support for saving savestates. Added gst savestate format test harness
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
109 uint8_t part1_regs[YM_PART1_REGS]; |
b7c3b2d22858
Added support for saving savestates. Added gst savestate format test harness
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
110 uint8_t part2_regs[YM_PART2_REGS]; |
288
a8ee7934a1f8
Add a YM2612 stub implementation with just timers and status registers so that games that depend on it can run.
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
111 } ym2612_context; |
a8ee7934a1f8
Add a YM2612 stub implementation with just timers and status registers so that games that depend on it can run.
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
112 |
848
7068a9db6dd0
Wrote a buggy tool for splitting VGM files by channel
Michael Pavone <pavone@retrodev.com>
parents:
845
diff
changeset
|
113 enum { |
7068a9db6dd0
Wrote a buggy tool for splitting VGM files by channel
Michael Pavone <pavone@retrodev.com>
parents:
845
diff
changeset
|
114 REG_LFO = 0x22, |
7068a9db6dd0
Wrote a buggy tool for splitting VGM files by channel
Michael Pavone <pavone@retrodev.com>
parents:
845
diff
changeset
|
115 REG_TIMERA_HIGH = 0x24, |
7068a9db6dd0
Wrote a buggy tool for splitting VGM files by channel
Michael Pavone <pavone@retrodev.com>
parents:
845
diff
changeset
|
116 REG_TIMERA_LOW, |
7068a9db6dd0
Wrote a buggy tool for splitting VGM files by channel
Michael Pavone <pavone@retrodev.com>
parents:
845
diff
changeset
|
117 REG_TIMERB, |
7068a9db6dd0
Wrote a buggy tool for splitting VGM files by channel
Michael Pavone <pavone@retrodev.com>
parents:
845
diff
changeset
|
118 REG_TIME_CTRL, |
7068a9db6dd0
Wrote a buggy tool for splitting VGM files by channel
Michael Pavone <pavone@retrodev.com>
parents:
845
diff
changeset
|
119 REG_KEY_ONOFF, |
7068a9db6dd0
Wrote a buggy tool for splitting VGM files by channel
Michael Pavone <pavone@retrodev.com>
parents:
845
diff
changeset
|
120 REG_DAC = 0x2A, |
7068a9db6dd0
Wrote a buggy tool for splitting VGM files by channel
Michael Pavone <pavone@retrodev.com>
parents:
845
diff
changeset
|
121 REG_DAC_ENABLE, |
7068a9db6dd0
Wrote a buggy tool for splitting VGM files by channel
Michael Pavone <pavone@retrodev.com>
parents:
845
diff
changeset
|
122 |
7068a9db6dd0
Wrote a buggy tool for splitting VGM files by channel
Michael Pavone <pavone@retrodev.com>
parents:
845
diff
changeset
|
123 REG_DETUNE_MULT = 0x30, |
7068a9db6dd0
Wrote a buggy tool for splitting VGM files by channel
Michael Pavone <pavone@retrodev.com>
parents:
845
diff
changeset
|
124 REG_TOTAL_LEVEL = 0x40, |
7068a9db6dd0
Wrote a buggy tool for splitting VGM files by channel
Michael Pavone <pavone@retrodev.com>
parents:
845
diff
changeset
|
125 REG_ATTACK_KS = 0x50, |
7068a9db6dd0
Wrote a buggy tool for splitting VGM files by channel
Michael Pavone <pavone@retrodev.com>
parents:
845
diff
changeset
|
126 REG_DECAY_AM = 0x60, |
7068a9db6dd0
Wrote a buggy tool for splitting VGM files by channel
Michael Pavone <pavone@retrodev.com>
parents:
845
diff
changeset
|
127 REG_SUSTAIN_RATE = 0x70, |
7068a9db6dd0
Wrote a buggy tool for splitting VGM files by channel
Michael Pavone <pavone@retrodev.com>
parents:
845
diff
changeset
|
128 REG_S_LVL_R_RATE = 0x80, |
1301
babff81e4cfd
Initial implementation of YM2612 SSG-EG mode
Michael Pavone <pavone@retrodev.com>
parents:
1300
diff
changeset
|
129 REG_SSG_EG = 0x90, |
848
7068a9db6dd0
Wrote a buggy tool for splitting VGM files by channel
Michael Pavone <pavone@retrodev.com>
parents:
845
diff
changeset
|
130 |
7068a9db6dd0
Wrote a buggy tool for splitting VGM files by channel
Michael Pavone <pavone@retrodev.com>
parents:
845
diff
changeset
|
131 REG_FNUM_LOW = 0xA0, |
7068a9db6dd0
Wrote a buggy tool for splitting VGM files by channel
Michael Pavone <pavone@retrodev.com>
parents:
845
diff
changeset
|
132 REG_BLOCK_FNUM_H = 0xA4, |
7068a9db6dd0
Wrote a buggy tool for splitting VGM files by channel
Michael Pavone <pavone@retrodev.com>
parents:
845
diff
changeset
|
133 REG_FNUM_LOW_CH3 = 0xA8, |
7068a9db6dd0
Wrote a buggy tool for splitting VGM files by channel
Michael Pavone <pavone@retrodev.com>
parents:
845
diff
changeset
|
134 REG_BLOCK_FN_CH3 = 0xAC, |
7068a9db6dd0
Wrote a buggy tool for splitting VGM files by channel
Michael Pavone <pavone@retrodev.com>
parents:
845
diff
changeset
|
135 REG_ALG_FEEDBACK = 0xB0, |
7068a9db6dd0
Wrote a buggy tool for splitting VGM files by channel
Michael Pavone <pavone@retrodev.com>
parents:
845
diff
changeset
|
136 REG_LR_AMS_PMS = 0xB4 |
7068a9db6dd0
Wrote a buggy tool for splitting VGM files by channel
Michael Pavone <pavone@retrodev.com>
parents:
845
diff
changeset
|
137 }; |
7068a9db6dd0
Wrote a buggy tool for splitting VGM files by channel
Michael Pavone <pavone@retrodev.com>
parents:
845
diff
changeset
|
138 |
1555
6ce36c3f250b
More audio refactoring in preparation for allowing proper sync to video with dynamic audio rate control
Michael Pavone <pavone@retrodev.com>
parents:
1551
diff
changeset
|
139 void ym_init(ym2612_context * context, uint32_t master_clock, uint32_t clock_div, uint32_t options); |
1308
1b3fe6e03e7b
Reset YM2612 whenver the Z80 is reset. Fixes issue with stuck notes in Fantastic Dizzy and Kid Chameleon
Michael Pavone <pavone@retrodev.com>
parents:
1301
diff
changeset
|
140 void ym_reset(ym2612_context *context); |
884
252dfd29831d
Selecting a second game from the menu now works
Michael Pavone <pavone@retrodev.com>
parents:
848
diff
changeset
|
141 void ym_free(ym2612_context *context); |
1798
5278b6e44fc1
Optionally emulate the offset around zero in the imperfect DAC of a discrete YM2612
Michael Pavone <pavone@retrodev.com>
parents:
1656
diff
changeset
|
142 void ym_enable_zero_offset(ym2612_context *context, uint8_t enabled); |
483
3e1573fa22cf
Implement turbo/slow motion feature that overclocks or underclocks the entire system at the push of a button
Mike Pavone <pavone@retrodev.com>
parents:
467
diff
changeset
|
143 void ym_adjust_master_clock(ym2612_context * context, uint32_t master_clock); |
1902
32a3aa7b4a45
Fix YM2612 busy flag timing
Michael Pavone <pavone@retrodev.com>
parents:
1880
diff
changeset
|
144 void ym_adjust_cycles(ym2612_context *context, uint32_t deduction); |
288
a8ee7934a1f8
Add a YM2612 stub implementation with just timers and status registers so that games that depend on it can run.
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
145 void ym_run(ym2612_context * context, uint32_t to_cycle); |
a8ee7934a1f8
Add a YM2612 stub implementation with just timers and status registers so that games that depend on it can run.
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
146 void ym_address_write_part1(ym2612_context * context, uint8_t address); |
a8ee7934a1f8
Add a YM2612 stub implementation with just timers and status registers so that games that depend on it can run.
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
147 void ym_address_write_part2(ym2612_context * context, uint8_t address); |
a8ee7934a1f8
Add a YM2612 stub implementation with just timers and status registers so that games that depend on it can run.
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
148 void ym_data_write(ym2612_context * context, uint8_t value); |
1909
508522f08e4d
Initial stab at VGM logging support
Michael Pavone <pavone@retrodev.com>
parents:
1904
diff
changeset
|
149 void ym_vgm_log(ym2612_context *context, uint32_t master_clock, vgm_writer *vgm); |
1904
8312e574100a
Implement selectable YM2612/YM3834 invalid status port behavior
Michael Pavone <pavone@retrodev.com>
parents:
1902
diff
changeset
|
150 uint8_t ym_read_status(ym2612_context * context, uint32_t cycle, uint32_t port); |
424
7e8e179116af
Add support for loading GST format savestates
Mike Pavone <pavone@retrodev.com>
parents:
411
diff
changeset
|
151 uint8_t ym_load_gst(ym2612_context * context, FILE * gstfile); |
451
b7c3b2d22858
Added support for saving savestates. Added gst savestate format test harness
Mike Pavone <pavone@retrodev.com>
parents:
424
diff
changeset
|
152 uint8_t ym_save_gst(ym2612_context * context, FILE * gstfile); |
739
2317bdca03b4
Add a basic YM-2612 command to the debugger. Fix negative detune values and get the correct precision for the multiplication step of phase inc calculation
Michael Pavone <pavone@retrodev.com>
parents:
535
diff
changeset
|
153 void ym_print_channel_info(ym2612_context *context, int channel); |
930
f33e8d88ab6f
Add yt debug command for printing YM-2612 timer info. Fix AMS shift values.
Michael Pavone <pavone@retrodev.com>
parents:
884
diff
changeset
|
154 void ym_print_timer_info(ym2612_context *context); |
1427
4e5797b3935a
WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
1308
diff
changeset
|
155 void ym_serialize(ym2612_context *context, serialize_buffer *buf); |
4e5797b3935a
WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
1308
diff
changeset
|
156 void ym_deserialize(deserialize_buffer *buf, void *vcontext); |
288
a8ee7934a1f8
Add a YM2612 stub implementation with just timers and status registers so that games that depend on it can run.
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
157 |
a8ee7934a1f8
Add a YM2612 stub implementation with just timers and status registers so that games that depend on it can run.
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
158 #endif //YM2612_H_ |
a8ee7934a1f8
Add a YM2612 stub implementation with just timers and status registers so that games that depend on it can run.
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
159 |