| 1107 | } |
| 1108 | |
| 1109 | bool AY8913::LoadSnapshot(YamlLoadHelper& yamlLoadHelper, const std::string& suffix) |
| 1110 | { |
| 1111 | std::string unit = std::string(SS_YAML_KEY_AY8910) + suffix; |
| 1112 | if (!yamlLoadHelper.GetSubMap(unit)) |
| 1113 | throw std::runtime_error("Card: Expected key: " + unit); |
| 1114 | |
| 1115 | ay_tone_tick[0] = yamlLoadHelper.LoadUint(SS_YAML_KEY_TONE0_TICK); |
| 1116 | ay_tone_tick[1] = yamlLoadHelper.LoadUint(SS_YAML_KEY_TONE1_TICK); |
| 1117 | ay_tone_tick[2] = yamlLoadHelper.LoadUint(SS_YAML_KEY_TONE2_TICK); |
| 1118 | ay_tone_high[0] = yamlLoadHelper.LoadUint(SS_YAML_KEY_TONE0_HIGH); |
| 1119 | ay_tone_high[1] = yamlLoadHelper.LoadUint(SS_YAML_KEY_TONE1_HIGH); |
| 1120 | ay_tone_high[2] = yamlLoadHelper.LoadUint(SS_YAML_KEY_TONE2_HIGH); |
| 1121 | ay_noise_tick = yamlLoadHelper.LoadUint(SS_YAML_KEY_NOISE_TICK); |
| 1122 | ay_tone_subcycles = yamlLoadHelper.LoadUint(SS_YAML_KEY_TONE_SUBCYCLES); |
| 1123 | ay_env_subcycles = yamlLoadHelper.LoadUint(SS_YAML_KEY_ENV_SUBCYCLES); |
| 1124 | ay_env_internal_tick = yamlLoadHelper.LoadUint(SS_YAML_KEY_ENV_INTERNAL_TICK); |
| 1125 | ay_env_tick = yamlLoadHelper.LoadUint(SS_YAML_KEY_ENV_TICK); |
| 1126 | ay_tick_incr = yamlLoadHelper.LoadUint(SS_YAML_KEY_TICK_INCR); |
| 1127 | ay_tone_period[0] = yamlLoadHelper.LoadUint(SS_YAML_KEY_TONE0_PERIOD); |
| 1128 | ay_tone_period[1] = yamlLoadHelper.LoadUint(SS_YAML_KEY_TONE1_PERIOD); |
| 1129 | ay_tone_period[2] = yamlLoadHelper.LoadUint(SS_YAML_KEY_TONE2_PERIOD); |
| 1130 | ay_noise_period = yamlLoadHelper.LoadUint(SS_YAML_KEY_NOISE_PERIOD); |
| 1131 | rng = yamlLoadHelper.LoadUint(SS_YAML_KEY_RNG); |
| 1132 | noise_toggle = yamlLoadHelper.LoadUint(SS_YAML_KEY_NOISE_TOGGLE); |
| 1133 | env_first = yamlLoadHelper.LoadUint(SS_YAML_KEY_ENV_FIRST); |
| 1134 | env_rev = yamlLoadHelper.LoadUint(SS_YAML_KEY_ENV_REV); |
| 1135 | env_counter = yamlLoadHelper.LoadUint(SS_YAML_KEY_ENV_COUNTER); |
| 1136 | |
| 1137 | if (!yamlLoadHelper.GetSubMap(SS_YAML_KEY_REGISTERS)) |
| 1138 | throw std::runtime_error("Card: Expected key: " SS_YAML_KEY_REGISTERS); |
| 1139 | |
| 1140 | USHORT period = (USHORT) yamlLoadHelper.LoadUint(SS_YAML_KEY_REG_TONE0_PERIOD); |
| 1141 | sound_ay_registers[0] = period & 0xff; |
| 1142 | sound_ay_registers[1] = (period >> 8) & 0xf; |
| 1143 | period = (USHORT) yamlLoadHelper.LoadUint(SS_YAML_KEY_REG_TONE1_PERIOD); |
| 1144 | sound_ay_registers[2] = period & 0xff; |
| 1145 | sound_ay_registers[3] = (period >> 8) & 0xf; |
| 1146 | period = (USHORT) yamlLoadHelper.LoadUint(SS_YAML_KEY_REG_TONE2_PERIOD); |
| 1147 | sound_ay_registers[4] = period & 0xff; |
| 1148 | sound_ay_registers[5] = (period >> 8) & 0xf; |
| 1149 | sound_ay_registers[6] = yamlLoadHelper.LoadUint(SS_YAML_KEY_REG_NOISE_PERIOD); |
| 1150 | sound_ay_registers[7] = yamlLoadHelper.LoadUint(SS_YAML_KEY_REG_MIXER); |
| 1151 | sound_ay_registers[8] = yamlLoadHelper.LoadUint(SS_YAML_KEY_REG_VOL0); |
| 1152 | sound_ay_registers[9] = yamlLoadHelper.LoadUint(SS_YAML_KEY_REG_VOL1); |
| 1153 | sound_ay_registers[10] = yamlLoadHelper.LoadUint(SS_YAML_KEY_REG_VOL2); |
| 1154 | period = (USHORT) yamlLoadHelper.LoadUint(SS_YAML_KEY_REG_ENV_PERIOD); |
| 1155 | sound_ay_registers[11] = period & 0xff; |
| 1156 | sound_ay_registers[12] = period >> 8; |
| 1157 | sound_ay_registers[13] = yamlLoadHelper.LoadUint(SS_YAML_KEY_REG_ENV_SHAPE); |
| 1158 | sound_ay_registers[14] = yamlLoadHelper.LoadUint(SS_YAML_KEY_REG_PORTA); |
| 1159 | sound_ay_registers[15] = yamlLoadHelper.LoadUint(SS_YAML_KEY_REG_PORTB); |
| 1160 | |
| 1161 | yamlLoadHelper.PopMap(); |
| 1162 | |
| 1163 | ay_change_count = 0; |
| 1164 | if (yamlLoadHelper.GetSubMap(SS_YAML_KEY_CHANGE)) |
| 1165 | { |
| 1166 | while(1) |
nothing calls this directly
no test coverage detected