172 lines
6.8 KiB
C
172 lines
6.8 KiB
C
/*
|
|
* 86Box A hypervisor and IBM PC system emulator that specializes in
|
|
* running old operating systems and software designed for IBM
|
|
* PC systems and compatibles from 1981 through fairly recent
|
|
* system designs based on the PCI bus.
|
|
*
|
|
* This file is part of the 86Box distribution.
|
|
*
|
|
* Configuration file handler header.
|
|
*
|
|
*
|
|
*
|
|
* Authors: Sarah Walker,
|
|
* Miran Grca, <mgrca8@gmail.com>
|
|
* Fred N. van Kempen, <decwiz@yahoo.com>
|
|
* Overdoze,
|
|
*
|
|
* Copyright 2008-2017 Sarah Walker.
|
|
* Copyright 2016-2017 Miran Grca.
|
|
* Copyright 2017 Fred N. van Kempen.
|
|
*/
|
|
#ifndef EMU_CONFIG_H
|
|
#define EMU_CONFIG_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#if 0
|
|
typedef struct storage_cfg_t {
|
|
uint8_t id;
|
|
uint8_t bus_type; /* Bus type: IDE, SCSI, etc. */
|
|
uint8_t bus : 4; /* ID of the bus (for example, for IDE,
|
|
0 = primary, 1 = secondary, etc. */
|
|
uint8_t bus_id : 4; /* ID of the device on the bus */
|
|
uint8_t type; /* Type flags, interpretation depends
|
|
on the device */
|
|
uint8_t is_image; /* This is only used for CD-ROM:
|
|
0 = Image;
|
|
1 = Host drive */
|
|
|
|
wchar_t path[1024]; /* Name of current image file or
|
|
host drive */
|
|
|
|
uint32_t spt; /* Physical geometry parameters */
|
|
uint32_t hpc;
|
|
uint32_t tracks;
|
|
} storage_cfg_t;
|
|
|
|
typedef struct config_t {
|
|
/* General configuration */
|
|
int vid_resize; /* Window is resizable or not */
|
|
int vid_renderer; /* Renderer */
|
|
int vid_fullscreen_scale; /* Full screen scale type */
|
|
int vid_fullscreen_start; /* Start emulator in full screen */
|
|
int vid_force_43; /* Force 4:3 display ratio in windowed mode */
|
|
int vid_scale; /* Windowed mode scale */
|
|
int vid_overscan; /* EGA/(S)VGA overscan enabled */
|
|
int vid_cga_contrast; /* CGA alternate contrast enabled */
|
|
int vid_grayscale; /* Video is grayscale */
|
|
int vid_grayscale_type; /* Video grayscale type */
|
|
int vid_invert_display; /* Invert display */
|
|
int rctrl_is_lalt; /* Right CTRL is left ALT */
|
|
int update_icons; /* Update status bar icons */
|
|
int window_remember; /* Remember window position and size */
|
|
int window_w; /* Window coordinates */
|
|
int window_h;
|
|
int window_x;
|
|
int window_y;
|
|
int sound_gain; /* Sound gain */
|
|
# ifdef USE_LANGUAGE
|
|
uint16_t language_id; /* Language ID (0x0409 = English (US)) */
|
|
# endif
|
|
|
|
/* Machine cateogory */
|
|
int machine; /* Machine */
|
|
int cpu; /* CPU */
|
|
# ifdef USE_DYNAREC
|
|
int cpu_use_dynarec; /* CPU recompiler enabled */
|
|
# endif
|
|
int wait_states; /* CPU wait states */
|
|
int enable_external_fpu; /* FPU enabled */
|
|
int time_sync; /* Time sync enabled */
|
|
uint32_t mem_size; /* Memory size */
|
|
|
|
/* Video category */
|
|
int video_card; /* Video card */
|
|
int voodoo_enabled; /* Voodoo enabled */
|
|
|
|
/* Input devices category */
|
|
int mouse_type; /* Mouse type */
|
|
int joystick_type; /* Joystick type */
|
|
|
|
/* Sound category */
|
|
int sound_card; /* Sound card */
|
|
int midi_device; /* Midi device */
|
|
int mpu_401; /* Standalone MPU-401 enabled */
|
|
int ssi_2001_enabled; /* SSI-2001 enabled */
|
|
int game_blaster_enabled; /* Game blaster enabled */
|
|
int gus_enabled; /* Gravis Ultrasound enabled */
|
|
int opl_type; /* OPL emulation type */
|
|
int sound_is_float; /* Sound is 32-bit float or 16-bit integer */
|
|
|
|
/* Network category */
|
|
int network_type; /* Network type (SLiRP or PCap) */
|
|
int network_card; /* Network card */
|
|
char network_host[520]; /* PCap device */
|
|
|
|
/* Ports category */
|
|
char parallel_devices[PARALLEL_MAX][32]; /* LPT device names */
|
|
# ifdef USE_SERIAL_DEVICES
|
|
char serial_devices[SERIAL_MAX][32]; /* Serial device names */
|
|
# endif
|
|
|
|
/* Other peripherals category */
|
|
int fdc_type; /* Floppy disk controller type */
|
|
int hdc; /* Hard disk controller */
|
|
int scsi_card; /* SCSI controller */
|
|
int ide_ter_enabled; /* Tertiary IDE controller enabled */
|
|
int ide_qua_enabled; /* Quaternary IDE controller enabled */
|
|
int bugger_enabled; /* ISA bugger device enabled */
|
|
int isa_rtc_type; /* ISA RTC card */
|
|
int isa_mem_type[ISAMEM_MAX]; /* ISA memory boards */
|
|
|
|
/* Hard disks category */
|
|
storage_cfg_t hdd[HDD_NUM]; /* Hard disk drives */
|
|
|
|
/* Floppy drives category */
|
|
storage_cfg_t fdd[FDD_NUM]; /* Floppy drives */
|
|
|
|
/* Other removable devices category */
|
|
storage_cfg_t cdrom[CDROM_NUM]; /* CD-ROM drives */
|
|
storage_cfg_t rdisk[ZIP_NUM]; /* Removable disk drives */
|
|
} config_t;
|
|
#endif
|
|
|
|
extern void config_load(void);
|
|
extern void config_save(void);
|
|
|
|
#ifdef EMU_INI_H
|
|
extern ini_t config_get_ini(void);
|
|
#else
|
|
extern void *config_get_ini(void);
|
|
#endif
|
|
|
|
#define config_delete_var(head, name) ini_delete_var(config_get_ini(), head, name)
|
|
|
|
#define config_get_int(head, name, def) ini_get_int(config_get_ini(), head, name, def)
|
|
#define config_get_double(head, name, def) ini_get_double(config_get_ini(), head, name, def)
|
|
#define config_get_hex16(head, name, def) ini_get_hex16(config_get_ini(), head, name, def)
|
|
#define config_get_hex20(head, name, def) ini_get_hex20(config_get_ini(), head, name, def)
|
|
#define config_get_mac(head, name, def) ini_get_mac(config_get_ini(), head, name, def)
|
|
#define config_get_string(head, name, def) ini_get_string(config_get_ini(), head, name, def)
|
|
#define config_get_wstring(head, name, def) ini_get_wstring(config_get_ini(), head, name, def)
|
|
|
|
#define config_set_int(head, name, val) ini_set_int(config_get_ini(), head, name, val)
|
|
#define config_set_double(head, name, val) ini_set_double(config_get_ini(), head, name, val)
|
|
#define config_set_hex16(head, name, val) ini_set_hex16(config_get_ini(), head, name, val)
|
|
#define config_set_hex20(head, name, val) ini_set_hex20(config_get_ini(), head, name, val)
|
|
#define config_set_mac(head, name, val) ini_set_mac(config_get_ini(), head, name, val)
|
|
#define config_set_string(head, name, val) ini_set_string(config_get_ini(), head, name, val)
|
|
#define config_set_wstring(head, name, val) ini_set_wstring(config_get_ini(), head, name, val)
|
|
|
|
#define config_find_section(name) ini_find_section(config_get_ini(), name)
|
|
#define config_rename_section ini_rename_section
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /*EMU_CONFIG_H*/
|