Mercurial > repos > blastem
comparison gen_player.c @ 2194:01ff005b08f6
Very rudimentary support for Game Gear VDP emulation
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sun, 21 Aug 2022 22:29:47 -0700 |
parents | a042e046f7f2 |
children |
comparison
equal
deleted
inserted
replaced
2193:d00fb9c6a6a2 | 2194:01ff005b08f6 |
---|---|
10 #define MCLKS_PER_PSG (MCLKS_PER_Z80*16) | 10 #define MCLKS_PER_PSG (MCLKS_PER_Z80*16) |
11 | 11 |
12 #ifdef IS_LIB | 12 #ifdef IS_LIB |
13 #define MAX_SOUND_CYCLES (MCLKS_PER_YM*NUM_OPERATORS*6*4) | 13 #define MAX_SOUND_CYCLES (MCLKS_PER_YM*NUM_OPERATORS*6*4) |
14 #else | 14 #else |
15 #define MAX_SOUND_CYCLES 100000 | 15 #define MAX_SOUND_CYCLES 100000 |
16 #endif | 16 #endif |
17 | 17 |
18 static void sync_sound(gen_player *gen, uint32_t target) | 18 static void sync_sound(gen_player *gen, uint32_t target) |
19 { | 19 { |
20 //printf("YM | Cycle: %d, bpos: %d, PSG | Cycle: %d, bpos: %d\n", gen->ym->current_cycle, gen->ym->buffer_pos, gen->psg->cycles, gen->psg->buffer_pos * 2); | 20 //printf("YM | Cycle: %d, bpos: %d, PSG | Cycle: %d, bpos: %d\n", gen->ym->current_cycle, gen->ym->buffer_pos, gen->psg->cycles, gen->psg->buffer_pos * 2); |
90 default: | 90 default: |
91 vdp_run_context(player->vdp, cycle); | 91 vdp_run_context(player->vdp, cycle); |
92 vdp_replay_event(player->vdp, event, &player->reader); | 92 vdp_replay_event(player->vdp, event, &player->reader); |
93 } | 93 } |
94 } | 94 } |
95 | 95 |
96 } | 96 } |
97 if (!player->reader.socket) { | 97 if (!player->reader.socket) { |
98 reader_ensure_data(&player->reader, 1); | 98 reader_ensure_data(&player->reader, 1); |
99 } | 99 } |
100 } | 100 } |
134 { | 134 { |
135 uint8_t vid_std = load_int8(&player->reader.buffer); | 135 uint8_t vid_std = load_int8(&player->reader.buffer); |
136 uint8_t name_len = load_int8(&player->reader.buffer); | 136 uint8_t name_len = load_int8(&player->reader.buffer); |
137 player->header.info.name = calloc(1, name_len + 1); | 137 player->header.info.name = calloc(1, name_len + 1); |
138 load_buffer8(&player->reader.buffer, player->header.info.name, name_len); | 138 load_buffer8(&player->reader.buffer, player->header.info.name, name_len); |
139 | 139 |
140 player->vdp = init_vdp_context(vid_std == VID_PAL, 0); | 140 player->vdp = init_vdp_context(vid_std == VID_PAL, 0, VDP_GENESIS); |
141 render_set_video_standard(vid_std); | 141 render_set_video_standard(vid_std); |
142 uint32_t master_clock = vid_std == VID_NTSC ? MCLKS_NTSC : MCLKS_PAL; | 142 uint32_t master_clock = vid_std == VID_NTSC ? MCLKS_NTSC : MCLKS_PAL; |
143 | 143 |
144 player->ym = malloc(sizeof(ym2612_context)); | 144 player->ym = malloc(sizeof(ym2612_context)); |
145 ym_init(player->ym, master_clock, MCLKS_PER_YM, 0); | 145 ym_init(player->ym, master_clock, MCLKS_PER_YM, 0); |
146 | 146 |
147 player->psg = malloc(sizeof(psg_context)); | 147 player->psg = malloc(sizeof(psg_context)); |
148 psg_init(player->psg, master_clock, MCLKS_PER_PSG); | 148 psg_init(player->psg, master_clock, MCLKS_PER_PSG); |
149 | 149 |
150 player->header.start_context = start_context; | 150 player->header.start_context = start_context; |
151 player->header.gamepad_down = gamepad_down; | 151 player->header.gamepad_down = gamepad_down; |
152 player->header.gamepad_up = gamepad_up; | 152 player->header.gamepad_up = gamepad_up; |
153 player->header.type = SYSTEM_GENESIS_PLAYER; | 153 player->header.type = SYSTEM_GENESIS_PLAYER; |
154 player->header.info.save_type = SAVE_NONE; | 154 player->header.info.save_type = SAVE_NONE; |