Exemple #1
0
// Called externally from debug.cpp
void ForceEventUpdates(const uint32 timestamp)
{
 next_king_ts = KING_Update(timestamp);
 next_pad_ts = FXINPUT_Update(timestamp);
 next_timer_ts = FXTIMER_Update(timestamp);
 next_adpcm_ts = SoundBox_ADPCMUpdate(timestamp);

 //printf("Meow: %d\n", CalcNextTS());
 PCFX_V810.SetEventNT(CalcNextTS());

 //printf("FEU: %d %d %d %d\n", next_pad_ts, next_timer_ts, next_adpcm_ts, next_king_ts);
}
uint16 FXTIMER_Read16(uint32 A, const v810_timestamp_t timestamp)
{
 FXTIMER_Update(timestamp);
 switch(A & 0xFC0)
 {
  default: return(0);

  case 0xF00: return(control);

  case 0xF80: return(period);

  case 0xFC0: return((counter + 14) / 15);
 }
 return(0);
}
Exemple #3
0
int32 MDFN_FASTCALL pcfx_event_handler(const v810_timestamp_t timestamp)
{
     if(timestamp >= next_king_ts)
      next_king_ts = KING_Update(timestamp);

     if(timestamp >= next_pad_ts)
      next_pad_ts = FXINPUT_Update(timestamp);

     if(timestamp >= next_timer_ts)
      next_timer_ts = FXTIMER_Update(timestamp);

     if(timestamp >= next_adpcm_ts)
      next_adpcm_ts = SoundBox_ADPCMUpdate(timestamp);

#if 1
     assert(next_king_ts > timestamp);
     assert(next_pad_ts > timestamp);
     assert(next_timer_ts > timestamp);
     assert(next_adpcm_ts > timestamp);
#endif
     return(CalcNextTS());
}
void FXTIMER_Write16(uint32 A, uint16 V, const v810_timestamp_t timestamp)
{
 FXTIMER_Update(timestamp);

 switch(A & 0xFC0)
 {
  default: break;

  case 0xF00: if(!(control & 0x2) && (V & 0x2))
	       counter = EFF_PERIOD;
	      control = V & 0x7;

	      if(V & 0x4)
	       FXDBG("Timer control write with D2 set?");

	      PCFXIRQ_Assert(PCFXIRQ_SOURCE_TIMER, (bool)(control & 0x4));
	      PCFX_SetEvent(PCFX_EVENT_TIMER, CalcNextEventTS(timestamp));
	      break;

  case 0xF80: period = V; 
	      PCFX_SetEvent(PCFX_EVENT_TIMER, CalcNextEventTS(timestamp));
	      break;
 }
}
uint8 FXTIMER_Read8(uint32 A, const v810_timestamp_t timestamp)
{
 FXTIMER_Update(timestamp);
 return(FXTIMER_Read16(A&~1, timestamp) >> ((A & 1) * 8));
}