| 1052 | #define SS_YAML_VALUE_CHANGE_FORMAT "%d, %d, 0x%1X, 0x%02X" |
| 1053 | |
| 1054 | void AY8913::SaveSnapshot(YamlSaveHelper& yamlSaveHelper, const std::string& suffix) |
| 1055 | { |
| 1056 | std::string unit = std::string(SS_YAML_KEY_AY8910) + suffix; |
| 1057 | YamlSaveHelper::Label label(yamlSaveHelper, "%s:\n", unit.c_str()); |
| 1058 | |
| 1059 | yamlSaveHelper.SaveUint(SS_YAML_KEY_TONE0_TICK, ay_tone_tick[0]); |
| 1060 | yamlSaveHelper.SaveUint(SS_YAML_KEY_TONE1_TICK, ay_tone_tick[1]); |
| 1061 | yamlSaveHelper.SaveUint(SS_YAML_KEY_TONE2_TICK, ay_tone_tick[2]); |
| 1062 | yamlSaveHelper.SaveUint(SS_YAML_KEY_TONE0_HIGH, ay_tone_high[0]); |
| 1063 | yamlSaveHelper.SaveUint(SS_YAML_KEY_TONE1_HIGH, ay_tone_high[1]); |
| 1064 | yamlSaveHelper.SaveUint(SS_YAML_KEY_TONE2_HIGH, ay_tone_high[2]); |
| 1065 | yamlSaveHelper.SaveUint(SS_YAML_KEY_NOISE_TICK, ay_noise_tick); |
| 1066 | yamlSaveHelper.SaveUint(SS_YAML_KEY_TONE_SUBCYCLES, ay_tone_subcycles); |
| 1067 | yamlSaveHelper.SaveUint(SS_YAML_KEY_ENV_SUBCYCLES, ay_env_subcycles); |
| 1068 | yamlSaveHelper.SaveUint(SS_YAML_KEY_ENV_INTERNAL_TICK, ay_env_internal_tick); |
| 1069 | yamlSaveHelper.SaveUint(SS_YAML_KEY_ENV_TICK, ay_env_tick); |
| 1070 | yamlSaveHelper.SaveUint(SS_YAML_KEY_TICK_INCR, ay_tick_incr); |
| 1071 | yamlSaveHelper.SaveUint(SS_YAML_KEY_TONE0_PERIOD, ay_tone_period[0]); |
| 1072 | yamlSaveHelper.SaveUint(SS_YAML_KEY_TONE1_PERIOD, ay_tone_period[1]); |
| 1073 | yamlSaveHelper.SaveUint(SS_YAML_KEY_TONE2_PERIOD, ay_tone_period[2]); |
| 1074 | yamlSaveHelper.SaveUint(SS_YAML_KEY_NOISE_PERIOD, ay_noise_period); |
| 1075 | yamlSaveHelper.SaveUint(SS_YAML_KEY_RNG, rng); |
| 1076 | yamlSaveHelper.SaveUint(SS_YAML_KEY_NOISE_TOGGLE, noise_toggle); |
| 1077 | yamlSaveHelper.SaveUint(SS_YAML_KEY_ENV_FIRST, env_first); |
| 1078 | yamlSaveHelper.SaveUint(SS_YAML_KEY_ENV_REV, env_rev); |
| 1079 | yamlSaveHelper.SaveUint(SS_YAML_KEY_ENV_COUNTER, env_counter); |
| 1080 | |
| 1081 | // New label |
| 1082 | { |
| 1083 | YamlSaveHelper::Label registers(yamlSaveHelper, "%s:\n", SS_YAML_KEY_REGISTERS); |
| 1084 | |
| 1085 | yamlSaveHelper.SaveHexUint12(SS_YAML_KEY_REG_TONE0_PERIOD, (UINT)(sound_ay_registers[1]<<8) | sound_ay_registers[0]); |
| 1086 | yamlSaveHelper.SaveHexUint12(SS_YAML_KEY_REG_TONE1_PERIOD, (UINT)(sound_ay_registers[3]<<8) | sound_ay_registers[2]); |
| 1087 | yamlSaveHelper.SaveHexUint12(SS_YAML_KEY_REG_TONE2_PERIOD, (UINT)(sound_ay_registers[5]<<8) | sound_ay_registers[4]); |
| 1088 | yamlSaveHelper.SaveHexUint8(SS_YAML_KEY_REG_NOISE_PERIOD, sound_ay_registers[6]); |
| 1089 | yamlSaveHelper.SaveHexUint8(SS_YAML_KEY_REG_MIXER, sound_ay_registers[7]); |
| 1090 | yamlSaveHelper.SaveHexUint8(SS_YAML_KEY_REG_VOL0, sound_ay_registers[8]); |
| 1091 | yamlSaveHelper.SaveHexUint8(SS_YAML_KEY_REG_VOL1, sound_ay_registers[9]); |
| 1092 | yamlSaveHelper.SaveHexUint8(SS_YAML_KEY_REG_VOL2, sound_ay_registers[10]); |
| 1093 | yamlSaveHelper.SaveHexUint16(SS_YAML_KEY_REG_ENV_PERIOD, (UINT)(sound_ay_registers[12]<<8) | sound_ay_registers[11]); |
| 1094 | yamlSaveHelper.SaveHexUint4(SS_YAML_KEY_REG_ENV_SHAPE, sound_ay_registers[13]); |
| 1095 | yamlSaveHelper.SaveHexUint8(SS_YAML_KEY_REG_PORTA, sound_ay_registers[14]); |
| 1096 | yamlSaveHelper.SaveHexUint8(SS_YAML_KEY_REG_PORTB, sound_ay_registers[15]); |
| 1097 | } |
| 1098 | |
| 1099 | // New label |
| 1100 | if (ay_change_count) |
| 1101 | { |
| 1102 | YamlSaveHelper::Label change(yamlSaveHelper, "%s:\n", SS_YAML_KEY_CHANGE); |
| 1103 | |
| 1104 | for (int i=0; i<ay_change_count; i++) |
| 1105 | yamlSaveHelper.Save("0x%04X: " SS_YAML_VALUE_CHANGE_FORMAT "\n", i, ay_change[i].tstates, ay_change[i].ofs, ay_change[i].reg, ay_change[i].val); |
| 1106 | } |
| 1107 | } |
| 1108 | |
| 1109 | bool AY8913::LoadSnapshot(YamlLoadHelper& yamlLoadHelper, const std::string& suffix) |
| 1110 | { |
nothing calls this directly
no test coverage detected