Fix crash, enum-ise reverse mode
This commit is contained in:
parent
8b934aa4a1
commit
fdd53c1587
3 changed files with 37 additions and 30 deletions
|
|
@ -339,11 +339,17 @@ struct DivInstrumentC64 {
|
|||
};
|
||||
|
||||
struct DivInstrumentAmiga {
|
||||
enum DivReverseMode: unsigned char {
|
||||
DIV_REVERSE_DISABLE=0,
|
||||
DIV_REVERSE_ENABLE,
|
||||
DIV_REVERSE_DEFAULT
|
||||
};
|
||||
|
||||
struct SampleMap {
|
||||
int freq;
|
||||
short map;
|
||||
unsigned char reversed;
|
||||
SampleMap(int f=0, short m=-1, unsigned char r=0):
|
||||
DivInstrumentAmiga::DivReverseMode reversed;
|
||||
SampleMap(int f=0, short m=-1, DivInstrumentAmiga::DivReverseMode r=DivInstrumentAmiga::DivReverseMode::DIV_REVERSE_DEFAULT):
|
||||
freq(f),
|
||||
map(m),
|
||||
reversed(r) {}
|
||||
|
|
@ -395,21 +401,21 @@ struct DivInstrumentAmiga {
|
|||
|
||||
struct TransWaveMap: TransWaveSlice {
|
||||
short ind;
|
||||
unsigned char reversed;
|
||||
DivReverseMode reversed;
|
||||
int loopStart, loopEnd;
|
||||
DivSampleLoopMode loopMode;
|
||||
|
||||
TransWaveMap():
|
||||
TransWaveSlice(),
|
||||
ind(-1),
|
||||
reversed(0),
|
||||
reversed(DivInstrumentAmiga::DivReverseMode::DIV_REVERSE_DEFAULT),
|
||||
loopStart(-1),
|
||||
loopEnd(-1),
|
||||
loopMode(DIV_SAMPLE_LOOP_MAX) {}
|
||||
};
|
||||
|
||||
short initSample;
|
||||
bool reversed;
|
||||
DivInstrumentAmiga::DivReverseMode reversed;
|
||||
bool useNoteMap;
|
||||
bool useSample;
|
||||
bool useWave;
|
||||
|
|
@ -448,7 +454,7 @@ struct DivInstrumentAmiga {
|
|||
* get the sample reversed flag at specified note.
|
||||
* @return the reversed flag.
|
||||
*/
|
||||
inline bool getReversed(int note) {
|
||||
inline DivInstrumentAmiga::DivReverseMode getReversed(int note) {
|
||||
if (useNoteMap) {
|
||||
if (note<0) note=0;
|
||||
if (note>119) note=119;
|
||||
|
|
@ -459,7 +465,7 @@ struct DivInstrumentAmiga {
|
|||
|
||||
DivInstrumentAmiga():
|
||||
initSample(0),
|
||||
reversed(false),
|
||||
reversed(DivInstrumentAmiga::DivReverseMode::DIV_REVERSE_DISABLE),
|
||||
useNoteMap(false),
|
||||
useSample(false),
|
||||
useWave(false),
|
||||
|
|
|
|||
|
|
@ -249,7 +249,7 @@ void DivPlatformES5506::e_pin(bool state) {
|
|||
}
|
||||
// get reversed
|
||||
bool reversed=ins->amiga.reversed;
|
||||
if (transWaveInd.reversed!=2) {
|
||||
if (transWaveInd.reversed!=DivInstrumentAmiga::DivReverseMode::DIV_REVERSE_DEFAULT) {
|
||||
reversed=transWaveInd.reversed;
|
||||
}
|
||||
const unsigned int start=offES5506<<10;
|
||||
|
|
@ -601,7 +601,7 @@ void DivPlatformES5506::tick(bool sysTick) {
|
|||
}
|
||||
// get reversed
|
||||
bool reversed=ins->amiga.reversed;
|
||||
if (transWaveInd.reversed!=2) {
|
||||
if (transWaveInd.reversed!=DivInstrumentAmiga::DivReverseMode::DIV_REVERSE_DEFAULT) {
|
||||
reversed=transWaveInd.reversed;
|
||||
}
|
||||
chan[i].pcmChanged.slice=1;
|
||||
|
|
@ -672,9 +672,9 @@ void DivPlatformES5506::tick(bool sysTick) {
|
|||
}
|
||||
// get reversed
|
||||
bool reversed=ins->amiga.reversed;
|
||||
if (ins->amiga.transWave.enable&&transWaveInd.reversed!=2) {
|
||||
if (ins->amiga.transWave.enable&&transWaveInd.reversed!=DivInstrumentAmiga::DivReverseMode::DIV_REVERSE_DEFAULT) {
|
||||
reversed=transWaveInd.reversed;
|
||||
} else if (ins->amiga.useNoteMap&¬eMapind.reversed!=2) {
|
||||
} else if (ins->amiga.useNoteMap&¬eMapind.reversed!=DivInstrumentAmiga::DivReverseMode::DIV_REVERSE_DEFAULT) {
|
||||
reversed=noteMapind.reversed;
|
||||
}
|
||||
const unsigned int start=offES5506<<10;
|
||||
|
|
@ -984,9 +984,9 @@ int DivPlatformES5506::dispatch(DivCommand c) {
|
|||
}
|
||||
// get reversed
|
||||
bool reversed=ins->amiga.reversed;
|
||||
if (ins->amiga.transWave.enable&&transWaveInd.reversed!=2) {
|
||||
if (ins->amiga.transWave.enable&&transWaveInd.reversed!=DivInstrumentAmiga::DivReverseMode::DIV_REVERSE_DEFAULT) {
|
||||
reversed=transWaveInd.reversed;
|
||||
} else if (ins->amiga.useNoteMap&¬eMapind.reversed!=2) {
|
||||
} else if (ins->amiga.useNoteMap&¬eMapind.reversed!=DivInstrumentAmiga::DivReverseMode::DIV_REVERSE_DEFAULT) {
|
||||
reversed=noteMapind.reversed;
|
||||
}
|
||||
const unsigned int start=offES5506<<10;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue