ScriptedAmigaEmulator/sae/config.js
Rupert Hausberger f1f8a1e846 update 0.9.0
2016-08-06 02:19:59 +02:00

2406 lines
78 KiB
JavaScript

/*-------------------------------------------------------------------------
| SAE - Scripted Amiga Emulator
| https://github.com/naTmeg/ScriptedAmigaEmulator
|
| Copyright (C) 2012-2016 Rupert Hausberger
|
| This program is free software; you can redistribute it and/or
| modify it under the terms of the GNU General Public License
| as published by the Free Software Foundation; either version 2
| of the License, or (at your option) any later version.
|
| This program is distributed in the hope that it will be useful,
| but WITHOUT ANY WARRANTY; without even the implied warranty of
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
| GNU General Public License for more details.
|
| Notes:
| - Ported from WinUAE 3.2.x
| - There is many comment in this file. I did not strip it,
| because it's easier to enable features in the future...
-------------------------------------------------------------------------*/
/* global variables */
var SAEV_config = {};
/*---------------------------------*/
/* models */
const SAEC_Model_A500 = 1;
const SAEC_Model_A500P = 2;
const SAEC_Model_A600 = 3;
const SAEC_Model_A1000 = 4;
const SAEC_Model_A1200 = 5;
const SAEC_Model_A2000 = 6;
const SAEC_Model_A3000 = 7;
const SAEC_Model_A4000 = 8;
const SAEC_Model_A4000T = 9;
/* future (cd-emulation is not implemented) */
const SAEC_Model_CDTV = 10;
const SAEC_Model_CD32 = 11;
/*---------------------------------*/
/* file */
function SAEO_Config_File() {
//this.path = "";
this.name = "";
this.data = "";
this.size = 0;
this.crc32 = false;
this.prot = false;
this.clr = function() {
//this.path = "";
this.name = "";
this.data = "";
this.size = 0;
this.crc32 = false;
this.prot = false;
}
}
/*---------------------------------*/
/* cpu */
const SAEC_Config_CPU_Model_68000 = 68000;
const SAEC_Config_CPU_Model_68010 = 68010;
const SAEC_Config_CPU_Model_68020 = 68020;
const SAEC_Config_CPU_Model_68030 = 68030;
const SAEC_Config_CPU_Model_68040 = 68040; /* future */
const SAEC_Config_CPU_Model_68060 = 68060; /* future */
const SAEC_Config_CPU_Speed_Maximum = -1;
const SAEC_Config_CPU_Speed_Original = 0;
/*---------------------------------*/
/* chipset */
const SAEC_Config_Chipset_Mask_OCS = 0;
const SAEC_Config_Chipset_Mask_ECS_AGNUS = 1;
const SAEC_Config_Chipset_Mask_ECS_DENISE = 2;
const SAEC_Config_Chipset_Mask_AGA = 4;
const SAEC_Config_Chipset_ColLevel_None = 0;
const SAEC_Config_Chipset_ColLevel_Sprite_Sprite = 1;
const SAEC_Config_Chipset_ColLevel_Sprite_Playfield = 2;
const SAEC_Config_Chipset_ColLevel_Full = 3;
const SAEC_Config_Chipset_CR_MAX = 10;
const SAEC_Config_Chipset_CR_PAL = SAEC_Config_Chipset_CR_MAX + 0;
const SAEC_Config_Chipset_CR_NTSC = SAEC_Config_Chipset_CR_MAX + 1;
const SAEC_Config_Chipset_CR_TOTAL = SAEC_Config_Chipset_CR_MAX + 2;
function SAEO_Config_Chipset_Refresh() {
this.index = 0;
this.locked = false;
this.rtg = false;
this.horiz = 0;
this.vert = 0;
this.lace = 0;
this.ntsc = false;
this.vsync = 0;
this.framelength = 0;
this.rate = 0.0;
this.label = "";
this.commands = "";
}
/*--------------*/
/* features */
const SAEC_Config_Chipset_Compatible_Manual = 0;
const SAEC_Config_Chipset_Compatible_Generic = 1;
const SAEC_Config_Chipset_Compatible_A500 = 2;
const SAEC_Config_Chipset_Compatible_A500P = 3;
const SAEC_Config_Chipset_Compatible_A600 = 4;
const SAEC_Config_Chipset_Compatible_A1000 = 5;
const SAEC_Config_Chipset_Compatible_A1000V = 6;
const SAEC_Config_Chipset_Compatible_A1200 = 7;
const SAEC_Config_Chipset_Compatible_A2000 = 8;
const SAEC_Config_Chipset_Compatible_A3000 = 9;
const SAEC_Config_Chipset_Compatible_A4000 = 10;
const SAEC_Config_Chipset_Compatible_A4000T = 11;
const SAEC_Config_Chipset_Compatible_CDTV = 12;
const SAEC_Config_Chipset_Compatible_CDTVCR = 13;
const SAEC_Config_Chipset_Compatible_CD32 = 14;
const SAEC_Config_Chipset_CIA_TOD_VSync = 0;
const SAEC_Config_Chipset_CIA_TOD_50Hz = 1;
const SAEC_Config_Chipset_CIA_TOD_60Hz = 2;
const SAEC_Config_RTC_Type_None = 0;
const SAEC_Config_RTC_Type_MSM6242B = 1;
const SAEC_Config_RTC_Type_RF5C01A = 2; /* A3000(T)/A4000(T) */
const SAEC_Config_RTC_Type_MSM6242B_A2000 = 3;
const SAEC_Config_Chipset_IDE_A600A1200 = 1;
const SAEC_Config_Chipset_IDE_A4000 = 2;
/*---------------------------------*/
/* memory */
/* DEPRECATED
const SAEC_Config_RAM_Chip_Size_256K = 256 << 10;
const SAEC_Config_RAM_Chip_Size_512K = 512 << 10;
const SAEC_Config_RAM_Chip_Size_1M = 1024 << 10;
const SAEC_Config_RAM_Chip_Size_2M = 2048 << 10;
const SAEC_Config_RAM_Slow_Size_None = 0;
const SAEC_Config_RAM_Slow_Size_256K = 256 << 10;
const SAEC_Config_RAM_Slow_Size_512K = 512 << 10;
const SAEC_Config_RAM_Slow_Size_1M = 1024 << 10;
const SAEC_Config_RAM_Slow_Size_1536K = 1536 << 10;
const SAEC_Config_RAM_Fast_Size_None = 0;
const SAEC_Config_RAM_Fast_Size_512K = 512 << 10;
const SAEC_Config_RAM_Fast_Size_1M = 1024 << 10;
const SAEC_Config_RAM_Fast_Size_2M = 2048 << 10;
const SAEC_Config_RAM_Fast_Size_4M = 4096 << 10;
const SAEC_Config_RAM_Fast_Size_8M = 8192 << 10;*/
const SAEC_Config_Memory_z3Mapping_Auto = 0;
const SAEC_Config_Memory_z3Mapping_SAE = 1;
const SAEC_Config_Memory_z3Mapping_Real = 2;
//const SAEC_Config_Memory_Custom_MAX = 2; //MAX_CUSTOM_MEMORY_ADDRS
/*---------------------------------*/
/* disk */
const SAEC_Config_Floppy_Type_None = 0;
const SAEC_Config_Floppy_Type_35_DD = 1;
const SAEC_Config_Floppy_Type_35_HD = 2;
const SAEC_Config_Floppy_Type_35_DD_ESCOM = 3;
const SAEC_Config_Floppy_Type_35_DD_PC = 4;
const SAEC_Config_Floppy_Type_35_HD_PC = 5;
const SAEC_Config_Floppy_Type_525_SD = 6;
const SAEC_Config_Floppy_Speed_Turbo = 0;
const SAEC_Config_Floppy_Speed_Original = 100;
function SAEO_Config_Floppy_Drive() { //floppyslot
this.type = SAEC_Config_Floppy_Type_None; //dfxtype
this.file = new SAEO_Config_File();
//this.name = ""; //df
//this.prot = false; //forcedwriteprotect
//this.dfxclick = 0;
//this.dfxclickexternal = "";
}
/*---------------------------------*/
/* mount */
const SAEC_Config_Mount_Controller_Type_MB_IDE = 1;
const SAEC_Config_Mount_Controller_Type_PCMCIA_SRAM = 2;
const SAEC_Config_Mount_Controller_Type_PCMCIA_IDE = 3;
const SAEC_Config_Mount_Controller_Level_ATA_1 = 0;
const SAEC_Config_Mount_Controller_Level_ATA_2 = 1;
const SAEC_Config_Mount_Controller_Level_ATA_2S = 2;
const SAEC_Config_Mount_Controller_Level_SCSI_1 = 0;
const SAEC_Config_Mount_Controller_Level_SCSI_2 = 1;
const SAEC_Config_Mount_Controller_Level_SASI = 2;
const SAEC_Config_Mount_Controller_Level_SASI_ENHANCED = 2;
const SAEC_Config_Mount_Controller_Level_SASI_CHS = 3;
const SAEC_Config_Mount_Bootpri_NOAUTOBOOT = -128;
const SAEC_Config_Mount_Bootpri_NOAUTOMOUNT = -129;
function SAEO_Config_Mount_Info() { //uaedev_config_info
//controller
this.controller_type = 0;
this.controller_unit = 0; //IDE channel + unit
this.controller_media_type = 0; // 1 = CF IDE, 0 = normal
this.unit_feature_level = 0;
this.unit_special_flags = 0; //1 = force LBA48
//file
this.type = 0;
//this.rootdir = "";
this.file = new SAEO_Config_File(); //OWN
this.readonly = false;
//rdb drive geometry
this.blocksize = 0;
this.cyls = 0; // calculated/corrected highcyl
this.surfaces = 0; //heads
this.sectors = 0;
this.interleave = false;
this.physical_geometry = false; // if false: use defaults
this.pcyls = 0, this.pheads = 0, this.psecs = 0;
//partition
this.bootable = false;
this.automount = false;
this.unit = 0;
this.flags = 0;
this.devname = "";
//partition DosEnvec
this.sectorsperblock = 0;
this.reserved = 0;
this.lowcyl = 0;
this.highcyl = 0; // zero if detected from size
this.buffers = 0;
this.bufmemtype = 0;
this.maxtransfer = 0;
this.mask = 0; //u32
this.bootpri = 0;
this.dostype = 0; //u32
//filesystem
this.filesys = "";
//filesystem DeviceNode
this.stacksize = 0;
this.priority = 0;
//misc
//this.device_emu_unit = 0; //CD
}
function SAEO_Config_Mount_Data() { //uaedev_config_data
this.ci = new SAEO_Config_Mount_Info();
this.configoffset = 0;
this.unitnum = 0;
}
/*---------------------------------*/
/* video */
const SAEC_Config_Video_API_Canvas = 0;
const SAEC_Config_Video_API_WebGL = 1;
const SAEC_Config_Video_HResolution_LoRes = 0;
const SAEC_Config_Video_HResolution_HiRes = 1;
const SAEC_Config_Video_HResolution_SuperHiRes = 2;
const SAEC_Config_Video_VResolution_NonDouble = 0;
const SAEC_Config_Video_VResolution_Double = 1;
const SAEC_Config_Video_AP_Fullscreen_WINDOW = 0; //GFX_WINDOW
const SAEC_Config_Video_AP_Fullscreen_FULLSCREEN = 1; //GFX_FULLSCREEN
const SAEC_Config_Video_AP_Fullscreen_FULLWINDOW = 2; //GFX_FULLWINDOW
function SAEO_Config_Video_WH() { //struct wh
this.x = 0;
this.y = 0;
this.width = 0;
this.height = 0;
this.special = false;
}
function SAEO_Config_Video_APMode() { //struct apmode
this.gfx_fullscreen = 0;
this.gfx_display = 0;
this.gfx_vsync = 0;
// 0 = immediate flip
// -1 = wait for flip, before frame ends
// 1 = wait for flip, after new frame has started
this.gfx_vflip = 0;
this.gfx_strobo = false; //doubleframemode strobo
this.gfx_vsyncmode = 0;
this.gfx_backbuffers = 0;
this.gfx_interlaced = false;
this.gfx_refreshrate = 0;
}
const MAX_FILTERSHADERS = 4;
function SAEO_Config_Video_FilterData() { //struct gfx_filterdata
this.gfx_filter = 0;
this.gfx_filtershader = new Array(2 * MAX_FILTERSHADERS + 1);
this.gfx_filtermask = new Array(2 * MAX_FILTERSHADERS + 1);
this.gfx_filteroverlay = ""; //char
this.gfx_filteroverlay_pos = new SAEO_Config_Video_WH();
this.gfx_filteroverlay_overscan = 0;
this.gfx_filter_scanlines = 0; //0, 100, 1,
this.gfx_filter_scanlineratio = 0;
this.gfx_filter_scanlinelevel = 0; //0, 100, 10,
this.gfx_filter_horiz_zoom = 0.0; this.gfx_filter_vert_zoom = 0.0; //float
this.gfx_filter_horiz_zoom_mult = 0.0; this.gfx_filter_vert_zoom_mult = 0.0; //float
this.gfx_filter_horiz_offset = 0.0; this.gfx_filter_vert_offset = 0.0; //float
this.gfx_filter_left_border = 0; this.gfx_filter_right_border = 0;
this.gfx_filter_top_border = 0; this.gfx_filter_bottom_border = 0;
this.gfx_filter_filtermode = 0;
this.gfx_filter_bilinear = 0; //0, 1, 1,
this.gfx_filter_noise = 0; //0, 100, 10,
this.gfx_filter_blur = 0; //0, 2000, 10,
this.gfx_filter_saturation = 0; this.gfx_filter_luminance = 0; this.gfx_filter_contrast = 0;
this.gfx_filter_gamma = 0;
this.gfx_filter_gamma_ch = [0,0,0];
this.gfx_filter_keep_aspect = 0; this.gfx_filter_aspect = 0;
this.gfx_filter_autoscale = 0;
this.gfx_filter_integerscalelimit = 0;
this.gfx_filter_keep_autoscale_aspect = 0;
for (var i = 0; i < 2 * MAX_FILTERSHADERS + 1; i++) {
this.gfx_filtershader[i] = "";
this.gfx_filtermask[i] = "";
}
};
/*---------------------------------*/
/* audio */
/* DEPRECATED
const SAEC_Config_Audio_Mode_Emul = 0;
const SAEC_Config_Audio_Mode_Play = 1;
const SAEC_Config_Audio_Mode_Play_Best = 2;*/
const SAEC_Config_Audio_Mode_Off = 0;
const SAEC_Config_Audio_Mode_Off_Emul = 1;
const SAEC_Config_Audio_Mode_On = 2;
const SAEC_Config_Audio_Mode_On_Best = 3;
const SAEC_Config_Audio_Freq_Auto = 0;
const SAEC_Config_Audio_Freq_11025 = 11025;
const SAEC_Config_Audio_Freq_22050 = 22050;
const SAEC_Config_Audio_Freq_44100 = 44100;
const SAEC_Config_Audio_Freq_48000 = 48000;
const SAEC_Config_Audio_Channels_Mono = 1;
const SAEC_Config_Audio_Channels_Stereo = 2;
const SAEC_Config_Audio_Filter_Off = 0;
const SAEC_Config_Audio_Filter_Emul = 1;
const SAEC_Config_Audio_Filter_On = 2;
const SAEC_Config_Audio_FilterType_A500 = 0;
const SAEC_Config_Audio_FilterType_A1200 = 1;
const SAEC_Config_Audio_Interpol_None = 0;
const SAEC_Config_Audio_Interpol_Anti = 1;
const SAEC_Config_Audio_Interpol_RH = 2;
const SAEC_Config_Audio_Interpol_Crux = 3;
/*---------------------------------*/
/* input */
const SAEC_Config_Ports_Type_None = 0;
const SAEC_Config_Ports_Type_Mouse = 1;
const SAEC_Config_Ports_Type_Joy0 = 2;
const SAEC_Config_Ports_Type_Joy1 = 3;
const SAEC_Config_Ports_Move_None = 0;
const SAEC_Config_Ports_Move_Arrows = 1;
const SAEC_Config_Ports_Move_Numpad = 2;
const SAEC_Config_Ports_Move_WASD = 3;
const SAEC_Config_Ports_Fire_None = 0;
/*---------------------------------*/
/* debug */
const SAEC_Config_Debug_Level_Fatal = 0;
const SAEC_Config_Debug_Level_Error = 1;
const SAEC_Config_Debug_Level_Warn = 2;
const SAEC_Config_Debug_Level_Info = 3;
const SAEC_Config_Debug_Level_Log = 4;
/*---------------------------------*/
/* the main config-object */
function SAEO_Config() {
//int turbo_emulation;
//int turbo_emulation_limit;
this.cpu = {
model: 0, //cpu_model
speed: 0, //m68k_speed
speedThrottle: 0.0, //m68k_speed_throttle (0.0 - 1000.0)
clock: { //cpu_frequency
multiplier: 0, //cpu_clock_multiplier
frequency: 0 //cpu_frequency
},
compatible: false, //cpu_compatible
addressSpace24: false, //address_space_24
resetDelay: false //reset_delay;
/*int cpu_idle;
bool cpu_cycle_exact;
bool cpu_memory_cycle_exact;
bool int_no_unimplemented; 68060*/
};
/*this.fpu = { future
int fpu_model;
int fpu_revision;
bool fpu_strict;
bool fpu_softfloat;
bool fpu_no_unimplemented;
};*/
this.chipset = {
mask: 0, //chipset_mask
ntsc: false, //ntscmode
genlock: false, //genlock
colLevel: 0, //collision_level
refreshRate: 0.0, //chipset_refreshrate
refresh: null, //cr[SAEC_Config_Chipset_CR_TOTAL]
/*int cr_selected;
int genlock_image;
int genlock_mix;
TCHAR genlock_image_file[MAX_DPATH];*/
blitter: {
immediate: false, //immediate_blits
waiting: 0, //waiting_blits
cycle_exact: false //blitter_cycle_exact
},
cia: {
todHack: false, //tod_hack
todBug: false, //cs_ciatodbug
tod: 0, //cs_ciaatod
overlay: false, //cs_ciaoverlay
type6526: false //cs_cia6526
},
rtc: {
type: 0, //cs_rtc
adjust: 0 //cs_rtc_adjust
//file: "" //rtcfile
},
//features
compatible: 0, //cs_compatible
mirrorE0: false, //cs_ksmirror_e0
mirrorA8: false, //cs_ksmirror_a8
a1000ram: false, //cs_a1000ram
agnusRev: 0, //cs_agnusrev
agnusDIP: false, //cs_dipagnus
agnusBltBusyBug: false, //cs_agnusbltbusybug
deniseRev: 0, //cs_deniserev
deniseNoEHB: false, //cs_denisenoehb
fatGaryRev: 0, //cs_fatgaryrev
ramseyRev: 0, //cs_ramseyrev
df0idhw: false, //cs_df0idhw
ide: 0, //cs_ide
pcmcia: false, //cs_pcmcia
mbdmac: 0, //cs_mbdmac
jumper1MbChip: false, //cs_1mchipjumper
bogomemIsFast: false, //cs_slowmemisfast
z3AutoConfig: false //cs_z3autoconfig
/*bool cs_cd32cd;
bool cs_cd32c2p;
bool cs_cd32nvram;
int cs_cd32nvram_size;
bool cs_cd32fmv;
bool cs_cdtvcd;
bool cs_cdtvram;
int cs_cdtvcard;
bool cs_cdtvscsi;
bool cs_cdtvcr;
bool cs_resetwarning;
bool cs_bytecustomwritebug; // >= 68040
bool cs_color_burst;
int cs_hacks;*/
};
this.memory = {
rom: new SAEO_Config_File(), //romfile[MAX_DPATH], romident[256];
extRom: new SAEO_Config_File(), //romextfile[MAX_DPATH], romextident[256];
romKey: new SAEO_Config_File(),
amaxRom: new SAEO_Config_File(),
kickShifter: false, //kickshifter
//maprom: 0, //BlizKick
/*struct boardromconfig expansionboard[MAX_EXPANSION_BOARDS];
uae_u32 romextfile2addr;
TCHAR romextfile2[MAX_DPATH];
TCHAR flashfile[MAX_DPATH];
TCHAR cartfile[MAX_DPATH];
TCHAR cartident[256];
TCHAR a2065name[MAX_DPATH];
TCHAR picassoivromfile[MAX_DPATH];
int uaeboard;
int boot_rom;*/
chipSize: 0, //chipmem_size
bogoSize: 0, //bogomem_size
z2FastSize: 0, //fastmem_size
z2FastAutoConfig: false, //fastmem_autoconfig
z3FastSize: 0, //z3fastmem_size
z3Mapping: 0, //z3_mapping_mode
z3AutoConfigStart: 0, //z3autoconfig_start
ramsey: {
lowSize: 0, //mbresmem_low_size /* mainboard */
highSize: 0 //mbresmem_high_size /* processor-slot */
},
custom: [{
addr: 0, //custom_memory_addrs[SAEC_Config_Memory_Custom_MAX]
size: 0, //custom_memory_sizes[SAEC_Config_Memory_Custom_MAX]
mask: 0 //custom_memory_mask[SAEC_Config_Memory_Custom_MAX]
}, {
addr: 0,
size: 0,
mask: 0
}],
logIllegal: false //illegal_mem
/*uae_u32 z3fastmem2_size;
uae_u32 z3chipmem_size;
uae_u32 z3chipmem_start;
uae_u32 fastmem2_size;
uae_u32 mem25bit_size;
uae_u32 rtgmem_size;
bool rtg_hardwareinterrupt;
bool rtg_hardwaresprite;
int rtgmem_type;
bool rtg_more_compatible;
bool picasso96_nocustom;
int picasso96_modeflags;*/
};
this.floppy = {
drive: null, //floppyslots[4]
readOnly: false, //floppy_read_only
//writeLength: 0, //floppy_write_length
randomBitsMin: 0, //floppy_random_bits_min
randomBitsMax: 0, //floppy_random_bits_max
speed: 0, //floppy_speed
autoEXT2: 0 //floppy_auto_ext2
/*int nr_floppies;
int dfxclickvolume_disk[4];
int dfxclickvolume_empty[4];
int dfxclickchannelmask;*/
};
this.mount = {
items: 0, //mountitems
config: null //mountconfig
};
/*struct cdslot cdslots[MAX_TOTAL_SCSI_DEVICES];
int cd_speed;
TCHAR inprecfile[MAX_DPATH];
bool inprec_autoplay;
int filesys_limit;
int filesys_max_name;
int filesys_max_file_size;
bool filesys_inject_icons;
TCHAR filesys_inject_icons_tool[MAX_DPATH];
TCHAR filesys_inject_icons_project[MAX_DPATH];
TCHAR filesys_inject_icons_drawer[MAX_DPATH];
bool filesys_no_uaefsdb;
bool filesys_custom_uaefsdb;*/
this.video = {
id: "",
enabled: false,
//driver: 0,
hideCursor: false,
scandoubler: false, //gfx_scandoubler
framerate: 0, //gfx_framerate
hresolution: 0, //gfx_resolution
vresolution: 0, //gfx_vresolution
pscanlines: 0, //gfx_pscanlines
iscanlines: 0, //gfx_iscanlines
xcenter: 0, //gfx_xcenter
ycenter: 0, //gfx_ycenter
lores_mode: false, //gfx_lores_mode
extrawidth: 0, //gfx_extrawidth
backgroundColor: 0,
//saturation: 0, //gfx_saturation -1000, 1000, 10,
luminance: 0, //gfx_luminance -1000, 1000, 10,
contrast: 0, //gfx_contrast -1000, 1000, 10,
gamma: 0, //gfx_gamma -1000, 1000, 10,
gammaCh: [0,0,0], //gfx_gamma_ch[3]
alpha: 0,
antialias: false,
size: new SAEO_Config_Video_WH(), //gfx_size
size_win: new SAEO_Config_Video_WH(), //gfx_size_win
//size_win_xtra: new Array(6), //gfx_size_win_xtra[6];
size_fs: new SAEO_Config_Video_WH(), //gfx_size_fs;
//size_fs_xtra: new Array(6), //gfx_size_fs_xtra[6];
apmode: null, //gfx_apmode[2]
gf: null, //gf[2]
api: 0, //gfx_api
colorMode: 0, //color_mode
blackerThanBlack: false, //gfx_blackerthanblack
refreshIndicator: false //refresh_indicator
/*int gfx_autoframerate;
bool gfx_autoresolution_vga;
int gfx_autoresolution;
int gfx_autoresolution_delay;
int gfx_autoresolution_minv, gfx_autoresolution_minh;
int gfx_xcenter_pos, gfx_ycenter_pos;
int gfx_xcenter_size, gfx_ycenter_size;
int gfx_max_horizontal, gfx_max_vertical;
bool gfx_threebitcolors;
bool gfx_grayscale;
bool lightboost_strobo;
float rtg_horiz_zoom_mult; //p96
float rtg_vert_zoom_mult; //p96
int monitoremu;*/
};
this.audio = {
bufferFrames: 0,
mode: 0, //produce_sound
channels: 0, //sound_stereo
freq: 0, //sound_freq
stereoSeparation: 0, //sound_stereo_separation
stereoDelay: 0, //sound_mixed_stereo_delay
interpol: 0, //sound_interpol
filter: 0, //sound_filter
filterType: 0 //sound_filter_type
/*int sound_maxbsiz;
int sound_volume_master;
int sound_volume_paula;
int sound_volume_cd;
int sound_volume_board;
bool sound_stereo_swap_paula;
bool sound_stereo_swap_ahi;
bool sound_auto;
bool sound_cdaudio;
bool sound_toccata;
bool sound_toccata_mixer;*/
};
/*struct jport jports[MAX_JPORTS];
struct jport_custom jports_custom[MAX_JPORTS_CUSTOM];
int input_selected_setting;
int input_joymouse_multiplier;
int input_joymouse_deadzone;
int input_joystick_deadzone;
int input_joymouse_speed;
int input_analog_joystick_mult;
int input_analog_joystick_offset;
int input_autofire_linecnt;
int input_mouse_speed;
int input_tablet;
bool tablet_library;
bool input_magic_mouse;
int input_magic_mouse_cursor;
int input_keyboard_type;
int input_autoswitch;
struct uae_input_device joystick_settings[MAX_INPUT_SETTINGS][MAX_INPUT_DEVICES];
struct uae_input_device mouse_settings[MAX_INPUT_SETTINGS][MAX_INPUT_DEVICES];
struct uae_input_device keyboard_settings[MAX_INPUT_SETTINGS][MAX_INPUT_DEVICES];
struct uae_input_device internalevent_settings[MAX_INPUT_SETTINGS][INTERNALEVENT_COUNT];
TCHAR input_config_name[GAMEPORT_INPUT_SETTINGS][256];
int dongle;
int input_contact_bounce;*/
this.ports = [{
type: SAEC_Config_Ports_Type_Mouse,
move: SAEC_Config_Ports_Move_WASD,
fire: [49,50]
}, {
type: SAEC_Config_Ports_Type_Joy1,
move: SAEC_Config_Ports_Move_Arrows,
fire: [16,17]
}];
this.keyboard = {
enabled: true
//KbdLang keyboard_lang;
};
this.serial = {
enabled: false, //use_serial
demand: false //serial_demand
/*bool serial_hwctsrts;
bool serial_direct;
int serial_stopbits;
int serial_crlf;
TCHAR sername[256];*/
};
/*bool parallel_demand;
int parallel_matrix_emulation;
bool parallel_postscript_emulation;
bool parallel_postscript_detection;
int parallel_autoflush_time;
TCHAR ghostscript_parameters[256];
TCHAR prtname[256];*/
/*int leds_on_screen;
int leds_on_screen_mask[2];
struct wh osd_pos;
int keyboard_leds[3];
bool keyboard_leds_in_use;*/
this.hook = {
log: {
error: function(err, msg) {}
},
led: {
power: function(on) {},
hd: function(rw) {},
df: function(unit, dis, cyl, side, rw) {},
fps: function(fps, paused) {},
cpu: function(usage, paused) {}
},
event: {
started: function() {},
stopped: function() {},
reseted: function(hard) {},
paused: function(paused) {}
}
};
this.debug = {
level: 0
};
this.chipset.refresh = new Array(SAEC_Config_Chipset_CR_TOTAL);
for (var vi = 0; vi < SAEC_Config_Chipset_CR_TOTAL; vi++)
this.chipset.refresh[vi] = new SAEO_Config_Chipset_Refresh();
this.floppy.drive = new Array(4);
for (vi = 0; vi < 4; vi++)
this.floppy.drive[vi] = new SAEO_Config_Floppy_Drive();
this.mount.config = new Array(6);
for (vi = 0; vi < 6; vi++)
this.mount.config[vi] = new SAEO_Config_Mount_Data();
this.video.apmode = new Array(2);
for (vi = 0; vi < 2; vi++)
this.video.apmode[vi] = new SAEO_Config_Video_APMode();
this.video.gf = new Array(2);
for (vi = 0; vi < 2; vi++)
this.video.gf[vi] = new SAEO_Config_Video_FilterData();
};
/*---------------------------------*/
function SAEO_Configuration() {
/*---------------------------------*/
/* rom */
/*const MAX_DUPLICATE_EXPANSION_BOARDS = 4;
const MAX_EXPANSION_BOARDS = 4;
struct romconfig {
TCHAR romfile[MAX_DPATH];
TCHAR romident[256];
uae_u32 board_ram_size;
bool autoboot_disabled;
int device_id;
int device_settings;
int subtype;
void *unitdata;
};
const MAX_BOARD_ROMS = 2;
struct boardromconfig {
int device_type;
int device_num;
struct romconfig roms[MAX_BOARD_ROMS];
};*/
/*---------------------------------*/
/* mount */
/*const MAX_TOTAL_SCSI_DEVICES = 8;
function cdslot() {
this.name = "";
this.inuse = false;
this.delayed = false;
this.temporary = false;
this.type = 0;
};*/
/*---------------------------------*/
/* video */
//const APMODE_NATIVE = 0;
//const APMODE_RTG = 1;
/*const MONITOREMU_NONE = 0;
const MONITOREMU_AUTO = 1;
const MONITOREMU_A2024 = 2;
const MONITOREMU_GRAFFITI = 3;
const MONITOREMU_HAM_E = 4;
const MONITOREMU_HAM_E_PLUS = 5;
const MONITOREMU_VIDEODAC18 = 6;
const MONITOREMU_AVIDEO12 = 7;
const MONITOREMU_AVIDEO24 = 8;
const MONITOREMU_FIRECRACKER24 = 9;
const MONITOREMU_DCTV = 10;*/
/*const AUTOSCALE_NONE = 0;
const AUTOSCALE_STATIC_AUTO = 1;
const AUTOSCALE_STATIC_NOMINAL = 2;
const AUTOSCALE_STATIC_MAX = 3;
const AUTOSCALE_NORMAL = 4;
const AUTOSCALE_RESIZE = 5;
const AUTOSCALE_CENTER = 6;
const AUTOSCALE_MANUAL = 7; // use gfx_xcenter_pos and gfx_ycenter_pos
const AUTOSCALE_INTEGER = 8;
const AUTOSCALE_INTEGER_AUTOSCALE = 9;
const AUTOSCALE_SEPARATOR = 10;
const AUTOSCALE_OVERSCAN_BLANK = 11;*/
/*---------------------------------*/
/* input */
/*const MAX_INPUT_DEVICES 20 // maximum number native input devices supported (single type)
const MAX_INPUT_DEVICE_EVENTS 256 // maximum number of native input device"s buttons and axles supported
const MAX_INPUT_SETTINGS 4 // 4 different customization settings
const GAMEPORT_INPUT_SETTINGS 3 // last slot is for gameport panel mappings
const INTERNALEVENT_COUNT 1
const MAX_INPUT_SUB_EVENT 8
const MAX_INPUT_SUB_EVENT_ALL 9
const SPARE_SUB_EVENT 8
struct uae_input_device {
TCHAR *name;
TCHAR *configname;
uae_s16 eventid[MAX_INPUT_DEVICE_EVENTS][MAX_INPUT_SUB_EVENT_ALL];
TCHAR *custom[MAX_INPUT_DEVICE_EVENTS][MAX_INPUT_SUB_EVENT_ALL];
uae_u64 flags[MAX_INPUT_DEVICE_EVENTS][MAX_INPUT_SUB_EVENT_ALL];
uae_s8 port[MAX_INPUT_DEVICE_EVENTS][MAX_INPUT_SUB_EVENT_ALL];
uae_s16 extra[MAX_INPUT_DEVICE_EVENTS];
uae_s8 enabled;
};
const MAX_JPORTS_CUSTOM 6
const MAX_JPORTS 4
const NORMAL_JPORTS 2
const MAX_JPORTNAME 128
struct jport_custom {
TCHAR custom[MAX_DPATH];
};
struct inputdevconfig {
TCHAR name[MAX_JPORTNAME];
TCHAR configname[MAX_JPORTNAME];
};
struct jport {
int id;
int mode; // 0=def,1=mouse,2=joy,3=anajoy,4=lightpen
int autofire;
struct inputdevconfig idc;
bool nokeyboardoverride;
};
const JPORT_NONE -1
const JPORT_AF_NORMAL 1
const JPORT_AF_TOGGLE 2
const JPORT_AF_ALWAYS 3
typedef enum { KBD_LANG_US, KBD_LANG_DK, KBD_LANG_DE, KBD_LANG_SE, KBD_LANG_FR, KBD_LANG_IT, KBD_LANG_ES } KbdLang;
const KBTYPE_AMIGA 0
const KBTYPE_PC1 1
const KBTYPE_PC2 2
const TABLET_OFF 0
const TABLET_MOUSEHACK 1
const TABLET_REAL 2*/
/*-----------------------------------------------------------------------*/
SAEV_config = new SAEO_Config();
default_prefs(SAEV_config);
/*---------------------------------*/
this.setup = function() {
if (fixup_prefs(SAEV_config))
return SAEE_None;
return SAEE_Config_Invalid;
}
this.setModel = function(model, config) {
built_in_prefs(SAEV_config, model, config, 2, 0);
return SAEE_None;
}
this.setDefaults = function() {
default_prefs(SAEV_config);
return SAEE_None;
}
/*-----------------------------------------------------------------------*/
function default_prefs(p) {
//var roms = [ 6, 7, 8, 9, 10, 14, 5, 4, 3, 2, 1, -1 ];
//var i;
//reset_inputdevice_config(p);
//memset(p, 0, sizeof(*p));
//p.turbo_emulation = 0;
//p.turbo_emulation_limit = 0;
p.cpu.model = SAEC_Config_CPU_Model_68000;
p.cpu.speed = SAEC_Config_CPU_Speed_Original;
p.cpu.speedThrottle = 0.0;
p.cpu.clock.multiplier = 0;
p.cpu.clock.frequency = 0;
p.cpu.compatible = 0 ? true : false;
p.cpu.addressSpace24 = true;
/*p.cpu_cycle_exact = 0;
p.cpu_memory_cycle_exact = 0;
p.cpu_idle = 0;
p.mmu_model = 0;*/
/*p.fpu_model = 0;
p.fpu_revision = 0;
p.fpu_strict = 0;
p.fpu_softfloat = 0;*/
p.chipset.mask = SAEC_Config_Chipset_Mask_ECS_AGNUS;
p.chipset.colLevel = SAEC_Config_Chipset_ColLevel_Sprite_Playfield;
p.chipset.ntsc = false;
p.chipset.genlock = false;
var cr;
for (var i = 0; i < p.chipset.refresh.length; i++) {
cr = p.chipset.refresh[i];
cr.index = i;
cr.rate = -1;
}
cr = p.chipset.refresh[SAEC_Config_Chipset_CR_PAL];
cr.index = SAEC_Config_Chipset_CR_PAL;
cr.horiz = -1;
cr.vert = -1;
cr.lace = -1;
cr.vsync = -1;
cr.framelength = -1;
cr.rate = 50.0;
cr.ntsc = false;
cr.locked = false;
cr.label = "PAL";
cr = p.chipset.refresh[SAEC_Config_Chipset_CR_NTSC];
cr.index = SAEC_Config_Chipset_CR_NTSC;
cr.horiz = -1;
cr.vert = -1;
cr.lace = -1;
cr.vsync = -1;
cr.framelength = -1;
cr.rate = 60.0;
cr.ntsc = true;
cr.locked = false;
cr.label = "NTSC";
/*p.cr_selected = -1;
p.genlock_image = 0;
p.genlock_mix = 0;*/
p.chipset.blitter.immediate = false;
p.chipset.blitter.waiting = 0;
p.chipset.blitter.cycle_exact = false;
p.chipset.cia.todHack = false;
p.chipset.cia.todBug = false;
p.chipset.cia.tod = SAEC_Config_Chipset_CIA_TOD_VSync;
p.chipset.cia.overlay = true;
//p.chipset.rtc.type = SAEC_Config_RTC_Type_RF5C01A;
p.chipset.rtc.type = SAEC_Config_RTC_Type_None;
//p.chipset.rtc.file = "";
p.chipset.compatible = SAEC_Config_Chipset_Compatible_Generic;
p.chipset.a1000ram = 0;
p.chipset.mirrorE0 = true;
p.chipset.mirrorA8 = false;
p.chipset.agnusRev = -1;
p.chipset.deniseRev = -1;
p.chipset.fatGaryRev = -1;
p.chipset.ramseyRev = -1;
p.chipset.df0idhw = true;
p.chipset.ide = 0;
p.chipset.pcmcia = false;
p.chipset.mbdmac = 0;
p.chipset.z3AutoConfig = false;
p.chipset.bogomemIsFast = false;
/*p.cs_cd32c2p = p.cs_cd32cd = p.cs_cd32nvram = p.cs_cd32fmv = false;
p.cs_cd32nvram_size = 1024;
p.cs_cdtvcd = p.cs_cdtvram = false;
p.cs_cdtvcard = 0;
p.cs_resetwarning = 1;
p.cs_color_burst = false;*/
//configure_rom(p, roms, 0);
p.memory.rom.clr();
p.memory.extRom.clr();
p.memory.romKey.clr();
p.memory.amaxRom.clr();
//p.memory.maprom = 0; //0x0f000000
/*p.romextfile, "";
p.romextfile2, """;
p.romextfile2addr = 0;
p.flashfile, "";
p.cartfile, "";
p.boot_rom = 0;
*/
p.memory.chipSize = 0x00080000;
p.memory.bogoSize = 0x00080000;
p.memory.z2FastSize = 0x00000000;
p.memory.z2FastAutoConfig = true;
p.memory.z3FastSize = 0x00000000;
p.memory.z3Mapping = SAEC_Config_Memory_z3Mapping_Auto;
p.memory.z3AutoConfigStart = 0x10000000;
p.memory.ramsey.lowSize = 0x00000000;
p.memory.ramsey.highSize = 0x00000000;
p.memory.custom[0].addr = 0;
p.memory.custom[0].size = 0;
p.memory.custom[1].addr = 0;
p.memory.custom[1].size = 0;
p.logIllegal = false;
/*p.fastmem2_size = 0x00000000;
p.mem25bit_size = 0x00000000;
p.z3fastmem2_size = 0x00000000;
p.rtgmem_size = 0x00000000;
p.rtgmem_type = GFXBOARD_UAE_Z3;*/
p.floppy.drive[0].type = SAEC_Config_Floppy_Type_35_DD;
p.floppy.drive[1].type = SAEC_Config_Floppy_Type_35_DD;
p.floppy.drive[2].type = SAEC_Config_Floppy_Type_None;
p.floppy.drive[3].type = SAEC_Config_Floppy_Type_None;
p.floppy.drive[0].file.clr();
p.floppy.drive[1].file.clr();
p.floppy.drive[2].file.clr();
p.floppy.drive[3].file.clr();
p.floppy.readOnly = false;
//p.floppy.writeLength = 0;
p.floppy.randomBitsMin = 1;
p.floppy.randomBitsMax = 3;
p.floppy.speed = 100;
//c.floppy.speed = SAEC_Config_Floppy_Speed_Original;
//c.floppy.speed = SAEC_Config_Floppy_Speed_Turbo;
p.floppy.autoEXT2 = 0;
/*p.nr_floppies = 2;
p.dfxclickvolume_disk[0] = 33;
p.dfxclickvolume_disk[1] = 33;
p.dfxclickvolume_empty[0] = 33;
p.dfxclickvolume_empty[1] = 33;
p.dfxclickchannelmask = 0xffff;*/
//p.mount.items = 0;
for (var i = 0; i < 6; i++) {
p.mount.config[i].configoffset = -1;
p.mount.config[i].unitnum = -1;
}
/*p.cd_speed = 100;
p.inprec_autoplay = true;
p.filesys_limit = 0;
p.filesys_max_name = 107;
p.filesys_max_file_size = 0x7fffffff;
p.filesys_no_uaefsdb = 0;
p.filesys_custom_uaefsdb = 1;*/
p.video.id = "video";
p.video.enabled = true;
p.video.hideCursor = true;
p.video.scandoubler = false;
p.video.framerate = 1;
p.video.hresolution = SAEC_Config_Video_HResolution_HiRes;
p.video.vresolution = SAEC_Config_Video_VResolution_Double;
p.video.pscanlines = 0; //1 enabled, 2 double fields, 3 double fields+
p.video.iscanlines = 0; //0 normal, 1 fields, 2 fields+
p.video.xcenter = 0;
p.video.ycenter = 0;
p.video.backgroundColor = 0x000000;
p.video.luminance = 0;
p.video.contrast = 0;
p.video.gamma = 0;
p.video.alpha = 255;
p.video.antialias = true;
p.video.size_fs.width = screen.width; //800;
p.video.size_fs.height = screen.height; //600;
//p.video.size_win.width = 768;
//p.video.size_win.height = 576;
//p.video.size_win.width = 720;
//p.video.size_win.height = 568;
p.video.size_win.width = SAEC_Video_DEF_AMIGA_WIDTH << 1;
p.video.size_win.height = SAEC_Video_DEF_AMIGA_HEIGHT << 1;
p.video.apmode[0].gfx_display = 1;
p.video.apmode[0].gfx_fullscreen = SAEC_Config_Video_AP_Fullscreen_WINDOW;
p.video.apmode[1].gfx_fullscreen = SAEC_Config_Video_AP_Fullscreen_WINDOW;
p.video.apmode[0].gfx_backbuffers = 0; //2; //1 double, 2 tripple
p.video.apmode[1].gfx_backbuffers = 0;
for (var i = 0; i <= 1; i++) {
var f = p.video.gf[i];
f.gfx_filter = 0;
f.gfx_filter_scanlineratio = (1 << 4) | 1;
for (var j = 0; j <= 2 * MAX_FILTERSHADERS; j++) {
f.gfx_filtershader[i][0] = 0;
f.gfx_filtermask[i][0] = 0;
}
f.gfx_filter_horiz_zoom_mult = 1.0;
f.gfx_filter_vert_zoom_mult = 1.0;
f.gfx_filter_bilinear = 0;
f.gfx_filter_filtermode = 0;
f.gfx_filter_keep_aspect = 0;
f.gfx_filter_autoscale = 0; //AUTOSCALE_STATIC_AUTO;
f.gfx_filter_keep_autoscale_aspect = false;
f.gfx_filteroverlay_overscan = 0;
}
p.video.api = SAEC_Config_Video_API_WebGL;
p.video.colorMode = 2; /* < 5 == 16 bit else 32 bit */
p.video.blackerThanBlack = false;
/*for (i = 0; i < 4; i++) {
p.gfx_size_fs_xtra[i].width = 0;
p.gfx_size_fs_xtra[i].height = 0;
p.gfx_size_win_xtra[i].width = 0;
p.gfx_size_win_xtra[i].height = 0;
}
p.gfx_xcenter_pos = -1;
p.gfx_ycenter_pos = -1;
p.gfx_xcenter_size = -1;
p.gfx_ycenter_size = -1;
p.gfx_max_horizontal = SAEC_Config_Video_HResolution_HiRes;
p.gfx_max_vertical = SAEC_Config_Video_VResolution_Double;
p.gfx_autoresolution_minv = 0;
p.gfx_autoresolution_minh = 0;
p.gfx_autoresolution_vga = true;
p.gfx_autoframerate = 50; //unused by winuae
p.rtg_horiz_zoom_mult = 1.0;
p.rtg_vert_zoom_mult = 1.0;
p.picasso96_nocustom = 1;*/
p.audio.bufferFrames = 4096;
p.audio.mode = SAEC_Config_Audio_Mode_On_Best;
p.audio.channels = SAEC_Config_Audio_Channels_Stereo;
p.audio.stereoSeparation = 10; /* 0-10 resp. 0-100%, 10 == no separation */
p.audio.stereoDelay = 0; /* 0-10, 0 == no delay */
p.audio.freq = SAEC_Config_Audio_Freq_Auto;
//p.audio.interpol = SAEC_Config_Audio_Interpol_Anti;
p.audio.interpol = SAEC_Config_Audio_Interpol_None; /* use no interpolation, for more speed */
p.audio.filter = SAEC_Config_Audio_Filter_Emul;
p.audio.filterType = 0;
/*p.sound_maxbsiz = DEFAULT_SOUND_MAXB;
p.sound_auto = 1;
p.sound_cdaudio = false;*/
p.ports[0].type = SAEC_Config_Ports_Type_Mouse;
p.ports[0].move = SAEC_Config_Ports_Move_WASD;
p.ports[0].fire = [49,50];
p.ports[1].type = SAEC_Config_Ports_Type_Joy1;
p.ports[1].move = SAEC_Config_Ports_Move_Arrows;
p.ports[1].fire = [16,17];
/*memset (&p.jports[0], 0, sizeof (struct jport));
memset (&p.jports[1], 0, sizeof (struct jport));
memset (&p.jports[2], 0, sizeof (struct jport));
memset (&p.jports[3], 0, sizeof (struct jport));
p.jports[0].id = JSEM_MICE;
p.jports[1].id = JSEM_KBDLAYOUT;
p.jports[2].id = -1;
p.jports[3].id = -1;
p.input_tablet = TABLET_OFF;
p.tablet_library = false;
p.input_magic_mouse = 0;
p.input_magic_mouse_cursor = 0;
inputdevice_default_prefs (p);*/
p.keyboard.enabled = true;
//p.keyboard_lang = KBD_LANG_US;
p.serial.enabled = false;
p.serial.demand = false;
//p.serial_hwctsrts = 1;
//p.serial_stopbits = 0;
//p.sername[0] = 0;
/*p.parallel_demand = 0;
p.parallel_matrix_emulation = 0;
p.parallel_postscript_emulation = 0;
p.parallel_postscript_detection = 0;
p.parallel_autoflush_time = 5;
p.ghostscript_parameters[0] = 0;
p.prtname[0] = 0;*/
/*p.leds_on_screen = 0;
p.leds_on_screen_mask[0] = p.leds_on_screen_mask[1] = (1 << SAEC_GUI_LED_MAX) - 1;
p.keyboard_leds_in_use = 0;
p.keyboard_leds[0] = p.keyboard_leds[1] = p.keyboard_leds[2] = 0;*/
//p.debug.level = SAEC_Config_Debug_Level_Error;
p.debug.level = SAEC_Config_Debug_Level_Warn;
//p.debug.level = SAEC_Config_Debug_Level_Info;
//p.debug.level = SAEC_Config_Debug_Level_Log;
}
/*-----------------------------------------------------------------------*/
function buildin_default_prefs_68020(p) {
p.cpu.model = SAEC_Config_CPU_Model_68020;
p.cpu.speed = SAEC_Config_CPU_Speed_Original; //SAEC_Config_CPU_Speed_Maximum;
p.cpu.compatible = 0 ? true : false;
p.cpu.addressSpace24 = true;
p.chipset.mask = SAEC_Config_Chipset_Mask_ECS_AGNUS | SAEC_Config_Chipset_Mask_ECS_DENISE | SAEC_Config_Chipset_Mask_AGA;
p.memory.chipSize = 0x200000;
p.memory.bogoSize = 0;
}
function buildin_default_prefs(p) {
p.cpu.model = SAEC_Config_CPU_Model_68000;
p.cpu.speed = SAEC_Config_CPU_Speed_Original;
p.cpu.clock.multiplier = 0;
p.cpu.clock.frequency = 0;
p.cpu.compatible = false; //true;
p.cpu.addressSpace24 = true;
/*p.fpu_model = 0;
p.fpu_revision = -1;
p.cpu_cycle_exact = 0;
p.cpu_memory_cycle_exact = 0;
p.cpu_idle = 0;
p.turbo_emulation = 0;
p.turbo_emulation_limit = 0;
*/
p.chipset.mask = SAEC_Config_Chipset_Mask_ECS_AGNUS;
p.chipset.colLevel = SAEC_Config_Chipset_ColLevel_Sprite_Playfield;
p.chipset.blitter.immediate = false;
p.chipset.blitter.waiting = 0;
p.chipset.blitter.cycle_exact = false;
p.chipset.cia.todHack = false;
p.chipset.cia.todBug = false;
p.chipset.cia.tod = SAEC_Config_Chipset_CIA_TOD_VSync;
p.chipset.cia.overlay = true;
p.chipset.rtc.type = SAEC_Config_RTC_Type_None;
p.chipset.compatible = SAEC_Config_Chipset_Compatible_Generic;
p.chipset.a1000ram = false;
p.chipset.mirrorE0 = true;
p.chipset.mirrorA8 = false;
p.chipset.agnusRev = -1;
p.chipset.deniseRev = -1;
p.chipset.fatGaryRev = -1;
p.chipset.ramseyRev = -1;
p.chipset.df0idhw = true;
p.chipset.ide = 0;
p.chipset.pcmcia = false;
p.chipset.mbdmac = 0;
p.chipset.jumper1MbChip = false;
/*p.cs_cd32c2p = p.cs_cd32cd = p.cs_cd32nvram = p.cs_cd32fmv = false;
p.cs_cdtvcd = p.cs_cdtvram = false;
p.cs_cdtvcard = 0;
p.cs_resetwarning = 0;
*/
p.memory.chipSize = 0x00080000;
p.memory.bogoSize = 0x00080000;
p.memory.z2FastSize = 0x00000000;
p.memory.z3FastSize = 0x00000000;
p.memory.ramsey.lowSize = 0x00000000;
p.memory.ramsey.highSize = 0x00000000;
//p.memory.maprom = 0;
/*p.mem25bit_size = 0x00000000;
p.z3fastmem2_size = 0x00000000;
p.z3chipmem_size = 0x00000000;
p.rtgmem_size = 0x00000000;
p.rtgmem_type = GFXBOARD_UAE_Z3;*/
/*p.romextfile, "";
p.romextfile2, "";
set_device_rom(p, NULL, SAEC_RomType_CPUBOARD, 0);*/
p.floppy.drive[0].type = SAEC_Config_Floppy_Type_35_DD;
//if (p.nr_floppies != 1 && p.nr_floppies != 2) p.nr_floppies = 2;
//p.floppy.drive[1].type = p.nr_floppies >= 2 ? SAEC_Config_Floppy_Type_35_DD : SAEC_Config_Floppy_Type_None;
p.floppy.drive[1].type = SAEC_Config_Floppy_Type_35_DD;
p.floppy.drive[2].type = SAEC_Config_Floppy_Type_None;
p.floppy.drive[3].type = SAEC_Config_Floppy_Type_None;
p.floppy.speed = 100;
//p.mount.items = 0;
if (p.audio.mode == SAEC_Config_Audio_Mode_Off) p.audio.mode = SAEC_Config_Audio_Mode_Off_Emul;
/*p.sound_volume_master = 0;
p.sound_volume_paula = 0;
p.sound_volume_cd = 0;*/
/*p.prtname[0] = 0;
p.sername[0] = 0;*/
}
function built_in_chipset_prefs(p) {
if (p.chipset.compatible == SAEC_Config_Chipset_Compatible_Manual)
return 1;
p.chipset.cia.todBug = false;
p.chipset.cia.tod = SAEC_Config_Chipset_CIA_TOD_VSync;
p.chipset.cia.overlay = true;
p.chipset.cia.type6526 = false;
p.chipset.rtc.type = SAEC_Config_RTC_Type_None;
p.chipset.rtc.adjust = 0;
p.chipset.a1000ram = 0;
p.chipset.mirrorE0 = true;
p.chipset.mirrorA8 = false;
p.chipset.agnusRev = -1;
p.chipset.agnusDIP = false;
p.chipset.agnusBltBusyBug = false;
p.chipset.deniseRev = -1;
p.chipset.deniseNoEHB = false;
p.chipset.fatGaryRev = -1;
p.chipset.ramseyRev = -1;
p.chipset.df0idhw = true;
p.chipset.ide = 0;
p.chipset.pcmcia = false;
p.chipset.mbdmac = 0;
p.chipset.z3AutoConfig = false;
p.chipset.bogomemIsFast = false;
/*p.cs_cd32c2p = p.cs_cd32cd = p.cs_cd32nvram = 0;
p.cs_cdtvcd = p.cs_cdtvram = p.cs_cdtvscsi = p.cs_cdtvcr = 0;
p.cs_resetwarning = 1;
p.cs_bytecustomwritebug = false;*/
switch (p.chipset.compatible) {
case SAEC_Config_Chipset_Compatible_Generic: // generic
if (p.cpu.model >= SAEC_Config_CPU_Model_68020) {
// big box-like
p.chipset.rtc.type = SAEC_Config_RTC_Type_RF5C01A;
p.chipset.fatGaryRev = 0;
p.chipset.ramseyRev = 0x0f;
p.chipset.ide = -1;
p.chipset.mbdmac = -1;
} else if (p.cpu.compatible) {
// very A500-like
p.chipset.df0idhw = false;
//p.cs_resetwarning = 0;
if (p.memory.bogoSize || p.memory.chipSize > 0x80000 || p.memory.z2FastSize)
p.chipset.rtc.type = SAEC_Config_RTC_Type_MSM6242B;
p.chipset.cia.todBug = true;
} else {
// sort of A500-like
p.chipset.ide = -1;
p.chipset.rtc.type = SAEC_Config_RTC_Type_MSM6242B;
}
break;
case SAEC_Config_Chipset_Compatible_CDTV: // CDTV
p.chipset.rtc.type = SAEC_Config_RTC_Type_MSM6242B;
//p.cs_cdtvcd = p.cs_cdtvram = 1;
p.chipset.df0idhw = true;
p.chipset.mirrorE0 = false;
break;
case SAEC_Config_Chipset_Compatible_CDTVCR: // CDTV-CR
p.chipset.rtc.type = SAEC_Config_RTC_Type_MSM6242B;
//p.cs_cdtvcd = p.cs_cdtvram = 1;
//p.cs_cdtvcr = true;
p.chipset.df0idhw = true;
p.chipset.mirrorE0 = false;
p.chipset.ide = SAEC_Config_Chipset_IDE_A600A1200;
p.chipset.pcmcia = true;
p.chipset.mirrorA8 = true;
p.chipset.cia.overlay = false;
//p.cs_resetwarning = 0;
p.chipset.cia.todBug = true;
break;
case SAEC_Config_Chipset_Compatible_CD32: // CD32
//p.cs_cd32c2p = p.cs_cd32cd = p.cs_cd32nvram = true;
p.chipset.mirrorE0 = false;
p.chipset.mirrorA8 = true;
p.chipset.cia.overlay = false;
//p.cs_resetwarning = 0;
break;
case SAEC_Config_Chipset_Compatible_A500: // A500
p.chipset.df0idhw = false;
//p.cs_resetwarning = 0;
if (p.memory.bogoSize || p.memory.chipSize > 0x80000 || p.memory.z2FastSize)
p.chipset.rtc.type = SAEC_Config_RTC_Type_MSM6242B;
p.chipset.cia.todBug = true;
break;
case SAEC_Config_Chipset_Compatible_A500P: // A500+
p.chipset.rtc.type = SAEC_Config_RTC_Type_MSM6242B;
//p.cs_resetwarning = 0;
p.chipset.cia.todBug = true;
break;
case SAEC_Config_Chipset_Compatible_A600: // A600
p.chipset.ide = SAEC_Config_Chipset_IDE_A600A1200;
p.chipset.pcmcia = true;
p.chipset.mirrorA8 = true;
p.chipset.cia.overlay = false;
//p.cs_resetwarning = 0;
p.chipset.cia.todBug = true;
break;
case SAEC_Config_Chipset_Compatible_A1000: // A1000
p.chipset.a1000ram = 1;
p.chipset.cia.tod = p.chipset.ntsc ? SAEC_Config_Chipset_CIA_TOD_60Hz : SAEC_Config_Chipset_CIA_TOD_50Hz;
p.chipset.mirrorE0 = false;
p.chipset.agnusBltBusyBug = true;
p.chipset.agnusDIP = true;
p.chipset.cia.todBug = true;
break;
case SAEC_Config_Chipset_Compatible_A1000V: // A1000 Prototype
p.chipset.cia.tod = p.chipset.ntsc ? SAEC_Config_Chipset_CIA_TOD_60Hz : SAEC_Config_Chipset_CIA_TOD_50Hz;
p.chipset.mirrorE0 = false;
p.chipset.agnusBltBusyBug = true;
p.chipset.agnusDIP = true;
p.chipset.deniseNoEHB = true;
break;
case SAEC_Config_Chipset_Compatible_A1200: // A1200
p.chipset.ide = SAEC_Config_Chipset_IDE_A600A1200;
p.chipset.pcmcia = true;
p.chipset.mirrorA8 = true;
p.chipset.cia.overlay = false;
if (p.memory.z2FastSize || p.memory.z3FastSize)
p.chipset.rtc.type = SAEC_Config_RTC_Type_MSM6242B;
break;
case SAEC_Config_Chipset_Compatible_A2000: // A2000
//p.chipset.rtc.type = SAEC_Config_RTC_Type_MSM6242B;
p.chipset.rtc.type = SAEC_Config_RTC_Type_MSM6242B_A2000; //OWN
p.chipset.cia.tod = p.chipset.ntsc ? SAEC_Config_Chipset_CIA_TOD_60Hz : SAEC_Config_Chipset_CIA_TOD_50Hz;
p.chipset.cia.todBug = true;
break;
case SAEC_Config_Chipset_Compatible_A3000: // A3000
p.chipset.rtc.type = SAEC_Config_RTC_Type_RF5C01A;
p.chipset.fatGaryRev = 0;
p.chipset.ramseyRev = 0x0d;
p.chipset.mbdmac = 1;
p.chipset.mirrorE0 = false;
p.chipset.cia.tod = p.chipset.ntsc ? SAEC_Config_Chipset_CIA_TOD_60Hz : SAEC_Config_Chipset_CIA_TOD_50Hz;
p.chipset.z3AutoConfig = true;
break;
case SAEC_Config_Chipset_Compatible_A4000: // A4000
p.chipset.rtc.type = SAEC_Config_RTC_Type_RF5C01A;
p.chipset.fatGaryRev = 0;
p.chipset.ramseyRev = 0x0f;
p.chipset.ide = SAEC_Config_Chipset_IDE_A4000;
p.chipset.mbdmac = 0;
p.chipset.mirrorA8 = false;
p.chipset.mirrorE0 = false;
p.chipset.cia.overlay = false;
p.chipset.z3AutoConfig = true;
break;
case SAEC_Config_Chipset_Compatible_A4000T: // A4000T
p.chipset.rtc.type = SAEC_Config_RTC_Type_RF5C01A;
p.chipset.fatGaryRev = 0;
p.chipset.ramseyRev = 0x0f;
p.chipset.ide = SAEC_Config_Chipset_IDE_A4000;
p.chipset.mbdmac = 2;
p.chipset.mirrorA8 = false;
p.chipset.mirrorE0 = false;
p.chipset.cia.overlay = false;
p.chipset.z3AutoConfig = true;
break;
}
//if (p.cpu.model >= SAEC_Config_CPU_Model_68040) p.cs_bytecustomwritebug = true;
return 1;
}
/* 0: cycle-exact
* 1: more compatible
* 2: no more compatible, no 100% sound
* 3: no more compatible, waiting blits, no 100% sound
*/
function set_68000_compa(p, compa) {
p.cpu.clock.multiplier = 2 << 8;
switch (compa) {
case 0:
p.chipset.blitter.cycle_exact = true; //p.cpu_cycle_exact = p.cpu_memory_cycle_exact = p.chipset.blitter.cycle_exact = true;
break;
case 1:
p.cpu.compatible = true;
break;
case 2: //used
p.cpu.compatible = false;
break;
/*case 3:
p.audio.mode = SAEC_Config_Audio_Mode_On;
p.cpu.compatible = false;
break;*/
}
}
function set_68020_compa(p, compa, cd32) {
switch (compa) {
case 0:
p.chipset.blitter.cycle_exact = true;
//p.cpu.speed = SAEC_Config_CPU_Speed_Original;
/*if (p.cpu.model == SAEC_Config_CPU_Model_68020) {
p.cpu_cycle_exact = 1;
p.cpu_memory_cycle_exact = 1;
p.cpu.clock.multiplier = 4 << 8;
}*/
break;
case 1:
p.cpu.compatible = true;
//p.cpu.speed = SAEC_Config_CPU_Speed_Original;
break;
case 2: //used
p.cpu.compatible = false;
//p.cpu.speed = SAEC_Config_CPU_Speed_Maximum;
//p.cpu.addressSpace24 = false;
break;
/*case 3:
p.cpu.compatible = false;
p.cpu.addressSpace24 = false;
break;*/
}
}
function bip_a3000(p, config, compa, romcheck) {
/*int roms[2];
if (config == 2) roms[0] = 61;
else if (config == 1) roms[0] = 71;
else roms[0] = 59;
roms[1] = -1;*/
p.memory.bogoSize = 0;
p.memory.chipSize = 0x200000;
//p.memory.ramsey.lowSize = 8 * 1024 * 1024;
p.memory.ramsey.lowSize = 2 * 1024 * 1024; //OWN
p.cpu.model = SAEC_Config_CPU_Model_68030;
//p.cpu.speed = SAEC_Config_CPU_Speed_Maximum; //OWN
p.cpu.compatible = p.cpu.addressSpace24 = false;
/*p.fpu_model = 68882;
p.fpu_no_unimplemented = true;
if (compa == 0)
p.mmu_model = 68030;
else
p.cachesize = MAX_JIT_CACHE;*/
p.chipset.mask = SAEC_Config_Chipset_Mask_ECS_AGNUS | SAEC_Config_Chipset_Mask_ECS_DENISE;
p.chipset.blitter.immediate = false;
p.audio.mode = SAEC_Config_Audio_Mode_On;
p.floppy.drive[0].type = SAEC_Config_Floppy_Type_35_HD;
p.floppy.speed = 0;
//p.cpu_idle = 150;
p.chipset.compatible = SAEC_Config_Chipset_Compatible_A3000;
built_in_chipset_prefs(p);
p.chipset.cia.tod = p.chipset.ntsc ? SAEC_Config_Chipset_CIA_TOD_60Hz : SAEC_Config_Chipset_CIA_TOD_50Hz;
return 1; //configure_rom(p, roms, romcheck);
}
function bip_a4000(p, config, compa, romcheck) {
/*int roms[8];
roms[0] = 16;
roms[1] = 31;
roms[2] = 13;
roms[3] = 12;
roms[4] = -1;*/
p.memory.bogoSize = 0;
p.memory.chipSize = 0x200000;
p.memory.ramsey.lowSize = 8 * 1024 * 1024;
p.cpu.model = SAEC_Config_CPU_Model_68030;
//p.cpu.speed = SAEC_Config_CPU_Speed_Maximum; //OWN
p.cpu.compatible = p.cpu.addressSpace24 = false;
//p.fpu_model = 68882;
/*if (config == 1) {
p.cpu.model = SAEC_Config_CPU_Model_68040;
//p.fpu_model = 68040;
}*/
p.chipset.mask = SAEC_Config_Chipset_Mask_AGA | SAEC_Config_Chipset_Mask_ECS_AGNUS | SAEC_Config_Chipset_Mask_ECS_DENISE;
p.chipset.blitter.immediate = false;
p.audio.mode = SAEC_Config_Audio_Mode_On;
p.floppy.drive[0].type = SAEC_Config_Floppy_Type_35_HD;
p.floppy.drive[1].type = SAEC_Config_Floppy_Type_35_HD;
p.floppy.speed = 0;
//p.cpu_idle = 150;
p.chipset.compatible = SAEC_Config_Chipset_Compatible_A4000;
built_in_chipset_prefs(p);
p.chipset.cia.tod = p.chipset.ntsc ? SAEC_Config_Chipset_CIA_TOD_60Hz : SAEC_Config_Chipset_CIA_TOD_50Hz;
return 1; //configure_rom (p, roms, romcheck);
}
function bip_a4000t(p, config, compa, romcheck) {
/*int roms[8];
roms[0] = 16;
roms[1] = 31;
roms[2] = 13;
roms[3] = -1;*/
p.memory.bogoSize = 0;
p.memory.chipSize = 0x200000;
p.memory.ramsey.lowSize = 8 * 1024 * 1024;
p.cpu.model = SAEC_Config_CPU_Model_68030;
//p.cpu.speed = SAEC_Config_CPU_Speed_Maximum; //OWN
p.cpu.compatible = p.cpu.addressSpace24 = false;
//p.fpu_model = 68882;
/*if (config == 1) {
p.cpu.model = SAEC_Config_CPU_Model_68040;
//p.fpu_model = 68040;
}*/
p.chipset.mask = SAEC_Config_Chipset_Mask_AGA | SAEC_Config_Chipset_Mask_ECS_AGNUS | SAEC_Config_Chipset_Mask_ECS_DENISE;
p.chipset.blitter.immediate = false;
p.audio.mode = SAEC_Config_Audio_Mode_On;
p.floppy.drive[0].type = SAEC_Config_Floppy_Type_35_HD;
p.floppy.drive[1].type = SAEC_Config_Floppy_Type_35_HD;
p.floppy.speed = 0;
//p.cpu_idle = 150;
p.chipset.compatible = SAEC_Config_Chipset_Compatible_A4000T;
built_in_chipset_prefs(p);
p.chipset.cia.tod = p.chipset.ntsc ? SAEC_Config_Chipset_CIA_TOD_60Hz : SAEC_Config_Chipset_CIA_TOD_50Hz;
return 1; //configure_rom (p, roms, romcheck);
}
function bip_velvet(p, config, compa, romcheck) {
p.chipset.mask = 0;
p.memory.bogoSize = 0;
p.audio.filter = SAEC_Config_Audio_Filter_On;
set_68000_compa(p, compa);
p.floppy.drive[1].type = SAEC_Config_Floppy_Type_None;
p.chipset.bogomemIsFast = true;
p.chipset.agnusDIP = true;
p.chipset.agnusBltBusyBug = true;
p.chipset.compatible = SAEC_Config_Chipset_Compatible_A1000V;
built_in_chipset_prefs(p);
p.chipset.deniseNoEHB = true;
p.chipset.cia.type6526 = true;
p.memory.chipSize = 0x40000;
}
function bip_a1000(p, config, compa, romcheck) {
/*int roms[2];
roms[0] = 24;
roms[1] = -1;*/
p.chipset.mask = 0;
p.memory.bogoSize = 0;
p.audio.filter = SAEC_Config_Audio_Filter_On;
set_68000_compa(p, compa);
p.floppy.drive[1].type = SAEC_Config_Floppy_Type_None;
p.chipset.bogomemIsFast = true;
p.chipset.agnusDIP = true;
p.chipset.agnusBltBusyBug = true;
p.chipset.compatible = SAEC_Config_Chipset_Compatible_A1000;
built_in_chipset_prefs(p);
if (config == 1)
p.memory.chipSize = 0x40000;
else if (config == 2) {
p.chipset.deniseNoEHB = true;
p.memory.chipSize = 0x40000;
} else if (config == 3) {
//roms[0] = 125;
//roms[1] = -1;
bip_velvet(p, config, compa, romcheck);
}
return 1; //configure_rom (p, roms, romcheck);
}
function bip_cdtvcr(p, config, compa, romcheck) {
//int roms[4];
p.memory.bogoSize = 0;
p.memory.chipSize = 0x100000;
p.chipset.mask = SAEC_Config_Chipset_Mask_ECS_AGNUS | SAEC_Config_Chipset_Mask_ECS_DENISE;
//p.cs_cdtvcd = p.cs_cdtvram = true;
//p.cs_cdtvcr = true;
p.chipset.rtc.type = SAEC_Config_RTC_Type_MSM6242B;
//p.nr_floppies = 0;
p.floppy.drive[0].type = SAEC_Config_Floppy_Type_None;
p.floppy.drive[1].type = SAEC_Config_Floppy_Type_None;
set_68000_compa(p, compa);
p.chipset.compatible = SAEC_Config_Chipset_Compatible_CDTVCR;
built_in_chipset_prefs(p);
/*fetch_datapath (p.flashfile, sizeof (p.flashfile) / sizeof (TCHAR));
p.flashfile = "cdtv-cr.nvr";
roms[0] = 9;
roms[1] = 10;
roms[2] = -1;
if (!configure_rom (p, roms, romcheck)) return 0;
roms[0] = 108;
roms[1] = 107;
roms[2] = -1;
if (!configure_rom (p, roms, romcheck)) return 0;*/
return 1;
}
function bip_cdtv(p, config, compa, romcheck) {
//int roms[4];
if (config == 1)
return bip_cdtvcr(p, config - 2, compa, romcheck);
p.memory.bogoSize = 0;
p.memory.chipSize = 0x100000;
p.chipset.mask = SAEC_Config_Chipset_Mask_ECS_AGNUS;
//p.cs_cdtvcd = p.cs_cdtvram = 1;
//if (config > 0) p.cs_cdtvcard = 64;
p.chipset.rtc.type = SAEC_Config_RTC_Type_MSM6242B;
//p.nr_floppies = 0;
p.floppy.drive[0].type = SAEC_Config_Floppy_Type_None;
p.floppy.drive[1].type = SAEC_Config_Floppy_Type_None;
set_68000_compa(p, compa);
p.chipset.compatible = SAEC_Config_Chipset_Compatible_CDTV;
built_in_chipset_prefs(p);
/*fetch_datapath (p.flashfile, sizeof (p.flashfile) / sizeof (TCHAR));
_tcscat (p.flashfile, "cdtv.nvr";
roms[0] = 6;
roms[1] = 32;
roms[2] = -1;
if (!configure_rom (p, roms, romcheck)) return 0;
roms[0] = 20;
roms[1] = 21;
roms[2] = 22;
roms[3] = -1;
if (!configure_rom (p, roms, romcheck)) return 0;*/
return 1;
}
function bip_cd32(p, config, compa, romcheck) {
//int roms[3];
buildin_default_prefs_68020(p);
//p.cs_cd32c2p = p.cs_cd32cd = p.cs_cd32nvram = true;
//p.nr_floppies = 0;
p.floppy.drive[0].type = SAEC_Config_Floppy_Type_None;
p.floppy.drive[1].type = SAEC_Config_Floppy_Type_None;
set_68020_compa(p, compa, true);
p.chipset.compatible = SAEC_Config_Chipset_Compatible_CD32;
built_in_chipset_prefs(p);
/*fetch_datapath (p.flashfile, sizeof (p.flashfile) / sizeof (TCHAR));
_tcscat (p.flashfile, "cd32.nvr";
roms[0] = 64;
roms[1] = -1;
if (!configure_rom (p, roms, 0)) {
roms[0] = 18;
roms[1] = -1;
if (!configure_rom (p, roms, romcheck))
return 0;
roms[0] = 19;
if (!configure_rom (p, roms, romcheck))
return 0;
}
if (config > 0) {
//p.cs_cd32fmv = true;
roms[0] = 74;
roms[1] = 23;
roms[2] = -1;
if (!configure_rom (p, roms, romcheck))
return 0;
}*/
return 1;
}
function bip_a1200(p, config, compa, romcheck) {
/*int roms[4];
roms[0] = 11;
roms[1] = 15;
roms[2] = 31;
roms[3] = -1;*/
buildin_default_prefs_68020(p);
p.chipset.rtc.type = SAEC_Config_RTC_Type_None;
p.chipset.compatible = SAEC_Config_Chipset_Compatible_A1200;
built_in_chipset_prefs(p);
if (config == 1) { //4mb fastram extended
p.memory.z2FastSize = 0x400000;
p.chipset.rtc.type = SAEC_Config_RTC_Type_MSM6242B;
}
set_68020_compa(p, compa, false);
return 1; //configure_rom (p, roms, romcheck);
}
function bip_a600(p, config, compa, romcheck) {
/*int roms[4];
roms[0] = 10;
roms[1] = 9;
roms[2] = 8;
roms[3] = -1;*/
set_68000_compa(p, compa);
p.chipset.compatible = SAEC_Config_Chipset_Compatible_A600;
built_in_chipset_prefs(p);
p.memory.bogoSize = 0;
p.memory.chipSize = 0x100000;
if (config == 1) {
p.chipset.rtc.type = SAEC_Config_RTC_Type_MSM6242B;
p.memory.chipSize = 0x200000;
}
else if (config == 2) {
p.chipset.rtc.type = SAEC_Config_RTC_Type_MSM6242B;
p.memory.chipSize = 0x200000;
p.memory.z2FastSize = 0x400000;
}
p.chipset.mask = SAEC_Config_Chipset_Mask_ECS_AGNUS | SAEC_Config_Chipset_Mask_ECS_DENISE;
return 1; //configure_rom (p, roms, romcheck);
}
function bip_a500p(p, config, compa, romcheck) {
/*int roms[2];
roms[0] = 7;
roms[1] = -1;*/
set_68000_compa(p, compa);
p.chipset.compatible = SAEC_Config_Chipset_Compatible_A500P;
built_in_chipset_prefs(p);
p.memory.bogoSize = 0;
p.memory.chipSize = 0x100000;
if (config == 1) {
//p.chipset.rtc.type = SAEC_Config_RTC_Type_MSM6242B;
p.memory.chipSize = 0x200000;
}
else if (config == 2) {
//p.chipset.rtc.type = SAEC_Config_RTC_Type_MSM6242B;
p.memory.chipSize = 0x200000;
p.memory.z2FastSize = 0x400000;
}
p.chipset.mask = SAEC_Config_Chipset_Mask_ECS_AGNUS | SAEC_Config_Chipset_Mask_ECS_DENISE;
return 1; //configure_rom (p, roms, romcheck);
}
function bip_a500(p, config, compa, romcheck) {
//int roms[4]; roms[0] = roms[1] = roms[2] = roms[3] = -1;
switch (config) {
case 0: // KS 1.3, OCS Agnus, 0.5M Chip + 0.5M Slow
//roms[0] = 6;
//roms[1] = 32;
p.chipset.mask = 0;
break;
case 1: // KS 1.3, ECS Agnus, 0.5M Chip + 0.5M Slow
//roms[0] = 6;
//roms[1] = 32;
break;
case 2: // KS 1.3, ECS Agnus, 1.0M Chip
//roms[0] = 6;
//roms[1] = 32;
p.memory.bogoSize = 0;
p.memory.chipSize = 0x100000;
break;
/*case 3: // KS 1.3, OCS Agnus, 0.5M Chip
//roms[0] = 6;
//roms[1] = 32;
p.memory.bogoSize = 0;
p.chipset.mask = 0;
p.chipset.rtc.type = SAEC_Config_RTC_Type_None;
p.floppy.drive[1].type = SAEC_Config_Floppy_Type_None;
break;
case 4: // KS 1.2, OCS Agnus, 0.5M Chip
//roms[0] = 5;
//roms[1] = 4;
//roms[2] = 3;
p.memory.bogoSize = 0;
p.chipset.mask = 0;
p.chipset.rtc.type = SAEC_Config_RTC_Type_None;
p.floppy.drive[1].type = SAEC_Config_Floppy_Type_None;
break;
case 5: // KS 1.2, OCS Agnus, 0.5M Chip + 0.5M Slow
//roms[0] = 5;
//roms[1] = 4;
//roms[2] = 3;
p.chipset.mask = 0;
break;*/
}
set_68000_compa(p, compa);
p.chipset.compatible = SAEC_Config_Chipset_Compatible_A500;
built_in_chipset_prefs(p);
return 1; //configure_rom (p, roms, romcheck);
}
function bip_a2000(p, config, compa, romcheck) {
p.chipset.compatible = SAEC_Config_Chipset_Compatible_A2000;
built_in_chipset_prefs(p);
return 1;
}
/*function bip_super(p, config, compa, romcheck) {
int roms[7];
roms[0] = 16;
roms[1] = 31;
roms[2] = 15;
roms[3] = 14;
roms[4] = 12;
roms[5] = 11;
roms[6] = -1;
p.memory.bogoSize = 0;
p.memory.chipSize = 0x400000;
p.memory.z3FastSize = 8 * 1024 * 1024;
//p.rtgmem_size = 16 * 1024 * 1024;
p.cpu.model = SAEC_Config_CPU_Model_68040;
//p.fpu_model = 68040;
p.chipset.mask = SAEC_Config_Chipset_Mask_AGA | SAEC_Config_Chipset_Mask_ECS_AGNUS | SAEC_Config_Chipset_Mask_ECS_DENISE;
p.cpu.compatible = p.cpu.addressSpace24 = false;
p.cpu.speed = SAEC_Config_CPU_Speed_Maximum;
p.chipset.blitter.immediate = true;
p.audio.mode = SAEC_Config_Audio_Mode_On;
p.floppy.drive[0].type = SAEC_Config_Floppy_Type_35_HD;
p.floppy.drive[1].type = SAEC_Config_Floppy_Type_35_HD;
p.floppy.speed = 0;
//p.cpu_idle = 150;
//p.picasso96_nocustom = 1;
p.chipset.compatible = SAEC_Config_Chipset_Compatible_Generic;
built_in_chipset_prefs(p);
p.chipset.ide = -1;
p.chipset.cia.tod = p.chipset.ntsc ? SAEC_Config_Chipset_CIA_TOD_60Hz : SAEC_Config_Chipset_CIA_TOD_50Hz;
//_tcscat(p.flashfile, "battclock.nvr";
return 1; //configure_rom (p, roms, romcheck);
}
function bip_arcadia(p, config, compa, romcheck) {
int roms[4], i;
struct romlist **rl;
p.memory.bogoSize = 0;
p.chipset.mask = 0;
p.chipset.rtc.type = SAEC_Config_RTC_Type_None;
p.nr_floppies = 0;
p.floppy.drive[0].type = SAEC_Config_Floppy_Type_None;
p.floppy.drive[1].type = SAEC_Config_Floppy_Type_None;
set_68000_compa (p, compa);
p.chipset.compatible = SAEC_Config_Chipset_Compatible_A500;
built_in_chipset_prefs(p);
fetch_datapath (p.flashfile, sizeof (p.flashfile) / sizeof (TCHAR));
_tcscat (p.flashfile, "arcadia.nvr";
roms[0] = 5;
roms[1] = 4;
roms[2] = -1;
if (!configure_rom (p, roms, romcheck))
return 0;
roms[0] = 51;
roms[1] = 49;
roms[2] = -1;
if (!configure_rom (p, roms, romcheck))
return 0;
rl = getarcadiaroms ();
for (i = 0; rl[i]; i++) {
if (config-- == 0) {
roms[0] = rl[i]->rd->id;
roms[1] = -1;
configure_rom (p, roms, 0);
break;
}
}
xfree (rl);
return 1;
}*/
function built_in_prefs(p, model, config, compa, romcheck) {
var v = 0;
buildin_default_prefs(p);
switch (model) {
case SAEC_Model_A500: v = bip_a500(p, config, compa, romcheck); break;
case SAEC_Model_A500P: v = bip_a500p(p, config, compa, romcheck); break;
case SAEC_Model_A600: v = bip_a600(p, config, compa, romcheck); break;
case SAEC_Model_A1000: v = bip_a1000(p, config, compa, romcheck); break;
case SAEC_Model_A1200: v = bip_a1200(p, config, compa, romcheck); break;
case SAEC_Model_A2000: v = bip_a2000(p, config, compa, romcheck); break; //OWN
case SAEC_Model_A3000: v = bip_a3000(p, config, compa, romcheck); break;
case SAEC_Model_A4000: v = bip_a4000(p, config, compa, romcheck); break;
case SAEC_Model_A4000T: v = bip_a4000t(p, config, compa, romcheck); break;
case SAEC_Model_CD32: v = bip_cd32(p, config, compa, romcheck); break;
case SAEC_Model_CDTV: v = bip_cdtv(p, config, compa, romcheck); break;
/*case 10: v = bip_arcadia(p, config , compa, romcheck); break;
case 11: v = bip_super(p, config, compa, romcheck); break;*/
}
//if ((p.cpu.model >= SAEC_Config_CPU_Model_68020 || !p.cpu_cycle_exact || !p.cpu_memory_cycle_exact) && !p.chipset.blitter.immediate)
if (p.cpu.model >= SAEC_Config_CPU_Model_68020 && !p.chipset.blitter.immediate)
p.chipset.blitter.waiting = 1;
if (p.audio.filterType == SAEC_Config_Audio_FilterType_A500 && (p.chipset.mask & SAEC_Config_Chipset_Mask_AGA))
p.audio.filterType = SAEC_Config_Audio_FilterType_A1200;
else if (p.audio.filterType == SAEC_Config_Audio_FilterType_A1200 && !(p.chipset.mask & SAEC_Config_Chipset_Mask_AGA))
p.audio.filterType = SAEC_Config_Audio_FilterType_A500;
//if (p.cpu.model >= SAEC_Config_CPU_Model_68040) p.cs_bytecustomwritebug = true;
return v;
}
/*-----------------------------------------------------------------------*/
/*-----------------------------------------------------------------------*/
/*-----------------------------------------------------------------------*/
function fixup_prefs_dim2(wh) {
if (wh.special)
return;
if (wh.width < SAEC_Video_MIN_UAE_WIDTH) {
SAEF_warn("config.fixup_prefs_dim2() Width (%d) min is %d.", wh.width, SAEC_Video_MIN_UAE_WIDTH);
wh.width = SAEC_Video_MIN_UAE_WIDTH;
}
if (wh.height < SAEC_Video_MIN_UAE_HEIGHT) {
SAEF_warn("config.fixup_prefs_dim2() Height (%d) min is %d.", wh.height, SAEC_Video_MIN_UAE_HEIGHT);
wh.height = SAEC_Video_MIN_UAE_HEIGHT;
}
if (wh.width > SAEC_Video_MAX_UAE_WIDTH) {
SAEF_warn("config.fixup_prefs_dim2() Width (%d) max is %d.", wh.width, SAEC_Video_MAX_UAE_WIDTH);
wh.width = SAEC_Video_MAX_UAE_WIDTH;
}
if (wh.height > SAEC_Video_MAX_UAE_HEIGHT) {
SAEF_warn("config.fixup_prefs_dim2() Height (%d) max is %d.", wh.height, SAEC_Video_MAX_UAE_HEIGHT);
wh.height = SAEC_Video_MAX_UAE_HEIGHT;
}
}
function fixup_prefs_dimensions(p) {
fixup_prefs_dim2(p.video.size_win);
fixup_prefs_dim2(p.video.size_fs);
if (p.video.apmode[1].gfx_vsync)
p.video.apmode[1].gfx_vsyncmode = 1;
for (var i = 0; i < 2; i++) {
var ap = p.video.apmode[i];
ap.gfx_vflip = 0;
ap.gfx_strobo = false;
if (ap.gfx_vsync) {
if (ap.gfx_vsyncmode) {
// low latency vsync: no flip only if no-buffer
if (ap.gfx_backbuffers >= 1)
ap.gfx_vflip = 1;
if (!i && ap.gfx_backbuffers == 2)
ap.gfx_vflip = 1;
ap.gfx_strobo = p.lightboost_strobo;
} else {
// legacy vsync: always wait for flip
ap.gfx_vflip = -1;
if (p.video.api == SAEC_Config_Video_API_WebGL && ap.gfx_backbuffers < 1)
ap.gfx_backbuffers = 1;
if (ap.gfx_vflip)
ap.gfx_strobo = p.lightboost_strobo;
}
} else {
// no vsync: wait if triple bufferirng
if (ap.gfx_backbuffers >= 2)
ap.gfx_vflip = -1;
}
/*var f = p.video.gf[i];
if (f.gfx_filter == 0 && ((f.gfx_filter_autoscale && p.video.api == SAEC_Config_Video_API_Canvas) || (p.video.apmode[0].gfx_vsyncmode))) {
SAEF_warn("config.fixup_prefs_dimensions() Current settings require at least null filter enabled. Enabling filter...");
f.gfx_filter = 1;
}*/
/*if (i == 0) {
if (f.gfx_filter == 0 && p.monitoremu) {
SAEF_warn("config.fixup_prefs_dimensions() Display port adapter emulation require at least null filter enabled. Enabling filter...");
f.gfx_filter = 1;
}
if (f.gfx_filter == 0 && p.cs_cd32fmv) {
SAEF_warn("config.fixup_prefs_dimensions() CD32 MPEG module overlay support require at least null filter enabled. Enabling filter...");
f.gfx_filter = 1;
}
if (f.gfx_filter == 0 && (p.chipset.genlock && p.genlock_image)) {
SAEF_warn("config.fixup_prefs_dimensions() Genlock emulation require at least null filter enabled. Enabling filter...");
f.gfx_filter = 1;
}
}*/
}
}
this.fixup_prefs_dimensions_ext = function(p) {
fixup_prefs_dimensions(p);
}
function fixup_cpu(p) {
switch (p.cpu.model) { //OWN
case SAEC_Config_CPU_Model_68000:
case SAEC_Config_CPU_Model_68010:
p.cpu.clock.multiplier = 2 << 8;
break;
case SAEC_Config_CPU_Model_68020:
p.cpu.clock.multiplier = 4 << 8;
break;
case SAEC_Config_CPU_Model_68030:
p.cpu.clock.multiplier = 8 << 8;
//p.cpu.clock.multiplier = 0;
//p.cpu.clock.frequency = 25000000;
break;
}
if (p.cpu.clock.frequency == 1000000)
p.cpu.clock.frequency = 0;
/*if (p.cpu.model >= SAEC_Config_CPU_Model_68040 && p.cpu.addressSpace24) {
SAEF_error("24-bit address space is not supported with 68040/060 configurations.");
p.cpu.addressSpace24 = false;
}
if (p.cpu.model < SAEC_Config_CPU_Model_68020 && p.fpu_model && (p.cpu.compatible || p.cpu_memory_cycle_exact)) {
SAEF_error("FPU is not supported with 68000/010 configurations.");
p.fpu_model = 0;
}
switch (p.cpu.model) {
case SAEC_Config_CPU_Model_68000:
case SAEC_Config_CPU_Model_68010:
case SAEC_Config_CPU_Model_68020:
case SAEC_Config_CPU_Model_68030:
break;
case SAEC_Config_CPU_Model_68040:
if (p.fpu_model)
p.fpu_model = 68040;
break;
case SAEC_Config_CPU_Model_68060:
if (p.fpu_model)
p.fpu_model = 68060;
break;
}
if ((p.cpu.model < SAEC_Config_CPU_Model_68030 || p.cachesize) && p.mmu_model) {
SAEF_warn("config.fixup_cpu() MMU emulation requires 68030/040/060 and it is not JIT compatible.");
p.mmu_model = 0;
}
if (!p.cpu_memory_cycle_exact && p.cpu_cycle_exact)
p.cpu_memory_cycle_exact = true;
#if 0
if (p.cpu_cycle_exact && p.cpu.speed < 0 && currprefs.cpu.model <= SAEC_Config_CPU_Model_68020)
p.cpu.speed = SAEC_Config_CPU_Speed_Original;
#endif
#if 0
if (p.chipset.blitter.immediate && p.chipset.blitter.cycle_exact) {
SAEF_error("Cycle-exact and immediate blitter can't be enabled simultaneously.");
p.chipset.blitter.immediate = false;
}
#endif*/
if (p.chipset.blitter.immediate && p.chipset.blitter.waiting) {
SAEF_warn("config.fixup_cpu() Immediate blitter and waiting blits can't be enabled simultaneously. Disabling waiting blits...");
p.chipset.blitter.waiting = 0;
}
/*if (p.cpu_memory_cycle_exact)
p.cpu.compatible = true;
if (p.cpu_memory_cycle_exact && p.audio.mode == SAEC_Config_Audio_Mode_Off) {
p.audio.mode = SAEC_Config_Audio_Mode_Off_Emul;
SAEF_error("Cycle-exact mode requires at least Disabled but emulated sound setting.");
}*/
}
function fixup_prefs(p) {
//var max_z3fastmem = SAEC_info.memory.maxSize;
//var err = 0;
built_in_chipset_prefs(p);
fixup_cpu(p);
if (((p.memory.chipSize & (p.memory.chipSize - 1)) != 0 && p.memory.chipSize != 0x180000)
|| p.memory.chipSize < 0x20000
|| p.memory.chipSize > 0x800000)
{
SAEF_warn("config.fixup_prefs() Unsupported chipmem size %d (0x%x). Setting to 2M...", p.memory.chipSize, p.memory.chipSize);
p.memory.chipSize = 0x200000;
//err = 1;
}
if ((p.memory.z2FastSize & (p.memory.z2FastSize - 1)) != 0 || (p.memory.z2FastSize != 0 && (p.memory.z2FastSize < 0x10000 || p.memory.z2FastSize > 0x800000))) {
SAEF_warn("config.fixup_prefs() Unsupported Zorro II fastmem size %d (0x%x). Disabling fastmem...", p.memory.z2FastSize, p.memory.z2FastSize);
p.memory.z2FastSize = 0;
//err = 1;
}
/*if ((p.fastmem2_size & (p.fastmem2_size - 1)) != 0 || (p.fastmem2_size != 0 && (p.fastmem2_size < 0x10000 || p.fastmem2_size > 0x800000))) {
SAEF_error("Unsupported fastmem2 size %d (0x%x).", p.fastmem2_size, p.fastmem2_size);
p.fastmem2_size = 0;
err = 1;
}*/
/*if (p.rtgmem_size > max_z3fastmem && p.rtgmem_type == GFXBOARD_UAE_Z3) {
SAEF_error("Graphics card memory size %d (0x%x) larger than maximum reserved %d (0x%x).", p.rtgmem_size, p.rtgmem_size, max_z3fastmem, max_z3fastmem);
p.rtgmem_size = max_z3fastmem;
err = 1;
}
if ((p.rtgmem_size & (p.rtgmem_size - 1)) != 0 || (p.rtgmem_size != 0 && (p.rtgmem_size < 0x100000))) {
SAEF_error("Unsupported graphics card memory size %d (0x%x).", p.rtgmem_size, p.rtgmem_size);
if (p.rtgmem_size > max_z3fastmem)
p.rtgmem_size = max_z3fastmem;
else
p.rtgmem_size = 0;
err = 1;
}*/
/*if (p.memory.z3FastSize > max_z3fastmem) {
SAEF_error("Zorro III fastmem size %d (0x%x) larger than max reserved %d (0x%x).", p.memory.z3FastSize, p.memory.z3FastSize, max_z3fastmem, max_z3fastmem);
p.memory.z3FastSize = max_z3fastmem;
err = 1;
}*/
if ((p.memory.z3FastSize & (p.memory.z3FastSize - 1)) != 0 || (p.memory.z3FastSize != 0 && p.memory.z3FastSize < 0x100000)) {
SAEF_warn("config.fixup_prefs() Unsupported Zorro III fastmem size %d (0x%x). Disabling fastmem...", p.memory.z3FastSize, p.memory.z3FastSize);
p.memory.z3FastSize = 0;
//err = 1;
}
/*if (p.z3fastmem2_size > max_z3fastmem) {
SAEF_error("Zorro III fastmem2 size %d (0x%x) larger than max reserved %d (0x%x).", p.z3fastmem2_size, p.z3fastmem2_size, max_z3fastmem, max_z3fastmem);
p.z3fastmem2_size = max_z3fastmem;
err = 1;
}
if ((p.z3fastmem2_size & (p.z3fastmem2_size - 1)) != 0 || (p.z3fastmem2_size != 0 && p.z3fastmem2_size < 0x100000)) {
SAEF_error("Unsupported Zorro III fastmem2 size %x (%x).", p.z3fastmem2_size, p.z3fastmem2_size);
p.z3fastmem2_size = 0;
err = 1;
}*/
p.memory.z3AutoConfigStart = (p.memory.z3AutoConfigStart & 0xffff0000) >>> 0;
if (p.memory.z3AutoConfigStart < 0x1000000)
p.memory.z3AutoConfigStart = 0x1000000;
/*if (p.z3chipmem_size > max_z3fastmem) {
SAEF_error("Zorro III fake chipmem size %d (0x%x) larger than max reserved %d (0x%x).", p.z3chipmem_size, p.z3chipmem_size, max_z3fastmem, max_z3fastmem);
p.z3chipmem_size = max_z3fastmem;
err = 1;
}
if (((p.z3chipmem_size & (p.z3chipmem_size - 1)) != 0 && p.z3chipmem_size != 0x18000000 && p.z3chipmem_size != 0x30000000) || (p.z3chipmem_size != 0 && p.z3chipmem_size < 0x100000)) {
SAEF_error("Unsupported 32-bit chipmem size %d (0x%x).", p.z3chipmem_size, p.z3chipmem_size);
p.z3chipmem_size = 0;
err = 1;
}*/
//if (p.cpu.addressSpace24 && (p.memory.z3FastSize != 0 || p.z3fastmem2_size != 0 || p.z3chipmem_size != 0)) {
if (p.cpu.addressSpace24 && (p.memory.z3FastSize != 0)) {
//p.memory.z3FastSize = p.z3fastmem2_size = p.z3chipmem_size = 0;
p.memory.z3FastSize = 0;
//SAEF_error("Can't use a Z3 graphics card or 32-bit memory when using a 24 bit address space.");
SAEF_warn("config.fixup_prefs() Can't use Zorro III memory when using a 24 bit address space. Disabling memory...");
}
if (p.memory.bogoSize != 0 && p.memory.bogoSize != 0x80000 && p.memory.bogoSize != 0x100000 && p.memory.bogoSize != 0x180000 && p.memory.bogoSize != 0x1c0000) {
SAEF_warn("config.fixup_prefs() Unsupported bogomem size %d (0x%x). Disabling bogomem...", p.memory.bogoSize, p.memory.bogoSize);
p.memory.bogoSize = 0;
//err = 1;
}
if (p.memory.bogoSize > 0x180000 && (p.chipset.fatGaryRev >= 0 || p.chipset.ide || p.chipset.ramseyRev >= 0)) {
p.memory.bogoSize = 0x180000;
SAEF_warn("config.fixup_prefs() Possible Gayle bogomem conflict fixed.");
}
if (p.memory.chipSize > 0x200000 && p.memory.z2FastSize > 262144) {
SAEF_warn("config.fixup_prefs() Can't use Zorro II fastmem and more than 2M chipmem at the same time. Limiting chipmem to 2M...");
p.memory.chipSize = 0x200000;
//err = 1;
}
/*if (p.memory.chipSize > 0x200000 && p.rtgmem_size && gfxboard_get_configtype(p.rtgmem_type) == 2) {
SAEF_error("You can't use Zorro II RTG and more than 2MB chip at the same time.");
p.memory.chipSize = 0x200000;
err = 1;
}
if (p.mem25bit_size > 128 << 20 || (p.mem25bit_size & 0xfffff)) {
p.mem25bit_size = 0;
SAEF_error("Unsupported 25bit RAM size");
}*/
if (p.memory.ramsey.lowSize > 64 << 20 || (p.memory.ramsey.lowSize & 0xfffff)) {
p.memory.ramsey.lowSize = 0;
SAEF_warn("config.fixup_prefs() Unsupported Mainboard fastmem size. Disabling fastmem... (RAMSEY low)");
}
if (p.memory.ramsey.highSize > 128 << 20 || (p.memory.ramsey.highSize & 0xfffff)) {
p.memory.ramsey.highSize = 0;
SAEF_warn("config.fixup_prefs() Unsupported CPU-Board fastmem size. Disabling fastmem... (RAMSEY high)");
}
/*if (p.rtgmem_type >= GFXBOARD_HARDWARE) {
if (gfxboard_get_vram_min(p.rtgmem_type) > 0 && p.rtgmem_size < gfxboard_get_vram_min (p.rtgmem_type)) {
SAEF_error("Graphics card memory size %d (0x%x) smaller than minimum hardware supported %d (0x%x).",
p.rtgmem_size, p.rtgmem_size, gfxboard_get_vram_min(p.rtgmem_type), gfxboard_get_vram_min(p.rtgmem_type));
p.rtgmem_size = gfxboard_get_vram_min (p.rtgmem_type);
}
if (p.cpu.addressSpace24 && gfxboard_get_configtype(p.rtgmem_type) == 3) {
p.rtgmem_type = GFXBOARD_UAE_Z2;
p.rtgmem_size = 0;
SAEF_error("Z3 RTG and 24-bit address space are not compatible."));
}
if (gfxboard_get_vram_max(p.rtgmem_type) > 0 && p.rtgmem_size > gfxboard_get_vram_max(p.rtgmem_type)) {
SAEF_error("Graphics card memory size %d (0x%x) larger than maximum hardware supported %d (0x%x).",
p.rtgmem_size, p.rtgmem_size, gfxboard_get_vram_max(p.rtgmem_type), gfxboard_get_vram_max(p.rtgmem_type));
p.rtgmem_size = gfxboard_get_vram_max(p.rtgmem_type);
}
}
if (p.cpu.addressSpace24 && p.rtgmem_size && p.rtgmem_type == GFXBOARD_UAE_Z3) {
SAEF_error("Z3 RTG and 24bit address space are not compatible.");
p.rtgmem_type = GFXBOARD_UAE_Z2;
}
if (p.rtgmem_type == GFXBOARD_UAE_Z2 && (p.memory.chipSize > 2 * 1024 * 1024 || getz2size (p) > 8 * 1024 * 1024 || getz2size (p) < 0)) {
p.rtgmem_size = 0;
SAEF_error("Too large Z2 RTG memory size.");
}*/
/*#if 0
if (p.cpu.speed < -1 || p.cpu.speed > 20) {
SAEF_error("Bad value for -w parameter: must be -1, 0, or within 1..20.\n");
p.cpu.speed = 4;
err = 1;
}
#endif*/
if (p.audio.mode < SAEC_Config_Audio_Mode_Off || p.audio.mode > SAEC_Config_Audio_Mode_On_Best) {
SAEF_warn("config.fixup_prefs() Bad 'config.audio.mode'. Disabling audio...");
p.audio.mode = SAEC_Config_Audio_Mode_Off;
//err = 1;
}
if (p.chipset.z3AutoConfig && p.cpu.addressSpace24) {
p.chipset.z3AutoConfig = false;
SAEF_warn("config.fixup_prefs() Zorro III autoconfig and 24bit address space are not compatible. Disabling Zorro III autoconfig...");
}
//if ((p.memory.z3FastSize || p.z3fastmem2_size || p.z3chipmem_size) && p.cpu.addressSpace24) {
if ((p.memory.z3FastSize) && p.cpu.addressSpace24) {
SAEF_warn("config.fixup_prefs() Zorro III memory can't be used if address space is 24-bit., Disabling Zorro III memory...");
p.memory.z3FastSize = 0;
//p.z3fastmem2_size = 0;
//p.z3chipmem_size = 0;
//err = 1;
}
/*if ((p.rtgmem_size > 0 && p.rtgmem_type == GFXBOARD_UAE_Z3) && p.cpu.addressSpace24) {
SAEF_error("UAEGFX RTG can't be used if address space is 24-bit.");
p.rtgmem_size = 0;
err = 1;
}*/
/*if (p.nr_floppies < 0 || p.nr_floppies > 4) {
SAEF_error("Invalid number of floppies. Using 2.");
p.nr_floppies = 2;
p.floppy.drive[0].type = SAEC_Config_Floppy_Type_35_DD;
p.floppy.drive[1].type = SAEC_Config_Floppy_Type_35_DD;
p.floppy.drive[2].type = SAEC_Config_Floppy_Type_None;
p.floppy.drive[3].type = SAEC_Config_Floppy_Type_None;
err = 1;
}*/
if (p.floppy.speed > 0 && p.floppy.speed < 10) {
SAEF_warn("config.fixup_prefs() Invalid floppy speed. Setting to 'Turbo' (100)...");
p.floppy.speed = 100;
}
/*if (p.input_mouse_speed < 1 || p.input_mouse_speed > 1000) {
SAEF_error("Invalid mouse speed.");
p.input_mouse_speed = 100;
}*/
if (p.chipset.colLevel < SAEC_Config_Chipset_ColLevel_None || p.chipset.colLevel > SAEC_Config_Chipset_ColLevel_Full) {
SAEF_warn("config.fixup_prefs() Invalid collision support level. Using Sprite-Sprite...");
p.chipset.colLevel = SAEC_Config_Chipset_ColLevel_Sprite_Sprite;
//err = 1;
}
//if (p.parallel_postscript_emulation) p.parallel_postscript_detection = 1;
if (p.chipset.compatible == SAEC_Config_Chipset_Compatible_Generic) {
p.chipset.fatGaryRev = p.chipset.ramseyRev = -1;
p.chipset.ide = 0;
p.chipset.mbdmac = -1;
if (p.cpu.model >= SAEC_Config_CPU_Model_68020) {
p.chipset.fatGaryRev = 0;
p.chipset.ramseyRev = 0x0f;
p.chipset.ide = -1;
p.chipset.mbdmac = 0;
}
} else if (p.chipset.compatible == SAEC_Config_Chipset_Compatible_Manual) {
if (p.chipset.ide == SAEC_Config_Chipset_IDE_A4000) {
if (p.chipset.fatGaryRev < 0)
p.chipset.fatGaryRev = 0;
if (p.chipset.ramseyRev < 0)
p.chipset.ramseyRev = 0x0f;
}
}
if (p.memory.chipSize >= 0x100000)
p.chipset.jumper1MbChip = true;
/* Can"t fit genlock and A2024 or Graffiti at the same time,
* also Graffiti uses genlock audio bit as an enable signal
*/
/*if (p.chipset.genlock && p.monitoremu) {
SAEF_error("Genlock and A2024 or Graffiti can't be active simultaneously.");
p.chipset.genlock = false;
}
if (p.cs_hacks) {
SAEF_error("chipset_hacks is nonzero (0x%04x).", p.cs_hacks);
}*/
fixup_prefs_dimensions(p);
//OWN
if (p.video.api == SAEC_Config_Video_API_Canvas && p.video.colorMode != 5) {
p.video.colorMode = 5;
SAEF_warn("config.fixup_prefs() p.video.colorMode must 5 if 'Canvas' is used. (set to 5)");
}
//OWN
if (p.video.luminance < -1000 || p.video.luminance > 1000) {
p.video.luminance = 0;
SAEF_warn("config.fixup_prefs() p.video.luminance must be between -1000 and 1000. (reset to 0)");
}
if (p.video.contrast < -1000 || p.video.contrast > 1000) {
p.video.contrast = 0;
SAEF_warn("config.fixup_prefs() p.video.contrast must be between -1000 and 1000. (reset to 0)");
}
if (p.video.gamma < -1000 || p.video.gamma > 1000) {
p.video.gamma = 0;
SAEF_warn("config.fixup_prefs() p.video.gamma must be between -1000 and 1000. (reset to 0)");
}
if (p.video.alpha < 0 || p.video.alpha > 255) {
p.video.alpha = 255;
SAEF_warn("config.fixup_prefs() p.video.gamma must be between 0 and 255. (reset to 255)");
}
/*#if !defined (CPUEMU_13)
p.cpu_cycle_exact = p.chipset.blitter.cycle_exact = false;
#endif*/
/*#ifndef AUTOCONFIG
p.memory.z2FastSize = 0;
p.memory.z3FastSize = 0;
p.rtgmem_size = 0;
#endif*/
/*if (p.cpu_cycle_exact) {
if (p.video.framerate > 1) {
SAEF_error("Cycle-exact requires disabled frameskip.");
p.video.framerate = 1;
}
}*/
/*if (p.memory.maprom && !p.cpu.addressSpace24)
p.memory.maprom = 0x0f000000;
if (((p.memory.maprom & 0xff000000) && p.cpu.addressSpace24) || (p.memory.maprom && p.memory.ramsey.highSize >= 0x08000000))
p.memory.maprom = 0x00e00000;*/
if (p.chipset.cia.todHack && p.chipset.cia.tod == SAEC_Config_Chipset_CIA_TOD_VSync)
p.chipset.cia.tod = p.chipset.ntsc ? SAEC_Config_Chipset_CIA_TOD_60Hz : SAEC_Config_Chipset_CIA_TOD_50Hz;
built_in_chipset_prefs(p);
//inputdevice_fix_prefs(p);
return true; //err == 0;
}
}