| 199 | } |
| 200 | |
| 201 | void CChannelHandler::ApplyChannelState(const stChannelState &State) |
| 202 | { |
| 203 | m_iInstrument = State.Instrument; |
| 204 | m_iDefaultVolume = m_iVolume = (State.Volume == MAX_VOLUME) ? VOL_COLUMN_MAX : (State.Volume << VOL_COLUMN_SHIFT); |
| 205 | m_iEchoBuffer = State.Echo; |
| 206 | if (m_iInstrument != MAX_INSTRUMENTS) |
| 207 | HandleInstrument(true, true); |
| 208 | if (State.Effect_LengthCounter >= 0) |
| 209 | HandleEffect({effect_t::VOLUME, static_cast<uint8_t>(State.Effect_LengthCounter)}); |
| 210 | for (auto fx : enum_values<effect_t>()) |
| 211 | if (auto param = State.Effect[value_cast(fx)]; param >= 0) |
| 212 | HandleEffect({fx, static_cast<uint8_t>(param)}); |
| 213 | if (State.Effect[value_cast(effect_t::FDS_MOD_SPEED_HI)] >= 0x10) |
| 214 | HandleEffect({effect_t::FDS_MOD_SPEED_HI, static_cast<uint8_t>(State.Effect[value_cast(effect_t::FDS_MOD_SPEED_HI)])}); |
| 215 | if (State.Effect_AutoFMMult >= 0) |
| 216 | HandleEffect({effect_t::FDS_MOD_DEPTH, static_cast<uint8_t>(State.Effect_AutoFMMult)}); |
| 217 | } |
| 218 | |
| 219 | std::string CChannelHandler::GetEffectString() const // // // |
| 220 | { |
no test coverage detected