Beispiel #1
0
void eo_settv( CONFIG* cfg )
{
  zx81.dirtydisplay = cfg->Artifacts;
  zx81.simpleghost = cfg->SimpleGhosting;
  tv.AdvancedEffects = cfg->AdvancedEffects;
  tv.DotCrawl = cfg->DotCrawl;
  tv.Interlaced = cfg->Interlaced;
  
  AccurateInit( cfg, false );
}
Beispiel #2
0
void __fastcall TFSSettings::GDIBtnClick(TObject *Sender)
{
        int NewRenderMode;

        if (GDIBtn->Checked) NewRenderMode=RENDERGDI;
        else NewRenderMode=RENDERDDRAW;

        if (Form1->RenderMode!=NewRenderMode)
        {
                RenderEnd();
                Form1->RenderMode=NewRenderMode;
                RenderInit();
                AccurateInit(true);
        }
}
Beispiel #3
0
static int internal_init( CONFIG* cfg )
{
  /* From HW_.cpp */
  
  zx81.machine = cfg->machine;

  switch ( zx81.machine )
  {
  case MACHINEZX80:
    strcpy( machine.CurRom, zx81.ROM80 );
    break;
    
  case MACHINEZX81:
    strcpy( machine.CurRom, zx81.ROM81 );
    break;
    
  case MACHINEACE:
    strcpy( machine.CurRom, zx81.ROMACE );
    break;
    
  case MACHINETS1500:
    strcpy( machine.CurRom, zx81.ROMTS1500 );
    break;
    
  case MACHINELAMBDA:
    strcpy( machine.CurRom, zx81.ROMLAMBDA );
    break;
    
  case MACHINEZX97LE:
    strcpy( machine.CurRom, zx81.ROM97LE );
    break;
    
  case MACHINETS1000:
    zx81.machine = MACHINEZX81;
    strcpy( zx81.ROM81, "zx81.rom" );
    strcpy( machine.CurRom, zx81.ROM81 );
    break;
    
  case MACHINER470:
    zx81.machine = MACHINEZX81;
    strcpy( zx81.ROM81, "ringo470.rom" );
    strcpy( machine.CurRom, zx81.ROM81 );
    break;
    
  case MACHINETK85:
    zx81.machine = MACHINEZX81;
    strcpy( zx81.ROM81, "tk85.rom" );
    strcpy( machine.CurRom, zx81.ROM81 );
    break;
  }

  if ( cfg->LambdaColour )
  {
    if ( zx81.machine == MACHINEACE )
    {
      zx81.colour = COLOURACE;
    }
    else
    {
      zx81.colour = COLOURLAMBDA;
    }
  }
  else
  {
    zx81.colour = COLOURDISABLED;
  }

  zx81.shadowROM  = cfg->LowRAMContents == LOWRAM_ROMSHADOW;
  zx81.RAM816k    = cfg->LowRAMContents == LOWRAM_8KRAM || cfg->HiRes == HIRESG007;
  zx81.protectROM = cfg->ProtectROM;
  zx81.chrgen     = cfg->LowRAMContents == LOWRAM_DK ? CHRGENDK : cfg->ChrGen;
  zx81.zxprinter  = cfg->ZXPrinter;
  zx81.extfont    = 0;
  
  if ( zx81.chrgen == CHRGENDK || zx81.chrgen == CHRGENCHR16 )
  {
    zx81.maxireg = 64;
  }
  else
  {
    zx81.maxireg = 32;
  }
  
  if ( zx81.chrgen == CHRGENLAMBDA )
  {
    zx81.extfont = 1;
  }

  zx81.NTSC = cfg->NTSC;
  
  if ( zx81.NTSC )
  {
    AnimTimer1_Interval = 16;
  }
  else
  {
    AnimTimer1_Interval = 19;
  }

  if ( cfg->RamPack == RAMPACK96 )
  {
    zx81.RAMTOP = 65535;
    zx81.ace96k = 1;
  }
  else
  {
    zx81.RAMTOP = ( 1 << ( cfg->RamPack + 10 ) ) + 16383;
    
    if ( cfg->RamPack == RAMPACK32 )
    {
      zx81.RAMTOP = 65535;
    }
    
    if ( zx81.machine == MACHINEACE && cfg->RamPack == RAMPACKNONE )
    {
      zx81.RAMTOP = 16383;
    }
    
    zx81.ace96k = 0;
  }

  zx81.truehires = cfg->HiRes;

  zx81.aytype = cfg->SoundCard;
  zx81.aysound = cfg->SoundCard != AY_TYPE_DISABLED;
  zx81.m1not = cfg->M1Not ? 49152 : 32768;
  zx81.Chroma81 = cfg->Chroma81;

  if ( zx81.machine == MACHINEZX97LE )
  {
    zx81.RAMTOP = 65535;
    zx81.m1not = 49152;
  }

  zx81.ts2050 = cfg->TS2050;

  machine.clockspeed   = 3250000;
  machine.tperscanline = 207;
  machine.scanlines    = zx81.NTSC ? 262 : 312;
  machine.tperframe    = machine.tperscanline * machine.scanlines;

  if ( zx81.machine == MACHINELAMBDA )
  {
    machine.tperscanline = 208;
  }

  switch( zx81.machine )
  {
  case MACHINEACE:
    machine.initialise = ace_initialise;
    machine.do_scanline = ace_do_scanline;
    machine.writebyte = ace_writebyte;
    machine.readbyte = ace_readbyte;
    machine.opcode_fetch = ace_opcode_fetch;
    machine.readport = ace_readport;
    machine.writeport = ace_writeport;
    machine.contendmem = ace_contend;
    machine.contendio = ace_contend;
    machine.reset = NULL;
    machine.nmi = NULL;
    machine.exit = NULL;
    break;

  default:
    machine.initialise = zx81_initialise;
    machine.do_scanline = zx81_do_scanline;
    machine.writebyte = zx81_writebyte;
    machine.readbyte = zx81_readbyte;
    machine.opcode_fetch = zx81_opcode_fetch;
    machine.readport = zx81_readport;
    machine.writeport = zx81_writeport;
    machine.contendmem = zx81_contend;
    machine.contendio = zx81_contend;
    machine.reset = NULL;
    machine.nmi = NULL;
    machine.exit = NULL;
    break;
  }

  /* From Artifacts_.cpp */
  
  zx81.dirtydisplay= cfg->Artifacts;
  zx81.simpleghost = cfg->SimpleGhosting;
  tv.AdvancedEffects = cfg->AdvancedEffects;
  tv.DotCrawl = cfg->DotCrawl;
  tv.Interlaced = cfg->Interlaced;
  
  /* From HW_.cpp */
  
  AccurateInit( cfg, false );
  zx81.speedup = 0; //Speed->Recalc( NULL );
  PCKbInit();
  PCKeySetCursor( '5', '7', '6', '8', 0 );
  
  if ( ResetRequired )
  {
    machine.initialise();
  }
  
  sound_ay_init();
  
  zx81.vsyncsound = zx81.machine == MACHINEACE || zx81.machine == MACHINELAMBDA;
  
  return 0;
}