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;