MCPcopy Create free account
hub / github.com/HertzDevil/0CC-FamiTracker / IsEffectCompatible

Function IsEffectCompatible

Source/TrackerChannel.cpp:124–165  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

122}
123
124bool IsEffectCompatible(stChannelID ch, stEffectCommand cmd) { // // //
125 switch (cmd.fx) {
126 case effect_t::none:
127 case effect_t::SPEED: case effect_t::JUMP: case effect_t::SKIP: case effect_t::HALT:
128 case effect_t::DELAY:
129 return true;
130 case effect_t::NOTE_CUT: case effect_t::NOTE_RELEASE:
131 return cmd.param <= 0x7F || IsAPUTriangle(ch);
132 case effect_t::GROOVE:
133 return cmd.param < MAX_GROOVE;
134 case effect_t::VOLUME:
135 return ((ch.Chip == sound_chip_t::APU && !IsDPCM(ch)) || ch.Chip == sound_chip_t::MMC5) &&
136 (cmd.param <= 0x1F || (cmd.param >= 0xE0 && cmd.param <= 0xE3));
137 case effect_t::PORTAMENTO: case effect_t::ARPEGGIO: case effect_t::VIBRATO: case effect_t::TREMOLO:
138 case effect_t::PITCH: case effect_t::PORTA_UP: case effect_t::PORTA_DOWN: case effect_t::SLIDE_UP: case effect_t::SLIDE_DOWN:
139 case effect_t::VOLUME_SLIDE: case effect_t::DELAYED_VOLUME: case effect_t::TRANSPOSE:
140 return !IsDPCM(ch);
141 case effect_t::PORTAOFF:
142 return false;
143 case effect_t::SWEEPUP: case effect_t::SWEEPDOWN:
144 return IsAPUPulse(ch);
145 case effect_t::DAC: case effect_t::SAMPLE_OFFSET: case effect_t::RETRIGGER: case effect_t::DPCM_PITCH:
146 return IsDPCM(ch);
147 case effect_t::DUTY_CYCLE:
148 return !IsDPCM(ch); // // // 050B
149 case effect_t::FDS_MOD_DEPTH:
150 return ch.Chip == sound_chip_t::FDS && (cmd.param <= 0x3F || cmd.param >= 0x80);
151 case effect_t::FDS_MOD_SPEED_HI: case effect_t::FDS_MOD_SPEED_LO: case effect_t::FDS_MOD_BIAS:
152 return ch.Chip == sound_chip_t::FDS;
153 case effect_t::SUNSOFT_ENV_LO: case effect_t::SUNSOFT_ENV_HI: case effect_t::SUNSOFT_ENV_TYPE:
154 case effect_t::SUNSOFT_NOISE: // // // 050B
155 return ch.Chip == sound_chip_t::S5B;
156 case effect_t::N163_WAVE_BUFFER:
157 return ch.Chip == sound_chip_t::N163 && cmd.param <= 0x7F;
158 case effect_t::FDS_VOLUME:
159 return ch.Chip == sound_chip_t::FDS && (cmd.param <= 0x7F || cmd.param == 0xE0);
160 case effect_t::VRC7_PORT: case effect_t::VRC7_WRITE: // // // 050B
161 return ch.Chip == sound_chip_t::VRC7;
162 }
163
164 return false;
165}
166
167/*
168int CTrackerChannel::GetEffect(int Letter) const

Callers 2

DrawCellMethod · 0.85
RetrieveMethod · 0.85

Calls 3

IsAPUTriangleFunction · 0.85
IsDPCMFunction · 0.85
IsAPUPulseFunction · 0.85

Tested by

no test coverage detected