MCPcopy Create free account
hub / github.com/AppleWin/AppleWin / LoadSnapshot

Method LoadSnapshot

source/AY8910.cpp:1109–1199  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1107}
1108
1109bool 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)

Callers

nothing calls this directly

Calls 5

StrFormatFunction · 0.85
LoadUintMethod · 0.80
PopMapMethod · 0.80
LoadString_NoThrowMethod · 0.80
GetSubMapMethod · 0.45

Tested by

no test coverage detected