parent
c665326b2d
commit
26739bba11
|
@ -30,17 +30,26 @@
|
||||||
|
|
||||||
void DivYM2612Interface::ymfm_set_timer(uint32_t tnum, int32_t duration_in_clocks) {
|
void DivYM2612Interface::ymfm_set_timer(uint32_t tnum, int32_t duration_in_clocks) {
|
||||||
if (tnum==1) {
|
if (tnum==1) {
|
||||||
countB=duration_in_clocks;
|
setB=duration_in_clocks;
|
||||||
} else if (tnum==0) {
|
} else if (tnum==0) {
|
||||||
countA=duration_in_clocks;
|
setA=duration_in_clocks;
|
||||||
}
|
}
|
||||||
//logV("ymfm_set_timer(%d,%d)",tnum,duration_in_clocks);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DivYM2612Interface::clock() {
|
void DivYM2612Interface::clock() {
|
||||||
if (countA>=0) {
|
if (setA>=0) {
|
||||||
countA-=144;
|
countA-=144;
|
||||||
if (countA<0) m_engine->engine_timer_expired(0);
|
if (countA<0) {
|
||||||
|
m_engine->engine_timer_expired(0);
|
||||||
|
countA+=setA;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (setB>=0) {
|
||||||
|
countB-=144;
|
||||||
|
if (countB<0) {
|
||||||
|
m_engine->engine_timer_expired(1);
|
||||||
|
countB+=setB;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
|
|
||||||
|
|
||||||
class DivYM2612Interface: public ymfm::ymfm_interface {
|
class DivYM2612Interface: public ymfm::ymfm_interface {
|
||||||
|
int setA, setB;
|
||||||
int countA, countB;
|
int countA, countB;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
@ -32,8 +33,8 @@ class DivYM2612Interface: public ymfm::ymfm_interface {
|
||||||
void ymfm_set_timer(uint32_t tnum, int32_t duration_in_clocks);
|
void ymfm_set_timer(uint32_t tnum, int32_t duration_in_clocks);
|
||||||
DivYM2612Interface():
|
DivYM2612Interface():
|
||||||
ymfm::ymfm_interface(),
|
ymfm::ymfm_interface(),
|
||||||
countA(-1),
|
countA(0),
|
||||||
countB(-1) {}
|
countB(0) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
class DivPlatformGenesis: public DivPlatformOPN {
|
class DivPlatformGenesis: public DivPlatformOPN {
|
||||||
|
|
|
@ -431,6 +431,12 @@ bool fm_operator<RegisterType>::prepare()
|
||||||
|
|
||||||
// clock the key state
|
// clock the key state
|
||||||
clock_keystate(uint32_t(m_keyon_live != 0));
|
clock_keystate(uint32_t(m_keyon_live != 0));
|
||||||
|
if (m_keyon_live & (1<<KEYON_CSM)) {
|
||||||
|
if (!(m_keyon_live & (1<<KEYON_NORMAL))) {
|
||||||
|
clock_keystate(0);
|
||||||
|
} else {
|
||||||
|
}
|
||||||
|
}
|
||||||
m_keyon_live &= ~(1 << KEYON_CSM);
|
m_keyon_live &= ~(1 << KEYON_CSM);
|
||||||
|
|
||||||
// we're active until we're quiet after the release
|
// we're active until we're quiet after the release
|
||||||
|
|
Loading…
Reference in New Issue