NES: fix issue for real
This commit is contained in:
		
							parent
							
								
									bf19feab89
								
							
						
					
					
						commit
						a895cb9c5e
					
				| 
						 | 
				
			
			@ -358,7 +358,7 @@ void DivPlatformNES::reset() {
 | 
			
		|||
  dacSample=-1;
 | 
			
		||||
  sampleBank=0;
 | 
			
		||||
 | 
			
		||||
  apu_turn_on(nes);
 | 
			
		||||
  apu_turn_on(nes,apuType);
 | 
			
		||||
  nes->apu.cpu_cycles=0;
 | 
			
		||||
  nes->apu.cpu_opcode_cycle=0;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -375,11 +375,13 @@ void DivPlatformNES::setPAL(bool pal) {
 | 
			
		|||
  if (pal) {
 | 
			
		||||
    rate=1662607;
 | 
			
		||||
    freqBase=FREQ_BASE_PAL;
 | 
			
		||||
    nes->apu.type=1;
 | 
			
		||||
    apuType=1;
 | 
			
		||||
    nes->apu.type=apuType;
 | 
			
		||||
  } else {
 | 
			
		||||
    rate=1789773;
 | 
			
		||||
    freqBase=FREQ_BASE;
 | 
			
		||||
    nes->apu.type=0;
 | 
			
		||||
    apuType=0;
 | 
			
		||||
    nes->apu.type=apuType;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -391,6 +393,7 @@ void DivPlatformNES::notifyInsDeletion(void* ins) {
 | 
			
		|||
 | 
			
		||||
int DivPlatformNES::init(DivEngine* p, int channels, int sugRate, bool pal) {
 | 
			
		||||
  parent=p;
 | 
			
		||||
  apuType=pal;
 | 
			
		||||
  dumpWrites=false;
 | 
			
		||||
  skipRegisterWrites=false;
 | 
			
		||||
  for (int i=0; i<5; i++) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -38,6 +38,7 @@ class DivPlatformNES: public DivDispatch {
 | 
			
		|||
  unsigned int dacPos;
 | 
			
		||||
  int dacSample;
 | 
			
		||||
  unsigned char sampleBank;
 | 
			
		||||
  unsigned char apuType;
 | 
			
		||||
  struct NESAPU* nes;
 | 
			
		||||
 | 
			
		||||
  float freqBase;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -190,7 +190,7 @@ void apu_tick(struct NESAPU* a, BYTE *hwtick) {
 | 
			
		|||
 | 
			
		||||
	a->r4011.cycles++;
 | 
			
		||||
}
 | 
			
		||||
void apu_turn_on(struct NESAPU* a) {
 | 
			
		||||
void apu_turn_on(struct NESAPU* a, BYTE apu_type) {
 | 
			
		||||
	memset(&a->apu, 0x00, sizeof(a->apu));
 | 
			
		||||
	memset(&a->r4015, 0x00, sizeof(a->r4015));
 | 
			
		||||
	memset(&a->r4017, 0x00, sizeof(a->r4017));
 | 
			
		||||
| 
						 | 
				
			
			@ -202,7 +202,8 @@ void apu_turn_on(struct NESAPU* a) {
 | 
			
		|||
	memset(&a->DMC, 0x00, sizeof(a->DMC));
 | 
			
		||||
	/* al reset e' sempre settato a 60Hz */
 | 
			
		||||
	a->apu.mode = APU_60HZ;
 | 
			
		||||
	a->apu.type = 0;
 | 
			
		||||
  /* per favore non fatemi questo... e' terribile */
 | 
			
		||||
	a->apu.type = apu_type;
 | 
			
		||||
	apu_change_step(a->apu.step);
 | 
			
		||||
	/* valori iniziali dei vari canali */
 | 
			
		||||
	a->S1.frequency = 1;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -628,7 +628,7 @@ static const WORD dmc_rate[3][16] = {
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
EXTERNC void apu_tick(struct NESAPU* a, BYTE *hwtick);
 | 
			
		||||
EXTERNC void apu_turn_on(struct NESAPU* a);
 | 
			
		||||
EXTERNC void apu_turn_on(struct NESAPU* a, BYTE apu_type);
 | 
			
		||||
 | 
			
		||||
#undef EXTERNC
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue