void PSG_SetRegister(const unsigned int id, const uint32 value) { if(name == "Select") PSG_Write(0x00, V); else if(name == "GBalance") PSG_Write(0x01, V); else if(name == "LFOFreq") { PSG_Write(0x08, V); } else if(name == "LFOCtrl") PSG_Write(0x09, V); else if(!strncmp(name.c_str(), "CH", 2)) { unsigned int psg_sel_save = select; int ch = name[2] - '0'; char moomoo[64]; strncpy(moomoo, name.c_str() + 3, 63); PSG_Write(0x00, ch); if(!strcmp(moomoo, "Freq")) { PSG_Write(0x02, V); PSG_Write(0x03, V >> 8); }
/** * mdp_host_reg_set_all_psg(): Set all PSG registers. * @param reg_struct Pointer to mdp_reg_psg_t struct to get the registers from. * @return MDP error code. */ static int mdp_host_reg_set_all_psg(void *reg_struct) { mdp_reg_psg_t *reg_psg = (mdp_reg_psg_t*)reg_struct; int i; for (i = 0; i < 8; i++) { PSG_Write(0x80 | (i << 4) | (reg_psg->regs[i] & 0x0F)); PSG_Write((reg_psg->regs[i] >> 4) & 0x3F); } return MDP_ERR_OK; }
void c6280_w(UINT8 ChipID, offs_t offset, UINT8 data) { c6280_state* info = &C6280Data[ChipID]; switch(EMU_CORE) { #ifdef ENABLE_ALL_CORES case EC_MAME: c6280m_w(info->chip, offset, data); break; #endif case EC_OOTAKE: PSG_Write(info->chip, offset, data); break; } return; }
void c6280_w(void *_info, offs_t offset, UINT8 data) { c6280_state* info = (c6280_state *)_info; switch(info->EMU_CORE) { #ifdef ENABLE_ALL_CORES case EC_MAME: c6280m_w(info->chip, offset, data); break; #endif case EC_OOTAKE: PSG_Write(info->chip, offset, data); break; } return; }
unsigned char *GYM_Next(unsigned char *gym_start, unsigned char *gym_pos, unsigned int gym_size, unsigned int gym_loop) { unsigned char c, c2; unsigned char dac_data[1600]; int *buf[2]; int dacMax = 0, i = 0; int oldPos = 0; double curPos = 0; double dacSize; int step; int *dacBuf[2]; int retCode = 1; YM_Buf[0] = PSG_Buf[0] = buf[0] = Seg_L; YM_Buf[1] = PSG_Buf[1] = buf[1] = Seg_R; YM_Len = PSG_Len = 0; memset(dac_data, 0, sizeof(dac_data)); if (!gym_pos) { return 0; } if ((unsigned int)(gym_pos - gym_start) >= gym_size) { if (gym_loop) { gym_pos = jump_gym_time_pos(gym_start, gym_size, gym_loop - 1); } else { return 0; } } do { c = *gym_pos++; switch(c) { case 0: if (YM2612_Enable) { // if dacMax is zero, dacSize will be NaN - so what, we won't // be using it in that case anyway :p dacSize = (double)Seg_Lenght / dacMax; for (i = 0; i < dacMax; i++) { oldPos = (int)curPos; YM2612_Write(0, 0x2A); YM2612_Write(1, dac_data[i]); if (i == dacMax - 1) { step = Seg_Lenght - oldPos; } else { curPos += dacSize; step = (int)curPos - oldPos; } dacBuf[0] = buf[0] + (int)oldPos; dacBuf[1] = buf[1] + (int)oldPos; YM2612_DacAndTimers_Update(dacBuf, step); } YM2612_Update(buf, Seg_Lenght); } if (PSG_Enable) { if (PSG_Improv) { PSG_Update_SIN(buf, Seg_Lenght); } else { PSG_Update(buf, Seg_Lenght); } } break; case 1: c2 = *gym_pos++; if (c2 == 0x2A) { c2 = *gym_pos++; dac_data[dacMax++] = c2; } else { YM2612_Write(0, c2); c2 = *gym_pos++; YM2612_Write(1, c2); } break; case 2: c2 = *gym_pos++; YM2612_Write(2, c2); c2 = *gym_pos++; YM2612_Write(3, c2); break; case 3: c2 = *gym_pos++; PSG_Write(c2); break; } } while (c); return gym_pos; }