clang-format in src/win and other misc places
This commit is contained in:
@@ -18,183 +18,178 @@
|
||||
* Copyright 2021 Laci bá'
|
||||
*/
|
||||
#ifndef EMU_86BOX_H
|
||||
# define EMU_86BOX_H
|
||||
|
||||
#define EMU_86BOX_H
|
||||
|
||||
/* Configuration values. */
|
||||
#define SERIAL_MAX 4
|
||||
#define PARALLEL_MAX 4
|
||||
#define SCREEN_RES_X 640
|
||||
#define SCREEN_RES_Y 480
|
||||
#define SERIAL_MAX 4
|
||||
#define PARALLEL_MAX 4
|
||||
#define SCREEN_RES_X 640
|
||||
#define SCREEN_RES_Y 480
|
||||
|
||||
/* Filename and pathname info. */
|
||||
#define CONFIG_FILE "86box.cfg"
|
||||
#define CONFIG_FILE "86box.cfg"
|
||||
#define NVR_PATH "nvr"
|
||||
#define SCREENSHOT_PATH "screenshots"
|
||||
|
||||
|
||||
/* Default language 0xFFFF = from system, 0x409 = en-US */
|
||||
#define DEFAULT_LANGUAGE 0x0409
|
||||
|
||||
#ifdef MIN
|
||||
#undef MIN
|
||||
# undef MIN
|
||||
#endif
|
||||
#ifdef MAX
|
||||
#undef MAX
|
||||
# undef MAX
|
||||
#endif
|
||||
#ifdef ABS
|
||||
#undef ABS
|
||||
# undef ABS
|
||||
#endif
|
||||
|
||||
#define MIN(a, b) ((a) < (b) ? (a) : (b))
|
||||
#define MAX(a, b) ((a) > (b) ? (a) : (b))
|
||||
#define ABS(x) ((x) > 0 ? (x) : -(x))
|
||||
#define BCD8(x) ((((x) / 10) << 4) | ((x) % 10))
|
||||
#define BCD16(x) ((((x) / 1000) << 12) | (((x) / 100) << 8) | BCD8(x))
|
||||
#define BCD32(x) ((((x) / 10000000) << 28) | (((x) / 1000000) << 24) | (((x) / 100000) << 20) | (((x) / 10000) << 16) | BCD16(x))
|
||||
#define MIN(a, b) ((a) < (b) ? (a) : (b))
|
||||
#define MAX(a, b) ((a) > (b) ? (a) : (b))
|
||||
#define ABS(x) ((x) > 0 ? (x) : -(x))
|
||||
#define BCD8(x) ((((x) / 10) << 4) | ((x) % 10))
|
||||
#define BCD16(x) ((((x) / 1000) << 12) | (((x) / 100) << 8) | BCD8(x))
|
||||
#define BCD32(x) ((((x) / 10000000) << 28) | (((x) / 1000000) << 24) | (((x) / 100000) << 20) | (((x) / 10000) << 16) | BCD16(x))
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Global variables. */
|
||||
extern uint32_t lang_sys; /* (-) system language code */
|
||||
extern uint32_t lang_sys; /* (-) system language code */
|
||||
|
||||
extern int dump_on_exit; /* (O) dump regs on exit*/
|
||||
extern int do_dump_config; /* (O) dump cfg after load */
|
||||
extern int start_in_fullscreen; /* (O) start in fullscreen */
|
||||
extern int dump_on_exit; /* (O) dump regs on exit*/
|
||||
extern int do_dump_config; /* (O) dump cfg after load */
|
||||
extern int start_in_fullscreen; /* (O) start in fullscreen */
|
||||
#ifdef _WIN32
|
||||
extern int force_debug; /* (O) force debug output */
|
||||
extern int force_debug; /* (O) force debug output */
|
||||
#endif
|
||||
#ifdef USE_WX
|
||||
extern int video_fps; /* (O) render speed in fps */
|
||||
extern int video_fps; /* (O) render speed in fps */
|
||||
#endif
|
||||
extern int settings_only; /* (O) show only the settings dialog */
|
||||
extern int confirm_exit_cmdl; /* (O) do not ask for confirmation on quit if set to 0 */
|
||||
extern int settings_only; /* (O) show only the settings dialog */
|
||||
extern int confirm_exit_cmdl; /* (O) do not ask for confirmation on quit if set to 0 */
|
||||
#ifdef _WIN32
|
||||
extern uint64_t unique_id;
|
||||
extern uint64_t source_hwnd;
|
||||
extern uint64_t unique_id;
|
||||
extern uint64_t source_hwnd;
|
||||
#endif
|
||||
extern char rom_path[1024]; /* (O) full path to ROMs */
|
||||
extern char log_path[1024]; /* (O) full path of logfile */
|
||||
extern char vm_name[1024]; /* (O) display name of the VM */
|
||||
|
||||
extern char rom_path[1024]; /* (O) full path to ROMs */
|
||||
extern char log_path[1024]; /* (O) full path of logfile */
|
||||
extern char vm_name[1024]; /* (O) display name of the VM */
|
||||
|
||||
#define window_x monitor_settings[0].mon_window_x
|
||||
#define window_y monitor_settings[0].mon_window_y
|
||||
#define window_w monitor_settings[0].mon_window_w
|
||||
#define window_h monitor_settings[0].mon_window_h
|
||||
extern int window_remember,
|
||||
vid_resize, /* (C) allow resizing */
|
||||
invert_display, /* (C) invert the display */
|
||||
suppress_overscan; /* (C) suppress overscans */
|
||||
extern uint32_t lang_id; /* (C) language code identifier */
|
||||
extern char icon_set[256]; /* (C) iconset identifier */
|
||||
extern int scale; /* (C) screen scale factor */
|
||||
extern int dpi_scale; /* (C) DPI scaling of the emulated screen */
|
||||
extern int vid_api; /* (C) video renderer */
|
||||
extern int vid_cga_contrast, /* (C) video */
|
||||
video_fullscreen, /* (C) video */
|
||||
video_fullscreen_first, /* (C) video */
|
||||
video_fullscreen_scale, /* (C) video */
|
||||
enable_overscan, /* (C) video */
|
||||
force_43, /* (C) video */
|
||||
video_filter_method, /* (C) video */
|
||||
video_vsync, /* (C) video */
|
||||
video_framerate, /* (C) video */
|
||||
gfxcard; /* (C) graphics/video card */
|
||||
extern char video_shader[512]; /* (C) video */
|
||||
extern int serial_enabled[], /* (C) enable serial ports */
|
||||
bugger_enabled, /* (C) enable ISAbugger */
|
||||
postcard_enabled, /* (C) enable POST card */
|
||||
isamem_type[], /* (C) enable ISA mem cards */
|
||||
isartc_type; /* (C) enable ISA RTC card */
|
||||
extern int sound_is_float, /* (C) sound uses FP values */
|
||||
GAMEBLASTER, /* (C) sound option */
|
||||
GUS, GUSMAX, /* (C) sound option */
|
||||
SSI2001, /* (C) sound option */
|
||||
voodoo_enabled, /* (C) video option */
|
||||
ibm8514_enabled, /* (C) video option */
|
||||
xga_enabled; /* (C) video option */
|
||||
extern uint32_t mem_size; /* (C) memory size (Installed on system board) */
|
||||
extern uint32_t isa_mem_size; /* (C) memory size (ISA Memory Cards) */
|
||||
extern int cpu, /* (C) cpu type */
|
||||
cpu_use_dynarec, /* (C) cpu uses/needs Dyna */
|
||||
fpu_type; /* (C) fpu type */
|
||||
extern int time_sync; /* (C) enable time sync */
|
||||
extern int network_type; /* (C) net provider type */
|
||||
extern int network_card; /* (C) net interface num */
|
||||
extern char network_host[522]; /* (C) host network intf */
|
||||
extern int hdd_format_type; /* (C) hard disk file format */
|
||||
extern int confirm_reset, /* (C) enable reset confirmation */
|
||||
confirm_exit, /* (C) enable exit confirmation */
|
||||
confirm_save; /* (C) enable save confirmation */
|
||||
extern int enable_discord; /* (C) enable Discord integration */
|
||||
extern int window_remember,
|
||||
vid_resize, /* (C) allow resizing */
|
||||
invert_display, /* (C) invert the display */
|
||||
suppress_overscan; /* (C) suppress overscans */
|
||||
extern uint32_t lang_id; /* (C) language code identifier */
|
||||
extern char icon_set[256]; /* (C) iconset identifier */
|
||||
extern int scale; /* (C) screen scale factor */
|
||||
extern int dpi_scale; /* (C) DPI scaling of the emulated screen */
|
||||
extern int vid_api; /* (C) video renderer */
|
||||
extern int vid_cga_contrast, /* (C) video */
|
||||
video_fullscreen, /* (C) video */
|
||||
video_fullscreen_first, /* (C) video */
|
||||
video_fullscreen_scale, /* (C) video */
|
||||
enable_overscan, /* (C) video */
|
||||
force_43, /* (C) video */
|
||||
video_filter_method, /* (C) video */
|
||||
video_vsync, /* (C) video */
|
||||
video_framerate, /* (C) video */
|
||||
gfxcard; /* (C) graphics/video card */
|
||||
extern char video_shader[512]; /* (C) video */
|
||||
extern int serial_enabled[], /* (C) enable serial ports */
|
||||
bugger_enabled, /* (C) enable ISAbugger */
|
||||
postcard_enabled, /* (C) enable POST card */
|
||||
isamem_type[], /* (C) enable ISA mem cards */
|
||||
isartc_type; /* (C) enable ISA RTC card */
|
||||
extern int sound_is_float, /* (C) sound uses FP values */
|
||||
GAMEBLASTER, /* (C) sound option */
|
||||
GUS, GUSMAX, /* (C) sound option */
|
||||
SSI2001, /* (C) sound option */
|
||||
voodoo_enabled, /* (C) video option */
|
||||
ibm8514_enabled, /* (C) video option */
|
||||
xga_enabled; /* (C) video option */
|
||||
extern uint32_t mem_size; /* (C) memory size (Installed on system board) */
|
||||
extern uint32_t isa_mem_size; /* (C) memory size (ISA Memory Cards) */
|
||||
extern int cpu, /* (C) cpu type */
|
||||
cpu_use_dynarec, /* (C) cpu uses/needs Dyna */
|
||||
fpu_type; /* (C) fpu type */
|
||||
extern int time_sync; /* (C) enable time sync */
|
||||
extern int network_type; /* (C) net provider type */
|
||||
extern int network_card; /* (C) net interface num */
|
||||
extern char network_host[522]; /* (C) host network intf */
|
||||
extern int hdd_format_type; /* (C) hard disk file format */
|
||||
extern int confirm_reset, /* (C) enable reset confirmation */
|
||||
confirm_exit, /* (C) enable exit confirmation */
|
||||
confirm_save; /* (C) enable save confirmation */
|
||||
extern int enable_discord; /* (C) enable Discord integration */
|
||||
|
||||
extern int is_pentium; /* TODO: Move back to cpu/cpu.h when it's figured out,
|
||||
how to remove that hack from the ET4000/W32p. */
|
||||
extern int fixed_size_x, fixed_size_y;
|
||||
extern int is_pentium; /* TODO: Move back to cpu/cpu.h when it's figured out,
|
||||
how to remove that hack from the ET4000/W32p. */
|
||||
extern int fixed_size_x, fixed_size_y;
|
||||
extern double mouse_sensitivity; /* (C) Mouse sensitivity scale */
|
||||
extern int pit_mode; /* (C) force setting PIT mode */
|
||||
extern int fm_driver; /* (C) select FM sound driver */
|
||||
extern int pit_mode; /* (C) force setting PIT mode */
|
||||
extern int fm_driver; /* (C) select FM sound driver */
|
||||
|
||||
extern char exe_path[2048]; /* path (dir) of executable */
|
||||
extern char usr_path[1024]; /* path (dir) of user data */
|
||||
extern char cfg_path[1024]; /* full path of config file */
|
||||
extern char exe_path[2048]; /* path (dir) of executable */
|
||||
extern char usr_path[1024]; /* path (dir) of user data */
|
||||
extern char cfg_path[1024]; /* full path of config file */
|
||||
#ifndef USE_NEW_DYNAREC
|
||||
extern FILE *stdlog; /* file to log output to */
|
||||
extern FILE *stdlog; /* file to log output to */
|
||||
#endif
|
||||
extern int config_changed; /* config has changed */
|
||||
|
||||
extern int config_changed; /* config has changed */
|
||||
|
||||
/* Function prototypes. */
|
||||
#ifdef HAVE_STDARG_H
|
||||
extern void pclog_ex(const char *fmt, va_list);
|
||||
extern void fatal_ex(const char *fmt, va_list);
|
||||
extern void pclog_ex(const char *fmt, va_list);
|
||||
extern void fatal_ex(const char *fmt, va_list);
|
||||
#endif
|
||||
extern void pclog_toggle_suppr(void);
|
||||
extern void pclog(const char *fmt, ...);
|
||||
extern void fatal(const char *fmt, ...);
|
||||
extern void set_screen_size(int x, int y);
|
||||
extern void set_screen_size_monitor(int x, int y, int monitor_index);
|
||||
extern void reset_screen_size(void);
|
||||
extern void reset_screen_size_monitor(int monitor_index);
|
||||
extern void set_screen_size_natural(void);
|
||||
extern void pclog_toggle_suppr(void);
|
||||
extern void pclog(const char *fmt, ...);
|
||||
extern void fatal(const char *fmt, ...);
|
||||
extern void set_screen_size(int x, int y);
|
||||
extern void set_screen_size_monitor(int x, int y, int monitor_index);
|
||||
extern void reset_screen_size(void);
|
||||
extern void reset_screen_size_monitor(int monitor_index);
|
||||
extern void set_screen_size_natural(void);
|
||||
extern void update_mouse_msg();
|
||||
#if 0
|
||||
extern void pc_reload(wchar_t *fn);
|
||||
#endif
|
||||
extern int pc_init_modules(void);
|
||||
extern int pc_init(int argc, char *argv[]);
|
||||
extern void pc_close(void *threadid);
|
||||
extern void pc_reset_hard_close(void);
|
||||
extern void pc_reset_hard_init(void);
|
||||
extern void pc_reset_hard(void);
|
||||
extern void pc_full_speed(void);
|
||||
extern void pc_speed_changed(void);
|
||||
extern void pc_send_cad(void);
|
||||
extern void pc_send_cae(void);
|
||||
extern void pc_send_cab(void);
|
||||
extern void pc_run(void);
|
||||
extern void pc_start(void);
|
||||
extern void pc_onesec(void);
|
||||
extern int pc_init_modules(void);
|
||||
extern int pc_init(int argc, char *argv[]);
|
||||
extern void pc_close(void *threadid);
|
||||
extern void pc_reset_hard_close(void);
|
||||
extern void pc_reset_hard_init(void);
|
||||
extern void pc_reset_hard(void);
|
||||
extern void pc_full_speed(void);
|
||||
extern void pc_speed_changed(void);
|
||||
extern void pc_send_cad(void);
|
||||
extern void pc_send_cae(void);
|
||||
extern void pc_send_cab(void);
|
||||
extern void pc_run(void);
|
||||
extern void pc_start(void);
|
||||
extern void pc_onesec(void);
|
||||
|
||||
extern uint16_t get_last_addr(void);
|
||||
extern uint16_t get_last_addr(void);
|
||||
|
||||
/* This is for external subtraction of cycles;
|
||||
should be in cpu.c but I put it here to avoid
|
||||
having to include cpu.c everywhere. */
|
||||
extern void sub_cycles(int c);
|
||||
extern void resub_cycles(int old_cycles);
|
||||
extern void sub_cycles(int c);
|
||||
extern void resub_cycles(int old_cycles);
|
||||
|
||||
extern double isa_timing;
|
||||
extern int io_delay, framecountx;
|
||||
extern double isa_timing;
|
||||
extern int io_delay, framecountx;
|
||||
|
||||
extern volatile int cpu_thread_run;
|
||||
extern volatile int cpu_thread_run;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#endif /*EMU_86BOX_H*/
|
||||
#endif /*EMU_86BOX_H*/
|
||||
|
||||
@@ -20,8 +20,7 @@
|
||||
* Copyright 2017 Fred N. van Kempen.
|
||||
*/
|
||||
#ifndef EMU_CONFIG_H
|
||||
# define EMU_CONFIG_H
|
||||
|
||||
#define EMU_CONFIG_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
@@ -69,16 +68,16 @@ typedef struct {
|
||||
window_x,
|
||||
window_y,
|
||||
sound_gain; /* Sound gain */
|
||||
#ifdef USE_LANGUAGE
|
||||
# ifdef USE_LANGUAGE
|
||||
uint16_t language_id; /* Language ID (0x0409 = English (US)) */
|
||||
#endif
|
||||
# endif
|
||||
|
||||
/* Machine cateogory */
|
||||
int machine, /* Machine */
|
||||
cpu, /* CPU */
|
||||
#ifdef USE_DYNAREC
|
||||
# ifdef USE_DYNAREC
|
||||
cpu_use_dynarec, /* CPU recompiler enabled */
|
||||
#endif
|
||||
# endif
|
||||
wait_states, /* CPU wait states */
|
||||
enable_external_fpu, /* FPU enabled */
|
||||
time_sync; /* Time sync enabled */
|
||||
@@ -109,9 +108,9 @@ typedef struct {
|
||||
|
||||
/* Ports category */
|
||||
char parallel_devices[PARALLEL_MAX][32]; /* LPT device names */
|
||||
#ifdef USE_SERIAL_DEVICES
|
||||
# ifdef USE_SERIAL_DEVICES
|
||||
char serial_devices[SERIAL_MAX][32]; /* Serial device names */
|
||||
#endif
|
||||
# endif
|
||||
int serial_enabled[SERIAL_MAX], /* Serial ports 1, 2, 3, 4 enabled */
|
||||
parallel_enabled[PARALLEL_MAX]; /* LPT1, LPT2, LPT3, LPT4 enabled */
|
||||
|
||||
@@ -137,33 +136,32 @@ typedef struct {
|
||||
} config_t;
|
||||
#endif
|
||||
|
||||
extern void config_load(void);
|
||||
extern void config_save(void);
|
||||
extern void config_write(char *fn);
|
||||
extern void config_dump(void);
|
||||
extern void config_load(void);
|
||||
extern void config_save(void);
|
||||
extern void config_write(char *fn);
|
||||
extern void config_dump(void);
|
||||
|
||||
extern void config_delete_var(char *head, char *name);
|
||||
extern int config_get_int(char *head, char *name, int def);
|
||||
extern double config_get_double(char *head, char *name, double def);
|
||||
extern int config_get_hex16(char *head, char *name, int def);
|
||||
extern int config_get_hex20(char *head, char *name, int def);
|
||||
extern int config_get_mac(char *head, char *name, int def);
|
||||
extern char *config_get_string(char *head, char *name, char *def);
|
||||
extern wchar_t *config_get_wstring(char *head, char *name, wchar_t *def);
|
||||
extern void config_set_int(char *head, char *name, int val);
|
||||
extern void config_set_double(char *head, char *name, double val);
|
||||
extern void config_set_hex16(char *head, char *name, int val);
|
||||
extern void config_set_hex20(char *head, char *name, int val);
|
||||
extern void config_set_mac(char *head, char *name, int val);
|
||||
extern void config_set_string(char *head, char *name, char *val);
|
||||
extern void config_set_wstring(char *head, char *name, wchar_t *val);
|
||||
extern void config_delete_var(char *head, char *name);
|
||||
extern int config_get_int(char *head, char *name, int def);
|
||||
extern double config_get_double(char *head, char *name, double def);
|
||||
extern int config_get_hex16(char *head, char *name, int def);
|
||||
extern int config_get_hex20(char *head, char *name, int def);
|
||||
extern int config_get_mac(char *head, char *name, int def);
|
||||
extern char *config_get_string(char *head, char *name, char *def);
|
||||
extern wchar_t *config_get_wstring(char *head, char *name, wchar_t *def);
|
||||
extern void config_set_int(char *head, char *name, int val);
|
||||
extern void config_set_double(char *head, char *name, double val);
|
||||
extern void config_set_hex16(char *head, char *name, int val);
|
||||
extern void config_set_hex20(char *head, char *name, int val);
|
||||
extern void config_set_mac(char *head, char *name, int val);
|
||||
extern void config_set_string(char *head, char *name, char *val);
|
||||
extern void config_set_wstring(char *head, char *name, wchar_t *val);
|
||||
|
||||
extern void * config_find_section(char *name);
|
||||
extern void config_rename_section(void *priv, char *name);
|
||||
extern void *config_find_section(char *name);
|
||||
extern void config_rename_section(void *priv, char *name);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#endif /*EMU_CONFIG_H*/
|
||||
#endif /*EMU_CONFIG_H*/
|
||||
|
||||
@@ -37,52 +37,49 @@
|
||||
* USA.
|
||||
*/
|
||||
#ifndef EMU_DEVICE_H
|
||||
# define EMU_DEVICE_H
|
||||
|
||||
|
||||
#define CONFIG_END -1
|
||||
#define CONFIG_STRING 0
|
||||
#define CONFIG_INT 1
|
||||
#define CONFIG_BINARY 2
|
||||
#define CONFIG_SELECTION 3
|
||||
#define CONFIG_MIDI_OUT 4
|
||||
#define CONFIG_FNAME 5
|
||||
#define CONFIG_SPINNER 6
|
||||
#define CONFIG_HEX16 7
|
||||
#define CONFIG_HEX20 8
|
||||
#define CONFIG_MAC 9
|
||||
#define CONFIG_MIDI_IN 10
|
||||
#define CONFIG_BIOS 11
|
||||
#define EMU_DEVICE_H
|
||||
|
||||
#define CONFIG_END -1
|
||||
#define CONFIG_STRING 0
|
||||
#define CONFIG_INT 1
|
||||
#define CONFIG_BINARY 2
|
||||
#define CONFIG_SELECTION 3
|
||||
#define CONFIG_MIDI_OUT 4
|
||||
#define CONFIG_FNAME 5
|
||||
#define CONFIG_SPINNER 6
|
||||
#define CONFIG_HEX16 7
|
||||
#define CONFIG_HEX20 8
|
||||
#define CONFIG_MAC 9
|
||||
#define CONFIG_MIDI_IN 10
|
||||
#define CONFIG_BIOS 11
|
||||
|
||||
enum {
|
||||
DEVICE_NOT_WORKING = 1, /* does not currently work correctly and will be disabled in a release build */
|
||||
DEVICE_PCJR = 2, /* requires an IBM PCjr */
|
||||
DEVICE_AT = 4, /* requires an AT-compatible system */
|
||||
DEVICE_PS2 = 8, /* requires a PS/1 or PS/2 system */
|
||||
DEVICE_ISA = 0x10, /* requires the ISA bus */
|
||||
DEVICE_CBUS = 0x20, /* requires the C-BUS bus */
|
||||
DEVICE_MCA = 0x40, /* requires the MCA bus */
|
||||
DEVICE_EISA = 0x80, /* requires the EISA bus */
|
||||
DEVICE_VLB = 0x100, /* requires the PCI bus */
|
||||
DEVICE_PCI = 0x200, /* requires the VLB bus */
|
||||
DEVICE_AGP = 0x400, /* requires the AGP bus */
|
||||
DEVICE_AC97 = 0x800, /* requires the AC'97 bus */
|
||||
DEVICE_COM = 0x1000, /* requires a serial port */
|
||||
DEVICE_LPT = 0x2000 /* requires a parallel port */
|
||||
DEVICE_NOT_WORKING = 1, /* does not currently work correctly and will be disabled in a release build */
|
||||
DEVICE_PCJR = 2, /* requires an IBM PCjr */
|
||||
DEVICE_AT = 4, /* requires an AT-compatible system */
|
||||
DEVICE_PS2 = 8, /* requires a PS/1 or PS/2 system */
|
||||
DEVICE_ISA = 0x10, /* requires the ISA bus */
|
||||
DEVICE_CBUS = 0x20, /* requires the C-BUS bus */
|
||||
DEVICE_MCA = 0x40, /* requires the MCA bus */
|
||||
DEVICE_EISA = 0x80, /* requires the EISA bus */
|
||||
DEVICE_VLB = 0x100, /* requires the PCI bus */
|
||||
DEVICE_PCI = 0x200, /* requires the VLB bus */
|
||||
DEVICE_AGP = 0x400, /* requires the AGP bus */
|
||||
DEVICE_AC97 = 0x800, /* requires the AC'97 bus */
|
||||
DEVICE_COM = 0x1000, /* requires a serial port */
|
||||
DEVICE_LPT = 0x2000 /* requires a parallel port */
|
||||
};
|
||||
|
||||
|
||||
typedef struct {
|
||||
const char *description;
|
||||
int value;
|
||||
int value;
|
||||
} device_config_selection_t;
|
||||
|
||||
typedef struct {
|
||||
const char *name;
|
||||
const char *internal_name;
|
||||
int bios_type;
|
||||
int files_no;
|
||||
const char *name;
|
||||
const char *internal_name;
|
||||
int bios_type;
|
||||
int files_no;
|
||||
const char **files;
|
||||
} device_config_bios_t;
|
||||
|
||||
@@ -93,94 +90,92 @@ typedef struct {
|
||||
} device_config_spinner_t;
|
||||
|
||||
typedef struct {
|
||||
const char *name;
|
||||
const char *description;
|
||||
int type;
|
||||
const char *default_string;
|
||||
int default_int;
|
||||
const char *file_filter;
|
||||
const device_config_spinner_t spinner;
|
||||
const char *name;
|
||||
const char *description;
|
||||
int type;
|
||||
const char *default_string;
|
||||
int default_int;
|
||||
const char *file_filter;
|
||||
const device_config_spinner_t spinner;
|
||||
const device_config_selection_t selection[16];
|
||||
const device_config_bios_t *bios;
|
||||
const device_config_bios_t *bios;
|
||||
} device_config_t;
|
||||
|
||||
typedef struct _device_ {
|
||||
const char *name;
|
||||
const char *name;
|
||||
const char *internal_name;
|
||||
uint32_t flags; /* system flags */
|
||||
uint32_t local; /* flags local to device */
|
||||
uint32_t flags; /* system flags */
|
||||
uint32_t local; /* flags local to device */
|
||||
|
||||
void *(*init)(const struct _device_ *);
|
||||
void (*close)(void *priv);
|
||||
void (*reset)(void *priv);
|
||||
void *(*init)(const struct _device_ *);
|
||||
void (*close)(void *priv);
|
||||
void (*reset)(void *priv);
|
||||
union {
|
||||
int (*available)(void);
|
||||
int (*poll)(int x, int y, int z, int b, void *priv);
|
||||
void (*register_pci_slot)(int device, int type, int inta, int intb, int intc, int intd, void *priv);
|
||||
int (*available)(void);
|
||||
int (*poll)(int x, int y, int z, int b, void *priv);
|
||||
void (*register_pci_slot)(int device, int type, int inta, int intb, int intc, int intd, void *priv);
|
||||
};
|
||||
void (*speed_changed)(void *priv);
|
||||
void (*force_redraw)(void *priv);
|
||||
void (*speed_changed)(void *priv);
|
||||
void (*force_redraw)(void *priv);
|
||||
|
||||
const device_config_t *config;
|
||||
} device_t;
|
||||
|
||||
typedef struct {
|
||||
const device_t *dev;
|
||||
char name[2048];
|
||||
const device_t *dev;
|
||||
char name[2048];
|
||||
} device_context_t;
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern void device_init(void);
|
||||
extern void device_set_context(device_context_t *c, const device_t *d, int inst);
|
||||
extern void device_context(const device_t *d);
|
||||
extern void device_context_inst(const device_t *d, int inst);
|
||||
extern void device_context_restore(void);
|
||||
extern void *device_add(const device_t *d);
|
||||
extern void device_add_ex(const device_t *d, void *priv);
|
||||
extern void *device_add_inst(const device_t *d, int inst);
|
||||
extern void device_add_inst_ex(const device_t *d, void *priv, int inst);
|
||||
extern void *device_cadd(const device_t *d, const device_t *cd);
|
||||
extern void device_cadd_ex(const device_t *d, const device_t *cd, void *priv);
|
||||
extern void *device_cadd_inst(const device_t *d, const device_t *cd, int inst);
|
||||
extern void device_cadd_inst_ex(const device_t *d, const device_t *cd, void *priv, int inst);
|
||||
extern void device_close_all(void);
|
||||
extern void device_reset_all(void);
|
||||
extern void device_reset_all_pci(void);
|
||||
extern void *device_get_priv(const device_t *d);
|
||||
extern int device_available(const device_t *d);
|
||||
extern int device_poll(const device_t *d, int x, int y, int z, int b);
|
||||
extern void device_register_pci_slot(const device_t *d, int device, int type, int inta, int intb, int intc, int intd);
|
||||
extern void device_speed_changed(void);
|
||||
extern void device_force_redraw(void);
|
||||
extern void device_get_name(const device_t *d, int bus, char *name);
|
||||
extern int device_has_config(const device_t *d);
|
||||
extern void device_init(void);
|
||||
extern void device_set_context(device_context_t *c, const device_t *d, int inst);
|
||||
extern void device_context(const device_t *d);
|
||||
extern void device_context_inst(const device_t *d, int inst);
|
||||
extern void device_context_restore(void);
|
||||
extern void *device_add(const device_t *d);
|
||||
extern void device_add_ex(const device_t *d, void *priv);
|
||||
extern void *device_add_inst(const device_t *d, int inst);
|
||||
extern void device_add_inst_ex(const device_t *d, void *priv, int inst);
|
||||
extern void *device_cadd(const device_t *d, const device_t *cd);
|
||||
extern void device_cadd_ex(const device_t *d, const device_t *cd, void *priv);
|
||||
extern void *device_cadd_inst(const device_t *d, const device_t *cd, int inst);
|
||||
extern void device_cadd_inst_ex(const device_t *d, const device_t *cd, void *priv, int inst);
|
||||
extern void device_close_all(void);
|
||||
extern void device_reset_all(void);
|
||||
extern void device_reset_all_pci(void);
|
||||
extern void *device_get_priv(const device_t *d);
|
||||
extern int device_available(const device_t *d);
|
||||
extern int device_poll(const device_t *d, int x, int y, int z, int b);
|
||||
extern void device_register_pci_slot(const device_t *d, int device, int type, int inta, int intb, int intc, int intd);
|
||||
extern void device_speed_changed(void);
|
||||
extern void device_force_redraw(void);
|
||||
extern void device_get_name(const device_t *d, int bus, char *name);
|
||||
extern int device_has_config(const device_t *d);
|
||||
|
||||
extern int device_is_valid(const device_t *, int m);
|
||||
extern int device_is_valid(const device_t *, int m);
|
||||
|
||||
extern int device_get_config_int(const char *name);
|
||||
extern int device_get_config_int_ex(const char *s, int dflt_int);
|
||||
extern int device_get_config_hex16(const char *name);
|
||||
extern int device_get_config_hex20(const char *name);
|
||||
extern int device_get_config_mac(const char *name, int dflt_int);
|
||||
extern void device_set_config_int(const char *s, int val);
|
||||
extern void device_set_config_hex16(const char *s, int val);
|
||||
extern void device_set_config_hex20(const char *s, int val);
|
||||
extern void device_set_config_mac(const char *s, int val);
|
||||
extern const char *device_get_config_string(const char *name);
|
||||
#define device_get_config_bios device_get_config_string
|
||||
extern int device_get_config_int(const char *name);
|
||||
extern int device_get_config_int_ex(const char *s, int dflt_int);
|
||||
extern int device_get_config_hex16(const char *name);
|
||||
extern int device_get_config_hex20(const char *name);
|
||||
extern int device_get_config_mac(const char *name, int dflt_int);
|
||||
extern void device_set_config_int(const char *s, int val);
|
||||
extern void device_set_config_hex16(const char *s, int val);
|
||||
extern void device_set_config_hex20(const char *s, int val);
|
||||
extern void device_set_config_mac(const char *s, int val);
|
||||
extern const char *device_get_config_string(const char *name);
|
||||
#define device_get_config_bios device_get_config_string
|
||||
|
||||
extern char * device_get_internal_name(const device_t *d);
|
||||
extern char *device_get_internal_name(const device_t *d);
|
||||
|
||||
extern int machine_get_config_int(char *s);
|
||||
extern char *machine_get_config_string(char *s);
|
||||
extern int machine_get_config_int(char *s);
|
||||
extern char *machine_get_config_string(char *s);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#endif /*EMU_DEVICE_H*/
|
||||
#endif /*EMU_DEVICE_H*/
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
#ifndef EMU_LPT_H
|
||||
# define EMU_LPT_H
|
||||
#define EMU_LPT_H
|
||||
|
||||
#define LPT1_ADDR 0x0378
|
||||
#define LPT1_IRQ 7
|
||||
#define LPT2_ADDR 0x0278
|
||||
#define LPT2_IRQ 5
|
||||
#define LPT1_ADDR 0x0378
|
||||
#define LPT1_IRQ 7
|
||||
#define LPT2_ADDR 0x0278
|
||||
#define LPT2_IRQ 5
|
||||
// LPT 1 on machines when installed
|
||||
#define LPT_MDA_ADDR 0x03bc
|
||||
#define LPT_MDA_IRQ 7
|
||||
#define LPT4_ADDR 0x0268
|
||||
#define LPT4_IRQ 5
|
||||
#define LPT_MDA_ADDR 0x03bc
|
||||
#define LPT_MDA_IRQ 7
|
||||
#define LPT4_ADDR 0x0268
|
||||
#define LPT4_IRQ 5
|
||||
/*
|
||||
#define LPT5_ADDR 0x027c
|
||||
#define LPT5_IRQ 7
|
||||
@@ -22,37 +22,36 @@ typedef struct
|
||||
const char *name;
|
||||
const char *internal_name;
|
||||
|
||||
void * (*init)(void *lpt);
|
||||
void (*close)(void *p);
|
||||
void (*write_data)(uint8_t val, void *p);
|
||||
void (*write_ctrl)(uint8_t val, void *p);
|
||||
uint8_t (*read_data)(void *p);
|
||||
uint8_t (*read_status)(void *p);
|
||||
uint8_t (*read_ctrl)(void *p);
|
||||
void *(*init)(void *lpt);
|
||||
void (*close)(void *p);
|
||||
void (*write_data)(uint8_t val, void *p);
|
||||
void (*write_ctrl)(uint8_t val, void *p);
|
||||
uint8_t (*read_data)(void *p);
|
||||
uint8_t (*read_status)(void *p);
|
||||
uint8_t (*read_ctrl)(void *p);
|
||||
} lpt_device_t;
|
||||
|
||||
|
||||
extern void lpt_init(void);
|
||||
extern void lpt_port_init(int i, uint16_t port);
|
||||
extern void lpt_port_irq(int i, uint8_t irq);
|
||||
extern void lpt_port_remove(int i);
|
||||
extern void lpt1_remove_ams(void);
|
||||
|
||||
#define lpt1_init(a) lpt_port_init(0, a)
|
||||
#define lpt1_irq(a) lpt_port_irq(0, a)
|
||||
#define lpt1_remove() lpt_port_remove(0)
|
||||
#define lpt1_init(a) lpt_port_init(0, a)
|
||||
#define lpt1_irq(a) lpt_port_irq(0, a)
|
||||
#define lpt1_remove() lpt_port_remove(0)
|
||||
|
||||
#define lpt2_init(a) lpt_port_init(1, a)
|
||||
#define lpt2_irq(a) lpt_port_irq(1, a)
|
||||
#define lpt2_remove() lpt_port_remove(1)
|
||||
#define lpt2_init(a) lpt_port_init(1, a)
|
||||
#define lpt2_irq(a) lpt_port_irq(1, a)
|
||||
#define lpt2_remove() lpt_port_remove(1)
|
||||
|
||||
#define lpt3_init(a) lpt_port_init(2, a)
|
||||
#define lpt3_irq(a) lpt_port_irq(2, a)
|
||||
#define lpt3_remove() lpt_port_remove(2)
|
||||
#define lpt3_init(a) lpt_port_init(2, a)
|
||||
#define lpt3_irq(a) lpt_port_irq(2, a)
|
||||
#define lpt3_remove() lpt_port_remove(2)
|
||||
|
||||
#define lpt4_init(a) lpt_port_init(3, a)
|
||||
#define lpt4_irq(a) lpt_port_irq(3, a)
|
||||
#define lpt4_remove() lpt_port_remove(3)
|
||||
#define lpt4_init(a) lpt_port_init(3, a)
|
||||
#define lpt4_irq(a) lpt_port_irq(3, a)
|
||||
#define lpt4_remove() lpt_port_remove(3)
|
||||
|
||||
/*
|
||||
#define lpt5_init(a) lpt_port_init(4, a)
|
||||
@@ -64,31 +63,29 @@ extern void lpt1_remove_ams(void);
|
||||
#define lpt6_remove() lpt_port_remove(5)
|
||||
*/
|
||||
|
||||
|
||||
void lpt_devices_init(void);
|
||||
void lpt_devices_close(void);
|
||||
|
||||
|
||||
typedef struct {
|
||||
uint8_t enabled, irq,
|
||||
dat, ctrl;
|
||||
uint16_t addr, pad0;
|
||||
int device, enable_irq;
|
||||
lpt_device_t * dt;
|
||||
void * priv;
|
||||
uint8_t enabled, irq,
|
||||
dat, ctrl;
|
||||
uint16_t addr, pad0;
|
||||
int device, enable_irq;
|
||||
lpt_device_t *dt;
|
||||
void *priv;
|
||||
} lpt_port_t;
|
||||
|
||||
extern lpt_port_t lpt_ports[PARALLEL_MAX];
|
||||
extern lpt_port_t lpt_ports[PARALLEL_MAX];
|
||||
|
||||
extern void lpt_write(uint16_t port, uint8_t val, void *priv);
|
||||
extern uint8_t lpt_read(uint16_t port, void *priv);
|
||||
extern void lpt_write(uint16_t port, uint8_t val, void *priv);
|
||||
extern uint8_t lpt_read(uint16_t port, void *priv);
|
||||
|
||||
extern void lpt_irq(void *priv, int raise);
|
||||
extern void lpt_irq(void *priv, int raise);
|
||||
|
||||
extern char * lpt_device_get_name(int id);
|
||||
extern char * lpt_device_get_internal_name(int id);
|
||||
extern char *lpt_device_get_name(int id);
|
||||
extern char *lpt_device_get_internal_name(int id);
|
||||
|
||||
extern int lpt_device_get_from_internal_name(char *s);
|
||||
extern int lpt_device_get_from_internal_name(char *s);
|
||||
|
||||
extern const lpt_device_t lpt_dac_device;
|
||||
extern const lpt_device_t lpt_dac_stereo_device;
|
||||
|
||||
@@ -18,12 +18,11 @@
|
||||
*/
|
||||
|
||||
#ifndef MACHINE_AMSTRAD_H
|
||||
# define MACHINE_AMSTRAD_H
|
||||
#define MACHINE_AMSTRAD_H
|
||||
|
||||
extern int amstrad_latch;
|
||||
|
||||
enum
|
||||
{
|
||||
enum {
|
||||
AMSTRAD_NOLATCH,
|
||||
AMSTRAD_SW9,
|
||||
AMSTRAD_SW10
|
||||
|
||||
@@ -38,22 +38,19 @@
|
||||
*/
|
||||
|
||||
#ifndef MACHINE_T3100E_H
|
||||
# define MACHINE_T3100E_H
|
||||
|
||||
#define MACHINE_T3100E_H
|
||||
|
||||
extern const device_t t3100e_device;
|
||||
|
||||
extern void t3100e_notify_set(uint8_t value);
|
||||
extern void t3100e_display_set(uint8_t value);
|
||||
extern uint8_t t3100e_display_get(void);
|
||||
extern uint8_t t3100e_config_get(void);
|
||||
extern void t3100e_turbo_set(uint8_t value);
|
||||
extern uint8_t t3100e_mono_get(void);
|
||||
extern void t3100e_mono_set(uint8_t value);
|
||||
|
||||
extern void t3100e_notify_set(uint8_t value);
|
||||
extern void t3100e_display_set(uint8_t value);
|
||||
extern uint8_t t3100e_display_get(void);
|
||||
extern uint8_t t3100e_config_get(void);
|
||||
extern void t3100e_turbo_set(uint8_t value);
|
||||
extern uint8_t t3100e_mono_get(void);
|
||||
extern void t3100e_mono_set(uint8_t value);
|
||||
extern void t3100e_video_options_set(uint8_t options);
|
||||
extern void t3100e_display_set(uint8_t internal);
|
||||
|
||||
extern void t3100e_video_options_set(uint8_t options);
|
||||
extern void t3100e_display_set(uint8_t internal);
|
||||
|
||||
|
||||
#endif /*MACHINE_T3100E_H*/
|
||||
#endif /*MACHINE_T3100E_H*/
|
||||
|
||||
@@ -38,24 +38,21 @@
|
||||
*/
|
||||
|
||||
#ifndef MACHINE_T1000_H
|
||||
# define MACHINE_T1000_H
|
||||
|
||||
#define MACHINE_T1000_H
|
||||
|
||||
extern const device_t t1000_video_device;
|
||||
extern const device_t t1200_video_device;
|
||||
|
||||
|
||||
extern void t1000_video_options_set(uint8_t options);
|
||||
extern void t1000_video_options_set(uint8_t options);
|
||||
extern void t1000_video_enable(uint8_t enabled);
|
||||
extern void t1000_display_set(uint8_t internal);
|
||||
extern void t1000_display_set(uint8_t internal);
|
||||
|
||||
extern void t1000_syskey(uint8_t amask, uint8_t omask, uint8_t xmask);
|
||||
extern void t1000_syskey(uint8_t amask, uint8_t omask, uint8_t xmask);
|
||||
|
||||
extern void t1000_nvr_load(void);
|
||||
extern void t1000_nvr_save(void);
|
||||
extern void t1000_nvr_load(void);
|
||||
extern void t1000_nvr_save(void);
|
||||
|
||||
extern void t1200_nvr_load(void);
|
||||
extern void t1200_nvr_save(void);
|
||||
extern void t1200_nvr_load(void);
|
||||
extern void t1200_nvr_save(void);
|
||||
|
||||
|
||||
#endif /*MACHINE_T1000_H*/
|
||||
#endif /*MACHINE_T1000_H*/
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
#ifndef MACHINE_XI80888_H
|
||||
# define MACHINE_XI80888_H
|
||||
#define MACHINE_XI80888_H
|
||||
|
||||
#include <86box/device.h>
|
||||
|
||||
extern const device_t xi8088_device;
|
||||
|
||||
uint8_t xi8088_turbo_get();
|
||||
void xi8088_turbo_set(uint8_t value);
|
||||
void xi8088_bios_128kb_set(int val);
|
||||
int xi8088_bios_128kb();
|
||||
void xi8088_turbo_set(uint8_t value);
|
||||
void xi8088_bios_128kb_set(int val);
|
||||
int xi8088_bios_128kb();
|
||||
|
||||
#endif /*MACHINE_XI80888_H*/
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
*/
|
||||
|
||||
#ifndef EMU_MACHINE_H
|
||||
# define EMU_MACHINE_H
|
||||
#define EMU_MACHINE_H
|
||||
|
||||
/* Machine feature flags. */
|
||||
#define MACHINE_BUS_NONE 0x00000000 /* sys has no bus */
|
||||
@@ -250,78 +250,78 @@ enum {
|
||||
};
|
||||
|
||||
typedef struct _machine_filter_ {
|
||||
const char *name;
|
||||
const char *name;
|
||||
const char id;
|
||||
} machine_filter_t;
|
||||
|
||||
typedef struct _machine_cpu_ {
|
||||
uint32_t package;
|
||||
const uint8_t *block;
|
||||
uint32_t min_bus;
|
||||
uint32_t max_bus;
|
||||
uint16_t min_voltage;
|
||||
uint16_t max_voltage;
|
||||
float min_multi;
|
||||
float max_multi;
|
||||
uint32_t package;
|
||||
const uint8_t *block;
|
||||
uint32_t min_bus;
|
||||
uint32_t max_bus;
|
||||
uint16_t min_voltage;
|
||||
uint16_t max_voltage;
|
||||
float min_multi;
|
||||
float max_multi;
|
||||
} machine_cpu_t;
|
||||
|
||||
typedef struct _machine_memory_ {
|
||||
uint32_t min, max;
|
||||
int step;
|
||||
uint32_t min, max;
|
||||
int step;
|
||||
} machine_memory_t;
|
||||
|
||||
typedef struct _machine_ {
|
||||
const char *name;
|
||||
const char *internal_name;
|
||||
uint32_t type;
|
||||
uint32_t chipset;
|
||||
int (*init)(const struct _machine_ *);
|
||||
uintptr_t pad, pad0, pad1, pad2;
|
||||
const machine_cpu_t cpu;
|
||||
uintptr_t bus_flags;
|
||||
uintptr_t flags;
|
||||
const char *name;
|
||||
const char *internal_name;
|
||||
uint32_t type;
|
||||
uint32_t chipset;
|
||||
int (*init)(const struct _machine_ *);
|
||||
uintptr_t pad, pad0, pad1, pad2;
|
||||
const machine_cpu_t cpu;
|
||||
uintptr_t bus_flags;
|
||||
uintptr_t flags;
|
||||
const machine_memory_t ram;
|
||||
int ram_granularity;
|
||||
int nvrmask;
|
||||
uint16_t kbc;
|
||||
int ram_granularity;
|
||||
int nvrmask;
|
||||
uint16_t kbc;
|
||||
/* Bits:
|
||||
7-0 Set bits are forced set on P1 (no forced set = 0x00);
|
||||
15-8 Clear bits are forced clear on P1 (no foced clear = 0xff). */
|
||||
uint16_t kbc_p1;
|
||||
uint32_t gpio;
|
||||
uint32_t gpio_acpi;
|
||||
7-0 Set bits are forced set on P1 (no forced set = 0x00);
|
||||
15-8 Clear bits are forced clear on P1 (no foced clear = 0xff). */
|
||||
uint16_t kbc_p1;
|
||||
uint32_t gpio;
|
||||
uint32_t gpio_acpi;
|
||||
#ifdef EMU_DEVICE_H
|
||||
const device_t *device;
|
||||
const device_t *vid_device;
|
||||
const device_t *snd_device;
|
||||
const device_t *net_device;
|
||||
#else
|
||||
void *device;
|
||||
void *vid_device;
|
||||
void *snd_device;
|
||||
void *net_device;
|
||||
void *device;
|
||||
void *vid_device;
|
||||
void *snd_device;
|
||||
void *net_device;
|
||||
#endif
|
||||
} machine_t;
|
||||
|
||||
/* Global variables. */
|
||||
extern const machine_filter_t machine_types[],
|
||||
machine_chipsets[];
|
||||
extern const machine_t machines[];
|
||||
extern int bios_only;
|
||||
extern int machine;
|
||||
machine_chipsets[];
|
||||
extern const machine_t machines[];
|
||||
extern int bios_only;
|
||||
extern int machine;
|
||||
|
||||
/* Core functions. */
|
||||
extern int machine_count(void);
|
||||
extern int machine_available(int m);
|
||||
extern char *machine_getname(void);
|
||||
extern char *machine_getname_ex(int m);
|
||||
extern char *machine_get_internal_name(void);
|
||||
extern int machine_get_machine_from_internal_name(char *s);
|
||||
extern void machine_init(void);
|
||||
extern int machine_count(void);
|
||||
extern int machine_available(int m);
|
||||
extern char *machine_getname(void);
|
||||
extern char *machine_getname_ex(int m);
|
||||
extern char *machine_get_internal_name(void);
|
||||
extern int machine_get_machine_from_internal_name(char *s);
|
||||
extern void machine_init(void);
|
||||
#ifdef EMU_DEVICE_H
|
||||
extern const device_t *machine_getdevice(int m);
|
||||
extern const device_t *machine_getdevice(int m);
|
||||
#endif
|
||||
extern char *machine_get_internal_name_ex(int m);
|
||||
extern char *machine_get_internal_name_ex(int m);
|
||||
extern int machine_get_nvrmask(int m);
|
||||
extern int machine_has_flags(int m, int flags);
|
||||
extern int machine_has_bus(int m, int bus_flags);
|
||||
@@ -335,476 +335,474 @@ extern void machine_close(void);
|
||||
extern uint8_t machine_get_p1(void);
|
||||
extern void machine_load_p1(int m);
|
||||
extern uint32_t machine_get_gpi(void);
|
||||
extern void machine_load_gpi(int m);
|
||||
extern void machine_load_gpi(int m);
|
||||
extern void machine_set_gpi(uint32_t gpi);
|
||||
|
||||
/* Initialization functions for boards and systems. */
|
||||
extern void machine_common_init(const machine_t *);
|
||||
extern void machine_common_init(const machine_t *);
|
||||
|
||||
/* m_amstrad.c */
|
||||
extern int machine_pc1512_init(const machine_t *);
|
||||
extern int machine_pc1640_init(const machine_t *);
|
||||
extern int machine_pc200_init(const machine_t *);
|
||||
extern int machine_ppc512_init(const machine_t *);
|
||||
extern int machine_pc2086_init(const machine_t *);
|
||||
extern int machine_pc3086_init(const machine_t *);
|
||||
extern int machine_pc1512_init(const machine_t *);
|
||||
extern int machine_pc1640_init(const machine_t *);
|
||||
extern int machine_pc200_init(const machine_t *);
|
||||
extern int machine_ppc512_init(const machine_t *);
|
||||
extern int machine_pc2086_init(const machine_t *);
|
||||
extern int machine_pc3086_init(const machine_t *);
|
||||
|
||||
/* m_at.c */
|
||||
extern void machine_at_common_init_ex(const machine_t *, int type);
|
||||
extern void machine_at_common_init(const machine_t *);
|
||||
extern void machine_at_init(const machine_t *);
|
||||
extern void machine_at_ps2_init(const machine_t *);
|
||||
extern void machine_at_common_ide_init(const machine_t *);
|
||||
extern void machine_at_ibm_common_ide_init(const machine_t *);
|
||||
extern void machine_at_ide_init(const machine_t *);
|
||||
extern void machine_at_ps2_ide_init(const machine_t *);
|
||||
extern void machine_at_common_init_ex(const machine_t *, int type);
|
||||
extern void machine_at_common_init(const machine_t *);
|
||||
extern void machine_at_init(const machine_t *);
|
||||
extern void machine_at_ps2_init(const machine_t *);
|
||||
extern void machine_at_common_ide_init(const machine_t *);
|
||||
extern void machine_at_ibm_common_ide_init(const machine_t *);
|
||||
extern void machine_at_ide_init(const machine_t *);
|
||||
extern void machine_at_ps2_ide_init(const machine_t *);
|
||||
|
||||
extern int machine_at_ibm_init(const machine_t *);
|
||||
extern int machine_at_ibm_init(const machine_t *);
|
||||
|
||||
//IBM AT with custom BIOS
|
||||
extern int machine_at_ibmatami_init(const machine_t *); // IBM AT with AMI BIOS
|
||||
extern int machine_at_ibmatpx_init(const machine_t *); //IBM AT with Phoenix BIOS
|
||||
extern int machine_at_ibmatquadtel_init(const machine_t *); // IBM AT with Quadtel BIOS
|
||||
// IBM AT with custom BIOS
|
||||
extern int machine_at_ibmatami_init(const machine_t *); // IBM AT with AMI BIOS
|
||||
extern int machine_at_ibmatpx_init(const machine_t *); // IBM AT with Phoenix BIOS
|
||||
extern int machine_at_ibmatquadtel_init(const machine_t *); // IBM AT with Quadtel BIOS
|
||||
|
||||
extern int machine_at_ibmxt286_init(const machine_t *);
|
||||
extern int machine_at_ibmxt286_init(const machine_t *);
|
||||
|
||||
extern int machine_at_siemens_init(const machine_t *); //Siemens PCD-2L. N82330 discrete machine. It segfaults in some places
|
||||
extern int machine_at_siemens_init(const machine_t *); // Siemens PCD-2L. N82330 discrete machine. It segfaults in some places
|
||||
|
||||
#if defined(DEV_BRANCH) && defined(USE_OPEN_AT)
|
||||
extern int machine_at_openat_init(const machine_t *);
|
||||
extern int machine_at_openat_init(const machine_t *);
|
||||
#endif
|
||||
|
||||
/* m_at_286_386sx.c */
|
||||
extern int machine_at_tg286m_init(const machine_t *);
|
||||
extern int machine_at_ama932j_init(const machine_t *);
|
||||
extern int machine_at_px286_init(const machine_t *);
|
||||
extern int machine_at_quadt286_init(const machine_t *);
|
||||
extern int machine_at_mr286_init(const machine_t *);
|
||||
extern int machine_at_tg286m_init(const machine_t *);
|
||||
extern int machine_at_ama932j_init(const machine_t *);
|
||||
extern int machine_at_px286_init(const machine_t *);
|
||||
extern int machine_at_quadt286_init(const machine_t *);
|
||||
extern int machine_at_mr286_init(const machine_t *);
|
||||
|
||||
extern int machine_at_neat_init(const machine_t *);
|
||||
extern int machine_at_neat_ami_init(const machine_t *);
|
||||
extern int machine_at_neat_init(const machine_t *);
|
||||
extern int machine_at_neat_ami_init(const machine_t *);
|
||||
|
||||
extern int machine_at_quadt386sx_init(const machine_t *);
|
||||
extern int machine_at_quadt386sx_init(const machine_t *);
|
||||
|
||||
extern int machine_at_award286_init(const machine_t *);
|
||||
extern int machine_at_gdc212m_init(const machine_t *);
|
||||
extern int machine_at_gw286ct_init(const machine_t *);
|
||||
extern int machine_at_super286tr_init(const machine_t *);
|
||||
extern int machine_at_spc4200p_init(const machine_t *);
|
||||
extern int machine_at_spc4216p_init(const machine_t *);
|
||||
extern int machine_at_spc4620p_init(const machine_t *);
|
||||
extern int machine_at_kmxc02_init(const machine_t *);
|
||||
extern int machine_at_deskmaster286_init(const machine_t *);
|
||||
extern int machine_at_award286_init(const machine_t *);
|
||||
extern int machine_at_gdc212m_init(const machine_t *);
|
||||
extern int machine_at_gw286ct_init(const machine_t *);
|
||||
extern int machine_at_super286tr_init(const machine_t *);
|
||||
extern int machine_at_spc4200p_init(const machine_t *);
|
||||
extern int machine_at_spc4216p_init(const machine_t *);
|
||||
extern int machine_at_spc4620p_init(const machine_t *);
|
||||
extern int machine_at_kmxc02_init(const machine_t *);
|
||||
extern int machine_at_deskmaster286_init(const machine_t *);
|
||||
|
||||
extern int machine_at_pc8_init(const machine_t *);
|
||||
extern int machine_at_3302_init(const machine_t *);
|
||||
extern int machine_at_pc8_init(const machine_t *);
|
||||
extern int machine_at_3302_init(const machine_t *);
|
||||
|
||||
#if defined(DEV_BRANCH) && defined(USE_OLIVETTI)
|
||||
extern int machine_at_m290_init(const machine_t *);
|
||||
extern int machine_at_m290_init(const machine_t *);
|
||||
#endif
|
||||
|
||||
extern int machine_at_shuttle386sx_init(const machine_t *);
|
||||
extern int machine_at_adi386sx_init(const machine_t *);
|
||||
extern int machine_at_cmdsl386sx16_init(const machine_t *);
|
||||
extern int machine_at_cmdsl386sx25_init(const machine_t *);
|
||||
extern int machine_at_dataexpert386sx_init(const machine_t *);
|
||||
extern int machine_at_spc6033p_init(const machine_t *);
|
||||
extern int machine_at_wd76c10_init(const machine_t *);
|
||||
extern int machine_at_arb1374_init(const machine_t *);
|
||||
extern int machine_at_sbc350a_init(const machine_t *);
|
||||
extern int machine_at_flytech386_init(const machine_t *);
|
||||
extern int machine_at_mr1217_init(const machine_t *);
|
||||
extern int machine_at_pja511m_init(const machine_t *);
|
||||
extern int machine_at_prox1332_init(const machine_t *);
|
||||
extern int machine_at_shuttle386sx_init(const machine_t *);
|
||||
extern int machine_at_adi386sx_init(const machine_t *);
|
||||
extern int machine_at_cmdsl386sx16_init(const machine_t *);
|
||||
extern int machine_at_cmdsl386sx25_init(const machine_t *);
|
||||
extern int machine_at_dataexpert386sx_init(const machine_t *);
|
||||
extern int machine_at_spc6033p_init(const machine_t *);
|
||||
extern int machine_at_wd76c10_init(const machine_t *);
|
||||
extern int machine_at_arb1374_init(const machine_t *);
|
||||
extern int machine_at_sbc350a_init(const machine_t *);
|
||||
extern int machine_at_flytech386_init(const machine_t *);
|
||||
extern int machine_at_mr1217_init(const machine_t *);
|
||||
extern int machine_at_pja511m_init(const machine_t *);
|
||||
extern int machine_at_prox1332_init(const machine_t *);
|
||||
|
||||
extern int machine_at_awardsx_init(const machine_t *);
|
||||
extern int machine_at_awardsx_init(const machine_t *);
|
||||
|
||||
extern int machine_at_pc916sx_init(const machine_t *);
|
||||
extern int machine_at_pc916sx_init(const machine_t *);
|
||||
|
||||
/* m_at_386dx_486.c */
|
||||
extern int machine_at_acc386_init(const machine_t *);
|
||||
extern int machine_at_asus386_init(const machine_t *);
|
||||
extern int machine_at_ecs386_init(const machine_t *);
|
||||
extern int machine_at_spc6000a_init(const machine_t *);
|
||||
extern int machine_at_micronics386_init(const machine_t *);
|
||||
extern int machine_at_acc386_init(const machine_t *);
|
||||
extern int machine_at_asus386_init(const machine_t *);
|
||||
extern int machine_at_ecs386_init(const machine_t *);
|
||||
extern int machine_at_spc6000a_init(const machine_t *);
|
||||
extern int machine_at_micronics386_init(const machine_t *);
|
||||
|
||||
extern int machine_at_rycleopardlx_init(const machine_t *);
|
||||
extern int machine_at_rycleopardlx_init(const machine_t *);
|
||||
|
||||
extern int machine_at_486vchd_init(const machine_t *);
|
||||
extern int machine_at_486vchd_init(const machine_t *);
|
||||
|
||||
extern int machine_at_cs4031_init(const machine_t *);
|
||||
extern int machine_at_cs4031_init(const machine_t *);
|
||||
|
||||
extern int machine_at_pb410a_init(const machine_t *);
|
||||
extern int machine_at_pb410a_init(const machine_t *);
|
||||
|
||||
extern int machine_at_decpclpv_init(const machine_t *);
|
||||
extern int machine_at_acerv10_init(const machine_t *);
|
||||
extern int machine_at_decpclpv_init(const machine_t *);
|
||||
extern int machine_at_acerv10_init(const machine_t *);
|
||||
|
||||
extern int machine_at_acera1g_init(const machine_t *);
|
||||
extern int machine_at_ali1429_init(const machine_t *);
|
||||
extern int machine_at_winbios1429_init(const machine_t *);
|
||||
extern int machine_at_acera1g_init(const machine_t *);
|
||||
extern int machine_at_ali1429_init(const machine_t *);
|
||||
extern int machine_at_winbios1429_init(const machine_t *);
|
||||
|
||||
extern int machine_at_opti495_init(const machine_t *);
|
||||
extern int machine_at_opti495_ami_init(const machine_t *);
|
||||
extern int machine_at_opti495_mr_init(const machine_t *);
|
||||
extern int machine_at_opti495_init(const machine_t *);
|
||||
extern int machine_at_opti495_ami_init(const machine_t *);
|
||||
extern int machine_at_opti495_mr_init(const machine_t *);
|
||||
|
||||
extern int machine_at_vect486vl_init(const machine_t *);
|
||||
extern int machine_at_d824_init(const machine_t *);
|
||||
extern int machine_at_vect486vl_init(const machine_t *);
|
||||
extern int machine_at_d824_init(const machine_t *);
|
||||
|
||||
extern int machine_at_403tg_init(const machine_t *);
|
||||
extern int machine_at_403tg_d_init(const machine_t *);
|
||||
extern int machine_at_403tg_d_mr_init(const machine_t *);
|
||||
extern int machine_at_pc330_6573_init(const machine_t *);
|
||||
extern int machine_at_mvi486_init(const machine_t *);
|
||||
extern int machine_at_403tg_init(const machine_t *);
|
||||
extern int machine_at_403tg_d_init(const machine_t *);
|
||||
extern int machine_at_403tg_d_mr_init(const machine_t *);
|
||||
extern int machine_at_pc330_6573_init(const machine_t *);
|
||||
extern int machine_at_mvi486_init(const machine_t *);
|
||||
|
||||
extern int machine_at_sis401_init(const machine_t *);
|
||||
extern int machine_at_isa486_init(const machine_t *);
|
||||
extern int machine_at_av4_init(const machine_t *);
|
||||
extern int machine_at_valuepoint433_init(const machine_t *);
|
||||
extern int machine_at_sis401_init(const machine_t *);
|
||||
extern int machine_at_isa486_init(const machine_t *);
|
||||
extern int machine_at_av4_init(const machine_t *);
|
||||
extern int machine_at_valuepoint433_init(const machine_t *);
|
||||
|
||||
extern int machine_at_vli486sv2g_init(const machine_t *);
|
||||
extern int machine_at_ami471_init(const machine_t *);
|
||||
extern int machine_at_dtk486_init(const machine_t *);
|
||||
extern int machine_at_px471_init(const machine_t *);
|
||||
extern int machine_at_win471_init(const machine_t *);
|
||||
extern int machine_at_vi15g_init(const machine_t *);
|
||||
extern int machine_at_greenb_init(const machine_t *);
|
||||
extern int machine_at_vli486sv2g_init(const machine_t *);
|
||||
extern int machine_at_ami471_init(const machine_t *);
|
||||
extern int machine_at_dtk486_init(const machine_t *);
|
||||
extern int machine_at_px471_init(const machine_t *);
|
||||
extern int machine_at_win471_init(const machine_t *);
|
||||
extern int machine_at_vi15g_init(const machine_t *);
|
||||
extern int machine_at_greenb_init(const machine_t *);
|
||||
|
||||
extern int machine_at_r418_init(const machine_t *);
|
||||
extern int machine_at_ls486e_init(const machine_t *);
|
||||
extern int machine_at_4dps_init(const machine_t *);
|
||||
extern int machine_at_4saw2_init(const machine_t *);
|
||||
extern int machine_at_m4li_init(const machine_t *);
|
||||
extern int machine_at_alfredo_init(const machine_t *);
|
||||
extern int machine_at_ninja_init(const machine_t *);
|
||||
extern int machine_at_486sp3_init(const machine_t *);
|
||||
extern int machine_at_486sp3c_init(const machine_t *);
|
||||
extern int machine_at_486sp3g_init(const machine_t *);
|
||||
extern int machine_at_486ap4_init(const machine_t *);
|
||||
extern int machine_at_g486vpa_init(const machine_t *);
|
||||
extern int machine_at_486vipio2_init(const machine_t *);
|
||||
extern int machine_at_abpb4_init(const machine_t *);
|
||||
extern int machine_at_win486pci_init(const machine_t *);
|
||||
extern int machine_at_ms4145_init(const machine_t *);
|
||||
extern int machine_at_sbc490_init(const machine_t *);
|
||||
extern int machine_at_tf486_init(const machine_t *);
|
||||
extern int machine_at_r418_init(const machine_t *);
|
||||
extern int machine_at_ls486e_init(const machine_t *);
|
||||
extern int machine_at_4dps_init(const machine_t *);
|
||||
extern int machine_at_4saw2_init(const machine_t *);
|
||||
extern int machine_at_m4li_init(const machine_t *);
|
||||
extern int machine_at_alfredo_init(const machine_t *);
|
||||
extern int machine_at_ninja_init(const machine_t *);
|
||||
extern int machine_at_486sp3_init(const machine_t *);
|
||||
extern int machine_at_486sp3c_init(const machine_t *);
|
||||
extern int machine_at_486sp3g_init(const machine_t *);
|
||||
extern int machine_at_486ap4_init(const machine_t *);
|
||||
extern int machine_at_g486vpa_init(const machine_t *);
|
||||
extern int machine_at_486vipio2_init(const machine_t *);
|
||||
extern int machine_at_abpb4_init(const machine_t *);
|
||||
extern int machine_at_win486pci_init(const machine_t *);
|
||||
extern int machine_at_ms4145_init(const machine_t *);
|
||||
extern int machine_at_sbc490_init(const machine_t *);
|
||||
extern int machine_at_tf486_init(const machine_t *);
|
||||
|
||||
extern int machine_at_pci400cb_init(const machine_t *);
|
||||
extern int machine_at_g486ip_init(const machine_t *);
|
||||
extern int machine_at_pci400cb_init(const machine_t *);
|
||||
extern int machine_at_g486ip_init(const machine_t *);
|
||||
|
||||
extern int machine_at_itoxstar_init(const machine_t *);
|
||||
extern int machine_at_arb1423c_init(const machine_t *);
|
||||
extern int machine_at_arb1479_init(const machine_t *);
|
||||
extern int machine_at_pcm9340_init(const machine_t *);
|
||||
extern int machine_at_pcm5330_init(const machine_t *);
|
||||
extern int machine_at_itoxstar_init(const machine_t *);
|
||||
extern int machine_at_arb1423c_init(const machine_t *);
|
||||
extern int machine_at_arb1479_init(const machine_t *);
|
||||
extern int machine_at_pcm9340_init(const machine_t *);
|
||||
extern int machine_at_pcm5330_init(const machine_t *);
|
||||
|
||||
extern int machine_at_ecs486_init(const machine_t *);
|
||||
extern int machine_at_hot433_init(const machine_t *);
|
||||
extern int machine_at_atc1415_init(const machine_t *);
|
||||
extern int machine_at_actionpc2600_init(const machine_t *);
|
||||
extern int machine_at_m919_init(const machine_t *);
|
||||
extern int machine_at_spc7700plw_init(const machine_t *);
|
||||
extern int machine_at_ecs486_init(const machine_t *);
|
||||
extern int machine_at_hot433_init(const machine_t *);
|
||||
extern int machine_at_atc1415_init(const machine_t *);
|
||||
extern int machine_at_actionpc2600_init(const machine_t *);
|
||||
extern int machine_at_m919_init(const machine_t *);
|
||||
extern int machine_at_spc7700plw_init(const machine_t *);
|
||||
|
||||
/* m_at_commodore.c */
|
||||
extern int machine_at_cmdpc_init(const machine_t *);
|
||||
extern int machine_at_cmdpc_init(const machine_t *);
|
||||
|
||||
/* m_at_compaq.c */
|
||||
extern int machine_at_portableii_init(const machine_t *);
|
||||
extern int machine_at_portableiii_init(const machine_t *);
|
||||
extern int machine_at_portableiii386_init(const machine_t *);
|
||||
extern int machine_at_portableii_init(const machine_t *);
|
||||
extern int machine_at_portableiii_init(const machine_t *);
|
||||
extern int machine_at_portableiii386_init(const machine_t *);
|
||||
#if defined(DEV_BRANCH) && defined(USE_DESKPRO386)
|
||||
extern int machine_at_deskpro386_init(const machine_t *);
|
||||
extern int machine_at_deskpro386_init(const machine_t *);
|
||||
#endif
|
||||
|
||||
/* m_at_socket4.c */
|
||||
extern void machine_at_premiere_common_init(const machine_t *, int);
|
||||
extern void machine_at_award_common_init(const machine_t *);
|
||||
extern void machine_at_premiere_common_init(const machine_t *, int);
|
||||
extern void machine_at_award_common_init(const machine_t *);
|
||||
|
||||
extern void machine_at_sp4_common_init(const machine_t *model);
|
||||
extern void machine_at_sp4_common_init(const machine_t *model);
|
||||
|
||||
extern int machine_at_excaliburpci_init(const machine_t *);
|
||||
extern int machine_at_p5mp3_init(const machine_t *);
|
||||
extern int machine_at_dellxp60_init(const machine_t *);
|
||||
extern int machine_at_opti560l_init(const machine_t *);
|
||||
extern int machine_at_ambradp60_init(const machine_t *);
|
||||
extern int machine_at_valuepointp60_init(const machine_t *);
|
||||
extern int machine_at_revenge_init(const machine_t *);
|
||||
extern int machine_at_586mc1_init(const machine_t *);
|
||||
extern int machine_at_pb520r_init(const machine_t *);
|
||||
extern int machine_at_excaliburpci_init(const machine_t *);
|
||||
extern int machine_at_p5mp3_init(const machine_t *);
|
||||
extern int machine_at_dellxp60_init(const machine_t *);
|
||||
extern int machine_at_opti560l_init(const machine_t *);
|
||||
extern int machine_at_ambradp60_init(const machine_t *);
|
||||
extern int machine_at_valuepointp60_init(const machine_t *);
|
||||
extern int machine_at_revenge_init(const machine_t *);
|
||||
extern int machine_at_586mc1_init(const machine_t *);
|
||||
extern int machine_at_pb520r_init(const machine_t *);
|
||||
|
||||
extern int machine_at_excalibur_init(const machine_t *);
|
||||
extern int machine_at_excalibur_init(const machine_t *);
|
||||
|
||||
extern int machine_at_p5vl_init(const machine_t *);
|
||||
extern int machine_at_p5vl_init(const machine_t *);
|
||||
|
||||
extern int machine_at_excaliburpci2_init(const machine_t *);
|
||||
extern int machine_at_p5sp4_init(const machine_t *);
|
||||
extern int machine_at_excaliburpci2_init(const machine_t *);
|
||||
extern int machine_at_p5sp4_init(const machine_t *);
|
||||
|
||||
/* m_at_socket5.c */
|
||||
extern int machine_at_plato_init(const machine_t *);
|
||||
extern int machine_at_ambradp90_init(const machine_t *);
|
||||
extern int machine_at_430nx_init(const machine_t *);
|
||||
extern int machine_at_plato_init(const machine_t *);
|
||||
extern int machine_at_ambradp90_init(const machine_t *);
|
||||
extern int machine_at_430nx_init(const machine_t *);
|
||||
|
||||
extern int machine_at_acerv30_init(const machine_t *);
|
||||
extern int machine_at_apollo_init(const machine_t *);
|
||||
extern int machine_at_exp8551_init(const machine_t *);
|
||||
extern int machine_at_zappa_init(const machine_t *);
|
||||
extern int machine_at_powermatev_init(const machine_t *);
|
||||
extern int machine_at_mb500n_init(const machine_t *);
|
||||
extern int machine_at_hawk_init(const machine_t *);
|
||||
extern int machine_at_acerv30_init(const machine_t *);
|
||||
extern int machine_at_apollo_init(const machine_t *);
|
||||
extern int machine_at_exp8551_init(const machine_t *);
|
||||
extern int machine_at_zappa_init(const machine_t *);
|
||||
extern int machine_at_powermatev_init(const machine_t *);
|
||||
extern int machine_at_mb500n_init(const machine_t *);
|
||||
extern int machine_at_hawk_init(const machine_t *);
|
||||
|
||||
extern int machine_at_pat54pv_init(const machine_t *);
|
||||
extern int machine_at_pat54pv_init(const machine_t *);
|
||||
|
||||
extern int machine_at_hot543_init(const machine_t *);
|
||||
|
||||
extern int machine_at_p54sp4_init(const machine_t *);
|
||||
extern int machine_at_sq588_init(const machine_t *);
|
||||
extern int machine_at_hot543_init(const machine_t *);
|
||||
|
||||
extern int machine_at_p54sp4_init(const machine_t *);
|
||||
extern int machine_at_sq588_init(const machine_t *);
|
||||
|
||||
/* m_at_socket7_3v.c */
|
||||
extern int machine_at_p54tp4xe_init(const machine_t *);
|
||||
extern int machine_at_p54tp4xe_mr_init(const machine_t *);
|
||||
extern int machine_at_gw2katx_init(const machine_t *);
|
||||
extern int machine_at_thor_init(const machine_t *);
|
||||
extern int machine_at_mrthor_init(const machine_t *);
|
||||
extern int machine_at_endeavor_init(const machine_t *);
|
||||
extern int machine_at_ms5119_init(const machine_t *);
|
||||
extern int machine_at_pb640_init(const machine_t *);
|
||||
extern int machine_at_fmb_init(const machine_t *);
|
||||
extern int machine_at_p54tp4xe_init(const machine_t *);
|
||||
extern int machine_at_p54tp4xe_mr_init(const machine_t *);
|
||||
extern int machine_at_gw2katx_init(const machine_t *);
|
||||
extern int machine_at_thor_init(const machine_t *);
|
||||
extern int machine_at_mrthor_init(const machine_t *);
|
||||
extern int machine_at_endeavor_init(const machine_t *);
|
||||
extern int machine_at_ms5119_init(const machine_t *);
|
||||
extern int machine_at_pb640_init(const machine_t *);
|
||||
extern int machine_at_fmb_init(const machine_t *);
|
||||
|
||||
extern int machine_at_acerm3a_init(const machine_t *);
|
||||
extern int machine_at_ap53_init(const machine_t *);
|
||||
extern int machine_at_8500tuc_init(const machine_t *);
|
||||
extern int machine_at_p55t2s_init(const machine_t *);
|
||||
extern int machine_at_acerm3a_init(const machine_t *);
|
||||
extern int machine_at_ap53_init(const machine_t *);
|
||||
extern int machine_at_8500tuc_init(const machine_t *);
|
||||
extern int machine_at_p55t2s_init(const machine_t *);
|
||||
|
||||
extern int machine_at_p5vxb_init(const machine_t *);
|
||||
extern int machine_at_gw2kte_init(const machine_t *);
|
||||
extern int machine_at_p5vxb_init(const machine_t *);
|
||||
extern int machine_at_gw2kte_init(const machine_t *);
|
||||
|
||||
extern int machine_at_ap5s_init(const machine_t *);
|
||||
extern int machine_at_vectra54_init(const machine_t *);
|
||||
extern int machine_at_ap5s_init(const machine_t *);
|
||||
extern int machine_at_vectra54_init(const machine_t *);
|
||||
|
||||
/* m_at_socket7.c */
|
||||
extern int machine_at_acerv35n_init(const machine_t *);
|
||||
extern int machine_at_p55t2p4_init(const machine_t *);
|
||||
extern int machine_at_m7shi_init(const machine_t *);
|
||||
extern int machine_at_tc430hx_init(const machine_t *);
|
||||
extern int machine_at_equium5200_init(const machine_t *);
|
||||
extern int machine_at_pcv90_init(const machine_t *);
|
||||
extern int machine_at_p65up5_cp55t2d_init(const machine_t *);
|
||||
extern int machine_at_acerv35n_init(const machine_t *);
|
||||
extern int machine_at_p55t2p4_init(const machine_t *);
|
||||
extern int machine_at_m7shi_init(const machine_t *);
|
||||
extern int machine_at_tc430hx_init(const machine_t *);
|
||||
extern int machine_at_equium5200_init(const machine_t *);
|
||||
extern int machine_at_pcv90_init(const machine_t *);
|
||||
extern int machine_at_p65up5_cp55t2d_init(const machine_t *);
|
||||
|
||||
extern int machine_at_ap5vm_init(const machine_t *);
|
||||
extern int machine_at_p55tvp4_init(const machine_t *);
|
||||
extern int machine_at_5ivg_init(const machine_t *);
|
||||
extern int machine_at_8500tvxa_init(const machine_t *);
|
||||
extern int machine_at_presario2240_init(const machine_t *);
|
||||
extern int machine_at_presario4500_init(const machine_t *);
|
||||
extern int machine_at_p55va_init(const machine_t *);
|
||||
extern int machine_at_brio80xx_init(const machine_t *);
|
||||
extern int machine_at_pb680_init(const machine_t *);
|
||||
extern int machine_at_mb520n_init(const machine_t *);
|
||||
extern int machine_at_i430vx_init(const machine_t *);
|
||||
extern int machine_at_ap5vm_init(const machine_t *);
|
||||
extern int machine_at_p55tvp4_init(const machine_t *);
|
||||
extern int machine_at_5ivg_init(const machine_t *);
|
||||
extern int machine_at_8500tvxa_init(const machine_t *);
|
||||
extern int machine_at_presario2240_init(const machine_t *);
|
||||
extern int machine_at_presario4500_init(const machine_t *);
|
||||
extern int machine_at_p55va_init(const machine_t *);
|
||||
extern int machine_at_brio80xx_init(const machine_t *);
|
||||
extern int machine_at_pb680_init(const machine_t *);
|
||||
extern int machine_at_mb520n_init(const machine_t *);
|
||||
extern int machine_at_i430vx_init(const machine_t *);
|
||||
|
||||
extern int machine_at_nupro592_init(const machine_t *);
|
||||
extern int machine_at_tx97_init(const machine_t *);
|
||||
extern int machine_at_nupro592_init(const machine_t *);
|
||||
extern int machine_at_tx97_init(const machine_t *);
|
||||
#if defined(DEV_BRANCH) && defined(USE_AN430TX)
|
||||
extern int machine_at_an430tx_init(const machine_t *);
|
||||
extern int machine_at_an430tx_init(const machine_t *);
|
||||
#endif
|
||||
extern int machine_at_ym430tx_init(const machine_t *);
|
||||
extern int machine_at_mb540n_init(const machine_t *);
|
||||
extern int machine_at_56a5_init(const machine_t *);
|
||||
extern int machine_at_p5mms98_init(const machine_t *);
|
||||
extern int machine_at_ym430tx_init(const machine_t *);
|
||||
extern int machine_at_mb540n_init(const machine_t *);
|
||||
extern int machine_at_56a5_init(const machine_t *);
|
||||
extern int machine_at_p5mms98_init(const machine_t *);
|
||||
|
||||
extern int machine_at_ficva502_init(const machine_t *);
|
||||
extern int machine_at_ficva502_init(const machine_t *);
|
||||
|
||||
extern int machine_at_ficpa2012_init(const machine_t *);
|
||||
extern int machine_at_ficpa2012_init(const machine_t *);
|
||||
|
||||
extern int machine_at_r534f_init(const machine_t *);
|
||||
extern int machine_at_ms5146_init(const machine_t *);
|
||||
extern int machine_at_r534f_init(const machine_t *);
|
||||
extern int machine_at_ms5146_init(const machine_t *);
|
||||
|
||||
extern int machine_at_m560_init(const machine_t *);
|
||||
extern int machine_at_ms5164_init(const machine_t *);
|
||||
extern int machine_at_m560_init(const machine_t *);
|
||||
extern int machine_at_ms5164_init(const machine_t *);
|
||||
|
||||
/* m_at_sockets7.c */
|
||||
extern int machine_at_p5a_init(const machine_t *);
|
||||
extern int machine_at_m579_init(const machine_t *);
|
||||
extern int machine_at_5aa_init(const machine_t *);
|
||||
extern int machine_at_5ax_init(const machine_t *);
|
||||
extern int machine_at_p5a_init(const machine_t *);
|
||||
extern int machine_at_m579_init(const machine_t *);
|
||||
extern int machine_at_5aa_init(const machine_t *);
|
||||
extern int machine_at_5ax_init(const machine_t *);
|
||||
|
||||
extern int machine_at_ax59pro_init(const machine_t *);
|
||||
extern int machine_at_mvp3_init(const machine_t *);
|
||||
extern int machine_at_ficva503a_init(const machine_t *);
|
||||
extern int machine_at_5emapro_init(const machine_t *);
|
||||
extern int machine_at_ax59pro_init(const machine_t *);
|
||||
extern int machine_at_mvp3_init(const machine_t *);
|
||||
extern int machine_at_ficva503a_init(const machine_t *);
|
||||
extern int machine_at_5emapro_init(const machine_t *);
|
||||
|
||||
/* m_at_socket8.c */
|
||||
extern int machine_at_p6rp4_init(const machine_t *);
|
||||
extern int machine_at_aurora_init(const machine_t *);
|
||||
extern int machine_at_p6rp4_init(const machine_t *);
|
||||
extern int machine_at_aurora_init(const machine_t *);
|
||||
|
||||
extern int machine_at_686nx_init(const machine_t *);
|
||||
extern int machine_at_acerv60n_init(const machine_t *);
|
||||
extern int machine_at_vs440fx_init(const machine_t *);
|
||||
extern int machine_at_ap440fx_init(const machine_t *);
|
||||
extern int machine_at_mb600n_init(const machine_t *);
|
||||
extern int machine_at_8600ttc_init(const machine_t *);
|
||||
extern int machine_at_m6mi_init(const machine_t *);
|
||||
extern int machine_at_686nx_init(const machine_t *);
|
||||
extern int machine_at_acerv60n_init(const machine_t *);
|
||||
extern int machine_at_vs440fx_init(const machine_t *);
|
||||
extern int machine_at_ap440fx_init(const machine_t *);
|
||||
extern int machine_at_mb600n_init(const machine_t *);
|
||||
extern int machine_at_8600ttc_init(const machine_t *);
|
||||
extern int machine_at_m6mi_init(const machine_t *);
|
||||
#ifdef EMU_DEVICE_H
|
||||
extern void machine_at_p65up5_common_init(const machine_t *, const device_t *northbridge);
|
||||
extern void machine_at_p65up5_common_init(const machine_t *, const device_t *northbridge);
|
||||
#endif
|
||||
extern int machine_at_p65up5_cp6nd_init(const machine_t *);
|
||||
extern int machine_at_p65up5_cp6nd_init(const machine_t *);
|
||||
|
||||
/* m_at_slot1.c */
|
||||
extern int machine_at_m729_init(const machine_t *);
|
||||
extern int machine_at_m729_init(const machine_t *);
|
||||
|
||||
extern int machine_at_p65up5_cpknd_init(const machine_t *);
|
||||
extern int machine_at_kn97_init(const machine_t *);
|
||||
extern int machine_at_p65up5_cpknd_init(const machine_t *);
|
||||
extern int machine_at_kn97_init(const machine_t *);
|
||||
|
||||
extern int machine_at_lx6_init(const machine_t *);
|
||||
extern int machine_at_spitfire_init(const machine_t *);
|
||||
extern int machine_at_lx6_init(const machine_t *);
|
||||
extern int machine_at_spitfire_init(const machine_t *);
|
||||
|
||||
extern int machine_at_p6i440e2_init(const machine_t *);
|
||||
extern int machine_at_p6i440e2_init(const machine_t *);
|
||||
|
||||
extern int machine_at_p2bls_init(const machine_t *);
|
||||
extern int machine_at_p3bf_init(const machine_t *);
|
||||
extern int machine_at_bf6_init(const machine_t *);
|
||||
extern int machine_at_ax6bc_init(const machine_t *);
|
||||
extern int machine_at_atc6310bxii_init(const machine_t *);
|
||||
extern int machine_at_686bx_init(const machine_t *);
|
||||
extern int machine_at_s1846_init(const machine_t *);
|
||||
extern int machine_at_p6sba_init(const machine_t *);
|
||||
extern int machine_at_ficka6130_init(const machine_t *);
|
||||
extern int machine_at_p3v133_init(const machine_t *);
|
||||
extern int machine_at_p3v4x_init(const machine_t *);
|
||||
extern int machine_at_p2bls_init(const machine_t *);
|
||||
extern int machine_at_p3bf_init(const machine_t *);
|
||||
extern int machine_at_bf6_init(const machine_t *);
|
||||
extern int machine_at_ax6bc_init(const machine_t *);
|
||||
extern int machine_at_atc6310bxii_init(const machine_t *);
|
||||
extern int machine_at_686bx_init(const machine_t *);
|
||||
extern int machine_at_s1846_init(const machine_t *);
|
||||
extern int machine_at_p6sba_init(const machine_t *);
|
||||
extern int machine_at_ficka6130_init(const machine_t *);
|
||||
extern int machine_at_p3v133_init(const machine_t *);
|
||||
extern int machine_at_p3v4x_init(const machine_t *);
|
||||
|
||||
extern int machine_at_vei8_init(const machine_t *);
|
||||
extern int machine_at_vei8_init(const machine_t *);
|
||||
|
||||
extern int machine_at_borapro_init(const machine_t *);
|
||||
extern int machine_at_ms6168_init(const machine_t *);
|
||||
extern int machine_at_borapro_init(const machine_t *);
|
||||
extern int machine_at_ms6168_init(const machine_t *);
|
||||
|
||||
/* m_at_slot2.c */
|
||||
extern int machine_at_6gxu_init(const machine_t *);
|
||||
extern int machine_at_s2dge_init(const machine_t *);
|
||||
extern int machine_at_fw6400gx_init(const machine_t *);
|
||||
extern int machine_at_6gxu_init(const machine_t *);
|
||||
extern int machine_at_s2dge_init(const machine_t *);
|
||||
extern int machine_at_fw6400gx_init(const machine_t *);
|
||||
|
||||
/* m_at_socket370.c */
|
||||
extern int machine_at_s370slm_init(const machine_t *);
|
||||
extern int machine_at_s370slm_init(const machine_t *);
|
||||
|
||||
extern int machine_at_cubx_init(const machine_t *);
|
||||
extern int machine_at_atc7020bxii_init(const machine_t *);
|
||||
extern int machine_at_ambx133_init(const machine_t *);
|
||||
extern int machine_at_awo671r_init(const machine_t *);
|
||||
extern int machine_at_63a1_init(const machine_t *);
|
||||
extern int machine_at_s370sba_init(const machine_t *);
|
||||
extern int machine_at_apas3_init(const machine_t *);
|
||||
extern int machine_at_gt694va_init(const machine_t *);
|
||||
extern int machine_at_cuv4xls_init(const machine_t *);
|
||||
extern int machine_at_6via90ap_init(const machine_t *);
|
||||
extern int machine_at_s1857_init(const machine_t *);
|
||||
extern int machine_at_p6bap_init(const machine_t *);
|
||||
extern int machine_at_cubx_init(const machine_t *);
|
||||
extern int machine_at_atc7020bxii_init(const machine_t *);
|
||||
extern int machine_at_ambx133_init(const machine_t *);
|
||||
extern int machine_at_awo671r_init(const machine_t *);
|
||||
extern int machine_at_63a1_init(const machine_t *);
|
||||
extern int machine_at_s370sba_init(const machine_t *);
|
||||
extern int machine_at_apas3_init(const machine_t *);
|
||||
extern int machine_at_gt694va_init(const machine_t *);
|
||||
extern int machine_at_cuv4xls_init(const machine_t *);
|
||||
extern int machine_at_6via90ap_init(const machine_t *);
|
||||
extern int machine_at_s1857_init(const machine_t *);
|
||||
extern int machine_at_p6bap_init(const machine_t *);
|
||||
|
||||
/* m_at_misc.c */
|
||||
extern int machine_at_vpc2007_init(const machine_t *);
|
||||
extern int machine_at_vpc2007_init(const machine_t *);
|
||||
|
||||
/* m_at_t3100e.c */
|
||||
extern int machine_at_t3100e_init(const machine_t *);
|
||||
extern int machine_at_t3100e_init(const machine_t *);
|
||||
|
||||
/* m_europc.c */
|
||||
extern int machine_europc_init(const machine_t *);
|
||||
extern int machine_europc_init(const machine_t *);
|
||||
#ifdef EMU_DEVICE_H
|
||||
extern const device_t europc_device;
|
||||
#endif
|
||||
|
||||
/* m_xt_olivetti.c */
|
||||
extern int machine_xt_m24_init(const machine_t *);
|
||||
extern int machine_xt_m240_init(const machine_t *);
|
||||
extern int machine_xt_m19_init(const machine_t *);
|
||||
extern int machine_xt_m24_init(const machine_t *);
|
||||
extern int machine_xt_m240_init(const machine_t *);
|
||||
extern int machine_xt_m19_init(const machine_t *);
|
||||
|
||||
/* m_pcjr.c */
|
||||
extern int machine_pcjr_init(const machine_t *);
|
||||
extern int machine_pcjr_init(const machine_t *);
|
||||
|
||||
/* m_ps1.c */
|
||||
extern int machine_ps1_m2011_init(const machine_t *);
|
||||
extern int machine_ps1_m2121_init(const machine_t *);
|
||||
extern int machine_ps1_m2011_init(const machine_t *);
|
||||
extern int machine_ps1_m2121_init(const machine_t *);
|
||||
|
||||
/* m_ps1_hdc.c */
|
||||
#ifdef EMU_DEVICE_H
|
||||
extern void ps1_hdc_inform(void *, uint8_t *);
|
||||
extern void ps1_hdc_inform(void *, uint8_t *);
|
||||
extern const device_t ps1_hdc_device;
|
||||
#endif
|
||||
|
||||
/* m_ps2_isa.c */
|
||||
extern int machine_ps2_m30_286_init(const machine_t *);
|
||||
extern int machine_ps2_m30_286_init(const machine_t *);
|
||||
|
||||
/* m_ps2_mca.c */
|
||||
extern int machine_ps2_model_50_init(const machine_t *);
|
||||
extern int machine_ps2_model_60_init(const machine_t *);
|
||||
extern int machine_ps2_model_55sx_init(const machine_t *);
|
||||
extern int machine_ps2_model_65sx_init(const machine_t *);
|
||||
extern int machine_ps2_model_70_type3_init(const machine_t *);
|
||||
extern int machine_ps2_model_80_init(const machine_t *);
|
||||
extern int machine_ps2_model_80_axx_init(const machine_t *);
|
||||
extern int machine_ps2_model_50_init(const machine_t *);
|
||||
extern int machine_ps2_model_60_init(const machine_t *);
|
||||
extern int machine_ps2_model_55sx_init(const machine_t *);
|
||||
extern int machine_ps2_model_65sx_init(const machine_t *);
|
||||
extern int machine_ps2_model_70_type3_init(const machine_t *);
|
||||
extern int machine_ps2_model_80_init(const machine_t *);
|
||||
extern int machine_ps2_model_80_axx_init(const machine_t *);
|
||||
|
||||
/* m_tandy.c */
|
||||
extern int tandy1k_eeprom_read(void);
|
||||
extern int machine_tandy_init(const machine_t *);
|
||||
extern int machine_tandy1000hx_init(const machine_t *);
|
||||
extern int machine_tandy1000sl2_init(const machine_t *);
|
||||
extern int tandy1k_eeprom_read(void);
|
||||
extern int machine_tandy_init(const machine_t *);
|
||||
extern int machine_tandy1000hx_init(const machine_t *);
|
||||
extern int machine_tandy1000sl2_init(const machine_t *);
|
||||
|
||||
/* m_v86p.c */
|
||||
extern int machine_v86p_init(const machine_t *);
|
||||
extern int machine_v86p_init(const machine_t *);
|
||||
|
||||
/* m_xt.c */
|
||||
extern int machine_pc_init(const machine_t *);
|
||||
extern int machine_pc82_init(const machine_t *);
|
||||
extern int machine_pc_init(const machine_t *);
|
||||
extern int machine_pc82_init(const machine_t *);
|
||||
|
||||
extern int machine_xt_init(const machine_t *);
|
||||
extern int machine_genxt_init(const machine_t *);
|
||||
extern int machine_xt_init(const machine_t *);
|
||||
extern int machine_genxt_init(const machine_t *);
|
||||
|
||||
extern int machine_xt86_init(const machine_t *);
|
||||
extern int machine_xt86_init(const machine_t *);
|
||||
|
||||
extern int machine_xt_americxt_init(const machine_t *);
|
||||
extern int machine_xt_amixt_init(const machine_t *);
|
||||
extern int machine_xt_dtk_init(const machine_t *);
|
||||
extern int machine_xt_jukopc_init(const machine_t *);
|
||||
extern int machine_xt_openxt_init(const machine_t *);
|
||||
extern int machine_xt_pcxt_init(const machine_t *);
|
||||
extern int machine_xt_pxxt_init(const machine_t *);
|
||||
extern int machine_xt_pc4i_init(const machine_t *);
|
||||
extern int machine_xt_mpc1600_init(const machine_t *);
|
||||
extern int machine_xt_pcspirit_init(const machine_t *);
|
||||
extern int machine_xt_pc700_init(const machine_t *);
|
||||
extern int machine_xt_pc500_init(const machine_t *);
|
||||
extern int machine_xt_vendex_init(const machine_t *);
|
||||
extern int machine_xt_znic_init(const machine_t *);
|
||||
extern int machine_xt_super16t_init(const machine_t *);
|
||||
extern int machine_xt_super16te_init(const machine_t *);
|
||||
extern int machine_xt_top88_init(const machine_t *);
|
||||
extern int machine_xt_kaypropc_init(const machine_t *);
|
||||
extern int machine_xt_sansx16_init(const machine_t *);
|
||||
extern int machine_xt_bw230_init(const machine_t *);
|
||||
extern int machine_xt_americxt_init(const machine_t *);
|
||||
extern int machine_xt_amixt_init(const machine_t *);
|
||||
extern int machine_xt_dtk_init(const machine_t *);
|
||||
extern int machine_xt_jukopc_init(const machine_t *);
|
||||
extern int machine_xt_openxt_init(const machine_t *);
|
||||
extern int machine_xt_pcxt_init(const machine_t *);
|
||||
extern int machine_xt_pxxt_init(const machine_t *);
|
||||
extern int machine_xt_pc4i_init(const machine_t *);
|
||||
extern int machine_xt_mpc1600_init(const machine_t *);
|
||||
extern int machine_xt_pcspirit_init(const machine_t *);
|
||||
extern int machine_xt_pc700_init(const machine_t *);
|
||||
extern int machine_xt_pc500_init(const machine_t *);
|
||||
extern int machine_xt_vendex_init(const machine_t *);
|
||||
extern int machine_xt_znic_init(const machine_t *);
|
||||
extern int machine_xt_super16t_init(const machine_t *);
|
||||
extern int machine_xt_super16te_init(const machine_t *);
|
||||
extern int machine_xt_top88_init(const machine_t *);
|
||||
extern int machine_xt_kaypropc_init(const machine_t *);
|
||||
extern int machine_xt_sansx16_init(const machine_t *);
|
||||
extern int machine_xt_bw230_init(const machine_t *);
|
||||
|
||||
extern int machine_xt_iskra3104_init(const machine_t *);
|
||||
extern int machine_xt_iskra3104_init(const machine_t *);
|
||||
|
||||
/* m_xt_compaq.c */
|
||||
extern int machine_xt_compaq_deskpro_init(const machine_t *);
|
||||
extern int machine_xt_compaq_portable_init(const machine_t *);
|
||||
extern int machine_xt_compaq_deskpro_init(const machine_t *);
|
||||
extern int machine_xt_compaq_portable_init(const machine_t *);
|
||||
|
||||
/* m_xt_laserxt.c */
|
||||
#if defined(DEV_BRANCH) && defined(USE_LASERXT)
|
||||
extern int machine_xt_laserxt_init(const machine_t *);
|
||||
extern int machine_xt_lxt3_init(const machine_t *);
|
||||
extern int machine_xt_laserxt_init(const machine_t *);
|
||||
extern int machine_xt_lxt3_init(const machine_t *);
|
||||
#endif
|
||||
|
||||
/* m_xt_philips.c */
|
||||
extern int machine_xt_p3105_init(const machine_t *);
|
||||
extern int machine_xt_p3120_init(const machine_t *);
|
||||
extern int machine_xt_p3105_init(const machine_t *);
|
||||
extern int machine_xt_p3120_init(const machine_t *);
|
||||
/* m_xt_t1000.c */
|
||||
extern int machine_xt_t1000_init(const machine_t *);
|
||||
extern int machine_xt_t1200_init(const machine_t *);
|
||||
|
||||
extern int machine_xt_t1000_init(const machine_t *);
|
||||
extern int machine_xt_t1200_init(const machine_t *);
|
||||
|
||||
/* m_xt_zenith.c */
|
||||
extern int machine_xt_z184_init(const machine_t *);
|
||||
extern int machine_xt_z151_init(const machine_t *);
|
||||
extern int machine_xt_z159_init(const machine_t *);
|
||||
extern int machine_xt_z184_init(const machine_t *);
|
||||
extern int machine_xt_z151_init(const machine_t *);
|
||||
extern int machine_xt_z159_init(const machine_t *);
|
||||
|
||||
/* m_xt_xi8088.c */
|
||||
extern int machine_xt_xi8088_init(const machine_t *);
|
||||
extern int machine_xt_xi8088_init(const machine_t *);
|
||||
|
||||
#endif /*EMU_MACHINE_H*/
|
||||
#endif /*EMU_MACHINE_H*/
|
||||
|
||||
@@ -18,75 +18,71 @@
|
||||
*/
|
||||
|
||||
#ifndef EMU_MOUSE_H
|
||||
# define EMU_MOUSE_H
|
||||
#define EMU_MOUSE_H
|
||||
|
||||
#define MOUSE_TYPE_NONE 0 /* no mouse configured */
|
||||
#define MOUSE_TYPE_INTERNAL 1 /* machine has internal mouse */
|
||||
#define MOUSE_TYPE_LOGIBUS 2 /* Logitech/ATI Bus Mouse */
|
||||
#define MOUSE_TYPE_INPORT 3 /* Microsoft InPort Mouse */
|
||||
#define MOUSE_TYPE_NONE 0 /* no mouse configured */
|
||||
#define MOUSE_TYPE_INTERNAL 1 /* machine has internal mouse */
|
||||
#define MOUSE_TYPE_LOGIBUS 2 /* Logitech/ATI Bus Mouse */
|
||||
#define MOUSE_TYPE_INPORT 3 /* Microsoft InPort Mouse */
|
||||
#if 0
|
||||
# define MOUSE_TYPE_GENIBUS 4 /* Genius Bus Mouse */
|
||||
# define MOUSE_TYPE_GENIBUS 4 /* Genius Bus Mouse */
|
||||
#endif
|
||||
#define MOUSE_TYPE_MSYSTEMS 5 /* Mouse Systems mouse */
|
||||
#define MOUSE_TYPE_MICROSOFT 6 /* Microsoft 2-button Serial Mouse */
|
||||
#define MOUSE_TYPE_MS3BUTTON 7 /* Microsoft 3-button Serial Mouse */
|
||||
#define MOUSE_TYPE_MSWHEEL 8 /* Microsoft Serial Wheel Mouse */
|
||||
#define MOUSE_TYPE_LOGITECH 9 /* Logitech 2-button Serial Mouse */
|
||||
#define MOUSE_TYPE_LT3BUTTON 10 /* Logitech 3-button Serial Mouse */
|
||||
#define MOUSE_TYPE_PS2 11 /* PS/2 series Bus Mouse */
|
||||
|
||||
#define MOUSE_TYPE_ONBOARD 0x80 /* Mouse is an on-board version of one of the above. */
|
||||
#define MOUSE_TYPE_MSYSTEMS 5 /* Mouse Systems mouse */
|
||||
#define MOUSE_TYPE_MICROSOFT 6 /* Microsoft 2-button Serial Mouse */
|
||||
#define MOUSE_TYPE_MS3BUTTON 7 /* Microsoft 3-button Serial Mouse */
|
||||
#define MOUSE_TYPE_MSWHEEL 8 /* Microsoft Serial Wheel Mouse */
|
||||
#define MOUSE_TYPE_LOGITECH 9 /* Logitech 2-button Serial Mouse */
|
||||
#define MOUSE_TYPE_LT3BUTTON 10 /* Logitech 3-button Serial Mouse */
|
||||
#define MOUSE_TYPE_PS2 11 /* PS/2 series Bus Mouse */
|
||||
|
||||
#define MOUSE_TYPE_ONBOARD 0x80 /* Mouse is an on-board version of one of the above. */
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern int mouse_type;
|
||||
extern int mouse_x, mouse_y, mouse_z;
|
||||
extern int mouse_buttons;
|
||||
|
||||
extern int mouse_type;
|
||||
extern int mouse_x, mouse_y, mouse_z;
|
||||
extern int mouse_buttons;
|
||||
|
||||
#ifdef EMU_DEVICE_H
|
||||
extern const device_t *mouse_get_device(int mouse);
|
||||
extern void *mouse_ps2_init(const device_t *);
|
||||
extern const device_t *mouse_get_device(int mouse);
|
||||
extern void *mouse_ps2_init(const device_t *);
|
||||
|
||||
extern const device_t mouse_logibus_device;
|
||||
extern const device_t mouse_logibus_onboard_device;
|
||||
extern const device_t mouse_msinport_device;
|
||||
#if 0
|
||||
extern const device_t mouse_logibus_device;
|
||||
extern const device_t mouse_logibus_onboard_device;
|
||||
extern const device_t mouse_msinport_device;
|
||||
# if 0
|
||||
extern const device_t mouse_genibus_device;
|
||||
#endif
|
||||
extern const device_t mouse_mssystems_device;
|
||||
extern const device_t mouse_msserial_device;
|
||||
extern const device_t mouse_ltserial_device;
|
||||
extern const device_t mouse_ps2_device;
|
||||
# endif
|
||||
extern const device_t mouse_mssystems_device;
|
||||
extern const device_t mouse_msserial_device;
|
||||
extern const device_t mouse_ltserial_device;
|
||||
extern const device_t mouse_ps2_device;
|
||||
#endif
|
||||
|
||||
extern void mouse_init(void);
|
||||
extern void mouse_close(void);
|
||||
extern void mouse_reset(void);
|
||||
extern void mouse_set_buttons(int buttons);
|
||||
extern void mouse_process(void);
|
||||
extern void mouse_set_poll(int (*f)(int,int,int,int,void *), void *);
|
||||
extern void mouse_poll(void);
|
||||
extern void mouse_init(void);
|
||||
extern void mouse_close(void);
|
||||
extern void mouse_reset(void);
|
||||
extern void mouse_set_buttons(int buttons);
|
||||
extern void mouse_process(void);
|
||||
extern void mouse_set_poll(int (*f)(int, int, int, int, void *), void *);
|
||||
extern void mouse_poll(void);
|
||||
|
||||
extern void mouse_bus_set_irq(void *priv, int irq);
|
||||
extern void mouse_bus_set_irq(void *priv, int irq);
|
||||
|
||||
extern char *mouse_get_name(int mouse);
|
||||
extern char *mouse_get_internal_name(int mouse);
|
||||
extern int mouse_get_from_internal_name(char *s);
|
||||
extern int mouse_has_config(int mouse);
|
||||
extern int mouse_get_type(int mouse);
|
||||
extern int mouse_get_ndev(void);
|
||||
extern int mouse_get_buttons(void);
|
||||
|
||||
extern char *mouse_get_name(int mouse);
|
||||
extern char *mouse_get_internal_name(int mouse);
|
||||
extern int mouse_get_from_internal_name(char *s);
|
||||
extern int mouse_has_config(int mouse);
|
||||
extern int mouse_get_type(int mouse);
|
||||
extern int mouse_get_ndev(void);
|
||||
extern int mouse_get_buttons(void);
|
||||
|
||||
extern void mouse_clear_data(void *priv);
|
||||
extern void mouse_clear_data(void *priv);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#endif /*EMU_MOUSE_H*/
|
||||
#endif /*EMU_MOUSE_H*/
|
||||
|
||||
@@ -21,84 +21,80 @@
|
||||
*/
|
||||
|
||||
#ifndef EMU_SERIAL_H
|
||||
# define EMU_SERIAL_H
|
||||
#define EMU_SERIAL_H
|
||||
|
||||
#define SERIAL_8250 0
|
||||
#define SERIAL_8250_PCJR 1
|
||||
#define SERIAL_16450 2
|
||||
#define SERIAL_16550 3
|
||||
#define SERIAL_16650 4
|
||||
#define SERIAL_16750 5
|
||||
#define SERIAL_16850 6
|
||||
#define SERIAL_16950 7
|
||||
#define SERIAL_8250 0
|
||||
#define SERIAL_8250_PCJR 1
|
||||
#define SERIAL_16450 2
|
||||
#define SERIAL_16550 3
|
||||
#define SERIAL_16650 4
|
||||
#define SERIAL_16750 5
|
||||
#define SERIAL_16850 6
|
||||
#define SERIAL_16950 7
|
||||
|
||||
#define SERIAL_FIFO_SIZE 16
|
||||
#define SERIAL_FIFO_SIZE 16
|
||||
|
||||
/* Default settings for the standard ports. */
|
||||
#define COM1_ADDR 0x03f8
|
||||
#define COM1_IRQ 4
|
||||
#define COM2_ADDR 0x02f8
|
||||
#define COM2_IRQ 3
|
||||
#define COM3_ADDR 0x03e8
|
||||
#define COM3_IRQ 4
|
||||
#define COM4_ADDR 0x02e8
|
||||
#define COM4_IRQ 3
|
||||
|
||||
#define COM1_ADDR 0x03f8
|
||||
#define COM1_IRQ 4
|
||||
#define COM2_ADDR 0x02f8
|
||||
#define COM2_IRQ 3
|
||||
#define COM3_ADDR 0x03e8
|
||||
#define COM3_IRQ 4
|
||||
#define COM4_ADDR 0x02e8
|
||||
#define COM4_IRQ 3
|
||||
|
||||
struct serial_device_s;
|
||||
struct serial_s;
|
||||
|
||||
typedef struct serial_s
|
||||
{
|
||||
typedef struct serial_s {
|
||||
uint8_t lsr, thr, mctrl, rcr,
|
||||
iir, ier, lcr, msr,
|
||||
dat, int_status, scratch, fcr,
|
||||
irq, type, inst, transmit_enabled,
|
||||
fifo_enabled, rcvr_fifo_len, bits, data_bits,
|
||||
baud_cycles, rcvr_fifo_full, txsr, pad;
|
||||
iir, ier, lcr, msr,
|
||||
dat, int_status, scratch, fcr,
|
||||
irq, type, inst, transmit_enabled,
|
||||
fifo_enabled, rcvr_fifo_len, bits, data_bits,
|
||||
baud_cycles, rcvr_fifo_full, txsr, pad;
|
||||
|
||||
uint16_t dlab, base_address;
|
||||
|
||||
uint8_t rcvr_fifo_pos, xmit_fifo_pos,
|
||||
pad0, pad1,
|
||||
rcvr_fifo[SERIAL_FIFO_SIZE], xmit_fifo[SERIAL_FIFO_SIZE];
|
||||
pad0, pad1,
|
||||
rcvr_fifo[SERIAL_FIFO_SIZE], xmit_fifo[SERIAL_FIFO_SIZE];
|
||||
|
||||
pc_timer_t transmit_timer, timeout_timer;
|
||||
double clock_src, transmit_period;
|
||||
double clock_src, transmit_period;
|
||||
|
||||
struct serial_device_s *sd;
|
||||
struct serial_device_s *sd;
|
||||
} serial_t;
|
||||
|
||||
typedef struct serial_device_s
|
||||
{
|
||||
typedef struct serial_device_s {
|
||||
void (*rcr_callback)(struct serial_s *serial, void *p);
|
||||
void (*dev_write)(struct serial_s *serial, void *p, uint8_t data);
|
||||
void *priv;
|
||||
void *priv;
|
||||
serial_t *serial;
|
||||
} serial_device_t;
|
||||
|
||||
extern serial_t *serial_attach(int port,
|
||||
void (*rcr_callback)(struct serial_s *serial, void *p),
|
||||
void (*dev_write)(struct serial_s *serial, void *p, uint8_t data),
|
||||
void *priv);
|
||||
extern void serial_remove(serial_t *dev);
|
||||
extern void serial_set_type(serial_t *dev, int type);
|
||||
extern void serial_setup(serial_t *dev, uint16_t addr, uint8_t irq);
|
||||
extern void serial_clear_fifo(serial_t *dev);
|
||||
extern void serial_write_fifo(serial_t *dev, uint8_t dat);
|
||||
extern void serial_set_next_inst(int ni);
|
||||
extern void serial_standalone_init(void);
|
||||
extern void serial_set_clock_src(serial_t *dev, double clock_src);
|
||||
extern void serial_reset_port(serial_t *dev);
|
||||
|
||||
extern serial_t * serial_attach(int port,
|
||||
void (*rcr_callback)(struct serial_s *serial, void *p),
|
||||
void (*dev_write)(struct serial_s *serial, void *p, uint8_t data),
|
||||
void *priv);
|
||||
extern void serial_remove(serial_t *dev);
|
||||
extern void serial_set_type(serial_t *dev, int type);
|
||||
extern void serial_setup(serial_t *dev, uint16_t addr, uint8_t irq);
|
||||
extern void serial_clear_fifo(serial_t *dev);
|
||||
extern void serial_write_fifo(serial_t *dev, uint8_t dat);
|
||||
extern void serial_set_next_inst(int ni);
|
||||
extern void serial_standalone_init(void);
|
||||
extern void serial_set_clock_src(serial_t *dev, double clock_src);
|
||||
extern void serial_reset_port(serial_t *dev);
|
||||
extern const device_t ns8250_device;
|
||||
extern const device_t ns8250_pcjr_device;
|
||||
extern const device_t ns16450_device;
|
||||
extern const device_t ns16550_device;
|
||||
extern const device_t ns16650_device;
|
||||
extern const device_t ns16750_device;
|
||||
extern const device_t ns16850_device;
|
||||
extern const device_t ns16950_device;
|
||||
|
||||
extern const device_t ns8250_device;
|
||||
extern const device_t ns8250_pcjr_device;
|
||||
extern const device_t ns16450_device;
|
||||
extern const device_t ns16550_device;
|
||||
extern const device_t ns16650_device;
|
||||
extern const device_t ns16750_device;
|
||||
extern const device_t ns16850_device;
|
||||
extern const device_t ns16950_device;
|
||||
|
||||
#endif /*EMU_SERIAL_H*/
|
||||
#endif /*EMU_SERIAL_H*/
|
||||
|
||||
@@ -31,12 +31,12 @@ enum fm_driver {
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
uint8_t (*read)(uint16_t port, void *priv);
|
||||
void (*write)(uint16_t port, uint8_t val, void *priv);
|
||||
int32_t * (*update)(void *priv);
|
||||
uint8_t (*read)(uint16_t port, void *priv);
|
||||
void (*write)(uint16_t port, uint8_t val, void *priv);
|
||||
int32_t *(*update)(void *priv);
|
||||
void (*reset_buffer)(void *priv);
|
||||
void (*set_do_cycles)(void *priv, int8_t do_cycles);
|
||||
void *priv;
|
||||
void (*set_do_cycles)(void *priv, int8_t do_cycles);
|
||||
void *priv;
|
||||
} fm_drv_t;
|
||||
|
||||
extern uint8_t fm_driver_get(int chip_id, fm_drv_t *drv);
|
||||
|
||||
@@ -20,5 +20,4 @@
|
||||
#ifndef SOUND_OPL_NUKED_H
|
||||
#define SOUND_OPL_NUKED_H
|
||||
|
||||
|
||||
#endif /*SOUND_OPL_NUKED_H*/
|
||||
|
||||
@@ -121,14 +121,14 @@ typedef struct sb_ct1745_mixer_t {
|
||||
uint8_t index;
|
||||
uint8_t regs[256];
|
||||
|
||||
int output_filter; /* for clones */
|
||||
int output_filter; /* for clones */
|
||||
} sb_ct1745_mixer_t;
|
||||
|
||||
typedef struct sb_t {
|
||||
uint8_t cms_enabled,
|
||||
opl_enabled,
|
||||
mixer_enabled;
|
||||
cms_t cms;
|
||||
cms_t cms;
|
||||
fm_drv_t opl,
|
||||
opl2;
|
||||
sb_dsp_t dsp;
|
||||
@@ -153,9 +153,9 @@ extern void sb_ct1345_mixer_write(uint16_t addr, uint8_t val, void *p);
|
||||
extern uint8_t sb_ct1345_mixer_read(uint16_t addr, void *p);
|
||||
extern void sb_ct1345_mixer_reset(sb_t *sb);
|
||||
|
||||
extern void sb_ct1745_mixer_write(uint16_t addr, uint8_t val, void *p);
|
||||
extern void sb_ct1745_mixer_write(uint16_t addr, uint8_t val, void *p);
|
||||
extern uint8_t sb_ct1745_mixer_read(uint16_t addr, void *p);
|
||||
extern void sb_ct1745_mixer_reset(sb_t* sb);
|
||||
extern void sb_ct1745_mixer_reset(sb_t *sb);
|
||||
|
||||
extern void sb_get_buffer_sbpro(int32_t *buffer, int len, void *p);
|
||||
extern void sbpro_filter_cd_audio(int channel, double *buffer, void *p);
|
||||
|
||||
@@ -42,7 +42,7 @@ typedef struct sb_dsp_t {
|
||||
|
||||
int sb_irqnum;
|
||||
void (*irq_update)(void *priv, int set),
|
||||
*irq_priv;
|
||||
*irq_priv;
|
||||
|
||||
uint8_t sbe2;
|
||||
int sbe2count;
|
||||
|
||||
@@ -17,10 +17,9 @@
|
||||
*/
|
||||
|
||||
#ifndef VIDEO_8514A_H
|
||||
# define VIDEO_8514A_H
|
||||
#define VIDEO_8514A_H
|
||||
|
||||
typedef struct ibm8514_t
|
||||
{
|
||||
typedef struct ibm8514_t {
|
||||
uint8_t pos_regs[8];
|
||||
|
||||
int force_old_addr;
|
||||
@@ -29,21 +28,21 @@ typedef struct ibm8514_t
|
||||
uint32_t vram_size;
|
||||
uint32_t vram_mask;
|
||||
|
||||
PALETTE vgapal;
|
||||
uint8_t dac_mask, dac_status;
|
||||
PALETTE vgapal;
|
||||
uint8_t dac_mask, dac_status;
|
||||
uint32_t *map8;
|
||||
int dac_addr, dac_pos, dac_r, dac_g;
|
||||
int dac_addr, dac_pos, dac_r, dac_g;
|
||||
|
||||
struct {
|
||||
uint16_t subsys_cntl;
|
||||
uint16_t setup_md;
|
||||
uint8_t advfunc_cntl, ext_advfunc_cntl;
|
||||
uint8_t advfunc_cntl, ext_advfunc_cntl;
|
||||
uint16_t cur_y, cur_y_bitres;
|
||||
uint16_t cur_x, cur_x_bitres;
|
||||
int16_t desty_axstp;
|
||||
int16_t destx_distp;
|
||||
int16_t err_term;
|
||||
int16_t maj_axis_pcnt;
|
||||
int16_t desty_axstp;
|
||||
int16_t destx_distp;
|
||||
int16_t err_term;
|
||||
int16_t maj_axis_pcnt;
|
||||
uint16_t cmd, cmd_back;
|
||||
uint16_t short_stroke;
|
||||
uint16_t bkgd_color;
|
||||
@@ -55,58 +54,58 @@ typedef struct ibm8514_t
|
||||
uint16_t frgd_mix;
|
||||
uint16_t multifunc_cntl;
|
||||
uint16_t multifunc[16];
|
||||
int16_t clip_left, clip_top;
|
||||
uint8_t pix_trans[2];
|
||||
int poly_draw;
|
||||
int ssv_state;
|
||||
int x1, x2, y1, y2;
|
||||
int sys_cnt, sys_cnt2;
|
||||
int temp_cnt;
|
||||
int16_t cx, cy, oldcy;
|
||||
int16_t sx, sy;
|
||||
int16_t dx, dy;
|
||||
int16_t err;
|
||||
int16_t clip_left, clip_top;
|
||||
uint8_t pix_trans[2];
|
||||
int poly_draw;
|
||||
int ssv_state;
|
||||
int x1, x2, y1, y2;
|
||||
int sys_cnt, sys_cnt2;
|
||||
int temp_cnt;
|
||||
int16_t cx, cy, oldcy;
|
||||
int16_t sx, sy;
|
||||
int16_t dx, dy;
|
||||
int16_t err;
|
||||
uint32_t src, dest;
|
||||
uint32_t newsrc_blt, newdest_blt;
|
||||
uint32_t newdest_in, newdest_out;
|
||||
uint8_t *writemono, *nibbleset;
|
||||
int x_count, xx_count, y_count;
|
||||
int input, output;
|
||||
int x_count, xx_count, y_count;
|
||||
int input, output;
|
||||
|
||||
uint16_t cur_x_bit12, cur_y_bit12;
|
||||
int ssv_len;
|
||||
uint8_t ssv_dir;
|
||||
uint8_t ssv_draw;
|
||||
int odd_in, odd_out;
|
||||
int ssv_len;
|
||||
uint8_t ssv_dir;
|
||||
uint8_t ssv_draw;
|
||||
int odd_in, odd_out;
|
||||
|
||||
uint16_t scratch;
|
||||
int fill_state, xdir, ydir;
|
||||
int fill_state, xdir, ydir;
|
||||
} accel;
|
||||
|
||||
uint16_t test;
|
||||
|
||||
int v_total, dispend, v_syncstart, split,
|
||||
h_disp, h_disp_old, h_total, h_disp_time, rowoffset,
|
||||
dispon, hdisp_on, linecountff,
|
||||
vc, linepos, oddeven, cursoron, blink, scrollcache,
|
||||
firstline, lastline, firstline_draw, lastline_draw,
|
||||
displine, fullchange, x_add, y_add;
|
||||
uint32_t ma, maback;
|
||||
h_disp, h_disp_old, h_total, h_disp_time, rowoffset,
|
||||
dispon, hdisp_on, linecountff,
|
||||
vc, linepos, oddeven, cursoron, blink, scrollcache,
|
||||
firstline, lastline, firstline_draw, lastline_draw,
|
||||
displine, fullchange, x_add, y_add;
|
||||
uint32_t ma, maback;
|
||||
|
||||
uint8_t *vram, *changedvram, linedbl;
|
||||
|
||||
uint8_t data_available, data_available2;
|
||||
uint8_t scanmodulos, rowcount;
|
||||
int htotal, hdisp, vtadj, vdadj, vsadj, sc,
|
||||
int htotal, hdisp, vtadj, vdadj, vsadj, sc,
|
||||
vtb, vdb, vsb, vsyncstart, vsyncwidth;
|
||||
int vtotal, vdisp;
|
||||
int disp_cntl, interlace;
|
||||
int vtotal, vdisp;
|
||||
int disp_cntl, interlace;
|
||||
uint8_t subsys_cntl, subsys_stat;
|
||||
|
||||
volatile int force_busy, force_busy2;
|
||||
|
||||
int blitter_busy;
|
||||
int blitter_busy;
|
||||
uint64_t blitter_time;
|
||||
uint64_t status_time;
|
||||
} ibm8514_t;
|
||||
#endif /*VIDEO_8514A_H*/
|
||||
#endif /*VIDEO_8514A_H*/
|
||||
|
||||
@@ -1,54 +1,49 @@
|
||||
#ifndef VIDEO_ATI_EEPROM_H
|
||||
# define VIDEO_ATI_EEPROM_H
|
||||
#define VIDEO_ATI_EEPROM_H
|
||||
|
||||
/* Copyright holders: Sarah Walker
|
||||
see COPYING for more details
|
||||
*/
|
||||
|
||||
enum
|
||||
{
|
||||
EEPROM_IDLE,
|
||||
EEPROM_WAIT,
|
||||
EEPROM_OPCODE,
|
||||
EEPROM_INPUT,
|
||||
EEPROM_OUTPUT
|
||||
enum {
|
||||
EEPROM_IDLE,
|
||||
EEPROM_WAIT,
|
||||
EEPROM_OPCODE,
|
||||
EEPROM_INPUT,
|
||||
EEPROM_OUTPUT
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
EEPROM_OP_EW = 4,
|
||||
EEPROM_OP_WRITE = 5,
|
||||
EEPROM_OP_READ = 6,
|
||||
EEPROM_OP_ERASE = 7,
|
||||
enum {
|
||||
EEPROM_OP_EW = 4,
|
||||
EEPROM_OP_WRITE = 5,
|
||||
EEPROM_OP_READ = 6,
|
||||
EEPROM_OP_ERASE = 7,
|
||||
|
||||
EEPROM_OP_WRALMAIN = -1
|
||||
EEPROM_OP_WRALMAIN = -1
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
EEPROM_OP_EWDS = 0,
|
||||
EEPROM_OP_WRAL = 1,
|
||||
EEPROM_OP_ERAL = 2,
|
||||
EEPROM_OP_EWEN = 3
|
||||
enum {
|
||||
EEPROM_OP_EWDS = 0,
|
||||
EEPROM_OP_WRAL = 1,
|
||||
EEPROM_OP_ERAL = 2,
|
||||
EEPROM_OP_EWEN = 3
|
||||
};
|
||||
|
||||
typedef struct ati_eeprom_t {
|
||||
uint16_t data[256];
|
||||
|
||||
typedef struct ati_eeprom_t
|
||||
{
|
||||
uint16_t data[256];
|
||||
int oldclk, oldena;
|
||||
int opcode, state, count, out;
|
||||
int wp;
|
||||
uint32_t dat;
|
||||
int type;
|
||||
int address;
|
||||
|
||||
int oldclk, oldena;
|
||||
int opcode, state, count, out;
|
||||
int wp;
|
||||
uint32_t dat;
|
||||
int type;
|
||||
int address;
|
||||
|
||||
char fn[256];
|
||||
char fn[256];
|
||||
} ati_eeprom_t;
|
||||
|
||||
void ati_eeprom_load(ati_eeprom_t *eeprom, char *fn, int type);
|
||||
void ati_eeprom_write(ati_eeprom_t *eeprom, int ena, int clk, int dat);
|
||||
int ati_eeprom_read(ati_eeprom_t *eeprom);
|
||||
int ati_eeprom_read(ati_eeprom_t *eeprom);
|
||||
|
||||
#endif /*VIDEO_ATI_EEPROM_H*/
|
||||
|
||||
@@ -17,45 +17,44 @@
|
||||
*/
|
||||
|
||||
#ifndef VIDEO_CGA_H
|
||||
# define VIDEO_CGA_H
|
||||
#define VIDEO_CGA_H
|
||||
|
||||
typedef struct cga_t
|
||||
{
|
||||
mem_mapping_t mapping;
|
||||
typedef struct cga_t {
|
||||
mem_mapping_t mapping;
|
||||
|
||||
int crtcreg;
|
||||
uint8_t crtc[32];
|
||||
int crtcreg;
|
||||
uint8_t crtc[32];
|
||||
|
||||
uint8_t cgastat;
|
||||
uint8_t cgastat;
|
||||
|
||||
uint8_t cgamode, cgacol;
|
||||
uint8_t cgamode, cgacol;
|
||||
|
||||
int fontbase;
|
||||
int linepos, displine;
|
||||
int sc, vc;
|
||||
int cgadispon;
|
||||
int con, coff, cursoron, cgablink;
|
||||
int vsynctime, vadj;
|
||||
uint16_t ma, maback;
|
||||
int oddeven;
|
||||
int fontbase;
|
||||
int linepos, displine;
|
||||
int sc, vc;
|
||||
int cgadispon;
|
||||
int con, coff, cursoron, cgablink;
|
||||
int vsynctime, vadj;
|
||||
uint16_t ma, maback;
|
||||
int oddeven;
|
||||
|
||||
uint64_t dispontime, dispofftime;
|
||||
pc_timer_t timer;
|
||||
uint64_t dispontime, dispofftime;
|
||||
pc_timer_t timer;
|
||||
|
||||
int firstline, lastline;
|
||||
int firstline, lastline;
|
||||
|
||||
int drawcursor;
|
||||
int drawcursor;
|
||||
|
||||
int fullchange;
|
||||
int fullchange;
|
||||
|
||||
uint8_t *vram;
|
||||
uint8_t *vram;
|
||||
|
||||
uint8_t charbuffer[256];
|
||||
uint8_t charbuffer[256];
|
||||
|
||||
int revision;
|
||||
int composite;
|
||||
int snow_enabled;
|
||||
int rgb_type;
|
||||
int revision;
|
||||
int composite;
|
||||
int snow_enabled;
|
||||
int rgb_type;
|
||||
} cga_t;
|
||||
|
||||
void cga_init(cga_t *cga);
|
||||
@@ -68,7 +67,7 @@ void cga_poll(void *p);
|
||||
|
||||
#ifdef EMU_DEVICE_H
|
||||
extern const device_config_t cga_config[];
|
||||
extern const device_t cga_device;
|
||||
extern const device_t cga_device;
|
||||
#endif
|
||||
|
||||
#endif /*VIDEO_CGA_H*/
|
||||
#endif /*VIDEO_CGA_H*/
|
||||
|
||||
@@ -18,15 +18,15 @@
|
||||
*/
|
||||
|
||||
#ifndef VIDEO_CGA_COMP_H
|
||||
# define VIDEO_CGA_COMP_H
|
||||
#define VIDEO_CGA_COMP_H
|
||||
|
||||
#define Bit8u uint8_t
|
||||
#define Bit8u uint8_t
|
||||
#define Bit32u uint32_t
|
||||
#define Bitu unsigned int
|
||||
#define Bitu unsigned int
|
||||
#define bool uint8_t
|
||||
|
||||
void update_cga16_color(uint8_t cgamode);
|
||||
void cga_comp_init(int revision);
|
||||
Bit32u * Composite_Process(uint8_t cgamode, Bit8u border, Bit32u blocks/*, bool doublewidth*/, Bit32u *TempLine);
|
||||
void update_cga16_color(uint8_t cgamode);
|
||||
void cga_comp_init(int revision);
|
||||
Bit32u *Composite_Process(uint8_t cgamode, Bit8u border, Bit32u blocks /*, bool doublewidth*/, Bit32u *TempLine);
|
||||
|
||||
#endif /*VIDEO_CGA_COMP_H*/
|
||||
#endif /*VIDEO_CGA_COMP_H*/
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
#ifndef VIDEO_COLORPLUS_H
|
||||
# define VIDEO_COLORPLUS_H
|
||||
#define VIDEO_COLORPLUS_H
|
||||
|
||||
typedef struct colorplus_t
|
||||
{
|
||||
cga_t cga;
|
||||
uint8_t control;
|
||||
typedef struct colorplus_t {
|
||||
cga_t cga;
|
||||
uint8_t control;
|
||||
} colorplus_t;
|
||||
|
||||
void colorplus_init(colorplus_t *colorplus);
|
||||
|
||||
@@ -18,9 +18,9 @@
|
||||
*/
|
||||
|
||||
#ifndef EMU_VID_DDC_H
|
||||
# define EMU_VID_DDC_H
|
||||
#define EMU_VID_DDC_H
|
||||
|
||||
extern void *ddc_init(void *i2c);
|
||||
extern void ddc_close(void *eeprom);
|
||||
extern void *ddc_init(void *i2c);
|
||||
extern void ddc_close(void *eeprom);
|
||||
|
||||
#endif /*EMU_VID_DDC_H*/
|
||||
#endif /*EMU_VID_DDC_H*/
|
||||
|
||||
@@ -19,8 +19,7 @@
|
||||
*/
|
||||
|
||||
#ifndef VIDEO_EGA_H
|
||||
# define VIDEO_EGA_H
|
||||
|
||||
#define VIDEO_EGA_H
|
||||
|
||||
#if defined(EMU_MEM_H) && defined(EMU_ROM_H)
|
||||
typedef struct ega_t {
|
||||
@@ -29,10 +28,10 @@ typedef struct ega_t {
|
||||
rom_t bios_rom;
|
||||
|
||||
uint8_t crtcreg, gdcaddr, attraddr, attrff,
|
||||
attr_palette_enable, seqaddr, miscout,
|
||||
writemask, la, lb, lc, ld,
|
||||
stat, colourcompare, colournocare, scrblank,
|
||||
plane_mask, pad, pad0, pad1;
|
||||
attr_palette_enable, seqaddr, miscout,
|
||||
writemask, la, lb, lc, ld,
|
||||
stat, colourcompare, colournocare, scrblank,
|
||||
plane_mask, pad, pad0, pad1;
|
||||
uint8_t crtc[32];
|
||||
uint8_t gdcreg[16];
|
||||
uint8_t attrregs[32];
|
||||
@@ -43,30 +42,30 @@ typedef struct ega_t {
|
||||
uint8_t *vram;
|
||||
|
||||
int vidclock, fast, extvram, vres,
|
||||
readmode, writemode, readplane, vrammask,
|
||||
chain4, chain2_read, chain2_write, con,
|
||||
oddeven_page, oddeven_chain, vc, sc,
|
||||
dispon, hdisp_on, cursoron, blink, fullchange,
|
||||
linepos, vslines, linecountff, oddeven,
|
||||
lowres, interlace, linedbl, lindebl, rowcount,
|
||||
vtotal, dispend, vsyncstart, split,
|
||||
hdisp, hdisp_old, htotal, hdisp_time, rowoffset,
|
||||
vblankstart, scrollcache, firstline, lastline,
|
||||
firstline_draw, lastline_draw, x_add, y_add,
|
||||
displine, res_x, res_y, bpp, index;
|
||||
readmode, writemode, readplane, vrammask,
|
||||
chain4, chain2_read, chain2_write, con,
|
||||
oddeven_page, oddeven_chain, vc, sc,
|
||||
dispon, hdisp_on, cursoron, blink, fullchange,
|
||||
linepos, vslines, linecountff, oddeven,
|
||||
lowres, interlace, linedbl, lindebl, rowcount,
|
||||
vtotal, dispend, vsyncstart, split,
|
||||
hdisp, hdisp_old, htotal, hdisp_time, rowoffset,
|
||||
vblankstart, scrollcache, firstline, lastline,
|
||||
firstline_draw, lastline_draw, x_add, y_add,
|
||||
displine, res_x, res_y, bpp, index;
|
||||
|
||||
uint32_t charseta, charsetb, ma_latch, ma,
|
||||
maback, ca, vram_limit, overscan_color;
|
||||
maback, ca, vram_limit, overscan_color;
|
||||
|
||||
uint32_t *pallook;
|
||||
|
||||
uint64_t dispontime, dispofftime;
|
||||
pc_timer_t timer;
|
||||
uint64_t dispontime, dispofftime;
|
||||
pc_timer_t timer;
|
||||
|
||||
double clock;
|
||||
|
||||
int remap_required;
|
||||
uint32_t (*remap_func)(struct ega_t *ega, uint32_t in_addr);
|
||||
int remap_required;
|
||||
uint32_t (*remap_func)(struct ega_t *ega, uint32_t in_addr);
|
||||
|
||||
void (*render)(struct ega_t *svga);
|
||||
|
||||
@@ -74,7 +73,6 @@ typedef struct ega_t {
|
||||
} ega_t;
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef EMU_DEVICE_H
|
||||
extern const device_t ega_device;
|
||||
extern const device_t cpqega_device;
|
||||
@@ -86,33 +84,31 @@ extern const device_t et2000_device;
|
||||
|
||||
extern int update_overscan;
|
||||
|
||||
#define DISPLAY_RGB 0
|
||||
#define DISPLAY_COMPOSITE 1
|
||||
#define DISPLAY_RGB 0
|
||||
#define DISPLAY_COMPOSITE 1
|
||||
#define DISPLAY_RGB_NO_BROWN 2
|
||||
#define DISPLAY_GREEN 3
|
||||
#define DISPLAY_AMBER 4
|
||||
#define DISPLAY_WHITE 5
|
||||
|
||||
#define DISPLAY_GREEN 3
|
||||
#define DISPLAY_AMBER 4
|
||||
#define DISPLAY_WHITE 5
|
||||
|
||||
#if defined(EMU_MEM_H) && defined(EMU_ROM_H)
|
||||
extern void ega_init(ega_t *ega, int monitor_type, int is_mono);
|
||||
extern void ega_recalctimings(struct ega_t *ega);
|
||||
extern void ega_init(ega_t *ega, int monitor_type, int is_mono);
|
||||
extern void ega_recalctimings(struct ega_t *ega);
|
||||
extern void ega_recalc_remap_func(struct ega_t *ega);
|
||||
#endif
|
||||
|
||||
extern void ega_out(uint16_t addr, uint8_t val, void *p);
|
||||
extern uint8_t ega_in(uint16_t addr, void *p);
|
||||
extern void ega_poll(void *p);
|
||||
extern void ega_write(uint32_t addr, uint8_t val, void *p);
|
||||
extern uint8_t ega_read(uint32_t addr, void *p);
|
||||
|
||||
extern void ega_out(uint16_t addr, uint8_t val, void *p);
|
||||
extern uint8_t ega_in(uint16_t addr, void *p);
|
||||
extern void ega_poll(void *p);
|
||||
extern void ega_write(uint32_t addr, uint8_t val, void *p);
|
||||
extern uint8_t ega_read(uint32_t addr, void *p);
|
||||
|
||||
extern int firstline_draw, lastline_draw;
|
||||
extern int displine;
|
||||
extern int sc;
|
||||
|
||||
extern uint32_t ma, ca;
|
||||
extern int con, cursoron, cgablink;
|
||||
extern int con, cursoron, cgablink;
|
||||
|
||||
extern int scrollcache;
|
||||
|
||||
@@ -134,4 +130,4 @@ void ega_render_4bpp_lowres(ega_t *ega);
|
||||
void ega_render_4bpp_highres(ega_t *ega);
|
||||
#endif
|
||||
|
||||
#endif /*VIDEO_EGA_H*/
|
||||
#endif /*VIDEO_EGA_H*/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#ifndef VIDEO_EGA_RENDER_REMAP_H
|
||||
# define VIDEO_EGA_RENDER_REMAP_H
|
||||
#define VIDEO_EGA_RENDER_REMAP_H
|
||||
|
||||
#define VAR_BYTE_MODE (0 << 0)
|
||||
#define VAR_WORD_MODE_MA13 (1 << 0)
|
||||
@@ -9,44 +9,35 @@
|
||||
#define VAR_ROW0_MA13 (1 << 2)
|
||||
#define VAR_ROW1_MA14 (1 << 3)
|
||||
|
||||
#define ADDRESS_REMAP_FUNC(nr) \
|
||||
static uint32_t address_remap_func_ ## nr(ega_t *ega, uint32_t in_addr) \
|
||||
{ \
|
||||
uint32_t out_addr; \
|
||||
\
|
||||
switch (nr & VAR_MODE_MASK) \
|
||||
{ \
|
||||
case VAR_BYTE_MODE: \
|
||||
out_addr = in_addr; \
|
||||
break; \
|
||||
\
|
||||
case VAR_WORD_MODE_MA13: \
|
||||
out_addr = ((in_addr << 1) & 0x1fff8) | \
|
||||
((in_addr >> 13) & 0x4) | \
|
||||
(in_addr & ~0x1ffff); \
|
||||
break; \
|
||||
\
|
||||
case VAR_WORD_MODE_MA15: \
|
||||
out_addr = ((in_addr << 1) & 0x1fff8) | \
|
||||
((in_addr >> 15) & 0x4) | \
|
||||
(in_addr & ~0x1ffff); \
|
||||
break; \
|
||||
\
|
||||
case VAR_DWORD_MODE: \
|
||||
out_addr = ((in_addr << 2) & 0x3fff0) | \
|
||||
((in_addr >> 14) & 0xc) | \
|
||||
(in_addr & ~0x3ffff); \
|
||||
break; \
|
||||
} \
|
||||
\
|
||||
if (nr & VAR_ROW0_MA13) \
|
||||
out_addr = (out_addr & ~0x8000) | \
|
||||
((ega->sc & 1) ? 0x8000 : 0); \
|
||||
if (nr & VAR_ROW1_MA14) \
|
||||
out_addr = (out_addr & ~0x10000) | \
|
||||
((ega->sc & 2) ? 0x10000 : 0); \
|
||||
\
|
||||
return out_addr; \
|
||||
#define ADDRESS_REMAP_FUNC(nr) \
|
||||
static uint32_t address_remap_func_##nr(ega_t *ega, uint32_t in_addr) \
|
||||
{ \
|
||||
uint32_t out_addr; \
|
||||
\
|
||||
switch (nr & VAR_MODE_MASK) { \
|
||||
case VAR_BYTE_MODE: \
|
||||
out_addr = in_addr; \
|
||||
break; \
|
||||
\
|
||||
case VAR_WORD_MODE_MA13: \
|
||||
out_addr = ((in_addr << 1) & 0x1fff8) | ((in_addr >> 13) & 0x4) | (in_addr & ~0x1ffff); \
|
||||
break; \
|
||||
\
|
||||
case VAR_WORD_MODE_MA15: \
|
||||
out_addr = ((in_addr << 1) & 0x1fff8) | ((in_addr >> 15) & 0x4) | (in_addr & ~0x1ffff); \
|
||||
break; \
|
||||
\
|
||||
case VAR_DWORD_MODE: \
|
||||
out_addr = ((in_addr << 2) & 0x3fff0) | ((in_addr >> 14) & 0xc) | (in_addr & ~0x3ffff); \
|
||||
break; \
|
||||
} \
|
||||
\
|
||||
if (nr & VAR_ROW0_MA13) \
|
||||
out_addr = (out_addr & ~0x8000) | ((ega->sc & 1) ? 0x8000 : 0); \
|
||||
if (nr & VAR_ROW1_MA14) \
|
||||
out_addr = (out_addr & ~0x10000) | ((ega->sc & 2) ? 0x10000 : 0); \
|
||||
\
|
||||
return out_addr; \
|
||||
}
|
||||
|
||||
ADDRESS_REMAP_FUNC(0)
|
||||
@@ -66,8 +57,7 @@ ADDRESS_REMAP_FUNC(13)
|
||||
ADDRESS_REMAP_FUNC(14)
|
||||
ADDRESS_REMAP_FUNC(15)
|
||||
|
||||
static uint32_t (*address_remap_funcs[16])(ega_t *ega, uint32_t in_addr) =
|
||||
{
|
||||
static uint32_t (*address_remap_funcs[16])(ega_t *ega, uint32_t in_addr) = {
|
||||
address_remap_func_0,
|
||||
address_remap_func_1,
|
||||
address_remap_func_2,
|
||||
@@ -86,7 +76,8 @@ static uint32_t (*address_remap_funcs[16])(ega_t *ega, uint32_t in_addr) =
|
||||
address_remap_func_15
|
||||
};
|
||||
|
||||
void ega_recalc_remap_func(ega_t *ega)
|
||||
void
|
||||
ega_recalc_remap_func(ega_t *ega)
|
||||
{
|
||||
int func_nr;
|
||||
|
||||
@@ -105,7 +96,7 @@ void ega_recalc_remap_func(ega_t *ega)
|
||||
func_nr |= VAR_ROW1_MA14;
|
||||
|
||||
ega->remap_required = (func_nr != 0);
|
||||
ega->remap_func = address_remap_funcs[func_nr];
|
||||
ega->remap_func = address_remap_funcs[func_nr];
|
||||
}
|
||||
|
||||
#endif /*VIDEO_RENDER_REMAP_H*/
|
||||
|
||||
@@ -18,51 +18,58 @@
|
||||
*/
|
||||
|
||||
#ifndef VIDEO_HERCULES_H
|
||||
# define VIDEO_HERCULES_H
|
||||
#define VIDEO_HERCULES_H
|
||||
|
||||
typedef struct {
|
||||
mem_mapping_t mapping;
|
||||
mem_mapping_t mapping;
|
||||
|
||||
uint8_t crtc[32], charbuffer[4096];
|
||||
int crtcreg;
|
||||
uint8_t crtc[32], charbuffer[4096];
|
||||
int crtcreg;
|
||||
|
||||
uint8_t ctrl,
|
||||
ctrl2,
|
||||
stat;
|
||||
uint8_t ctrl,
|
||||
ctrl2,
|
||||
stat;
|
||||
|
||||
uint64_t dispontime,
|
||||
dispofftime;
|
||||
pc_timer_t timer;
|
||||
uint64_t dispontime,
|
||||
dispofftime;
|
||||
pc_timer_t timer;
|
||||
|
||||
int firstline,
|
||||
lastline;
|
||||
int firstline,
|
||||
lastline;
|
||||
|
||||
int linepos,
|
||||
displine;
|
||||
int vc,
|
||||
sc;
|
||||
uint16_t ma,
|
||||
maback;
|
||||
int con, coff,
|
||||
cursoron;
|
||||
int dispon,
|
||||
blink;
|
||||
int vsynctime;
|
||||
int vadj;
|
||||
int linepos,
|
||||
displine;
|
||||
int vc,
|
||||
sc;
|
||||
uint16_t ma,
|
||||
maback;
|
||||
int con, coff,
|
||||
cursoron;
|
||||
int dispon,
|
||||
blink;
|
||||
int vsynctime;
|
||||
int vadj;
|
||||
|
||||
int lp_ff;
|
||||
int fullchange;
|
||||
int lp_ff;
|
||||
int fullchange;
|
||||
|
||||
int cols[256][2][2];
|
||||
int cols[256][2][2];
|
||||
|
||||
uint8_t *vram;
|
||||
int monitor_index;
|
||||
int prev_monitor_index;
|
||||
uint8_t *vram;
|
||||
int monitor_index;
|
||||
int prev_monitor_index;
|
||||
} hercules_t;
|
||||
|
||||
#define VIDEO_MONITOR_PROLOGUE() { dev->prev_monitor_index = monitor_index_global; monitor_index_global = dev->monitor_index; }
|
||||
#define VIDEO_MONITOR_EPILOGUE() { monitor_index_global = dev->prev_monitor_index; }
|
||||
#define VIDEO_MONITOR_PROLOGUE() \
|
||||
{ \
|
||||
dev->prev_monitor_index = monitor_index_global; \
|
||||
monitor_index_global = dev->monitor_index; \
|
||||
}
|
||||
#define VIDEO_MONITOR_EPILOGUE() \
|
||||
{ \
|
||||
monitor_index_global = dev->prev_monitor_index; \
|
||||
}
|
||||
|
||||
static void *hercules_init(const device_t *info);
|
||||
|
||||
#endif /*VIDEO_HERCULES_H*/
|
||||
#endif /*VIDEO_HERCULES_H*/
|
||||
|
||||
@@ -3,40 +3,46 @@
|
||||
*/
|
||||
|
||||
#ifndef VIDEO_MDA_H
|
||||
# define VIDEO_MDA_H
|
||||
#define VIDEO_MDA_H
|
||||
|
||||
typedef struct mda_t
|
||||
{
|
||||
mem_mapping_t mapping;
|
||||
typedef struct mda_t {
|
||||
mem_mapping_t mapping;
|
||||
|
||||
uint8_t crtc[32];
|
||||
int crtcreg;
|
||||
uint8_t crtc[32];
|
||||
int crtcreg;
|
||||
|
||||
uint8_t ctrl, stat;
|
||||
uint8_t ctrl, stat;
|
||||
|
||||
uint64_t dispontime, dispofftime;
|
||||
pc_timer_t timer;
|
||||
uint64_t dispontime, dispofftime;
|
||||
pc_timer_t timer;
|
||||
|
||||
int firstline, lastline;
|
||||
int firstline, lastline;
|
||||
|
||||
int linepos, displine;
|
||||
int vc, sc;
|
||||
uint16_t ma, maback;
|
||||
int con, coff, cursoron;
|
||||
int dispon, blink;
|
||||
int vsynctime;
|
||||
int vadj;
|
||||
int monitor_index;
|
||||
int prev_monitor_index;
|
||||
int linepos, displine;
|
||||
int vc, sc;
|
||||
uint16_t ma, maback;
|
||||
int con, coff, cursoron;
|
||||
int dispon, blink;
|
||||
int vsynctime;
|
||||
int vadj;
|
||||
int monitor_index;
|
||||
int prev_monitor_index;
|
||||
|
||||
uint8_t *vram;
|
||||
uint8_t *vram;
|
||||
} mda_t;
|
||||
|
||||
#define VIDEO_MONITOR_PROLOGUE() { mda->prev_monitor_index = monitor_index_global; monitor_index_global = mda->monitor_index; }
|
||||
#define VIDEO_MONITOR_EPILOGUE() { monitor_index_global = mda->prev_monitor_index; }
|
||||
#define VIDEO_MONITOR_PROLOGUE() \
|
||||
{ \
|
||||
mda->prev_monitor_index = monitor_index_global; \
|
||||
monitor_index_global = mda->monitor_index; \
|
||||
}
|
||||
#define VIDEO_MONITOR_EPILOGUE() \
|
||||
{ \
|
||||
monitor_index_global = mda->prev_monitor_index; \
|
||||
}
|
||||
|
||||
void mda_init(mda_t *mda);
|
||||
void mda_setcol(int chr, int blink, int fg, uint8_t cga_ink);
|
||||
void mda_setcol(int chr, int blink, int fg, uint8_t cga_ink);
|
||||
void mda_out(uint16_t addr, uint8_t val, void *p);
|
||||
uint8_t mda_in(uint16_t addr, void *p);
|
||||
void mda_write(uint32_t addr, uint8_t val, void *p);
|
||||
|
||||
@@ -23,15 +23,15 @@
|
||||
*/
|
||||
|
||||
#ifndef VIDEO_NGA_H
|
||||
# define VIDEO_NGA_H
|
||||
#define VIDEO_NGA_H
|
||||
|
||||
typedef struct nga_t {
|
||||
cga_t cga;
|
||||
/* unused in OGC, required for M19 video card structure idiom */
|
||||
uint32_t base;
|
||||
int lineff;
|
||||
int page;
|
||||
uint8_t *vram_64k;
|
||||
/* unused in OGC, required for M19 video card structure idiom */
|
||||
uint32_t base;
|
||||
int lineff;
|
||||
int page;
|
||||
uint8_t *vram_64k;
|
||||
mem_mapping_t mapping_64k;
|
||||
} nga_t;
|
||||
|
||||
@@ -44,10 +44,9 @@ void nga_poll(void *priv);
|
||||
void nga_close(void *priv);
|
||||
void nga_mdaattr_rebuild();
|
||||
|
||||
|
||||
#ifdef EMU_DEVICE_H
|
||||
extern const device_config_t nga_config[];
|
||||
extern const device_t nga_device;
|
||||
extern const device_t nga_device;
|
||||
#endif
|
||||
|
||||
#endif /*VIDEO_NGA_H*/
|
||||
|
||||
@@ -23,16 +23,16 @@
|
||||
*/
|
||||
|
||||
#ifndef VIDEO_OGC_H
|
||||
# define VIDEO_OGC_H
|
||||
#define VIDEO_OGC_H
|
||||
|
||||
typedef struct ogc_t {
|
||||
cga_t cga;
|
||||
/* unused in OGC, required for M19 video card structure idiom */
|
||||
uint8_t ctrl_3dd;
|
||||
uint8_t ctrl_3de;
|
||||
uint32_t base;
|
||||
int lineff;
|
||||
int mono_display;
|
||||
/* unused in OGC, required for M19 video card structure idiom */
|
||||
uint8_t ctrl_3dd;
|
||||
uint8_t ctrl_3de;
|
||||
uint32_t base;
|
||||
int lineff;
|
||||
int mono_display;
|
||||
} ogc_t;
|
||||
|
||||
void ogc_recalctimings(ogc_t *ogc);
|
||||
@@ -44,10 +44,9 @@ void ogc_poll(void *priv);
|
||||
void ogc_close(void *priv);
|
||||
void ogc_mdaattr_rebuild();
|
||||
|
||||
|
||||
#ifdef EMU_DEVICE_H
|
||||
extern const device_config_t ogc_config[];
|
||||
extern const device_t ogc_device;
|
||||
extern const device_t ogc_device;
|
||||
#endif
|
||||
|
||||
#endif /*VIDEO_OGC_H*/
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
* Copyright 2019 John Elliott.
|
||||
*/
|
||||
#ifndef VID_PGC_H
|
||||
# define VID_PGC_H
|
||||
#define VID_PGC_H
|
||||
|
||||
#define PGC_ERROR_RANGE 0x01
|
||||
#define PGC_ERROR_INTEGER 0x02
|
||||
@@ -31,153 +31,151 @@
|
||||
#define PGC_ERROR_AREA 0x0A
|
||||
#define PGC_ERROR_MISSING 0x0B
|
||||
|
||||
|
||||
struct pgc;
|
||||
|
||||
typedef struct pgc_cl {
|
||||
uint8_t *list;
|
||||
uint32_t listmax;
|
||||
uint32_t wrptr;
|
||||
uint32_t rdptr;
|
||||
uint32_t repeat;
|
||||
uint8_t *list;
|
||||
uint32_t listmax;
|
||||
uint32_t wrptr;
|
||||
uint32_t rdptr;
|
||||
uint32_t repeat;
|
||||
struct pgc_cl *chain;
|
||||
} pgc_cl_t;
|
||||
|
||||
typedef struct pgc_cmd {
|
||||
char ascii[6];
|
||||
uint8_t hex;
|
||||
void (*handler)(struct pgc *);
|
||||
int (*parser) (struct pgc *, pgc_cl_t *, int);
|
||||
char ascii[6];
|
||||
uint8_t hex;
|
||||
void (*handler)(struct pgc *);
|
||||
int (*parser)(struct pgc *, pgc_cl_t *, int);
|
||||
int p;
|
||||
} pgc_cmd_t;
|
||||
|
||||
typedef struct pgc {
|
||||
int8_t type; /* board type */
|
||||
int8_t cga_enabled;
|
||||
int8_t cga_selected;
|
||||
volatile int8_t stopped;
|
||||
int8_t type; /* board type */
|
||||
int8_t cga_enabled;
|
||||
int8_t cga_selected;
|
||||
volatile int8_t stopped;
|
||||
|
||||
mem_mapping_t mapping;
|
||||
mem_mapping_t cga_mapping;
|
||||
mem_mapping_t mapping;
|
||||
mem_mapping_t cga_mapping;
|
||||
|
||||
pgc_cl_t *clist,
|
||||
*clcur;
|
||||
pgc_cl_t *clist,
|
||||
*clcur;
|
||||
const pgc_cmd_t *master,
|
||||
*commands;
|
||||
*commands;
|
||||
|
||||
uint8_t mapram[2048]; /* host <> PGC communication buffer */
|
||||
uint8_t *cga_vram;
|
||||
uint8_t *vram;
|
||||
char asc_command[7];
|
||||
uint8_t hex_command;
|
||||
uint32_t palette[256];
|
||||
uint32_t userpal[256];
|
||||
uint32_t maxw, maxh; /* maximum framebuffer size */
|
||||
uint32_t visw, vish; /* maximum screen size */
|
||||
uint32_t screenw, screenh;
|
||||
int16_t pan_x, pan_y;
|
||||
uint16_t win_x1, win_x2, win_y1, win_y2;
|
||||
uint16_t vp_x1, vp_x2, vp_y1, vp_y2;
|
||||
int16_t fill_pattern[16];
|
||||
int16_t line_pattern;
|
||||
uint8_t draw_mode;
|
||||
uint8_t fill_mode;
|
||||
uint8_t color;
|
||||
uint8_t tjust_h; /* hor alignment 1=left 2=ctr 3=right*/
|
||||
uint8_t tjust_v; /* vert alignment 1=bottom 2=ctr 3=top*/
|
||||
int32_t tsize; /* horizontal spacing */
|
||||
uint8_t mapram[2048]; /* host <> PGC communication buffer */
|
||||
uint8_t *cga_vram;
|
||||
uint8_t *vram;
|
||||
char asc_command[7];
|
||||
uint8_t hex_command;
|
||||
uint32_t palette[256];
|
||||
uint32_t userpal[256];
|
||||
uint32_t maxw, maxh; /* maximum framebuffer size */
|
||||
uint32_t visw, vish; /* maximum screen size */
|
||||
uint32_t screenw, screenh;
|
||||
int16_t pan_x, pan_y;
|
||||
uint16_t win_x1, win_x2, win_y1, win_y2;
|
||||
uint16_t vp_x1, vp_x2, vp_y1, vp_y2;
|
||||
int16_t fill_pattern[16];
|
||||
int16_t line_pattern;
|
||||
uint8_t draw_mode;
|
||||
uint8_t fill_mode;
|
||||
uint8_t color;
|
||||
uint8_t tjust_h; /* hor alignment 1=left 2=ctr 3=right*/
|
||||
uint8_t tjust_v; /* vert alignment 1=bottom 2=ctr 3=top*/
|
||||
int32_t tsize; /* horizontal spacing */
|
||||
|
||||
int32_t x, y, z; /* drawing position */
|
||||
int32_t x, y, z; /* drawing position */
|
||||
|
||||
thread_t *pgc_thread;
|
||||
event_t *pgc_wake_thread;
|
||||
pc_timer_t wake_timer;
|
||||
thread_t *pgc_thread;
|
||||
event_t *pgc_wake_thread;
|
||||
pc_timer_t wake_timer;
|
||||
|
||||
int waiting_input_fifo;
|
||||
int waiting_output_fifo;
|
||||
int waiting_error_fifo;
|
||||
int ascii_mode;
|
||||
int result_count;
|
||||
int waiting_input_fifo;
|
||||
int waiting_output_fifo;
|
||||
int waiting_error_fifo;
|
||||
int ascii_mode;
|
||||
int result_count;
|
||||
|
||||
int fontbase;
|
||||
int linepos,
|
||||
displine;
|
||||
int vc;
|
||||
int cgadispon;
|
||||
int con, coff, cursoron, cgablink;
|
||||
int vsynctime, vadj;
|
||||
uint16_t ma, maback;
|
||||
int oddeven;
|
||||
int fontbase;
|
||||
int linepos,
|
||||
displine;
|
||||
int vc;
|
||||
int cgadispon;
|
||||
int con, coff, cursoron, cgablink;
|
||||
int vsynctime, vadj;
|
||||
uint16_t ma, maback;
|
||||
int oddeven;
|
||||
|
||||
uint64_t dispontime,
|
||||
dispofftime;
|
||||
pc_timer_t timer;
|
||||
double native_pixel_clock;
|
||||
uint64_t dispontime,
|
||||
dispofftime;
|
||||
pc_timer_t timer;
|
||||
double native_pixel_clock;
|
||||
|
||||
int drawcursor;
|
||||
int drawcursor;
|
||||
|
||||
int (*inputbyte)(struct pgc *, uint8_t *result);
|
||||
int (*inputbyte)(struct pgc *, uint8_t *result);
|
||||
} pgc_t;
|
||||
|
||||
|
||||
/* I/O functions and worker thread handlers. */
|
||||
extern void pgc_out(uint16_t addr, uint8_t val, void *priv);
|
||||
extern uint8_t pgc_in(uint16_t addr, void *priv);
|
||||
extern void pgc_write(uint32_t addr, uint8_t val, void *priv);
|
||||
extern uint8_t pgc_read(uint32_t addr, void *priv);
|
||||
extern void pgc_recalctimings(pgc_t *);
|
||||
extern void pgc_poll(void *priv);
|
||||
extern void pgc_reset(pgc_t *);
|
||||
extern void pgc_wake(pgc_t *);
|
||||
extern void pgc_sleep(pgc_t *);
|
||||
extern void pgc_setdisplay(pgc_t *, int cga);
|
||||
extern void pgc_speed_changed(void *priv);
|
||||
extern void pgc_close_common(void *priv);
|
||||
extern void pgc_close(void *priv);
|
||||
extern void pgc_init(pgc_t *,
|
||||
int maxw, int maxh, int visw, int vish,
|
||||
int (*inpbyte)(pgc_t *, uint8_t *), double npc);
|
||||
extern void pgc_out(uint16_t addr, uint8_t val, void *priv);
|
||||
extern uint8_t pgc_in(uint16_t addr, void *priv);
|
||||
extern void pgc_write(uint32_t addr, uint8_t val, void *priv);
|
||||
extern uint8_t pgc_read(uint32_t addr, void *priv);
|
||||
extern void pgc_recalctimings(pgc_t *);
|
||||
extern void pgc_poll(void *priv);
|
||||
extern void pgc_reset(pgc_t *);
|
||||
extern void pgc_wake(pgc_t *);
|
||||
extern void pgc_sleep(pgc_t *);
|
||||
extern void pgc_setdisplay(pgc_t *, int cga);
|
||||
extern void pgc_speed_changed(void *priv);
|
||||
extern void pgc_close_common(void *priv);
|
||||
extern void pgc_close(void *priv);
|
||||
extern void pgc_init(pgc_t *,
|
||||
int maxw, int maxh, int visw, int vish,
|
||||
int (*inpbyte)(pgc_t *, uint8_t *), double npc);
|
||||
|
||||
/* Misc support functions. */
|
||||
extern void pgc_sto_raster(pgc_t *, int16_t *x, int16_t *y);
|
||||
extern void pgc_ito_raster(pgc_t *, int32_t *x, int32_t *y);
|
||||
extern void pgc_dto_raster(pgc_t *, double *x, double *y);
|
||||
//extern int pgc_input_byte(pgc_t *, uint8_t *val);
|
||||
//extern int pgc_output_byte(pgc_t *, uint8_t val);
|
||||
extern int pgc_output_string(pgc_t *, const char *val);
|
||||
//extern int pgc_error_byte(pgc_t *, uint8_t val);
|
||||
extern int pgc_error_string(pgc_t *, const char *val);
|
||||
extern int pgc_error(pgc_t *, int err);
|
||||
extern void pgc_sto_raster(pgc_t *, int16_t *x, int16_t *y);
|
||||
extern void pgc_ito_raster(pgc_t *, int32_t *x, int32_t *y);
|
||||
extern void pgc_dto_raster(pgc_t *, double *x, double *y);
|
||||
// extern int pgc_input_byte(pgc_t *, uint8_t *val);
|
||||
// extern int pgc_output_byte(pgc_t *, uint8_t val);
|
||||
extern int pgc_output_string(pgc_t *, const char *val);
|
||||
// extern int pgc_error_byte(pgc_t *, uint8_t val);
|
||||
extern int pgc_error_string(pgc_t *, const char *val);
|
||||
extern int pgc_error(pgc_t *, int err);
|
||||
|
||||
/* Graphics functions. */
|
||||
extern uint8_t *pgc_vram_addr(pgc_t *, int16_t x, int16_t y);
|
||||
extern void pgc_write_pixel(pgc_t *, uint16_t x, uint16_t y, uint8_t ink);
|
||||
extern uint8_t pgc_read_pixel(pgc_t *, uint16_t x, uint16_t y);
|
||||
extern void pgc_plot(pgc_t *, uint16_t x, uint16_t y);
|
||||
extern uint16_t pgc_draw_line_r(pgc_t *, int32_t x1, int32_t y1,
|
||||
int32_t x2, int32_t y2, uint16_t linemask);
|
||||
extern void pgc_fill_line_r(pgc_t *, int32_t x0, int32_t x1, int32_t y);
|
||||
extern uint16_t pgc_draw_line(pgc_t *, int32_t x1, int32_t y1,
|
||||
int32_t x2, int32_t y2, uint16_t linemask);
|
||||
extern void pgc_draw_ellipse(pgc_t *, int32_t x, int32_t y);
|
||||
extern void pgc_fill_polygon(pgc_t *,
|
||||
unsigned corners, int32_t *x, int32_t *y);
|
||||
extern uint8_t *pgc_vram_addr(pgc_t *, int16_t x, int16_t y);
|
||||
extern void pgc_write_pixel(pgc_t *, uint16_t x, uint16_t y, uint8_t ink);
|
||||
extern uint8_t pgc_read_pixel(pgc_t *, uint16_t x, uint16_t y);
|
||||
extern void pgc_plot(pgc_t *, uint16_t x, uint16_t y);
|
||||
extern uint16_t pgc_draw_line_r(pgc_t *, int32_t x1, int32_t y1,
|
||||
int32_t x2, int32_t y2, uint16_t linemask);
|
||||
extern void pgc_fill_line_r(pgc_t *, int32_t x0, int32_t x1, int32_t y);
|
||||
extern uint16_t pgc_draw_line(pgc_t *, int32_t x1, int32_t y1,
|
||||
int32_t x2, int32_t y2, uint16_t linemask);
|
||||
extern void pgc_draw_ellipse(pgc_t *, int32_t x, int32_t y);
|
||||
extern void pgc_fill_polygon(pgc_t *,
|
||||
unsigned corners, int32_t *x, int32_t *y);
|
||||
|
||||
/* Command and parameter handling functions. */
|
||||
extern int pgc_clist_byte(pgc_t *, uint8_t *val);
|
||||
extern int pgc_cl_append(pgc_cl_t *, uint8_t v);
|
||||
extern int pgc_parse_bytes(pgc_t *, pgc_cl_t *, int p);
|
||||
extern int pgc_parse_words(pgc_t *, pgc_cl_t *, int p);
|
||||
extern int pgc_parse_coords(pgc_t *, pgc_cl_t *, int p);
|
||||
extern int pgc_param_byte(pgc_t *, uint8_t *val);
|
||||
extern int pgc_param_word(pgc_t *, int16_t *val);
|
||||
extern int pgc_param_coord(pgc_t *, int32_t *val);
|
||||
extern int pgc_result_byte(pgc_t *, uint8_t val);
|
||||
extern int pgc_result_word(pgc_t *, int16_t val);
|
||||
extern int pgc_result_coord(pgc_t *, int32_t val);
|
||||
extern int pgc_clist_byte(pgc_t *, uint8_t *val);
|
||||
extern int pgc_cl_append(pgc_cl_t *, uint8_t v);
|
||||
extern int pgc_parse_bytes(pgc_t *, pgc_cl_t *, int p);
|
||||
extern int pgc_parse_words(pgc_t *, pgc_cl_t *, int p);
|
||||
extern int pgc_parse_coords(pgc_t *, pgc_cl_t *, int p);
|
||||
extern int pgc_param_byte(pgc_t *, uint8_t *val);
|
||||
extern int pgc_param_word(pgc_t *, int16_t *val);
|
||||
extern int pgc_param_coord(pgc_t *, int32_t *val);
|
||||
extern int pgc_result_byte(pgc_t *, uint8_t val);
|
||||
extern int pgc_result_word(pgc_t *, int16_t val);
|
||||
extern int pgc_result_coord(pgc_t *, int32_t val);
|
||||
|
||||
/* Special overload functions for non-IBM implementations. */
|
||||
extern void pgc_hndl_lut8(pgc_t *);
|
||||
extern void pgc_hndl_lut8rd(pgc_t *);
|
||||
extern void pgc_hndl_lut8(pgc_t *);
|
||||
extern void pgc_hndl_lut8rd(pgc_t *);
|
||||
|
||||
#endif /*VID_PGC_H*/
|
||||
#endif /*VID_PGC_H*/
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -22,56 +22,55 @@
|
||||
#include <86box/vid_xga.h>
|
||||
|
||||
#ifndef VIDEO_SVGA_H
|
||||
# define VIDEO_SVGA_H
|
||||
# define VIDEO_SVGA_H
|
||||
|
||||
#define FLAG_EXTRA_BANKS 1
|
||||
#define FLAG_ADDR_BY8 2
|
||||
#define FLAG_EXT_WRITE 4
|
||||
#define FLAG_LATCH8 8
|
||||
#define FLAG_NOSKEW 16
|
||||
#define FLAG_ADDR_BY16 32
|
||||
#define FLAG_RAMDAC_SHIFT 64
|
||||
#define FLAG_128K_MASK 128
|
||||
# define FLAG_EXTRA_BANKS 1
|
||||
# define FLAG_ADDR_BY8 2
|
||||
# define FLAG_EXT_WRITE 4
|
||||
# define FLAG_LATCH8 8
|
||||
# define FLAG_NOSKEW 16
|
||||
# define FLAG_ADDR_BY16 32
|
||||
# define FLAG_RAMDAC_SHIFT 64
|
||||
# define FLAG_128K_MASK 128
|
||||
|
||||
typedef struct {
|
||||
int ena,
|
||||
x, y, xoff, yoff, cur_xsize, cur_ysize,
|
||||
v_acc, h_acc;
|
||||
x, y, xoff, yoff, cur_xsize, cur_ysize,
|
||||
v_acc, h_acc;
|
||||
uint32_t addr, pitch;
|
||||
} hwcursor_t;
|
||||
|
||||
typedef union {
|
||||
uint64_t q;
|
||||
uint32_t d[2];
|
||||
uint16_t w[4];
|
||||
uint8_t b[8];
|
||||
uint64_t q;
|
||||
uint32_t d[2];
|
||||
uint16_t w[4];
|
||||
uint8_t b[8];
|
||||
} latch_t;
|
||||
|
||||
typedef struct svga_t
|
||||
{
|
||||
ibm8514_t dev8514;
|
||||
xga_t xga;
|
||||
typedef struct svga_t {
|
||||
ibm8514_t dev8514;
|
||||
xga_t xga;
|
||||
mem_mapping_t mapping;
|
||||
|
||||
uint8_t fast, chain4, chain2_write, chain2_read,
|
||||
ext_overscan, bus_size,
|
||||
lowres, interlace, linedbl, rowcount,
|
||||
set_reset_disabled, bpp, ramdac_type, fb_only,
|
||||
readmode, writemode, readplane,
|
||||
hwcursor_oddeven, dac_hwcursor_oddeven, overlay_oddeven,
|
||||
fcr, hblank_overscan;
|
||||
ext_overscan, bus_size,
|
||||
lowres, interlace, linedbl, rowcount,
|
||||
set_reset_disabled, bpp, ramdac_type, fb_only,
|
||||
readmode, writemode, readplane,
|
||||
hwcursor_oddeven, dac_hwcursor_oddeven, overlay_oddeven,
|
||||
fcr, hblank_overscan;
|
||||
|
||||
int dac_addr, dac_pos, dac_r, dac_g,
|
||||
vtotal, dispend, vsyncstart, split, vblankstart,
|
||||
hdisp, hdisp_old, htotal, hdisp_time, rowoffset,
|
||||
dispon, hdisp_on,
|
||||
vc, sc, linepos, vslines, linecountff, oddeven,
|
||||
con, cursoron, blink, scrollcache, char_width,
|
||||
firstline, lastline, firstline_draw, lastline_draw,
|
||||
displine, fullchange, x_add, y_add, pan,
|
||||
vram_display_mask, vidclock, dots_per_clock, hblank_ext,
|
||||
hwcursor_on, dac_hwcursor_on, overlay_on, set_override,
|
||||
hblankstart, hblankend, hblank_sub, hblank_end_val, hblank_end_len;
|
||||
vtotal, dispend, vsyncstart, split, vblankstart,
|
||||
hdisp, hdisp_old, htotal, hdisp_time, rowoffset,
|
||||
dispon, hdisp_on,
|
||||
vc, sc, linepos, vslines, linecountff, oddeven,
|
||||
con, cursoron, blink, scrollcache, char_width,
|
||||
firstline, lastline, firstline_draw, lastline_draw,
|
||||
displine, fullchange, x_add, y_add, pan,
|
||||
vram_display_mask, vidclock, dots_per_clock, hblank_ext,
|
||||
hwcursor_on, dac_hwcursor_on, overlay_on, set_override,
|
||||
hblankstart, hblankend, hblank_sub, hblank_end_val, hblank_end_len;
|
||||
|
||||
/*The three variables below allow us to implement memory maps like that seen on a 1MB Trio64 :
|
||||
0MB-1MB - VRAM
|
||||
@@ -83,34 +82,34 @@ typedef struct svga_t
|
||||
(present video memory only responds to first 2MB), vram_mask would be 1MB-1 (video memory wraps at 1MB)
|
||||
*/
|
||||
uint32_t decode_mask, vram_max,
|
||||
vram_mask,
|
||||
charseta, charsetb,
|
||||
adv_flags, ma_latch,
|
||||
ca_adj, ma, maback,
|
||||
write_bank, read_bank,
|
||||
extra_banks[2],
|
||||
banked_mask,
|
||||
ca, overscan_color,
|
||||
*map8, pallook[512];
|
||||
vram_mask,
|
||||
charseta, charsetb,
|
||||
adv_flags, ma_latch,
|
||||
ca_adj, ma, maback,
|
||||
write_bank, read_bank,
|
||||
extra_banks[2],
|
||||
banked_mask,
|
||||
ca, overscan_color,
|
||||
*map8, pallook[512];
|
||||
|
||||
PALETTE vgapal;
|
||||
|
||||
uint64_t dispontime, dispofftime;
|
||||
latch_t latch;
|
||||
latch_t latch;
|
||||
|
||||
pc_timer_t timer;
|
||||
|
||||
double clock;
|
||||
|
||||
hwcursor_t hwcursor, hwcursor_latch,
|
||||
dac_hwcursor, dac_hwcursor_latch,
|
||||
overlay, overlay_latch;
|
||||
dac_hwcursor, dac_hwcursor_latch,
|
||||
overlay, overlay_latch;
|
||||
|
||||
void (*render)(struct svga_t *svga);
|
||||
void (*recalctimings_ex)(struct svga_t *svga);
|
||||
|
||||
void (*video_out)(uint16_t addr, uint8_t val, void *p);
|
||||
uint8_t (*video_in) (uint16_t addr, void *p);
|
||||
void (*video_out)(uint16_t addr, uint8_t val, void *p);
|
||||
uint8_t (*video_in)(uint16_t addr, void *p);
|
||||
|
||||
void (*hwcursor_draw)(struct svga_t *svga, int displine);
|
||||
|
||||
@@ -134,23 +133,23 @@ typedef struct svga_t
|
||||
uint32_t (*translate_address)(uint32_t addr, void *p);
|
||||
/*If set then another device is driving the monitor output and the SVGA
|
||||
card should not attempt to display anything */
|
||||
int override;
|
||||
int override;
|
||||
void *p;
|
||||
|
||||
uint8_t crtc[256], gdcreg[256], attrregs[32], seqregs[256],
|
||||
egapal[16],
|
||||
*vram, *changedvram;
|
||||
egapal[16],
|
||||
*vram, *changedvram;
|
||||
|
||||
uint8_t crtcreg, gdcaddr,
|
||||
attrff, attr_palette_enable, attraddr, seqaddr,
|
||||
miscout, cgastat, scrblank,
|
||||
plane_mask, writemask,
|
||||
colourcompare, colournocare,
|
||||
dac_mask, dac_status,
|
||||
dpms, dpms_ui,
|
||||
ksc5601_sbyte_mask, ksc5601_udc_area_msb[2];
|
||||
attrff, attr_palette_enable, attraddr, seqaddr,
|
||||
miscout, cgastat, scrblank,
|
||||
plane_mask, writemask,
|
||||
colourcompare, colournocare,
|
||||
dac_mask, dac_status,
|
||||
dpms, dpms_ui,
|
||||
ksc5601_sbyte_mask, ksc5601_udc_area_msb[2];
|
||||
|
||||
int ksc5601_swap_mode;
|
||||
int ksc5601_swap_mode;
|
||||
uint16_t ksc5601_english_font_type;
|
||||
|
||||
int vertical_linedbl;
|
||||
@@ -158,17 +157,17 @@ typedef struct svga_t
|
||||
/*Used to implement CRTC[0x17] bit 2 hsync divisor*/
|
||||
int hsync_divisor;
|
||||
|
||||
/*Tseng-style chain4 mode - CRTC dword mode is the same as byte mode, chain4
|
||||
addresses are shifted to match*/
|
||||
int packed_chain4;
|
||||
/*Tseng-style chain4 mode - CRTC dword mode is the same as byte mode, chain4
|
||||
addresses are shifted to match*/
|
||||
int packed_chain4;
|
||||
|
||||
/*Force CRTC to dword mode, regardless of CR14/CR17. Required for S3 enhanced mode*/
|
||||
int force_dword_mode;
|
||||
/*Force CRTC to dword mode, regardless of CR14/CR17. Required for S3 enhanced mode*/
|
||||
int force_dword_mode;
|
||||
|
||||
int force_old_addr;
|
||||
int force_old_addr;
|
||||
|
||||
int remap_required;
|
||||
uint32_t (*remap_func)(struct svga_t *svga, uint32_t in_addr);
|
||||
int remap_required;
|
||||
uint32_t (*remap_func)(struct svga_t *svga, uint32_t in_addr);
|
||||
|
||||
void *ramdac, *clock_gen;
|
||||
} svga_t;
|
||||
@@ -181,118 +180,116 @@ extern void ibm8514_recalctimings(svga_t *svga);
|
||||
extern void xga_poll(xga_t *xga, svga_t *svga);
|
||||
extern void xga_recalctimings(svga_t *svga);
|
||||
|
||||
extern int svga_init(const device_t *info, svga_t *svga, void *p, int memsize,
|
||||
void (*recalctimings_ex)(struct svga_t *svga),
|
||||
uint8_t (*video_in) (uint16_t addr, void *p),
|
||||
void (*video_out)(uint16_t addr, uint8_t val, void *p),
|
||||
void (*hwcursor_draw)(struct svga_t *svga, int displine),
|
||||
void (*overlay_draw)(struct svga_t *svga, int displine));
|
||||
extern void svga_recalctimings(svga_t *svga);
|
||||
extern void svga_close(svga_t *svga);
|
||||
extern int svga_init(const device_t *info, svga_t *svga, void *p, int memsize,
|
||||
void (*recalctimings_ex)(struct svga_t *svga),
|
||||
uint8_t (*video_in)(uint16_t addr, void *p),
|
||||
void (*video_out)(uint16_t addr, uint8_t val, void *p),
|
||||
void (*hwcursor_draw)(struct svga_t *svga, int displine),
|
||||
void (*overlay_draw)(struct svga_t *svga, int displine));
|
||||
extern void svga_recalctimings(svga_t *svga);
|
||||
extern void svga_close(svga_t *svga);
|
||||
|
||||
uint8_t svga_read(uint32_t addr, void *p);
|
||||
uint16_t svga_readw(uint32_t addr, void *p);
|
||||
uint32_t svga_readl(uint32_t addr, void *p);
|
||||
void svga_write(uint32_t addr, uint8_t val, void *p);
|
||||
void svga_writew(uint32_t addr, uint16_t val, void *p);
|
||||
void svga_writel(uint32_t addr, uint32_t val, void *p);
|
||||
uint8_t svga_read_linear(uint32_t addr, void *p);
|
||||
uint8_t svga_readb_linear(uint32_t addr, void *p);
|
||||
uint16_t svga_readw_linear(uint32_t addr, void *p);
|
||||
uint32_t svga_readl_linear(uint32_t addr, void *p);
|
||||
void svga_write_linear(uint32_t addr, uint8_t val, void *p);
|
||||
void svga_writeb_linear(uint32_t addr, uint8_t val, void *p);
|
||||
void svga_writew_linear(uint32_t addr, uint16_t val, void *p);
|
||||
void svga_writel_linear(uint32_t addr, uint32_t val, void *p);
|
||||
uint8_t svga_read(uint32_t addr, void *p);
|
||||
uint16_t svga_readw(uint32_t addr, void *p);
|
||||
uint32_t svga_readl(uint32_t addr, void *p);
|
||||
void svga_write(uint32_t addr, uint8_t val, void *p);
|
||||
void svga_writew(uint32_t addr, uint16_t val, void *p);
|
||||
void svga_writel(uint32_t addr, uint32_t val, void *p);
|
||||
uint8_t svga_read_linear(uint32_t addr, void *p);
|
||||
uint8_t svga_readb_linear(uint32_t addr, void *p);
|
||||
uint16_t svga_readw_linear(uint32_t addr, void *p);
|
||||
uint32_t svga_readl_linear(uint32_t addr, void *p);
|
||||
void svga_write_linear(uint32_t addr, uint8_t val, void *p);
|
||||
void svga_writeb_linear(uint32_t addr, uint8_t val, void *p);
|
||||
void svga_writew_linear(uint32_t addr, uint16_t val, void *p);
|
||||
void svga_writel_linear(uint32_t addr, uint32_t val, void *p);
|
||||
|
||||
void svga_add_status_info(char *s, int max_len, void *p);
|
||||
void svga_add_status_info(char *s, int max_len, void *p);
|
||||
|
||||
extern uint8_t svga_rotate[8][256];
|
||||
extern uint8_t svga_rotate[8][256];
|
||||
|
||||
void svga_out(uint16_t addr, uint8_t val, void *p);
|
||||
uint8_t svga_in(uint16_t addr, void *p);
|
||||
void svga_out(uint16_t addr, uint8_t val, void *p);
|
||||
uint8_t svga_in(uint16_t addr, void *p);
|
||||
|
||||
svga_t *svga_get_pri();
|
||||
void svga_set_override(svga_t *svga, int val);
|
||||
svga_t *svga_get_pri();
|
||||
void svga_set_override(svga_t *svga, int val);
|
||||
|
||||
void svga_set_ramdac_type(svga_t *svga, int type);
|
||||
void svga_close(svga_t *svga);
|
||||
void svga_set_ramdac_type(svga_t *svga, int type);
|
||||
void svga_close(svga_t *svga);
|
||||
|
||||
uint32_t svga_mask_addr(uint32_t addr, svga_t *svga);
|
||||
uint32_t svga_mask_changedaddr(uint32_t addr, svga_t *svga);
|
||||
|
||||
void svga_doblit(int wx, int wy, svga_t *svga);
|
||||
uint32_t svga_mask_addr(uint32_t addr, svga_t *svga);
|
||||
uint32_t svga_mask_changedaddr(uint32_t addr, svga_t *svga);
|
||||
|
||||
void svga_doblit(int wx, int wy, svga_t *svga);
|
||||
|
||||
enum {
|
||||
RAMDAC_6BIT = 0,
|
||||
RAMDAC_8BIT
|
||||
};
|
||||
|
||||
|
||||
/* We need a way to add a device with a pointer to a parent device so it can attach itself to it, and
|
||||
possibly also a second ATi 68860 RAM DAC type that auto-sets SVGA render on RAM DAC render change. */
|
||||
extern void ati68860_ramdac_out(uint16_t addr, uint8_t val, void *p, svga_t *svga);
|
||||
extern uint8_t ati68860_ramdac_in(uint16_t addr, void *p, svga_t *svga);
|
||||
extern void ati68860_set_ramdac_type(void *p, int type);
|
||||
extern void ati68860_ramdac_set_render(void *p, svga_t *svga);
|
||||
extern void ati68860_ramdac_set_pallook(void *p, int i, uint32_t col);
|
||||
extern void ati68860_hwcursor_draw(svga_t *svga, int displine);
|
||||
extern void ati68860_ramdac_out(uint16_t addr, uint8_t val, void *p, svga_t *svga);
|
||||
extern uint8_t ati68860_ramdac_in(uint16_t addr, void *p, svga_t *svga);
|
||||
extern void ati68860_set_ramdac_type(void *p, int type);
|
||||
extern void ati68860_ramdac_set_render(void *p, svga_t *svga);
|
||||
extern void ati68860_ramdac_set_pallook(void *p, int i, uint32_t col);
|
||||
extern void ati68860_hwcursor_draw(svga_t *svga, int displine);
|
||||
|
||||
extern void att49x_ramdac_out(uint16_t addr, int rs2, uint8_t val, void *p, svga_t *svga);
|
||||
extern uint8_t att49x_ramdac_in(uint16_t addr, int rs2, void *p, svga_t *svga);
|
||||
extern void att49x_ramdac_out(uint16_t addr, int rs2, uint8_t val, void *p, svga_t *svga);
|
||||
extern uint8_t att49x_ramdac_in(uint16_t addr, int rs2, void *p, svga_t *svga);
|
||||
|
||||
extern void att498_ramdac_out(uint16_t addr, int rs2, uint8_t val, void *p, svga_t *svga);
|
||||
extern uint8_t att498_ramdac_in(uint16_t addr, int rs2, void *p, svga_t *svga);
|
||||
extern float av9194_getclock(int clock, void *p);
|
||||
extern void att498_ramdac_out(uint16_t addr, int rs2, uint8_t val, void *p, svga_t *svga);
|
||||
extern uint8_t att498_ramdac_in(uint16_t addr, int rs2, void *p, svga_t *svga);
|
||||
extern float av9194_getclock(int clock, void *p);
|
||||
|
||||
extern void bt48x_ramdac_out(uint16_t addr, int rs2, int rs3, uint8_t val, void *p, svga_t *svga);
|
||||
extern uint8_t bt48x_ramdac_in(uint16_t addr, int rs2, int rs3, void *p, svga_t *svga);
|
||||
extern void bt48x_recalctimings(void *p, svga_t *svga);
|
||||
extern void bt48x_hwcursor_draw(svga_t *svga, int displine);
|
||||
extern void bt48x_ramdac_out(uint16_t addr, int rs2, int rs3, uint8_t val, void *p, svga_t *svga);
|
||||
extern uint8_t bt48x_ramdac_in(uint16_t addr, int rs2, int rs3, void *p, svga_t *svga);
|
||||
extern void bt48x_recalctimings(void *p, svga_t *svga);
|
||||
extern void bt48x_hwcursor_draw(svga_t *svga, int displine);
|
||||
|
||||
extern void ibm_rgb528_ramdac_out(uint16_t addr, int rs2, uint8_t val, void *p, svga_t *svga);
|
||||
extern uint8_t ibm_rgb528_ramdac_in(uint16_t addr, int rs2, void *p, svga_t *svga);
|
||||
extern void ibm_rgb528_recalctimings(void *p, svga_t *svga);
|
||||
extern void ibm_rgb528_hwcursor_draw(svga_t *svga, int displine);
|
||||
extern void ibm_rgb528_ramdac_out(uint16_t addr, int rs2, uint8_t val, void *p, svga_t *svga);
|
||||
extern uint8_t ibm_rgb528_ramdac_in(uint16_t addr, int rs2, void *p, svga_t *svga);
|
||||
extern void ibm_rgb528_recalctimings(void *p, svga_t *svga);
|
||||
extern void ibm_rgb528_hwcursor_draw(svga_t *svga, int displine);
|
||||
|
||||
extern void icd2061_write(void *p, int val);
|
||||
extern float icd2061_getclock(int clock, void *p);
|
||||
extern void icd2061_write(void *p, int val);
|
||||
extern float icd2061_getclock(int clock, void *p);
|
||||
|
||||
/* The code is the same, the #define's are so that the correct name can be used. */
|
||||
#define ics9161_write icd2061_write
|
||||
#define ics9161_getclock icd2061_getclock
|
||||
# define ics9161_write icd2061_write
|
||||
# define ics9161_getclock icd2061_getclock
|
||||
|
||||
extern float ics2494_getclock(int clock, void *p);
|
||||
extern float ics2494_getclock(int clock, void *p);
|
||||
|
||||
extern void ics2595_write(void *p, int strobe, int dat);
|
||||
extern double ics2595_getclock(void *p);
|
||||
extern void ics2595_setclock(void *p, double clock);
|
||||
extern void ics2595_write(void *p, int strobe, int dat);
|
||||
extern double ics2595_getclock(void *p);
|
||||
extern void ics2595_setclock(void *p, double clock);
|
||||
|
||||
extern void sc1148x_ramdac_out(uint16_t addr, int rs2, uint8_t val, void *p, svga_t *svga);
|
||||
extern uint8_t sc1148x_ramdac_in(uint16_t addr, int rs2, void *p, svga_t *svga);
|
||||
extern void sc1148x_ramdac_out(uint16_t addr, int rs2, uint8_t val, void *p, svga_t *svga);
|
||||
extern uint8_t sc1148x_ramdac_in(uint16_t addr, int rs2, void *p, svga_t *svga);
|
||||
|
||||
extern void sc1502x_ramdac_out(uint16_t addr, uint8_t val, void *p, svga_t *svga);
|
||||
extern uint8_t sc1502x_ramdac_in(uint16_t addr, void *p, svga_t *svga);
|
||||
extern void sc1502x_ramdac_out(uint16_t addr, uint8_t val, void *p, svga_t *svga);
|
||||
extern uint8_t sc1502x_ramdac_in(uint16_t addr, void *p, svga_t *svga);
|
||||
|
||||
extern void sdac_ramdac_out(uint16_t addr, int rs2, uint8_t val, void *p, svga_t *svga);
|
||||
extern uint8_t sdac_ramdac_in(uint16_t addr, int rs2, void *p, svga_t *svga);
|
||||
extern float sdac_getclock(int clock, void *p);
|
||||
extern void sdac_ramdac_out(uint16_t addr, int rs2, uint8_t val, void *p, svga_t *svga);
|
||||
extern uint8_t sdac_ramdac_in(uint16_t addr, int rs2, void *p, svga_t *svga);
|
||||
extern float sdac_getclock(int clock, void *p);
|
||||
|
||||
extern void stg_ramdac_out(uint16_t addr, uint8_t val, void *p, svga_t *svga);
|
||||
extern uint8_t stg_ramdac_in(uint16_t addr, void *p, svga_t *svga);
|
||||
extern float stg_getclock(int clock, void *p);
|
||||
extern void stg_ramdac_out(uint16_t addr, uint8_t val, void *p, svga_t *svga);
|
||||
extern uint8_t stg_ramdac_in(uint16_t addr, void *p, svga_t *svga);
|
||||
extern float stg_getclock(int clock, void *p);
|
||||
|
||||
extern void tkd8001_ramdac_out(uint16_t addr, uint8_t val, void *p, svga_t *svga);
|
||||
extern uint8_t tkd8001_ramdac_in(uint16_t addr, void *p, svga_t *svga);
|
||||
extern void tkd8001_ramdac_out(uint16_t addr, uint8_t val, void *p, svga_t *svga);
|
||||
extern uint8_t tkd8001_ramdac_in(uint16_t addr, void *p, svga_t *svga);
|
||||
|
||||
extern void tvp3026_ramdac_out(uint16_t addr, int rs2, int rs3, uint8_t val, void *p, svga_t *svga);
|
||||
extern void tvp3026_ramdac_out(uint16_t addr, int rs2, int rs3, uint8_t val, void *p, svga_t *svga);
|
||||
extern uint8_t tvp3026_ramdac_in(uint16_t addr, int rs2, int rs3, void *p, svga_t *svga);
|
||||
extern void tvp3026_recalctimings(void *p, svga_t *svga);
|
||||
extern void tvp3026_hwcursor_draw(svga_t *svga, int displine);
|
||||
extern float tvp3026_getclock(int clock, void *p);
|
||||
extern void tvp3026_recalctimings(void *p, svga_t *svga);
|
||||
extern void tvp3026_hwcursor_draw(svga_t *svga, int displine);
|
||||
extern float tvp3026_getclock(int clock, void *p);
|
||||
|
||||
#ifdef EMU_DEVICE_H
|
||||
# ifdef EMU_DEVICE_H
|
||||
extern const device_t ati68860_ramdac_device;
|
||||
extern const device_t att490_ramdac_device;
|
||||
extern const device_t att491_ramdac_device;
|
||||
@@ -321,6 +318,6 @@ extern const device_t tkd8001_ramdac_device;
|
||||
extern const device_t tseng_ics5301_ramdac_device;
|
||||
extern const device_t tseng_ics5341_ramdac_device;
|
||||
extern const device_t tvp3026_ramdac_device;
|
||||
#endif
|
||||
# endif
|
||||
|
||||
#endif /*VIDEO_SVGA_H*/
|
||||
#endif /*VIDEO_SVGA_H*/
|
||||
|
||||
@@ -17,14 +17,14 @@
|
||||
*/
|
||||
|
||||
#ifndef VIDEO_SVGA_RENDER_H
|
||||
# define VIDEO_SVGA_RENDER_H
|
||||
#define VIDEO_SVGA_RENDER_H
|
||||
|
||||
extern int firstline_draw, lastline_draw;
|
||||
extern int displine;
|
||||
extern int sc;
|
||||
|
||||
extern uint32_t ma, ca;
|
||||
extern int con, cursoron, cgablink;
|
||||
extern int con, cursoron, cgablink;
|
||||
|
||||
extern int scrollcache;
|
||||
|
||||
|
||||
@@ -7,14 +7,14 @@
|
||||
*/
|
||||
|
||||
#ifndef VIDEO_SVGA_RENDER_REMAP_H
|
||||
# define VIDEO_SVGA_RENDER_REMAP_H
|
||||
#define VIDEO_SVGA_RENDER_REMAP_H
|
||||
|
||||
//S3 - enhanced mode mappings CR31.3 can force doubleword mode
|
||||
//Cirrus Logic handles SVGA writes seperately
|
||||
//S3, CL, TGUI blitters need checking
|
||||
// S3 - enhanced mode mappings CR31.3 can force doubleword mode
|
||||
// Cirrus Logic handles SVGA writes seperately
|
||||
// S3, CL, TGUI blitters need checking
|
||||
|
||||
//CL, S3, Mach64, ET4000, Banshee, TGUI all okay
|
||||
//Still to check - ViRGE, HT216
|
||||
// CL, S3, Mach64, ET4000, Banshee, TGUI all okay
|
||||
// Still to check - ViRGE, HT216
|
||||
#define VAR_BYTE_MODE (0 << 0)
|
||||
#define VAR_WORD_MODE_MA13 (1 << 0)
|
||||
#define VAR_WORD_MODE_MA15 (2 << 0)
|
||||
@@ -23,45 +23,36 @@
|
||||
#define VAR_ROW0_MA13 (1 << 2)
|
||||
#define VAR_ROW1_MA14 (1 << 3)
|
||||
|
||||
#define ADDRESS_REMAP_FUNC(nr) \
|
||||
static uint32_t address_remap_func_ ## nr(svga_t *svga, uint32_t in_addr) \
|
||||
{ \
|
||||
uint32_t out_addr; \
|
||||
\
|
||||
switch (nr & VAR_MODE_MASK) \
|
||||
{ \
|
||||
case VAR_BYTE_MODE: \
|
||||
out_addr = in_addr; \
|
||||
break; \
|
||||
\
|
||||
case VAR_WORD_MODE_MA13: \
|
||||
out_addr = ((in_addr << 1) & 0x1fff8) | \
|
||||
((in_addr >> 13) & 0x4) | \
|
||||
(in_addr & ~0x1ffff); \
|
||||
break; \
|
||||
\
|
||||
case VAR_WORD_MODE_MA15: \
|
||||
out_addr = ((in_addr << 1) & 0x1fff8) | \
|
||||
((in_addr >> 15) & 0x4) | \
|
||||
(in_addr & ~0x1ffff); \
|
||||
break; \
|
||||
\
|
||||
case VAR_DWORD_MODE: \
|
||||
out_addr = ((in_addr << 2) & 0x3fff0) | \
|
||||
((in_addr >> 14) & 0xc) | \
|
||||
(in_addr & ~0x3ffff); \
|
||||
break; \
|
||||
} \
|
||||
\
|
||||
if (nr & VAR_ROW0_MA13) \
|
||||
out_addr = (out_addr & ~0x8000) | \
|
||||
((svga->sc & 1) ? 0x8000 : 0); \
|
||||
if (nr & VAR_ROW1_MA14) \
|
||||
out_addr = (out_addr & ~0x10000) | \
|
||||
((svga->sc & 2) ? 0x10000 : 0); \
|
||||
\
|
||||
return out_addr; \
|
||||
}
|
||||
#define ADDRESS_REMAP_FUNC(nr) \
|
||||
static uint32_t address_remap_func_##nr(svga_t *svga, uint32_t in_addr) \
|
||||
{ \
|
||||
uint32_t out_addr; \
|
||||
\
|
||||
switch (nr & VAR_MODE_MASK) { \
|
||||
case VAR_BYTE_MODE: \
|
||||
out_addr = in_addr; \
|
||||
break; \
|
||||
\
|
||||
case VAR_WORD_MODE_MA13: \
|
||||
out_addr = ((in_addr << 1) & 0x1fff8) | ((in_addr >> 13) & 0x4) | (in_addr & ~0x1ffff); \
|
||||
break; \
|
||||
\
|
||||
case VAR_WORD_MODE_MA15: \
|
||||
out_addr = ((in_addr << 1) & 0x1fff8) | ((in_addr >> 15) & 0x4) | (in_addr & ~0x1ffff); \
|
||||
break; \
|
||||
\
|
||||
case VAR_DWORD_MODE: \
|
||||
out_addr = ((in_addr << 2) & 0x3fff0) | ((in_addr >> 14) & 0xc) | (in_addr & ~0x3ffff); \
|
||||
break; \
|
||||
} \
|
||||
\
|
||||
if (nr & VAR_ROW0_MA13) \
|
||||
out_addr = (out_addr & ~0x8000) | ((svga->sc & 1) ? 0x8000 : 0); \
|
||||
if (nr & VAR_ROW1_MA14) \
|
||||
out_addr = (out_addr & ~0x10000) | ((svga->sc & 2) ? 0x10000 : 0); \
|
||||
\
|
||||
return out_addr; \
|
||||
}
|
||||
|
||||
ADDRESS_REMAP_FUNC(0)
|
||||
ADDRESS_REMAP_FUNC(1)
|
||||
@@ -80,52 +71,52 @@ ADDRESS_REMAP_FUNC(13)
|
||||
ADDRESS_REMAP_FUNC(14)
|
||||
ADDRESS_REMAP_FUNC(15)
|
||||
|
||||
static uint32_t (*address_remap_funcs[16])(svga_t *svga, uint32_t in_addr) =
|
||||
{
|
||||
address_remap_func_0,
|
||||
address_remap_func_1,
|
||||
address_remap_func_2,
|
||||
address_remap_func_3,
|
||||
address_remap_func_4,
|
||||
address_remap_func_5,
|
||||
address_remap_func_6,
|
||||
address_remap_func_7,
|
||||
address_remap_func_8,
|
||||
address_remap_func_9,
|
||||
address_remap_func_10,
|
||||
address_remap_func_11,
|
||||
address_remap_func_12,
|
||||
address_remap_func_13,
|
||||
address_remap_func_14,
|
||||
address_remap_func_15
|
||||
static uint32_t (*address_remap_funcs[16])(svga_t *svga, uint32_t in_addr) = {
|
||||
address_remap_func_0,
|
||||
address_remap_func_1,
|
||||
address_remap_func_2,
|
||||
address_remap_func_3,
|
||||
address_remap_func_4,
|
||||
address_remap_func_5,
|
||||
address_remap_func_6,
|
||||
address_remap_func_7,
|
||||
address_remap_func_8,
|
||||
address_remap_func_9,
|
||||
address_remap_func_10,
|
||||
address_remap_func_11,
|
||||
address_remap_func_12,
|
||||
address_remap_func_13,
|
||||
address_remap_func_14,
|
||||
address_remap_func_15
|
||||
};
|
||||
|
||||
void svga_recalc_remap_func(svga_t *svga)
|
||||
void
|
||||
svga_recalc_remap_func(svga_t *svga)
|
||||
{
|
||||
int func_nr;
|
||||
int func_nr;
|
||||
|
||||
if (svga->fb_only)
|
||||
func_nr = 0;
|
||||
else {
|
||||
if (svga->force_dword_mode)
|
||||
func_nr = VAR_DWORD_MODE;
|
||||
else if (svga->crtc[0x14] & 0x40)
|
||||
func_nr = svga->packed_chain4 ? VAR_BYTE_MODE : VAR_DWORD_MODE;
|
||||
else if (svga->crtc[0x17] & 0x40)
|
||||
func_nr = VAR_BYTE_MODE;
|
||||
else if (svga->crtc[0x17] & 0x20)
|
||||
func_nr = VAR_WORD_MODE_MA15;
|
||||
else
|
||||
func_nr = VAR_WORD_MODE_MA13;
|
||||
if (svga->fb_only)
|
||||
func_nr = 0;
|
||||
else {
|
||||
if (svga->force_dword_mode)
|
||||
func_nr = VAR_DWORD_MODE;
|
||||
else if (svga->crtc[0x14] & 0x40)
|
||||
func_nr = svga->packed_chain4 ? VAR_BYTE_MODE : VAR_DWORD_MODE;
|
||||
else if (svga->crtc[0x17] & 0x40)
|
||||
func_nr = VAR_BYTE_MODE;
|
||||
else if (svga->crtc[0x17] & 0x20)
|
||||
func_nr = VAR_WORD_MODE_MA15;
|
||||
else
|
||||
func_nr = VAR_WORD_MODE_MA13;
|
||||
|
||||
if (!(svga->crtc[0x17] & 0x01))
|
||||
func_nr |= VAR_ROW0_MA13;
|
||||
if (!(svga->crtc[0x17] & 0x02))
|
||||
func_nr |= VAR_ROW1_MA14;
|
||||
}
|
||||
if (!(svga->crtc[0x17] & 0x01))
|
||||
func_nr |= VAR_ROW0_MA13;
|
||||
if (!(svga->crtc[0x17] & 0x02))
|
||||
func_nr |= VAR_ROW1_MA14;
|
||||
}
|
||||
|
||||
svga->remap_required = (func_nr != 0);
|
||||
svga->remap_func = address_remap_funcs[func_nr];
|
||||
svga->remap_required = (func_nr != 0);
|
||||
svga->remap_func = address_remap_funcs[func_nr];
|
||||
}
|
||||
|
||||
#endif /*VIDEO_RENDER_REMAP_H*/
|
||||
|
||||
@@ -18,18 +18,17 @@
|
||||
*/
|
||||
|
||||
#ifndef VIDEO_VGA_H
|
||||
# define VIDEO_VGA_H
|
||||
#define VIDEO_VGA_H
|
||||
|
||||
typedef struct vga_t
|
||||
{
|
||||
svga_t svga;
|
||||
typedef struct vga_t {
|
||||
svga_t svga;
|
||||
|
||||
rom_t bios_rom;
|
||||
rom_t bios_rom;
|
||||
} vga_t;
|
||||
|
||||
static video_timings_t timing_vga = {VIDEO_ISA, 8, 16, 32, 8, 16, 32};
|
||||
static video_timings_t timing_vga = { VIDEO_ISA, 8, 16, 32, 8, 16, 32 };
|
||||
|
||||
void vga_out(uint16_t addr, uint8_t val, void *p);
|
||||
void vga_out(uint16_t addr, uint8_t val, void *p);
|
||||
uint8_t vga_in(uint16_t addr, void *p);
|
||||
|
||||
#endif /*VIDEO_VGA_H*/
|
||||
#endif /*VIDEO_VGA_H*/
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
*/
|
||||
|
||||
#ifndef VIDEO_VOODOO_BANSHEE_H
|
||||
# define VIDEO_VOODOO_BANSHEE_H
|
||||
#define VIDEO_VOODOO_BANSHEE_H
|
||||
|
||||
void banshee_set_overlay_addr(void *p, uint32_t addr);
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
*/
|
||||
|
||||
#ifndef VIDEO_VOODOO_BANSHEE_BLITTER_H
|
||||
# define VIDEO_VOODOO_BANSHEE_BLITTER_H
|
||||
#define VIDEO_VOODOO_BANSHEE_BLITTER_H
|
||||
|
||||
void voodoo_2d_reg_writel(voodoo_t *voodoo, uint32_t addr, uint32_t val);
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
*/
|
||||
|
||||
#ifndef VIDEO_VOODOO_BLITTER_H
|
||||
# define VIDEO_VOODOO_BLITTER_H
|
||||
#define VIDEO_VOODOO_BLITTER_H
|
||||
|
||||
void voodoo_v2_blit_start(voodoo_t *voodoo);
|
||||
void voodoo_v2_blit_data(voodoo_t *voodoo, uint32_t data);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -17,79 +17,72 @@
|
||||
*/
|
||||
|
||||
#ifndef VIDEO_VOODOO_COMMON_H
|
||||
# define VIDEO_VOODOO_COMMON_H
|
||||
#define VIDEO_VOODOO_COMMON_H
|
||||
|
||||
#ifdef CLAMP
|
||||
#undef CLAMP
|
||||
# undef CLAMP
|
||||
#endif
|
||||
|
||||
#define CLAMP(x) (((x) < 0) ? 0 : (((x) > 0xff) ? 0xff : (x)))
|
||||
#define CLAMP16(x) (((x) < 0) ? 0 : (((x) > 0xffff) ? 0xffff : (x)))
|
||||
#define CLAMP(x) (((x) < 0) ? 0 : (((x) > 0xff) ? 0xff : (x)))
|
||||
#define CLAMP16(x) (((x) < 0) ? 0 : (((x) > 0xffff) ? 0xffff : (x)))
|
||||
|
||||
|
||||
#define LOD_MAX 8
|
||||
#define LOD_MAX 8
|
||||
|
||||
#define TEX_DIRTY_SHIFT 10
|
||||
|
||||
#define TEX_CACHE_MAX 64
|
||||
#define TEX_CACHE_MAX 64
|
||||
|
||||
enum
|
||||
{
|
||||
VOODOO_1 = 0,
|
||||
VOODOO_SB50,
|
||||
VOODOO_2,
|
||||
VOODOO_BANSHEE,
|
||||
VOODOO_3
|
||||
enum {
|
||||
VOODOO_1 = 0,
|
||||
VOODOO_SB50,
|
||||
VOODOO_2,
|
||||
VOODOO_BANSHEE,
|
||||
VOODOO_3
|
||||
};
|
||||
|
||||
typedef union int_float
|
||||
{
|
||||
uint32_t i;
|
||||
float f;
|
||||
typedef union int_float {
|
||||
uint32_t i;
|
||||
float f;
|
||||
} int_float;
|
||||
|
||||
typedef struct rgbvoodoo_t
|
||||
{
|
||||
uint8_t b, g, r;
|
||||
uint8_t pad;
|
||||
typedef struct rgbvoodoo_t {
|
||||
uint8_t b, g, r;
|
||||
uint8_t pad;
|
||||
} rgbvoodoo_t;
|
||||
typedef struct rgba8_t
|
||||
{
|
||||
uint8_t b, g, r, a;
|
||||
typedef struct rgba8_t {
|
||||
uint8_t b, g, r, a;
|
||||
} rgba8_t;
|
||||
|
||||
typedef union rgba_u
|
||||
{
|
||||
struct
|
||||
{
|
||||
uint8_t b, g, r, a;
|
||||
} rgba;
|
||||
uint32_t u;
|
||||
typedef union rgba_u {
|
||||
struct
|
||||
{
|
||||
uint8_t b, g, r, a;
|
||||
} rgba;
|
||||
uint32_t u;
|
||||
} rgba_u;
|
||||
|
||||
#define FIFO_SIZE 65536
|
||||
#define FIFO_MASK (FIFO_SIZE - 1)
|
||||
#define FIFO_SIZE 65536
|
||||
#define FIFO_MASK (FIFO_SIZE - 1)
|
||||
#define FIFO_ENTRY_SIZE (1 << 31)
|
||||
|
||||
#define FIFO_ENTRIES (voodoo->fifo_write_idx - voodoo->fifo_read_idx)
|
||||
#define FIFO_FULL ((voodoo->fifo_write_idx - voodoo->fifo_read_idx) >= FIFO_SIZE-4)
|
||||
#define FIFO_EMPTY (voodoo->fifo_read_idx == voodoo->fifo_write_idx)
|
||||
#define FIFO_ENTRIES (voodoo->fifo_write_idx - voodoo->fifo_read_idx)
|
||||
#define FIFO_FULL ((voodoo->fifo_write_idx - voodoo->fifo_read_idx) >= FIFO_SIZE - 4)
|
||||
#define FIFO_EMPTY (voodoo->fifo_read_idx == voodoo->fifo_write_idx)
|
||||
|
||||
#define FIFO_TYPE 0xff000000
|
||||
#define FIFO_ADDR 0x00ffffff
|
||||
#define FIFO_TYPE 0xff000000
|
||||
#define FIFO_ADDR 0x00ffffff
|
||||
|
||||
enum
|
||||
{
|
||||
FIFO_INVALID = (0x00 << 24),
|
||||
FIFO_WRITEL_REG = (0x01 << 24),
|
||||
FIFO_WRITEW_FB = (0x02 << 24),
|
||||
FIFO_WRITEL_FB = (0x03 << 24),
|
||||
FIFO_WRITEL_TEX = (0x04 << 24),
|
||||
FIFO_WRITEL_2DREG = (0x05 << 24)
|
||||
enum {
|
||||
FIFO_INVALID = (0x00 << 24),
|
||||
FIFO_WRITEL_REG = (0x01 << 24),
|
||||
FIFO_WRITEW_FB = (0x02 << 24),
|
||||
FIFO_WRITEL_FB = (0x03 << 24),
|
||||
FIFO_WRITEL_TEX = (0x04 << 24),
|
||||
FIFO_WRITEL_2DREG = (0x05 << 24)
|
||||
};
|
||||
|
||||
#define PARAM_SIZE 1024
|
||||
#define PARAM_MASK (PARAM_SIZE - 1)
|
||||
#define PARAM_SIZE 1024
|
||||
#define PARAM_MASK (PARAM_SIZE - 1)
|
||||
#define PARAM_ENTRY_SIZE (1 << 31)
|
||||
|
||||
#define PARAM_ENTRIES(x) (voodoo->params_write_idx - voodoo->params_read_idx[x])
|
||||
@@ -98,438 +91,430 @@ enum
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint32_t addr_type;
|
||||
uint32_t val;
|
||||
uint32_t addr_type;
|
||||
uint32_t val;
|
||||
} fifo_entry_t;
|
||||
|
||||
typedef struct voodoo_params_t
|
||||
{
|
||||
int command;
|
||||
typedef struct voodoo_params_t {
|
||||
int command;
|
||||
|
||||
int32_t vertexAx, vertexAy, vertexBx, vertexBy, vertexCx, vertexCy;
|
||||
int32_t vertexAx, vertexAy, vertexBx, vertexBy, vertexCx, vertexCy;
|
||||
|
||||
uint32_t startR, startG, startB, startZ, startA;
|
||||
uint32_t startR, startG, startB, startZ, startA;
|
||||
|
||||
int32_t dBdX, dGdX, dRdX, dAdX, dZdX;
|
||||
int32_t dBdX, dGdX, dRdX, dAdX, dZdX;
|
||||
|
||||
int32_t dBdY, dGdY, dRdY, dAdY, dZdY;
|
||||
int32_t dBdY, dGdY, dRdY, dAdY, dZdY;
|
||||
|
||||
int64_t startW, dWdX, dWdY;
|
||||
int64_t startW, dWdX, dWdY;
|
||||
|
||||
struct
|
||||
{
|
||||
int64_t startS, startT, startW, p1;
|
||||
int64_t dSdX, dTdX, dWdX, p2;
|
||||
int64_t dSdY, dTdY, dWdY, p3;
|
||||
} tmu[2];
|
||||
struct
|
||||
{
|
||||
int64_t startS, startT, startW, p1;
|
||||
int64_t dSdX, dTdX, dWdX, p2;
|
||||
int64_t dSdY, dTdY, dWdY, p3;
|
||||
} tmu[2];
|
||||
|
||||
uint32_t color0, color1;
|
||||
uint32_t color0, color1;
|
||||
|
||||
uint32_t fbzMode;
|
||||
uint32_t fbzColorPath;
|
||||
uint32_t fbzMode;
|
||||
uint32_t fbzColorPath;
|
||||
|
||||
uint32_t fogMode;
|
||||
rgbvoodoo_t fogColor;
|
||||
struct
|
||||
{
|
||||
uint8_t fog, dfog;
|
||||
} fogTable[64];
|
||||
uint32_t fogMode;
|
||||
rgbvoodoo_t fogColor;
|
||||
struct
|
||||
{
|
||||
uint8_t fog, dfog;
|
||||
} fogTable[64];
|
||||
|
||||
uint32_t alphaMode;
|
||||
uint32_t alphaMode;
|
||||
|
||||
uint32_t zaColor;
|
||||
uint32_t zaColor;
|
||||
|
||||
int chromaKey_r, chromaKey_g, chromaKey_b;
|
||||
uint32_t chromaKey;
|
||||
int chromaKey_r, chromaKey_g, chromaKey_b;
|
||||
uint32_t chromaKey;
|
||||
|
||||
uint32_t textureMode[2];
|
||||
uint32_t tLOD[2];
|
||||
uint32_t textureMode[2];
|
||||
uint32_t tLOD[2];
|
||||
|
||||
uint32_t texBaseAddr[2], texBaseAddr1[2], texBaseAddr2[2], texBaseAddr38[2];
|
||||
uint32_t texBaseAddr[2], texBaseAddr1[2], texBaseAddr2[2], texBaseAddr38[2];
|
||||
|
||||
uint32_t tex_base[2][LOD_MAX+2];
|
||||
uint32_t tex_end[2][LOD_MAX+2];
|
||||
int tex_width[2];
|
||||
int tex_w_mask[2][LOD_MAX+2];
|
||||
int tex_w_nmask[2][LOD_MAX+2];
|
||||
int tex_h_mask[2][LOD_MAX+2];
|
||||
int tex_shift[2][LOD_MAX+2];
|
||||
int tex_lod[2][LOD_MAX+2];
|
||||
int tex_entry[2];
|
||||
int detail_max[2], detail_bias[2], detail_scale[2];
|
||||
uint32_t tex_base[2][LOD_MAX + 2];
|
||||
uint32_t tex_end[2][LOD_MAX + 2];
|
||||
int tex_width[2];
|
||||
int tex_w_mask[2][LOD_MAX + 2];
|
||||
int tex_w_nmask[2][LOD_MAX + 2];
|
||||
int tex_h_mask[2][LOD_MAX + 2];
|
||||
int tex_shift[2][LOD_MAX + 2];
|
||||
int tex_lod[2][LOD_MAX + 2];
|
||||
int tex_entry[2];
|
||||
int detail_max[2], detail_bias[2], detail_scale[2];
|
||||
|
||||
uint32_t draw_offset, aux_offset;
|
||||
uint32_t draw_offset, aux_offset;
|
||||
|
||||
int tformat[2];
|
||||
int tformat[2];
|
||||
|
||||
int clipLeft, clipRight, clipLowY, clipHighY;
|
||||
int clipLeft1, clipRight1, clipLowY1, clipHighY1;
|
||||
int clipLeft, clipRight, clipLowY, clipHighY;
|
||||
int clipLeft1, clipRight1, clipLowY1, clipHighY1;
|
||||
|
||||
int sign;
|
||||
int sign;
|
||||
|
||||
uint32_t front_offset;
|
||||
uint32_t front_offset;
|
||||
|
||||
uint32_t swapbufferCMD;
|
||||
uint32_t swapbufferCMD;
|
||||
|
||||
uint32_t stipple;
|
||||
uint32_t stipple;
|
||||
|
||||
int col_tiled, aux_tiled;
|
||||
int row_width, aux_row_width;
|
||||
int col_tiled, aux_tiled;
|
||||
int row_width, aux_row_width;
|
||||
} voodoo_params_t;
|
||||
|
||||
typedef struct texture_t
|
||||
{
|
||||
uint32_t base;
|
||||
uint32_t tLOD;
|
||||
volatile int refcount, refcount_r[4];
|
||||
int is16;
|
||||
uint32_t palette_checksum;
|
||||
uint32_t addr_start[4], addr_end[4];
|
||||
uint32_t *data;
|
||||
typedef struct texture_t {
|
||||
uint32_t base;
|
||||
uint32_t tLOD;
|
||||
volatile int refcount, refcount_r[4];
|
||||
int is16;
|
||||
uint32_t palette_checksum;
|
||||
uint32_t addr_start[4], addr_end[4];
|
||||
uint32_t *data;
|
||||
} texture_t;
|
||||
|
||||
typedef struct vert_t
|
||||
{
|
||||
float sVx, sVy;
|
||||
float sRed, sGreen, sBlue, sAlpha;
|
||||
float sVz, sWb;
|
||||
float sW0, sS0, sT0;
|
||||
float sW1, sS1, sT1;
|
||||
typedef struct vert_t {
|
||||
float sVx, sVy;
|
||||
float sRed, sGreen, sBlue, sAlpha;
|
||||
float sVz, sWb;
|
||||
float sW0, sS0, sT0;
|
||||
float sW1, sS1, sT1;
|
||||
} vert_t;
|
||||
|
||||
typedef struct clip_t
|
||||
{
|
||||
int x_min, x_max;
|
||||
int y_min, y_max;
|
||||
typedef struct clip_t {
|
||||
int x_min, x_max;
|
||||
int y_min, y_max;
|
||||
} clip_t;
|
||||
|
||||
typedef struct voodoo_t
|
||||
{
|
||||
mem_mapping_t mapping;
|
||||
typedef struct voodoo_t {
|
||||
mem_mapping_t mapping;
|
||||
|
||||
int pci_enable;
|
||||
int pci_enable;
|
||||
|
||||
uint8_t dac_data[8];
|
||||
int dac_reg, dac_reg_ff;
|
||||
uint8_t dac_readdata;
|
||||
uint16_t dac_pll_regs[16];
|
||||
uint8_t dac_data[8];
|
||||
int dac_reg, dac_reg_ff;
|
||||
uint8_t dac_readdata;
|
||||
uint16_t dac_pll_regs[16];
|
||||
|
||||
float pixel_clock;
|
||||
uint64_t line_time;
|
||||
float pixel_clock;
|
||||
uint64_t line_time;
|
||||
|
||||
voodoo_params_t params;
|
||||
voodoo_params_t params;
|
||||
|
||||
uint32_t fbiInit0, fbiInit1, fbiInit2, fbiInit3, fbiInit4;
|
||||
uint32_t fbiInit5, fbiInit6, fbiInit7; /*Voodoo 2*/
|
||||
uint32_t fbiInit0, fbiInit1, fbiInit2, fbiInit3, fbiInit4;
|
||||
uint32_t fbiInit5, fbiInit6, fbiInit7; /*Voodoo 2*/
|
||||
|
||||
uint32_t initEnable;
|
||||
uint32_t initEnable;
|
||||
|
||||
uint32_t lfbMode;
|
||||
uint32_t lfbMode;
|
||||
|
||||
uint32_t memBaseAddr;
|
||||
uint32_t memBaseAddr;
|
||||
|
||||
int_float fvertexAx, fvertexAy, fvertexBx, fvertexBy, fvertexCx, fvertexCy;
|
||||
int_float fvertexAx, fvertexAy, fvertexBx, fvertexBy, fvertexCx, fvertexCy;
|
||||
|
||||
uint32_t front_offset, back_offset;
|
||||
uint32_t front_offset, back_offset;
|
||||
|
||||
uint32_t fb_read_offset, fb_write_offset;
|
||||
uint32_t fb_read_offset, fb_write_offset;
|
||||
|
||||
int row_width, aux_row_width;
|
||||
int block_width;
|
||||
int row_width, aux_row_width;
|
||||
int block_width;
|
||||
|
||||
int col_tiled, aux_tiled;
|
||||
int col_tiled, aux_tiled;
|
||||
|
||||
uint8_t *fb_mem, *tex_mem[2];
|
||||
uint16_t *tex_mem_w[2];
|
||||
uint8_t *fb_mem, *tex_mem[2];
|
||||
uint16_t *tex_mem_w[2];
|
||||
|
||||
int rgb_sel;
|
||||
int rgb_sel;
|
||||
|
||||
uint32_t trexInit1[2];
|
||||
uint32_t trexInit1[2];
|
||||
|
||||
uint32_t tmuConfig;
|
||||
uint32_t tmuConfig;
|
||||
|
||||
mutex_t *swap_mutex;
|
||||
int swap_count;
|
||||
mutex_t *swap_mutex;
|
||||
int swap_count;
|
||||
|
||||
int disp_buffer, draw_buffer;
|
||||
pc_timer_t timer;
|
||||
int disp_buffer, draw_buffer;
|
||||
pc_timer_t timer;
|
||||
|
||||
int line;
|
||||
svga_t *svga;
|
||||
int line;
|
||||
svga_t *svga;
|
||||
|
||||
uint32_t backPorch;
|
||||
uint32_t videoDimensions;
|
||||
uint32_t hSync, vSync;
|
||||
uint32_t backPorch;
|
||||
uint32_t videoDimensions;
|
||||
uint32_t hSync, vSync;
|
||||
|
||||
int h_total, v_total, v_disp;
|
||||
int h_disp;
|
||||
int v_retrace;
|
||||
int h_total, v_total, v_disp;
|
||||
int h_disp;
|
||||
int v_retrace;
|
||||
|
||||
struct
|
||||
{
|
||||
uint32_t y[4], i[4], q[4];
|
||||
} nccTable[2][2];
|
||||
struct
|
||||
{
|
||||
uint32_t y[4], i[4], q[4];
|
||||
} nccTable[2][2];
|
||||
|
||||
rgba_u palette[2][256];
|
||||
rgba_u palette[2][256];
|
||||
|
||||
rgba_u ncc_lookup[2][2][256];
|
||||
int ncc_dirty[2];
|
||||
rgba_u ncc_lookup[2][2][256];
|
||||
int ncc_dirty[2];
|
||||
|
||||
thread_t *fifo_thread;
|
||||
thread_t *render_thread[4];
|
||||
event_t *wake_fifo_thread;
|
||||
event_t *wake_main_thread;
|
||||
event_t *fifo_not_full_event;
|
||||
event_t *render_not_full_event[4];
|
||||
event_t *wake_render_thread[4];
|
||||
thread_t *fifo_thread;
|
||||
thread_t *render_thread[4];
|
||||
event_t *wake_fifo_thread;
|
||||
event_t *wake_main_thread;
|
||||
event_t *fifo_not_full_event;
|
||||
event_t *render_not_full_event[4];
|
||||
event_t *wake_render_thread[4];
|
||||
|
||||
int voodoo_busy;
|
||||
int render_voodoo_busy[4];
|
||||
int voodoo_busy;
|
||||
int render_voodoo_busy[4];
|
||||
|
||||
int render_threads;
|
||||
int odd_even_mask;
|
||||
int render_threads;
|
||||
int odd_even_mask;
|
||||
|
||||
int pixel_count[4], texel_count[4], tri_count, frame_count;
|
||||
int pixel_count_old[4], texel_count_old[4];
|
||||
int wr_count, rd_count, tex_count;
|
||||
int pixel_count[4], texel_count[4], tri_count, frame_count;
|
||||
int pixel_count_old[4], texel_count_old[4];
|
||||
int wr_count, rd_count, tex_count;
|
||||
|
||||
int retrace_count;
|
||||
int swap_interval;
|
||||
uint32_t swap_offset;
|
||||
int swap_pending;
|
||||
int retrace_count;
|
||||
int swap_interval;
|
||||
uint32_t swap_offset;
|
||||
int swap_pending;
|
||||
|
||||
int bilinear_enabled;
|
||||
int dithersub_enabled;
|
||||
int bilinear_enabled;
|
||||
int dithersub_enabled;
|
||||
|
||||
int fb_size;
|
||||
uint32_t fb_mask;
|
||||
int fb_size;
|
||||
uint32_t fb_mask;
|
||||
|
||||
int texture_size;
|
||||
uint32_t texture_mask;
|
||||
int texture_size;
|
||||
uint32_t texture_mask;
|
||||
|
||||
int dual_tmus;
|
||||
int type;
|
||||
|
||||
fifo_entry_t fifo[FIFO_SIZE];
|
||||
volatile int fifo_read_idx, fifo_write_idx;
|
||||
volatile int cmd_read, cmd_written, cmd_written_fifo;
|
||||
|
||||
voodoo_params_t params_buffer[PARAM_SIZE];
|
||||
volatile int params_read_idx[4], params_write_idx;
|
||||
|
||||
uint32_t cmdfifo_base, cmdfifo_end, cmdfifo_size;
|
||||
int cmdfifo_rp, cmdfifo_ret_addr;
|
||||
int cmdfifo_in_sub;
|
||||
volatile int cmdfifo_depth_rd, cmdfifo_depth_wr;
|
||||
volatile int cmdfifo_enabled;
|
||||
uint32_t cmdfifo_amin, cmdfifo_amax;
|
||||
int cmdfifo_holecount;
|
||||
|
||||
uint32_t sSetupMode;
|
||||
vert_t verts[4];
|
||||
unsigned int vertex_ages[3];
|
||||
unsigned int vertex_next_age;
|
||||
int num_verticies;
|
||||
int cull_pingpong;
|
||||
|
||||
int flush;
|
||||
|
||||
int scrfilter;
|
||||
int scrfilterEnabled;
|
||||
int scrfilterThreshold;
|
||||
int scrfilterThresholdOld;
|
||||
|
||||
uint32_t last_write_addr;
|
||||
|
||||
uint32_t fbiPixelsIn;
|
||||
uint32_t fbiChromaFail;
|
||||
uint32_t fbiZFuncFail;
|
||||
uint32_t fbiAFuncFail;
|
||||
uint32_t fbiPixelsOut;
|
||||
|
||||
uint32_t bltSrcBaseAddr;
|
||||
uint32_t bltDstBaseAddr;
|
||||
int bltSrcXYStride, bltDstXYStride;
|
||||
uint32_t bltSrcChromaRange, bltDstChromaRange;
|
||||
int bltSrcChromaMinR, bltSrcChromaMinG, bltSrcChromaMinB;
|
||||
int bltSrcChromaMaxR, bltSrcChromaMaxG, bltSrcChromaMaxB;
|
||||
int bltDstChromaMinR, bltDstChromaMinG, bltDstChromaMinB;
|
||||
int bltDstChromaMaxR, bltDstChromaMaxG, bltDstChromaMaxB;
|
||||
|
||||
int bltClipRight, bltClipLeft;
|
||||
int bltClipHighY, bltClipLowY;
|
||||
|
||||
int bltSrcX, bltSrcY;
|
||||
int bltDstX, bltDstY;
|
||||
int bltSizeX, bltSizeY;
|
||||
int bltRop[4];
|
||||
uint16_t bltColorFg, bltColorBg;
|
||||
|
||||
uint32_t bltCommand;
|
||||
|
||||
uint32_t leftOverlayBuf;
|
||||
|
||||
struct
|
||||
{
|
||||
int dst_x, dst_y;
|
||||
int cur_x;
|
||||
int size_x, size_y;
|
||||
int x_dir, y_dir;
|
||||
int dst_stride;
|
||||
} blt;
|
||||
|
||||
struct
|
||||
{
|
||||
uint32_t bresError0, bresError1;
|
||||
uint32_t clip0Min, clip0Max;
|
||||
uint32_t clip1Min, clip1Max;
|
||||
uint32_t colorBack, colorFore;
|
||||
uint32_t command, commandExtra;
|
||||
uint32_t dstBaseAddr;
|
||||
uint32_t dstFormat;
|
||||
uint32_t dstSize;
|
||||
uint32_t dstXY;
|
||||
uint32_t lineStipple;
|
||||
uint32_t lineStyle;
|
||||
uint32_t rop;
|
||||
uint32_t srcBaseAddr;
|
||||
uint32_t srcFormat;
|
||||
uint32_t srcSize;
|
||||
uint32_t srcXY;
|
||||
|
||||
uint32_t colorPattern[64];
|
||||
|
||||
int bres_error_0, bres_error_1;
|
||||
uint32_t colorPattern8[64], colorPattern16[64], colorPattern24[64];
|
||||
int cur_x, cur_y;
|
||||
uint32_t dstBaseAddr_tiled;
|
||||
uint32_t dstColorkeyMin, dstColorkeyMax;
|
||||
int dstSizeX, dstSizeY;
|
||||
int dstX, dstY;
|
||||
int dst_stride;
|
||||
int patoff_x, patoff_y;
|
||||
uint8_t rops[4];
|
||||
uint32_t srcBaseAddr_tiled;
|
||||
uint32_t srcColorkeyMin, srcColorkeyMax;
|
||||
int srcSizeX, srcSizeY;
|
||||
int srcX, srcY;
|
||||
int src_stride;
|
||||
int old_srcX;
|
||||
|
||||
/*Used for handling packed 24bpp host data*/
|
||||
int host_data_remainder;
|
||||
uint32_t old_host_data;
|
||||
|
||||
/*Polyfill coordinates*/
|
||||
int lx[2], rx[2];
|
||||
int ly[2], ry[2];
|
||||
|
||||
/*Polyfill state*/
|
||||
int error[2];
|
||||
int dx[2], dy[2];
|
||||
int x_inc[2]; /*y_inc is always 1 for polyfill*/
|
||||
int lx_cur, rx_cur;
|
||||
|
||||
clip_t clip[2];
|
||||
|
||||
uint8_t host_data[16384];
|
||||
int host_data_count;
|
||||
int host_data_size_src, host_data_size_dest;
|
||||
int src_stride_src, src_stride_dest;
|
||||
|
||||
int src_bpp;
|
||||
|
||||
int line_pix_pos, line_bit_pos;
|
||||
int line_rep_cnt, line_bit_mask_size;
|
||||
} banshee_blt;
|
||||
|
||||
struct
|
||||
{
|
||||
uint32_t vidOverlayStartCoords;
|
||||
uint32_t vidOverlayEndScreenCoords;
|
||||
uint32_t vidOverlayDudx, vidOverlayDudxOffsetSrcWidth;
|
||||
uint32_t vidOverlayDvdy, vidOverlayDvdyOffset;
|
||||
//uint32_t vidDesktopOverlayStride;
|
||||
|
||||
int start_x, start_y;
|
||||
int end_x, end_y;
|
||||
int size_x, size_y;
|
||||
int overlay_bytes;
|
||||
|
||||
unsigned int src_y;
|
||||
} overlay;
|
||||
|
||||
rgbvoodoo_t clutData[33];
|
||||
int clutData_dirty;
|
||||
rgbvoodoo_t clutData256[256];
|
||||
uint32_t video_16to32[0x10000];
|
||||
|
||||
uint8_t dirty_line[2048];
|
||||
int dirty_line_low, dirty_line_high;
|
||||
|
||||
int fb_write_buffer, fb_draw_buffer;
|
||||
int buffer_cutoff;
|
||||
|
||||
uint32_t tile_base, tile_stride;
|
||||
int tile_stride_shift, tile_x, tile_x_real;
|
||||
|
||||
int y_origin_swap;
|
||||
|
||||
int read_time, write_time, burst_time;
|
||||
|
||||
pc_timer_t wake_timer;
|
||||
|
||||
/* screen filter tables */
|
||||
uint8_t thefilter[256][256];
|
||||
uint8_t thefilterg[256][256];
|
||||
uint8_t thefilterb[256][256];
|
||||
uint16_t purpleline[256][3];
|
||||
|
||||
texture_t texture_cache[2][TEX_CACHE_MAX];
|
||||
uint8_t texture_present[2][16384];
|
||||
int texture_last_removed;
|
||||
|
||||
uint32_t palette_checksum[2];
|
||||
int palette_dirty[2];
|
||||
int dual_tmus;
|
||||
int type;
|
||||
|
||||
fifo_entry_t fifo[FIFO_SIZE];
|
||||
volatile int fifo_read_idx, fifo_write_idx;
|
||||
volatile int cmd_read, cmd_written, cmd_written_fifo;
|
||||
|
||||
voodoo_params_t params_buffer[PARAM_SIZE];
|
||||
volatile int params_read_idx[4], params_write_idx;
|
||||
|
||||
uint32_t cmdfifo_base, cmdfifo_end, cmdfifo_size;
|
||||
int cmdfifo_rp, cmdfifo_ret_addr;
|
||||
int cmdfifo_in_sub;
|
||||
volatile int cmdfifo_depth_rd, cmdfifo_depth_wr;
|
||||
volatile int cmdfifo_enabled;
|
||||
uint32_t cmdfifo_amin, cmdfifo_amax;
|
||||
int cmdfifo_holecount;
|
||||
|
||||
uint32_t sSetupMode;
|
||||
vert_t verts[4];
|
||||
unsigned int vertex_ages[3];
|
||||
unsigned int vertex_next_age;
|
||||
int num_verticies;
|
||||
int cull_pingpong;
|
||||
|
||||
int flush;
|
||||
|
||||
int scrfilter;
|
||||
int scrfilterEnabled;
|
||||
int scrfilterThreshold;
|
||||
int scrfilterThresholdOld;
|
||||
|
||||
uint32_t last_write_addr;
|
||||
|
||||
uint32_t fbiPixelsIn;
|
||||
uint32_t fbiChromaFail;
|
||||
uint32_t fbiZFuncFail;
|
||||
uint32_t fbiAFuncFail;
|
||||
uint32_t fbiPixelsOut;
|
||||
|
||||
uint32_t bltSrcBaseAddr;
|
||||
uint32_t bltDstBaseAddr;
|
||||
int bltSrcXYStride, bltDstXYStride;
|
||||
uint32_t bltSrcChromaRange, bltDstChromaRange;
|
||||
int bltSrcChromaMinR, bltSrcChromaMinG, bltSrcChromaMinB;
|
||||
int bltSrcChromaMaxR, bltSrcChromaMaxG, bltSrcChromaMaxB;
|
||||
int bltDstChromaMinR, bltDstChromaMinG, bltDstChromaMinB;
|
||||
int bltDstChromaMaxR, bltDstChromaMaxG, bltDstChromaMaxB;
|
||||
|
||||
int bltClipRight, bltClipLeft;
|
||||
int bltClipHighY, bltClipLowY;
|
||||
|
||||
int bltSrcX, bltSrcY;
|
||||
int bltDstX, bltDstY;
|
||||
int bltSizeX, bltSizeY;
|
||||
int bltRop[4];
|
||||
uint16_t bltColorFg, bltColorBg;
|
||||
|
||||
uint32_t bltCommand;
|
||||
|
||||
uint32_t leftOverlayBuf;
|
||||
|
||||
struct
|
||||
{
|
||||
int dst_x, dst_y;
|
||||
int cur_x;
|
||||
int size_x, size_y;
|
||||
int x_dir, y_dir;
|
||||
int dst_stride;
|
||||
} blt;
|
||||
|
||||
struct
|
||||
{
|
||||
uint32_t bresError0, bresError1;
|
||||
uint32_t clip0Min, clip0Max;
|
||||
uint32_t clip1Min, clip1Max;
|
||||
uint32_t colorBack, colorFore;
|
||||
uint32_t command, commandExtra;
|
||||
uint32_t dstBaseAddr;
|
||||
uint32_t dstFormat;
|
||||
uint32_t dstSize;
|
||||
uint32_t dstXY;
|
||||
uint32_t lineStipple;
|
||||
uint32_t lineStyle;
|
||||
uint32_t rop;
|
||||
uint32_t srcBaseAddr;
|
||||
uint32_t srcFormat;
|
||||
uint32_t srcSize;
|
||||
uint32_t srcXY;
|
||||
|
||||
uint32_t colorPattern[64];
|
||||
|
||||
int bres_error_0, bres_error_1;
|
||||
uint32_t colorPattern8[64], colorPattern16[64], colorPattern24[64];
|
||||
int cur_x, cur_y;
|
||||
uint32_t dstBaseAddr_tiled;
|
||||
uint32_t dstColorkeyMin, dstColorkeyMax;
|
||||
int dstSizeX, dstSizeY;
|
||||
int dstX, dstY;
|
||||
int dst_stride;
|
||||
int patoff_x, patoff_y;
|
||||
uint8_t rops[4];
|
||||
uint32_t srcBaseAddr_tiled;
|
||||
uint32_t srcColorkeyMin, srcColorkeyMax;
|
||||
int srcSizeX, srcSizeY;
|
||||
int srcX, srcY;
|
||||
int src_stride;
|
||||
int old_srcX;
|
||||
|
||||
/*Used for handling packed 24bpp host data*/
|
||||
int host_data_remainder;
|
||||
uint32_t old_host_data;
|
||||
|
||||
/*Polyfill coordinates*/
|
||||
int lx[2], rx[2];
|
||||
int ly[2], ry[2];
|
||||
|
||||
/*Polyfill state*/
|
||||
int error[2];
|
||||
int dx[2], dy[2];
|
||||
int x_inc[2]; /*y_inc is always 1 for polyfill*/
|
||||
int lx_cur, rx_cur;
|
||||
|
||||
clip_t clip[2];
|
||||
|
||||
uint8_t host_data[16384];
|
||||
int host_data_count;
|
||||
int host_data_size_src, host_data_size_dest;
|
||||
int src_stride_src, src_stride_dest;
|
||||
|
||||
int src_bpp;
|
||||
|
||||
int line_pix_pos, line_bit_pos;
|
||||
int line_rep_cnt, line_bit_mask_size;
|
||||
} banshee_blt;
|
||||
|
||||
struct
|
||||
{
|
||||
uint32_t vidOverlayStartCoords;
|
||||
uint32_t vidOverlayEndScreenCoords;
|
||||
uint32_t vidOverlayDudx, vidOverlayDudxOffsetSrcWidth;
|
||||
uint32_t vidOverlayDvdy, vidOverlayDvdyOffset;
|
||||
// uint32_t vidDesktopOverlayStride;
|
||||
|
||||
int start_x, start_y;
|
||||
int end_x, end_y;
|
||||
int size_x, size_y;
|
||||
int overlay_bytes;
|
||||
|
||||
unsigned int src_y;
|
||||
} overlay;
|
||||
|
||||
rgbvoodoo_t clutData[33];
|
||||
int clutData_dirty;
|
||||
rgbvoodoo_t clutData256[256];
|
||||
uint32_t video_16to32[0x10000];
|
||||
|
||||
uint8_t dirty_line[2048];
|
||||
int dirty_line_low, dirty_line_high;
|
||||
|
||||
int fb_write_buffer, fb_draw_buffer;
|
||||
int buffer_cutoff;
|
||||
|
||||
uint32_t tile_base, tile_stride;
|
||||
int tile_stride_shift, tile_x, tile_x_real;
|
||||
|
||||
int y_origin_swap;
|
||||
|
||||
int read_time, write_time, burst_time;
|
||||
|
||||
pc_timer_t wake_timer;
|
||||
|
||||
/* screen filter tables */
|
||||
uint8_t thefilter[256][256];
|
||||
uint8_t thefilterg[256][256];
|
||||
uint8_t thefilterb[256][256];
|
||||
uint16_t purpleline[256][3];
|
||||
|
||||
texture_t texture_cache[2][TEX_CACHE_MAX];
|
||||
uint8_t texture_present[2][16384];
|
||||
int texture_last_removed;
|
||||
|
||||
uint32_t palette_checksum[2];
|
||||
int palette_dirty[2];
|
||||
|
||||
uint64_t time;
|
||||
int render_time[4];
|
||||
uint64_t time;
|
||||
int render_time[4];
|
||||
|
||||
int force_blit_count;
|
||||
int can_blit;
|
||||
mutex_t* force_blit_mutex;
|
||||
int force_blit_count;
|
||||
int can_blit;
|
||||
mutex_t *force_blit_mutex;
|
||||
|
||||
int use_recompiler;
|
||||
void *codegen_data;
|
||||
int use_recompiler;
|
||||
void *codegen_data;
|
||||
|
||||
struct voodoo_set_t *set;
|
||||
struct voodoo_set_t *set;
|
||||
|
||||
uint8_t fifo_thread_run, render_thread_run[4];
|
||||
uint8_t fifo_thread_run, render_thread_run[4];
|
||||
|
||||
uint8_t *vram, *changedvram;
|
||||
uint8_t *vram, *changedvram;
|
||||
|
||||
void *p;
|
||||
void *p;
|
||||
} voodoo_t;
|
||||
|
||||
typedef struct voodoo_set_t
|
||||
{
|
||||
voodoo_t *voodoos[2];
|
||||
typedef struct voodoo_set_t {
|
||||
voodoo_t *voodoos[2];
|
||||
|
||||
mem_mapping_t snoop_mapping;
|
||||
mem_mapping_t snoop_mapping;
|
||||
|
||||
int nr_cards;
|
||||
int nr_cards;
|
||||
} voodoo_set_t;
|
||||
|
||||
|
||||
extern rgba8_t rgb332[0x100], ai44[0x100], rgb565[0x10000], argb1555[0x10000], argb4444[0x10000], ai88[0x10000];
|
||||
|
||||
|
||||
void voodoo_generate_vb_filters(voodoo_t *voodoo, int fcr, int fcg);
|
||||
|
||||
void voodoo_recalc(voodoo_t *voodoo);
|
||||
void voodoo_update_ncc(voodoo_t *voodoo, int tmu);
|
||||
|
||||
void *voodoo_2d3d_card_init(int type);
|
||||
void voodoo_card_close(voodoo_t *voodoo);
|
||||
void voodoo_card_close(voodoo_t *voodoo);
|
||||
|
||||
#endif /*VIDEO_VOODOO_COMMON_H*/
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
*/
|
||||
|
||||
#ifndef VIDEO_VOODOO_DISPLAY_H
|
||||
# define VIDEO_VOODOO_DISPLAY_H
|
||||
#define VIDEO_VOODOO_DISPLAY_H
|
||||
|
||||
void voodoo_update_ncc(voodoo_t *voodoo, int tmu);
|
||||
void voodoo_pixelclock_update(voodoo_t *voodoo);
|
||||
|
||||
@@ -17,11 +17,11 @@
|
||||
*/
|
||||
|
||||
#ifndef VIDEO_VOODOO_FB_H
|
||||
# define VIDEO_VOODOO_FB_H
|
||||
#define VIDEO_VOODOO_FB_H
|
||||
|
||||
uint16_t voodoo_fb_readw(uint32_t addr, void *p);
|
||||
uint32_t voodoo_fb_readl(uint32_t addr, void *p);
|
||||
void voodoo_fb_writew(uint32_t addr, uint16_t val, void *p);
|
||||
void voodoo_fb_writel(uint32_t addr, uint32_t val, void *p);
|
||||
void voodoo_fb_writew(uint32_t addr, uint16_t val, void *p);
|
||||
void voodoo_fb_writel(uint32_t addr, uint32_t val, void *p);
|
||||
|
||||
#endif /*VIDEO_VOODOO_FB_H*/
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
*/
|
||||
|
||||
#ifndef VIDEO_VOODOO_FIFO_H
|
||||
# define VIDEO_VOODOO_FIFO_H
|
||||
#define VIDEO_VOODOO_FIFO_H
|
||||
|
||||
void voodoo_wake_fifo_thread(voodoo_t *voodoo);
|
||||
void voodoo_wake_fifo_thread_now(voodoo_t *voodoo);
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
*/
|
||||
|
||||
#ifndef VIDEO_VOODOO_REG_H
|
||||
# define VIDEO_VOODOO_REG_H
|
||||
#define VIDEO_VOODOO_REG_H
|
||||
|
||||
void voodoo_reg_writel(uint32_t addr, uint32_t val, void *p);
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,8 +1,8 @@
|
||||
#ifndef VIDEO_VOODOO_RENDER_H
|
||||
# define VIDEO_VOODOO_RENDER_H
|
||||
#define VIDEO_VOODOO_RENDER_H
|
||||
|
||||
#if !(defined i386 || defined __i386 || defined __i386__ || defined _X86_ || defined _M_IX86 || defined __amd64__ || defined _M_X64)
|
||||
#define NO_CODEGEN
|
||||
# define NO_CODEGEN
|
||||
#endif
|
||||
|
||||
#ifndef NO_CODEGEN
|
||||
@@ -10,295 +10,263 @@ void voodoo_codegen_init(voodoo_t *voodoo);
|
||||
void voodoo_codegen_close(voodoo_t *voodoo);
|
||||
#endif
|
||||
|
||||
#define DEPTH_TEST(comp_depth) \
|
||||
do \
|
||||
{ \
|
||||
switch (depth_op) \
|
||||
{ \
|
||||
case DEPTHOP_NEVER: \
|
||||
voodoo->fbiZFuncFail++; \
|
||||
goto skip_pixel; \
|
||||
case DEPTHOP_LESSTHAN: \
|
||||
if (!(comp_depth < old_depth)) \
|
||||
{ \
|
||||
voodoo->fbiZFuncFail++; \
|
||||
goto skip_pixel; \
|
||||
} \
|
||||
break; \
|
||||
case DEPTHOP_EQUAL: \
|
||||
if (!(comp_depth == old_depth)) \
|
||||
{ \
|
||||
voodoo->fbiZFuncFail++; \
|
||||
goto skip_pixel; \
|
||||
} \
|
||||
break; \
|
||||
case DEPTHOP_LESSTHANEQUAL: \
|
||||
if (!(comp_depth <= old_depth)) \
|
||||
{ \
|
||||
voodoo->fbiZFuncFail++; \
|
||||
goto skip_pixel; \
|
||||
} \
|
||||
break; \
|
||||
case DEPTHOP_GREATERTHAN: \
|
||||
if (!(comp_depth > old_depth)) \
|
||||
{ \
|
||||
voodoo->fbiZFuncFail++; \
|
||||
goto skip_pixel; \
|
||||
} \
|
||||
break; \
|
||||
case DEPTHOP_NOTEQUAL: \
|
||||
if (!(comp_depth != old_depth)) \
|
||||
{ \
|
||||
voodoo->fbiZFuncFail++; \
|
||||
goto skip_pixel; \
|
||||
} \
|
||||
break; \
|
||||
case DEPTHOP_GREATERTHANEQUAL: \
|
||||
if (!(comp_depth >= old_depth)) \
|
||||
{ \
|
||||
voodoo->fbiZFuncFail++; \
|
||||
goto skip_pixel; \
|
||||
} \
|
||||
break; \
|
||||
case DEPTHOP_ALWAYS: \
|
||||
break; \
|
||||
} \
|
||||
} while (0)
|
||||
#define DEPTH_TEST(comp_depth) \
|
||||
do { \
|
||||
switch (depth_op) { \
|
||||
case DEPTHOP_NEVER: \
|
||||
voodoo->fbiZFuncFail++; \
|
||||
goto skip_pixel; \
|
||||
case DEPTHOP_LESSTHAN: \
|
||||
if (!(comp_depth < old_depth)) { \
|
||||
voodoo->fbiZFuncFail++; \
|
||||
goto skip_pixel; \
|
||||
} \
|
||||
break; \
|
||||
case DEPTHOP_EQUAL: \
|
||||
if (!(comp_depth == old_depth)) { \
|
||||
voodoo->fbiZFuncFail++; \
|
||||
goto skip_pixel; \
|
||||
} \
|
||||
break; \
|
||||
case DEPTHOP_LESSTHANEQUAL: \
|
||||
if (!(comp_depth <= old_depth)) { \
|
||||
voodoo->fbiZFuncFail++; \
|
||||
goto skip_pixel; \
|
||||
} \
|
||||
break; \
|
||||
case DEPTHOP_GREATERTHAN: \
|
||||
if (!(comp_depth > old_depth)) { \
|
||||
voodoo->fbiZFuncFail++; \
|
||||
goto skip_pixel; \
|
||||
} \
|
||||
break; \
|
||||
case DEPTHOP_NOTEQUAL: \
|
||||
if (!(comp_depth != old_depth)) { \
|
||||
voodoo->fbiZFuncFail++; \
|
||||
goto skip_pixel; \
|
||||
} \
|
||||
break; \
|
||||
case DEPTHOP_GREATERTHANEQUAL: \
|
||||
if (!(comp_depth >= old_depth)) { \
|
||||
voodoo->fbiZFuncFail++; \
|
||||
goto skip_pixel; \
|
||||
} \
|
||||
break; \
|
||||
case DEPTHOP_ALWAYS: \
|
||||
break; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define APPLY_FOG(src_r, src_g, src_b, z, ia, w) \
|
||||
do \
|
||||
{ \
|
||||
if (params->fogMode & FOG_CONSTANT) \
|
||||
{ \
|
||||
src_r += params->fogColor.r; \
|
||||
src_g += params->fogColor.g; \
|
||||
src_b += params->fogColor.b; \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
int fog_r, fog_g, fog_b, fog_a = 0; \
|
||||
int fog_idx; \
|
||||
\
|
||||
if (!(params->fogMode & FOG_ADD)) \
|
||||
{ \
|
||||
fog_r = params->fogColor.r; \
|
||||
fog_g = params->fogColor.g; \
|
||||
fog_b = params->fogColor.b; \
|
||||
} \
|
||||
else \
|
||||
fog_r = fog_g = fog_b = 0; \
|
||||
\
|
||||
if (!(params->fogMode & FOG_MULT)) \
|
||||
{ \
|
||||
fog_r -= src_r; \
|
||||
fog_g -= src_g; \
|
||||
fog_b -= src_b; \
|
||||
} \
|
||||
\
|
||||
switch (params->fogMode & (FOG_Z|FOG_ALPHA)) \
|
||||
{ \
|
||||
case 0: \
|
||||
fog_idx = (w_depth >> 10) & 0x3f; \
|
||||
\
|
||||
fog_a = params->fogTable[fog_idx].fog; \
|
||||
fog_a += (params->fogTable[fog_idx].dfog * ((w_depth >> 2) & 0xff)) >> 10; \
|
||||
break; \
|
||||
case FOG_Z: \
|
||||
fog_a = (z >> 20) & 0xff; \
|
||||
break; \
|
||||
case FOG_ALPHA: \
|
||||
fog_a = CLAMP(ia >> 12); \
|
||||
break; \
|
||||
case FOG_W: \
|
||||
fog_a = CLAMP((w >> 32) & 0xff); \
|
||||
break; \
|
||||
} \
|
||||
fog_a++; \
|
||||
\
|
||||
fog_r = (fog_r * fog_a) >> 8; \
|
||||
fog_g = (fog_g * fog_a) >> 8; \
|
||||
fog_b = (fog_b * fog_a) >> 8; \
|
||||
\
|
||||
if (params->fogMode & FOG_MULT) \
|
||||
{ \
|
||||
src_r = fog_r; \
|
||||
src_g = fog_g; \
|
||||
src_b = fog_b; \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
src_r += fog_r; \
|
||||
src_g += fog_g; \
|
||||
src_b += fog_b; \
|
||||
} \
|
||||
} \
|
||||
\
|
||||
src_r = CLAMP(src_r); \
|
||||
src_g = CLAMP(src_g); \
|
||||
src_b = CLAMP(src_b); \
|
||||
} while (0)
|
||||
|
||||
#define ALPHA_TEST(src_a) \
|
||||
do \
|
||||
{ \
|
||||
switch (alpha_func) \
|
||||
{ \
|
||||
case AFUNC_NEVER: \
|
||||
voodoo->fbiAFuncFail++; \
|
||||
goto skip_pixel; \
|
||||
case AFUNC_LESSTHAN: \
|
||||
if (!(src_a < a_ref)) \
|
||||
{ \
|
||||
voodoo->fbiAFuncFail++; \
|
||||
goto skip_pixel; \
|
||||
} \
|
||||
break; \
|
||||
case AFUNC_EQUAL: \
|
||||
if (!(src_a == a_ref)) \
|
||||
{ \
|
||||
voodoo->fbiAFuncFail++; \
|
||||
goto skip_pixel; \
|
||||
} \
|
||||
break; \
|
||||
case AFUNC_LESSTHANEQUAL: \
|
||||
if (!(src_a <= a_ref)) \
|
||||
{ \
|
||||
voodoo->fbiAFuncFail++; \
|
||||
goto skip_pixel; \
|
||||
} \
|
||||
break; \
|
||||
case AFUNC_GREATERTHAN: \
|
||||
if (!(src_a > a_ref)) \
|
||||
{ \
|
||||
voodoo->fbiAFuncFail++; \
|
||||
goto skip_pixel; \
|
||||
} \
|
||||
break; \
|
||||
case AFUNC_NOTEQUAL: \
|
||||
if (!(src_a != a_ref)) \
|
||||
{ \
|
||||
voodoo->fbiAFuncFail++; \
|
||||
goto skip_pixel; \
|
||||
} \
|
||||
break; \
|
||||
case AFUNC_GREATERTHANEQUAL: \
|
||||
if (!(src_a >= a_ref)) \
|
||||
{ \
|
||||
voodoo->fbiAFuncFail++; \
|
||||
goto skip_pixel; \
|
||||
} \
|
||||
break; \
|
||||
case AFUNC_ALWAYS: \
|
||||
break; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define ALPHA_BLEND(src_r, src_g, src_b, src_a) \
|
||||
do \
|
||||
{ \
|
||||
int _a; \
|
||||
int newdest_r = 0, newdest_g = 0, newdest_b = 0; \
|
||||
\
|
||||
switch (dest_afunc) \
|
||||
{ \
|
||||
case AFUNC_AZERO: \
|
||||
newdest_r = newdest_g = newdest_b = 0; \
|
||||
break; \
|
||||
case AFUNC_ASRC_ALPHA: \
|
||||
newdest_r = (dest_r * src_a) / 255; \
|
||||
newdest_g = (dest_g * src_a) / 255; \
|
||||
newdest_b = (dest_b * src_a) / 255; \
|
||||
break; \
|
||||
case AFUNC_A_COLOR: \
|
||||
newdest_r = (dest_r * src_r) / 255; \
|
||||
newdest_g = (dest_g * src_g) / 255; \
|
||||
newdest_b = (dest_b * src_b) / 255; \
|
||||
break; \
|
||||
case AFUNC_ADST_ALPHA: \
|
||||
newdest_r = (dest_r * dest_a) / 255; \
|
||||
newdest_g = (dest_g * dest_a) / 255; \
|
||||
newdest_b = (dest_b * dest_a) / 255; \
|
||||
break; \
|
||||
case AFUNC_AONE: \
|
||||
newdest_r = dest_r; \
|
||||
newdest_g = dest_g; \
|
||||
newdest_b = dest_b; \
|
||||
break; \
|
||||
case AFUNC_AOMSRC_ALPHA: \
|
||||
newdest_r = (dest_r * (255-src_a)) / 255; \
|
||||
newdest_g = (dest_g * (255-src_a)) / 255; \
|
||||
newdest_b = (dest_b * (255-src_a)) / 255; \
|
||||
break; \
|
||||
case AFUNC_AOM_COLOR: \
|
||||
newdest_r = (dest_r * (255-src_r)) / 255; \
|
||||
newdest_g = (dest_g * (255-src_g)) / 255; \
|
||||
newdest_b = (dest_b * (255-src_b)) / 255; \
|
||||
break; \
|
||||
case AFUNC_AOMDST_ALPHA: \
|
||||
newdest_r = (dest_r * (255-dest_a)) / 255; \
|
||||
newdest_g = (dest_g * (255-dest_a)) / 255; \
|
||||
newdest_b = (dest_b * (255-dest_a)) / 255; \
|
||||
break; \
|
||||
case AFUNC_ASATURATE: \
|
||||
_a = MIN(src_a, 1-dest_a); \
|
||||
newdest_r = (dest_r * _a) / 255; \
|
||||
newdest_g = (dest_g * _a) / 255; \
|
||||
newdest_b = (dest_b * _a) / 255; \
|
||||
break; \
|
||||
} \
|
||||
\
|
||||
switch (src_afunc) \
|
||||
{ \
|
||||
case AFUNC_AZERO: \
|
||||
src_r = src_g = src_b = 0; \
|
||||
break; \
|
||||
case AFUNC_ASRC_ALPHA: \
|
||||
src_r = (src_r * src_a) / 255; \
|
||||
src_g = (src_g * src_a) / 255; \
|
||||
src_b = (src_b * src_a) / 255; \
|
||||
break; \
|
||||
case AFUNC_A_COLOR: \
|
||||
src_r = (src_r * dest_r) / 255; \
|
||||
src_g = (src_g * dest_g) / 255; \
|
||||
src_b = (src_b * dest_b) / 255; \
|
||||
break; \
|
||||
case AFUNC_ADST_ALPHA: \
|
||||
src_r = (src_r * dest_a) / 255; \
|
||||
src_g = (src_g * dest_a) / 255; \
|
||||
src_b = (src_b * dest_a) / 255; \
|
||||
break; \
|
||||
case AFUNC_AONE: \
|
||||
break; \
|
||||
case AFUNC_AOMSRC_ALPHA: \
|
||||
src_r = (src_r * (255-src_a)) / 255; \
|
||||
src_g = (src_g * (255-src_a)) / 255; \
|
||||
src_b = (src_b * (255-src_a)) / 255; \
|
||||
break; \
|
||||
case AFUNC_AOM_COLOR: \
|
||||
src_r = (src_r * (255-dest_r)) / 255; \
|
||||
src_g = (src_g * (255-dest_g)) / 255; \
|
||||
src_b = (src_b * (255-dest_b)) / 255; \
|
||||
break; \
|
||||
case AFUNC_AOMDST_ALPHA: \
|
||||
src_r = (src_r * (255-dest_a)) / 255; \
|
||||
src_g = (src_g * (255-dest_a)) / 255; \
|
||||
src_b = (src_b * (255-dest_a)) / 255; \
|
||||
break; \
|
||||
case AFUNC_ACOLORBEFOREFOG: \
|
||||
fatal("AFUNC_ACOLORBEFOREFOG\n"); \
|
||||
break; \
|
||||
} \
|
||||
\
|
||||
src_r += newdest_r; \
|
||||
src_g += newdest_g; \
|
||||
src_b += newdest_b; \
|
||||
\
|
||||
src_r = CLAMP(src_r); \
|
||||
src_g = CLAMP(src_g); \
|
||||
src_b = CLAMP(src_b); \
|
||||
} while(0)
|
||||
#define APPLY_FOG(src_r, src_g, src_b, z, ia, w) \
|
||||
do { \
|
||||
if (params->fogMode & FOG_CONSTANT) { \
|
||||
src_r += params->fogColor.r; \
|
||||
src_g += params->fogColor.g; \
|
||||
src_b += params->fogColor.b; \
|
||||
} else { \
|
||||
int fog_r, fog_g, fog_b, fog_a = 0; \
|
||||
int fog_idx; \
|
||||
\
|
||||
if (!(params->fogMode & FOG_ADD)) { \
|
||||
fog_r = params->fogColor.r; \
|
||||
fog_g = params->fogColor.g; \
|
||||
fog_b = params->fogColor.b; \
|
||||
} else \
|
||||
fog_r = fog_g = fog_b = 0; \
|
||||
\
|
||||
if (!(params->fogMode & FOG_MULT)) { \
|
||||
fog_r -= src_r; \
|
||||
fog_g -= src_g; \
|
||||
fog_b -= src_b; \
|
||||
} \
|
||||
\
|
||||
switch (params->fogMode & (FOG_Z | FOG_ALPHA)) { \
|
||||
case 0: \
|
||||
fog_idx = (w_depth >> 10) & 0x3f; \
|
||||
\
|
||||
fog_a = params->fogTable[fog_idx].fog; \
|
||||
fog_a += (params->fogTable[fog_idx].dfog * ((w_depth >> 2) & 0xff)) >> 10; \
|
||||
break; \
|
||||
case FOG_Z: \
|
||||
fog_a = (z >> 20) & 0xff; \
|
||||
break; \
|
||||
case FOG_ALPHA: \
|
||||
fog_a = CLAMP(ia >> 12); \
|
||||
break; \
|
||||
case FOG_W: \
|
||||
fog_a = CLAMP((w >> 32) & 0xff); \
|
||||
break; \
|
||||
} \
|
||||
fog_a++; \
|
||||
\
|
||||
fog_r = (fog_r * fog_a) >> 8; \
|
||||
fog_g = (fog_g * fog_a) >> 8; \
|
||||
fog_b = (fog_b * fog_a) >> 8; \
|
||||
\
|
||||
if (params->fogMode & FOG_MULT) { \
|
||||
src_r = fog_r; \
|
||||
src_g = fog_g; \
|
||||
src_b = fog_b; \
|
||||
} else { \
|
||||
src_r += fog_r; \
|
||||
src_g += fog_g; \
|
||||
src_b += fog_b; \
|
||||
} \
|
||||
} \
|
||||
\
|
||||
src_r = CLAMP(src_r); \
|
||||
src_g = CLAMP(src_g); \
|
||||
src_b = CLAMP(src_b); \
|
||||
} while (0)
|
||||
|
||||
#define ALPHA_TEST(src_a) \
|
||||
do { \
|
||||
switch (alpha_func) { \
|
||||
case AFUNC_NEVER: \
|
||||
voodoo->fbiAFuncFail++; \
|
||||
goto skip_pixel; \
|
||||
case AFUNC_LESSTHAN: \
|
||||
if (!(src_a < a_ref)) { \
|
||||
voodoo->fbiAFuncFail++; \
|
||||
goto skip_pixel; \
|
||||
} \
|
||||
break; \
|
||||
case AFUNC_EQUAL: \
|
||||
if (!(src_a == a_ref)) { \
|
||||
voodoo->fbiAFuncFail++; \
|
||||
goto skip_pixel; \
|
||||
} \
|
||||
break; \
|
||||
case AFUNC_LESSTHANEQUAL: \
|
||||
if (!(src_a <= a_ref)) { \
|
||||
voodoo->fbiAFuncFail++; \
|
||||
goto skip_pixel; \
|
||||
} \
|
||||
break; \
|
||||
case AFUNC_GREATERTHAN: \
|
||||
if (!(src_a > a_ref)) { \
|
||||
voodoo->fbiAFuncFail++; \
|
||||
goto skip_pixel; \
|
||||
} \
|
||||
break; \
|
||||
case AFUNC_NOTEQUAL: \
|
||||
if (!(src_a != a_ref)) { \
|
||||
voodoo->fbiAFuncFail++; \
|
||||
goto skip_pixel; \
|
||||
} \
|
||||
break; \
|
||||
case AFUNC_GREATERTHANEQUAL: \
|
||||
if (!(src_a >= a_ref)) { \
|
||||
voodoo->fbiAFuncFail++; \
|
||||
goto skip_pixel; \
|
||||
} \
|
||||
break; \
|
||||
case AFUNC_ALWAYS: \
|
||||
break; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define ALPHA_BLEND(src_r, src_g, src_b, src_a) \
|
||||
do { \
|
||||
int _a; \
|
||||
int newdest_r = 0, newdest_g = 0, newdest_b = 0; \
|
||||
\
|
||||
switch (dest_afunc) { \
|
||||
case AFUNC_AZERO: \
|
||||
newdest_r = newdest_g = newdest_b = 0; \
|
||||
break; \
|
||||
case AFUNC_ASRC_ALPHA: \
|
||||
newdest_r = (dest_r * src_a) / 255; \
|
||||
newdest_g = (dest_g * src_a) / 255; \
|
||||
newdest_b = (dest_b * src_a) / 255; \
|
||||
break; \
|
||||
case AFUNC_A_COLOR: \
|
||||
newdest_r = (dest_r * src_r) / 255; \
|
||||
newdest_g = (dest_g * src_g) / 255; \
|
||||
newdest_b = (dest_b * src_b) / 255; \
|
||||
break; \
|
||||
case AFUNC_ADST_ALPHA: \
|
||||
newdest_r = (dest_r * dest_a) / 255; \
|
||||
newdest_g = (dest_g * dest_a) / 255; \
|
||||
newdest_b = (dest_b * dest_a) / 255; \
|
||||
break; \
|
||||
case AFUNC_AONE: \
|
||||
newdest_r = dest_r; \
|
||||
newdest_g = dest_g; \
|
||||
newdest_b = dest_b; \
|
||||
break; \
|
||||
case AFUNC_AOMSRC_ALPHA: \
|
||||
newdest_r = (dest_r * (255 - src_a)) / 255; \
|
||||
newdest_g = (dest_g * (255 - src_a)) / 255; \
|
||||
newdest_b = (dest_b * (255 - src_a)) / 255; \
|
||||
break; \
|
||||
case AFUNC_AOM_COLOR: \
|
||||
newdest_r = (dest_r * (255 - src_r)) / 255; \
|
||||
newdest_g = (dest_g * (255 - src_g)) / 255; \
|
||||
newdest_b = (dest_b * (255 - src_b)) / 255; \
|
||||
break; \
|
||||
case AFUNC_AOMDST_ALPHA: \
|
||||
newdest_r = (dest_r * (255 - dest_a)) / 255; \
|
||||
newdest_g = (dest_g * (255 - dest_a)) / 255; \
|
||||
newdest_b = (dest_b * (255 - dest_a)) / 255; \
|
||||
break; \
|
||||
case AFUNC_ASATURATE: \
|
||||
_a = MIN(src_a, 1 - dest_a); \
|
||||
newdest_r = (dest_r * _a) / 255; \
|
||||
newdest_g = (dest_g * _a) / 255; \
|
||||
newdest_b = (dest_b * _a) / 255; \
|
||||
break; \
|
||||
} \
|
||||
\
|
||||
switch (src_afunc) { \
|
||||
case AFUNC_AZERO: \
|
||||
src_r = src_g = src_b = 0; \
|
||||
break; \
|
||||
case AFUNC_ASRC_ALPHA: \
|
||||
src_r = (src_r * src_a) / 255; \
|
||||
src_g = (src_g * src_a) / 255; \
|
||||
src_b = (src_b * src_a) / 255; \
|
||||
break; \
|
||||
case AFUNC_A_COLOR: \
|
||||
src_r = (src_r * dest_r) / 255; \
|
||||
src_g = (src_g * dest_g) / 255; \
|
||||
src_b = (src_b * dest_b) / 255; \
|
||||
break; \
|
||||
case AFUNC_ADST_ALPHA: \
|
||||
src_r = (src_r * dest_a) / 255; \
|
||||
src_g = (src_g * dest_a) / 255; \
|
||||
src_b = (src_b * dest_a) / 255; \
|
||||
break; \
|
||||
case AFUNC_AONE: \
|
||||
break; \
|
||||
case AFUNC_AOMSRC_ALPHA: \
|
||||
src_r = (src_r * (255 - src_a)) / 255; \
|
||||
src_g = (src_g * (255 - src_a)) / 255; \
|
||||
src_b = (src_b * (255 - src_a)) / 255; \
|
||||
break; \
|
||||
case AFUNC_AOM_COLOR: \
|
||||
src_r = (src_r * (255 - dest_r)) / 255; \
|
||||
src_g = (src_g * (255 - dest_g)) / 255; \
|
||||
src_b = (src_b * (255 - dest_b)) / 255; \
|
||||
break; \
|
||||
case AFUNC_AOMDST_ALPHA: \
|
||||
src_r = (src_r * (255 - dest_a)) / 255; \
|
||||
src_g = (src_g * (255 - dest_a)) / 255; \
|
||||
src_b = (src_b * (255 - dest_a)) / 255; \
|
||||
break; \
|
||||
case AFUNC_ACOLORBEFOREFOG: \
|
||||
fatal("AFUNC_ACOLORBEFOREFOG\n"); \
|
||||
break; \
|
||||
} \
|
||||
\
|
||||
src_r += newdest_r; \
|
||||
src_g += newdest_g; \
|
||||
src_b += newdest_b; \
|
||||
\
|
||||
src_r = CLAMP(src_r); \
|
||||
src_g = CLAMP(src_g); \
|
||||
src_b = CLAMP(src_b); \
|
||||
} while (0)
|
||||
|
||||
void voodoo_render_thread_1(void *param);
|
||||
void voodoo_render_thread_2(void *param);
|
||||
@@ -309,35 +277,32 @@ void voodoo_queue_triangle(voodoo_t *voodoo, voodoo_params_t *params);
|
||||
extern int voodoo_recomp;
|
||||
extern int tris;
|
||||
|
||||
static __inline void voodoo_wake_render_thread(voodoo_t *voodoo)
|
||||
static __inline void
|
||||
voodoo_wake_render_thread(voodoo_t *voodoo)
|
||||
{
|
||||
thread_set_event(voodoo->wake_render_thread[0]); /*Wake up render thread if moving from idle*/
|
||||
if (voodoo->render_threads >= 2)
|
||||
thread_set_event(voodoo->wake_render_thread[1]); /*Wake up render thread if moving from idle*/
|
||||
if (voodoo->render_threads == 4)
|
||||
{
|
||||
thread_set_event(voodoo->wake_render_thread[2]); /*Wake up render thread if moving from idle*/
|
||||
thread_set_event(voodoo->wake_render_thread[3]); /*Wake up render thread if moving from idle*/
|
||||
}
|
||||
thread_set_event(voodoo->wake_render_thread[0]); /*Wake up render thread if moving from idle*/
|
||||
if (voodoo->render_threads >= 2)
|
||||
thread_set_event(voodoo->wake_render_thread[1]); /*Wake up render thread if moving from idle*/
|
||||
if (voodoo->render_threads == 4) {
|
||||
thread_set_event(voodoo->wake_render_thread[2]); /*Wake up render thread if moving from idle*/
|
||||
thread_set_event(voodoo->wake_render_thread[3]); /*Wake up render thread if moving from idle*/
|
||||
}
|
||||
}
|
||||
|
||||
static __inline void voodoo_wait_for_render_thread_idle(voodoo_t *voodoo)
|
||||
static __inline void
|
||||
voodoo_wait_for_render_thread_idle(voodoo_t *voodoo)
|
||||
{
|
||||
while (!PARAM_EMPTY(0) || (voodoo->render_threads >= 2 && !PARAM_EMPTY(1)) ||
|
||||
(voodoo->render_threads == 4 && (!PARAM_EMPTY(2) || !PARAM_EMPTY(3))) ||
|
||||
voodoo->render_voodoo_busy[0] || (voodoo->render_threads >= 2 && voodoo->render_voodoo_busy[1]) ||
|
||||
(voodoo->render_threads == 4 && (voodoo->render_voodoo_busy[2] || voodoo->render_voodoo_busy[3])))
|
||||
{
|
||||
voodoo_wake_render_thread(voodoo);
|
||||
if (!PARAM_EMPTY(0) || voodoo->render_voodoo_busy[0])
|
||||
thread_wait_event(voodoo->render_not_full_event[0], 1);
|
||||
if (voodoo->render_threads >= 2 && (!PARAM_EMPTY(1) || voodoo->render_voodoo_busy[1]))
|
||||
thread_wait_event(voodoo->render_not_full_event[1], 1);
|
||||
if (voodoo->render_threads == 4 && (!PARAM_EMPTY(2) || voodoo->render_voodoo_busy[2]))
|
||||
thread_wait_event(voodoo->render_not_full_event[2], 1);
|
||||
if (voodoo->render_threads == 4 && (!PARAM_EMPTY(3) || voodoo->render_voodoo_busy[3]))
|
||||
thread_wait_event(voodoo->render_not_full_event[3], 1);
|
||||
}
|
||||
while (!PARAM_EMPTY(0) || (voodoo->render_threads >= 2 && !PARAM_EMPTY(1)) || (voodoo->render_threads == 4 && (!PARAM_EMPTY(2) || !PARAM_EMPTY(3))) || voodoo->render_voodoo_busy[0] || (voodoo->render_threads >= 2 && voodoo->render_voodoo_busy[1]) || (voodoo->render_threads == 4 && (voodoo->render_voodoo_busy[2] || voodoo->render_voodoo_busy[3]))) {
|
||||
voodoo_wake_render_thread(voodoo);
|
||||
if (!PARAM_EMPTY(0) || voodoo->render_voodoo_busy[0])
|
||||
thread_wait_event(voodoo->render_not_full_event[0], 1);
|
||||
if (voodoo->render_threads >= 2 && (!PARAM_EMPTY(1) || voodoo->render_voodoo_busy[1]))
|
||||
thread_wait_event(voodoo->render_not_full_event[1], 1);
|
||||
if (voodoo->render_threads == 4 && (!PARAM_EMPTY(2) || voodoo->render_voodoo_busy[2]))
|
||||
thread_wait_event(voodoo->render_not_full_event[2], 1);
|
||||
if (voodoo->render_threads == 4 && (!PARAM_EMPTY(3) || voodoo->render_voodoo_busy[3]))
|
||||
thread_wait_event(voodoo->render_not_full_event[3], 1);
|
||||
}
|
||||
}
|
||||
|
||||
#endif /*VIDEO_VOODOO_RENDER_H*/
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
*/
|
||||
|
||||
#ifndef VIDEO_VOODOO_SETUP_H
|
||||
# define VIDEO_VOODOO_SETUP_H
|
||||
#define VIDEO_VOODOO_SETUP_H
|
||||
|
||||
void voodoo_triangle_setup(voodoo_t *voodoo);
|
||||
|
||||
|
||||
@@ -17,21 +17,20 @@
|
||||
*/
|
||||
|
||||
#ifndef VIDEO_VOODOO_TEXTURE_H
|
||||
# define VIDEO_VOODOO_TEXTURE_H
|
||||
#define VIDEO_VOODOO_TEXTURE_H
|
||||
|
||||
static const uint32_t texture_offset[LOD_MAX+3] =
|
||||
{
|
||||
0,
|
||||
256*256,
|
||||
256*256 + 128*128,
|
||||
256*256 + 128*128 + 64*64,
|
||||
256*256 + 128*128 + 64*64 + 32*32,
|
||||
256*256 + 128*128 + 64*64 + 32*32 + 16*16,
|
||||
256*256 + 128*128 + 64*64 + 32*32 + 16*16 + 8*8,
|
||||
256*256 + 128*128 + 64*64 + 32*32 + 16*16 + 8*8 + 4*4,
|
||||
256*256 + 128*128 + 64*64 + 32*32 + 16*16 + 8*8 + 4*4 + 2*2,
|
||||
256*256 + 128*128 + 64*64 + 32*32 + 16*16 + 8*8 + 4*4 + 2*2 + 1*1,
|
||||
256*256 + 128*128 + 64*64 + 32*32 + 16*16 + 8*8 + 4*4 + 2*2 + 1*1 + 1
|
||||
static const uint32_t texture_offset[LOD_MAX + 3] = {
|
||||
0,
|
||||
256 * 256,
|
||||
256 * 256 + 128 * 128,
|
||||
256 * 256 + 128 * 128 + 64 * 64,
|
||||
256 * 256 + 128 * 128 + 64 * 64 + 32 * 32,
|
||||
256 * 256 + 128 * 128 + 64 * 64 + 32 * 32 + 16 * 16,
|
||||
256 * 256 + 128 * 128 + 64 * 64 + 32 * 32 + 16 * 16 + 8 * 8,
|
||||
256 * 256 + 128 * 128 + 64 * 64 + 32 * 32 + 16 * 16 + 8 * 8 + 4 * 4,
|
||||
256 * 256 + 128 * 128 + 64 * 64 + 32 * 32 + 16 * 16 + 8 * 8 + 4 * 4 + 2 * 2,
|
||||
256 * 256 + 128 * 128 + 64 * 64 + 32 * 32 + 16 * 16 + 8 * 8 + 4 * 4 + 2 * 2 + 1 * 1,
|
||||
256 * 256 + 128 * 128 + 64 * 64 + 32 * 32 + 16 * 16 + 8 * 8 + 4 * 4 + 2 * 2 + 1 * 1 + 1
|
||||
};
|
||||
|
||||
void voodoo_recalc_tex(voodoo_t *voodoo, int tmu);
|
||||
|
||||
@@ -16,55 +16,55 @@
|
||||
*/
|
||||
|
||||
#ifndef VIDEO_XGA_H
|
||||
# define VIDEO_XGA_H
|
||||
#define VIDEO_XGA_H
|
||||
|
||||
#include <86box/rom.h>
|
||||
|
||||
typedef struct {
|
||||
int ena;
|
||||
int x, y, xoff, yoff, cur_xsize, cur_ysize;
|
||||
int ena;
|
||||
int x, y, xoff, yoff, cur_xsize, cur_ysize;
|
||||
uint32_t addr;
|
||||
} xga_hwcursor_t;
|
||||
|
||||
typedef struct xga_t
|
||||
{
|
||||
mem_mapping_t memio_mapping;
|
||||
mem_mapping_t linear_mapping;
|
||||
mem_mapping_t video_mapping;
|
||||
rom_t bios_rom;
|
||||
xga_hwcursor_t hwcursor, hwcursor_latch;
|
||||
PALETTE extpal;
|
||||
typedef struct xga_t {
|
||||
mem_mapping_t memio_mapping;
|
||||
mem_mapping_t linear_mapping;
|
||||
mem_mapping_t video_mapping;
|
||||
rom_t bios_rom;
|
||||
xga_hwcursor_t hwcursor, hwcursor_latch;
|
||||
PALETTE extpal;
|
||||
|
||||
uint8_t test, atest[2], testpixel;;
|
||||
uint8_t pos_regs[8];
|
||||
uint8_t disp_addr;
|
||||
uint8_t cfg_reg;
|
||||
uint8_t instance;
|
||||
uint8_t op_mode;
|
||||
uint8_t aperture_cntl;
|
||||
uint8_t ap_idx;
|
||||
uint8_t access_mode;
|
||||
uint8_t regs[0x100];
|
||||
uint8_t regs_idx;
|
||||
uint8_t hwc_hotspot_x;
|
||||
uint8_t hwc_hotspot_y;
|
||||
uint8_t disp_cntl_1, disp_cntl_2;
|
||||
uint8_t clk_sel_1, clk_sel_2;
|
||||
uint8_t hwc_control;
|
||||
uint8_t bus_arb;
|
||||
uint8_t select_pos_isa;
|
||||
uint8_t hwcursor_oddeven;
|
||||
uint8_t cfg_reg_instance;
|
||||
uint8_t rowcount;
|
||||
uint8_t pal_idx, pal_idx_prefetch;
|
||||
uint8_t pal_seq;
|
||||
uint8_t pal_mask;
|
||||
uint8_t pal_r, pal_r_prefetch;
|
||||
uint8_t pal_g, pal_g_prefetch;
|
||||
uint8_t pal_b, pal_b_prefetch;
|
||||
uint8_t sprite_data[1024];
|
||||
uint8_t scrollcache;
|
||||
uint8_t direct_color;
|
||||
uint8_t test, atest[2], testpixel;
|
||||
;
|
||||
uint8_t pos_regs[8];
|
||||
uint8_t disp_addr;
|
||||
uint8_t cfg_reg;
|
||||
uint8_t instance;
|
||||
uint8_t op_mode;
|
||||
uint8_t aperture_cntl;
|
||||
uint8_t ap_idx;
|
||||
uint8_t access_mode;
|
||||
uint8_t regs[0x100];
|
||||
uint8_t regs_idx;
|
||||
uint8_t hwc_hotspot_x;
|
||||
uint8_t hwc_hotspot_y;
|
||||
uint8_t disp_cntl_1, disp_cntl_2;
|
||||
uint8_t clk_sel_1, clk_sel_2;
|
||||
uint8_t hwc_control;
|
||||
uint8_t bus_arb;
|
||||
uint8_t select_pos_isa;
|
||||
uint8_t hwcursor_oddeven;
|
||||
uint8_t cfg_reg_instance;
|
||||
uint8_t rowcount;
|
||||
uint8_t pal_idx, pal_idx_prefetch;
|
||||
uint8_t pal_seq;
|
||||
uint8_t pal_mask;
|
||||
uint8_t pal_r, pal_r_prefetch;
|
||||
uint8_t pal_g, pal_g_prefetch;
|
||||
uint8_t pal_b, pal_b_prefetch;
|
||||
uint8_t sprite_data[1024];
|
||||
uint8_t scrollcache;
|
||||
uint8_t direct_color;
|
||||
uint8_t *vram, *changedvram;
|
||||
|
||||
int16_t hwc_pos_x;
|
||||
@@ -84,7 +84,7 @@ typedef struct xga_t
|
||||
uint16_t sprite_pal_addr_idx_prefetch;
|
||||
|
||||
int v_total, dispend, v_syncstart, split, v_blankstart,
|
||||
h_disp, h_disp_old, h_total, h_disp_time, rowoffset,
|
||||
h_disp, h_disp_old, h_total, h_disp_time, rowoffset,
|
||||
dispon, h_disp_on, vc, sc, linepos, oddeven, firstline, lastline,
|
||||
firstline_draw, lastline_draw, displine, fullchange, interlace,
|
||||
char_width, hwcursor_on;
|
||||
@@ -103,10 +103,10 @@ typedef struct xga_t
|
||||
uint32_t vram_size;
|
||||
uint32_t vram_mask;
|
||||
uint32_t rom_addr;
|
||||
uint32_t ma, maback;
|
||||
uint32_t extpallook[256];
|
||||
uint32_t read_bank, write_bank;
|
||||
uint32_t px_map_base;
|
||||
uint32_t ma, maback;
|
||||
uint32_t extpallook[256];
|
||||
uint32_t read_bank, write_bank;
|
||||
uint32_t px_map_base;
|
||||
|
||||
uint64_t dispontime, dispofftime;
|
||||
|
||||
@@ -153,7 +153,7 @@ typedef struct xga_t
|
||||
uint32_t command;
|
||||
uint32_t dir_cmd;
|
||||
|
||||
uint8_t px_map_format[4];
|
||||
uint8_t px_map_format[4];
|
||||
uint16_t px_map_width[4];
|
||||
uint16_t px_map_height[4];
|
||||
uint32_t px_map_base[4];
|
||||
@@ -161,4 +161,4 @@ typedef struct xga_t
|
||||
|
||||
volatile int force_busy;
|
||||
} xga_t;
|
||||
#endif /*VIDEO_XGA_H*/
|
||||
#endif /*VIDEO_XGA_H*/
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
*/
|
||||
|
||||
#ifndef VIDEO_XGA_DEVICE_H
|
||||
# define VIDEO_XGA_DEVICE_H
|
||||
#define VIDEO_XGA_DEVICE_H
|
||||
extern const device_t xga_device;
|
||||
extern const device_t xga_isa_device;
|
||||
#endif /*VIDEO_XGA_DEVICE_H*/
|
||||
#endif /*VIDEO_XGA_DEVICE_H*/
|
||||
|
||||
@@ -20,19 +20,18 @@
|
||||
*/
|
||||
|
||||
#ifndef EMU_VIDEO_H
|
||||
# define EMU_VIDEO_H
|
||||
#define EMU_VIDEO_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
#include <atomic>
|
||||
# include <atomic>
|
||||
using atomic_bool = std::atomic_bool;
|
||||
using atomic_int = std::atomic_int;
|
||||
using atomic_int = std::atomic_int;
|
||||
#else
|
||||
#include <stdatomic.h>
|
||||
# include <stdatomic.h>
|
||||
#endif
|
||||
|
||||
#define makecol(r, g, b) ((b) | ((g) << 8) | ((r) << 16))
|
||||
#define makecol32(r, g, b) ((b) | ((g) << 8) | ((r) << 16))
|
||||
|
||||
#define makecol(r, g, b) ((b) | ((g) << 8) | ((r) << 16))
|
||||
#define makecol32(r, g, b) ((b) | ((g) << 8) | ((r) << 16))
|
||||
|
||||
enum {
|
||||
VID_NONE = 0,
|
||||
@@ -46,12 +45,10 @@ enum {
|
||||
FULLSCR_SCALE_INT
|
||||
};
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
enum {
|
||||
VIDEO_ISA = 0,
|
||||
VIDEO_MCA,
|
||||
@@ -63,64 +60,63 @@ enum {
|
||||
#define VIDEO_FLAG_TYPE_CGA 0
|
||||
#define VIDEO_FLAG_TYPE_MDA 1
|
||||
#define VIDEO_FLAG_TYPE_SPECIAL 2
|
||||
#define VIDEO_FLAG_TYPE_NONE 3
|
||||
#define VIDEO_FLAG_TYPE_NONE 3
|
||||
#define VIDEO_FLAG_TYPE_MASK 3
|
||||
|
||||
typedef struct {
|
||||
int type;
|
||||
int write_b, write_w, write_l;
|
||||
int read_b, read_w, read_l;
|
||||
int type;
|
||||
int write_b, write_w, write_l;
|
||||
int read_b, read_w, read_l;
|
||||
} video_timings_t;
|
||||
|
||||
typedef struct {
|
||||
int w, h;
|
||||
uint32_t *dat;
|
||||
uint32_t *line[2112];
|
||||
int w, h;
|
||||
uint32_t *dat;
|
||||
uint32_t *line[2112];
|
||||
} bitmap_t;
|
||||
|
||||
typedef struct {
|
||||
uint8_t r, g, b;
|
||||
uint8_t r, g, b;
|
||||
} rgb_t;
|
||||
|
||||
typedef struct {
|
||||
uint8_t chr[32];
|
||||
uint8_t chr[32];
|
||||
} dbcs_font_t;
|
||||
|
||||
struct blit_data_struct;
|
||||
|
||||
typedef struct monitor_t
|
||||
{
|
||||
char name[512];
|
||||
int mon_xsize;
|
||||
int mon_ysize;
|
||||
int mon_scrnsz_x;
|
||||
int mon_scrnsz_y;
|
||||
int mon_efscrnsz_y;
|
||||
int mon_unscaled_size_x;
|
||||
int mon_unscaled_size_y;
|
||||
int mon_res_x;
|
||||
int mon_res_y;
|
||||
int mon_bpp;
|
||||
bitmap_t* target_buffer;
|
||||
int mon_video_timing_read_b,
|
||||
mon_video_timing_read_w,
|
||||
mon_video_timing_read_l;
|
||||
int mon_video_timing_write_b,
|
||||
mon_video_timing_write_w,
|
||||
mon_video_timing_write_l;
|
||||
int mon_overscan_x;
|
||||
int mon_overscan_y;
|
||||
int mon_force_resize;
|
||||
int mon_fullchange;
|
||||
int mon_changeframecount;
|
||||
atomic_int mon_screenshots;
|
||||
uint32_t* mon_pal_lookup;
|
||||
int* mon_cga_palette;
|
||||
int mon_pal_lookup_static; /* Whether it should not be freed by the API. */
|
||||
int mon_cga_palette_static; /* Whether it should not be freed by the API. */
|
||||
const video_timings_t* mon_vid_timings;
|
||||
int mon_vid_type;
|
||||
struct blit_data_struct* mon_blit_data_ptr;
|
||||
typedef struct monitor_t {
|
||||
char name[512];
|
||||
int mon_xsize;
|
||||
int mon_ysize;
|
||||
int mon_scrnsz_x;
|
||||
int mon_scrnsz_y;
|
||||
int mon_efscrnsz_y;
|
||||
int mon_unscaled_size_x;
|
||||
int mon_unscaled_size_y;
|
||||
int mon_res_x;
|
||||
int mon_res_y;
|
||||
int mon_bpp;
|
||||
bitmap_t *target_buffer;
|
||||
int mon_video_timing_read_b,
|
||||
mon_video_timing_read_w,
|
||||
mon_video_timing_read_l;
|
||||
int mon_video_timing_write_b,
|
||||
mon_video_timing_write_w,
|
||||
mon_video_timing_write_l;
|
||||
int mon_overscan_x;
|
||||
int mon_overscan_y;
|
||||
int mon_force_resize;
|
||||
int mon_fullchange;
|
||||
int mon_changeframecount;
|
||||
atomic_int mon_screenshots;
|
||||
uint32_t *mon_pal_lookup;
|
||||
int *mon_cga_palette;
|
||||
int mon_pal_lookup_static; /* Whether it should not be freed by the API. */
|
||||
int mon_cga_palette_static; /* Whether it should not be freed by the API. */
|
||||
const video_timings_t *mon_vid_timings;
|
||||
int mon_vid_type;
|
||||
struct blit_data_struct *mon_blit_data_ptr;
|
||||
} monitor_t;
|
||||
|
||||
typedef struct monitor_settings_t {
|
||||
@@ -131,159 +127,154 @@ typedef struct monitor_settings_t {
|
||||
} monitor_settings_t;
|
||||
|
||||
#define MONITORS_NUM 2
|
||||
extern monitor_t monitors[MONITORS_NUM];
|
||||
extern monitor_t monitors[MONITORS_NUM];
|
||||
extern monitor_settings_t monitor_settings[MONITORS_NUM];
|
||||
extern atomic_bool doresize_monitors[MONITORS_NUM];
|
||||
extern int monitor_index_global;
|
||||
extern int gfxcard_2;
|
||||
extern int show_second_monitors;
|
||||
extern atomic_bool doresize_monitors[MONITORS_NUM];
|
||||
extern int monitor_index_global;
|
||||
extern int gfxcard_2;
|
||||
extern int show_second_monitors;
|
||||
|
||||
typedef rgb_t PALETTE[256];
|
||||
|
||||
|
||||
//extern int changeframecount;
|
||||
// extern int changeframecount;
|
||||
|
||||
extern volatile int screenshots;
|
||||
//extern bitmap_t *buffer32;
|
||||
#define buffer32 (monitors[monitor_index_global].target_buffer)
|
||||
#define pal_lookup (monitors[monitor_index_global].mon_pal_lookup)
|
||||
#define overscan_x (monitors[monitor_index_global].mon_overscan_x)
|
||||
#define overscan_y (monitors[monitor_index_global].mon_overscan_y)
|
||||
#define video_timing_read_b (monitors[monitor_index_global].mon_video_timing_read_b)
|
||||
#define video_timing_read_l (monitors[monitor_index_global].mon_video_timing_read_l)
|
||||
#define video_timing_read_w (monitors[monitor_index_global].mon_video_timing_read_w)
|
||||
// extern bitmap_t *buffer32;
|
||||
#define buffer32 (monitors[monitor_index_global].target_buffer)
|
||||
#define pal_lookup (monitors[monitor_index_global].mon_pal_lookup)
|
||||
#define overscan_x (monitors[monitor_index_global].mon_overscan_x)
|
||||
#define overscan_y (monitors[monitor_index_global].mon_overscan_y)
|
||||
#define video_timing_read_b (monitors[monitor_index_global].mon_video_timing_read_b)
|
||||
#define video_timing_read_l (monitors[monitor_index_global].mon_video_timing_read_l)
|
||||
#define video_timing_read_w (monitors[monitor_index_global].mon_video_timing_read_w)
|
||||
#define video_timing_write_b (monitors[monitor_index_global].mon_video_timing_write_b)
|
||||
#define video_timing_write_l (monitors[monitor_index_global].mon_video_timing_write_l)
|
||||
#define video_timing_write_w (monitors[monitor_index_global].mon_video_timing_write_w)
|
||||
#define video_res_x (monitors[monitor_index_global].mon_res_x)
|
||||
#define video_res_y (monitors[monitor_index_global].mon_res_y)
|
||||
#define video_bpp (monitors[monitor_index_global].mon_bpp)
|
||||
#define xsize (monitors[monitor_index_global].mon_xsize)
|
||||
#define ysize (monitors[monitor_index_global].mon_ysize)
|
||||
#define cga_palette (*monitors[monitor_index_global].mon_cga_palette)
|
||||
#define changeframecount (monitors[monitor_index_global].mon_changeframecount)
|
||||
#define scrnsz_x (monitors[monitor_index_global].mon_scrnsz_x)
|
||||
#define scrnsz_y (monitors[monitor_index_global].mon_scrnsz_y)
|
||||
#define efscrnsz_y (monitors[monitor_index_global].mon_efscrnsz_y)
|
||||
#define unscaled_size_x (monitors[monitor_index_global].mon_unscaled_size_x)
|
||||
#define unscaled_size_y (monitors[monitor_index_global].mon_unscaled_size_y)
|
||||
extern PALETTE cgapal,
|
||||
cgapal_mono[6];
|
||||
//extern uint32_t pal_lookup[256];
|
||||
extern int video_fullscreen,
|
||||
video_fullscreen_scale,
|
||||
video_fullscreen_first;
|
||||
extern uint8_t fontdat[2048][8];
|
||||
extern uint8_t fontdatm[2048][16];
|
||||
extern uint8_t fontdatw[512][32];
|
||||
extern uint8_t fontdat8x12[256][16];
|
||||
extern uint8_t fontdat12x18[256][36];
|
||||
extern dbcs_font_t *fontdatksc5601;
|
||||
extern dbcs_font_t *fontdatksc5601_user;
|
||||
extern uint32_t *video_6to8,
|
||||
*video_8togs,
|
||||
*video_8to32,
|
||||
*video_15to32,
|
||||
*video_16to32;
|
||||
extern int enable_overscan;
|
||||
extern int force_43;
|
||||
extern int vid_resize;
|
||||
extern int herc_blend;
|
||||
extern int vid_cga_contrast;
|
||||
extern int video_grayscale;
|
||||
extern int video_graytype;
|
||||
|
||||
extern double cpuclock;
|
||||
extern int emu_fps,
|
||||
frames;
|
||||
extern int readflash;
|
||||
#define video_res_x (monitors[monitor_index_global].mon_res_x)
|
||||
#define video_res_y (monitors[monitor_index_global].mon_res_y)
|
||||
#define video_bpp (monitors[monitor_index_global].mon_bpp)
|
||||
#define xsize (monitors[monitor_index_global].mon_xsize)
|
||||
#define ysize (monitors[monitor_index_global].mon_ysize)
|
||||
#define cga_palette (*monitors[monitor_index_global].mon_cga_palette)
|
||||
#define changeframecount (monitors[monitor_index_global].mon_changeframecount)
|
||||
#define scrnsz_x (monitors[monitor_index_global].mon_scrnsz_x)
|
||||
#define scrnsz_y (monitors[monitor_index_global].mon_scrnsz_y)
|
||||
#define efscrnsz_y (monitors[monitor_index_global].mon_efscrnsz_y)
|
||||
#define unscaled_size_x (monitors[monitor_index_global].mon_unscaled_size_x)
|
||||
#define unscaled_size_y (monitors[monitor_index_global].mon_unscaled_size_y)
|
||||
extern PALETTE cgapal,
|
||||
cgapal_mono[6];
|
||||
// extern uint32_t pal_lookup[256];
|
||||
extern int video_fullscreen,
|
||||
video_fullscreen_scale,
|
||||
video_fullscreen_first;
|
||||
extern uint8_t fontdat[2048][8];
|
||||
extern uint8_t fontdatm[2048][16];
|
||||
extern uint8_t fontdatw[512][32];
|
||||
extern uint8_t fontdat8x12[256][16];
|
||||
extern uint8_t fontdat12x18[256][36];
|
||||
extern dbcs_font_t *fontdatksc5601;
|
||||
extern dbcs_font_t *fontdatksc5601_user;
|
||||
extern uint32_t *video_6to8,
|
||||
*video_8togs,
|
||||
*video_8to32,
|
||||
*video_15to32,
|
||||
*video_16to32;
|
||||
extern int enable_overscan;
|
||||
extern int force_43;
|
||||
extern int vid_resize;
|
||||
extern int herc_blend;
|
||||
extern int vid_cga_contrast;
|
||||
extern int video_grayscale;
|
||||
extern int video_graytype;
|
||||
|
||||
extern double cpuclock;
|
||||
extern int emu_fps,
|
||||
frames;
|
||||
extern int readflash;
|
||||
|
||||
/* Function handler pointers. */
|
||||
extern void (*video_recalctimings)(void);
|
||||
extern void video_screenshot_monitor(uint32_t *buf, int start_x, int start_y, int row_len, int monitor_index);
|
||||
extern void video_screenshot(uint32_t *buf, int start_x, int start_y, int row_len);
|
||||
extern void (*video_recalctimings)(void);
|
||||
extern void video_screenshot_monitor(uint32_t *buf, int start_x, int start_y, int row_len, int monitor_index);
|
||||
extern void video_screenshot(uint32_t *buf, int start_x, int start_y, int row_len);
|
||||
|
||||
#ifdef _WIN32
|
||||
extern void * __cdecl (*video_copy)(void *_Dst, const void *_Src, size_t _Size);
|
||||
extern void * __cdecl video_transform_copy(void *_Dst, const void *_Src, size_t _Size);
|
||||
extern void *__cdecl (*video_copy)(void *_Dst, const void *_Src, size_t _Size);
|
||||
extern void *__cdecl video_transform_copy(void *_Dst, const void *_Src, size_t _Size);
|
||||
#else
|
||||
extern void * (*video_copy)(void *__restrict _Dst, const void *__restrict _Src, size_t _Size);
|
||||
extern void * video_transform_copy(void *__restrict _Dst, const void *__restrict _Src, size_t _Size);
|
||||
extern void *(*video_copy)(void *__restrict _Dst, const void *__restrict _Src, size_t _Size);
|
||||
extern void *video_transform_copy(void *__restrict _Dst, const void *__restrict _Src, size_t _Size);
|
||||
#endif
|
||||
|
||||
|
||||
/* Table functions. */
|
||||
extern int video_card_available(int card);
|
||||
extern int video_card_available(int card);
|
||||
#ifdef EMU_DEVICE_H
|
||||
extern const device_t *video_card_getdevice(int card);
|
||||
extern const device_t *video_card_getdevice(int card);
|
||||
#endif
|
||||
extern int video_card_has_config(int card);
|
||||
extern char *video_get_internal_name(int card);
|
||||
extern int video_get_video_from_internal_name(char *s);
|
||||
extern int video_card_get_flags(int card);
|
||||
extern int video_is_mda(void);
|
||||
extern int video_is_cga(void);
|
||||
extern int video_is_ega_vga(void);
|
||||
extern void video_inform_monitor(int type, const video_timings_t *ptr, int monitor_index);
|
||||
extern int video_get_type_monitor(int monitor_index);
|
||||
extern int video_card_has_config(int card);
|
||||
extern char *video_get_internal_name(int card);
|
||||
extern int video_get_video_from_internal_name(char *s);
|
||||
extern int video_card_get_flags(int card);
|
||||
extern int video_is_mda(void);
|
||||
extern int video_is_cga(void);
|
||||
extern int video_is_ega_vga(void);
|
||||
extern void video_inform_monitor(int type, const video_timings_t *ptr, int monitor_index);
|
||||
extern int video_get_type_monitor(int monitor_index);
|
||||
|
||||
extern void video_setblit(void (*blit)(int, int, int, int, int));
|
||||
extern void video_blend(int x, int y);
|
||||
extern void video_blit_memtoscreen_8(int x, int y, int w, int h);
|
||||
extern void video_blend_monitor(int x, int y, int monitor_index);
|
||||
extern void video_blit_memtoscreen_8_monitor(int x, int y, int w, int h, int monitor_index);
|
||||
extern void video_blit_memtoscreen_monitor(int x, int y, int w, int h, int monitor_index);
|
||||
extern void video_blit_complete_monitor(int monitor_index);
|
||||
extern void video_wait_for_blit_monitor(int monitor_index);
|
||||
extern void video_wait_for_buffer_monitor(int monitor_index);
|
||||
|
||||
extern void video_setblit(void(*blit)(int,int,int,int,int));
|
||||
extern void video_blend(int x, int y);
|
||||
extern void video_blit_memtoscreen_8(int x, int y, int w, int h);
|
||||
extern void video_blend_monitor(int x, int y, int monitor_index);
|
||||
extern void video_blit_memtoscreen_8_monitor(int x, int y, int w, int h, int monitor_index);
|
||||
extern void video_blit_memtoscreen_monitor(int x, int y, int w, int h, int monitor_index);
|
||||
extern void video_blit_complete_monitor(int monitor_index);
|
||||
extern void video_wait_for_blit_monitor(int monitor_index);
|
||||
extern void video_wait_for_buffer_monitor(int monitor_index);
|
||||
extern bitmap_t *create_bitmap(int w, int h);
|
||||
extern void destroy_bitmap(bitmap_t *b);
|
||||
extern void cgapal_rebuild_monitor(int monitor_index);
|
||||
extern void hline(bitmap_t *b, int x1, int y, int x2, uint32_t col);
|
||||
extern void updatewindowsize(int x, int y);
|
||||
|
||||
extern bitmap_t *create_bitmap(int w, int h);
|
||||
extern void destroy_bitmap(bitmap_t *b);
|
||||
extern void cgapal_rebuild_monitor(int monitor_index);
|
||||
extern void hline(bitmap_t *b, int x1, int y, int x2, uint32_t col);
|
||||
extern void updatewindowsize(int x, int y);
|
||||
extern void video_monitor_init(int);
|
||||
extern void video_monitor_close(int);
|
||||
extern void video_init(void);
|
||||
extern void video_close(void);
|
||||
extern void video_reset_close(void);
|
||||
extern void video_pre_reset(int card);
|
||||
extern void video_reset(int card);
|
||||
extern uint8_t video_force_resize_get_monitor(int monitor_index);
|
||||
extern void video_force_resize_set_monitor(uint8_t res, int monitor_index);
|
||||
extern void video_update_timing(void);
|
||||
|
||||
extern void video_monitor_init(int);
|
||||
extern void video_monitor_close(int);
|
||||
extern void video_init(void);
|
||||
extern void video_close(void);
|
||||
extern void video_reset_close(void);
|
||||
extern void video_pre_reset(int card);
|
||||
extern void video_reset(int card);
|
||||
extern uint8_t video_force_resize_get_monitor(int monitor_index);
|
||||
extern void video_force_resize_set_monitor(uint8_t res, int monitor_index);
|
||||
extern void video_update_timing(void);
|
||||
extern void loadfont_ex(char *s, int format, int offset);
|
||||
extern void loadfont(char *s, int format);
|
||||
|
||||
extern void loadfont_ex(char *s, int format, int offset);
|
||||
extern void loadfont(char *s, int format);
|
||||
extern int get_actual_size_x(void);
|
||||
extern int get_actual_size_y(void);
|
||||
|
||||
extern int get_actual_size_x(void);
|
||||
extern int get_actual_size_y(void);
|
||||
extern uint32_t video_color_transform(uint32_t color);
|
||||
|
||||
extern uint32_t video_color_transform(uint32_t color);
|
||||
|
||||
extern void agpgart_set_aperture(void *handle, uint32_t base, uint32_t size, int enable);
|
||||
extern void agpgart_set_gart(void *handle, uint32_t base);
|
||||
extern void agpgart_set_aperture(void *handle, uint32_t base, uint32_t size, int enable);
|
||||
extern void agpgart_set_gart(void *handle, uint32_t base);
|
||||
|
||||
#define video_inform(type, video_timings_ptr) video_inform_monitor(type, video_timings_ptr, monitor_index_global)
|
||||
#define video_get_type() video_get_type_monitor(0)
|
||||
#define video_blend(x, y) video_blend_monitor(x, y, monitor_index_global)
|
||||
#define video_blit_memtoscreen(x, y, w, h) video_blit_memtoscreen_monitor(x, y, w, h, monitor_index_global)
|
||||
#define video_blit_memtoscreen_8(x, y, w, h) video_blit_memtoscreen_8_monitor(x, y, w, h, monitor_index_global)
|
||||
#define video_blit_complete() video_blit_complete_monitor(monitor_index_global)
|
||||
#define video_wait_for_blit() video_wait_for_blit_monitor(monitor_index_global)
|
||||
#define video_wait_for_buffer() video_wait_for_buffer_monitor(monitor_index_global)
|
||||
#define cgapal_rebuild() cgapal_rebuild_monitor(monitor_index_global)
|
||||
#define video_force_resize_get() video_force_resize_get_monitor(monitor_index_global)
|
||||
#define video_force_resize_set(val) video_force_resize_set_monitor(val, monitor_index_global)
|
||||
#define video_get_type() video_get_type_monitor(0)
|
||||
#define video_blend(x, y) video_blend_monitor(x, y, monitor_index_global)
|
||||
#define video_blit_memtoscreen(x, y, w, h) video_blit_memtoscreen_monitor(x, y, w, h, monitor_index_global)
|
||||
#define video_blit_memtoscreen_8(x, y, w, h) video_blit_memtoscreen_8_monitor(x, y, w, h, monitor_index_global)
|
||||
#define video_blit_complete() video_blit_complete_monitor(monitor_index_global)
|
||||
#define video_wait_for_blit() video_wait_for_blit_monitor(monitor_index_global)
|
||||
#define video_wait_for_buffer() video_wait_for_buffer_monitor(monitor_index_global)
|
||||
#define cgapal_rebuild() cgapal_rebuild_monitor(monitor_index_global)
|
||||
#define video_force_resize_get() video_force_resize_get_monitor(monitor_index_global)
|
||||
#define video_force_resize_set(val) video_force_resize_set_monitor(val, monitor_index_global)
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef EMU_DEVICE_H
|
||||
/* IBM XGA */
|
||||
extern void xga_device_add(void);
|
||||
@@ -298,9 +289,9 @@ extern const device_t mach64gx_pci_device;
|
||||
extern const device_t mach64vt2_device;
|
||||
|
||||
/* ATi 18800 */
|
||||
#if defined(DEV_BRANCH) && defined(USE_VGAWONDER)
|
||||
# if defined(DEV_BRANCH) && defined(USE_VGAWONDER)
|
||||
extern const device_t ati18800_wonder_device;
|
||||
#endif
|
||||
# endif
|
||||
extern const device_t ati18800_vga88_device;
|
||||
extern const device_t ati18800_device;
|
||||
|
||||
@@ -310,9 +301,9 @@ extern const device_t ati28800k_device;
|
||||
extern const device_t ati28800k_spc4620p_device;
|
||||
extern const device_t ati28800k_spc6033p_device;
|
||||
extern const device_t compaq_ati28800_device;
|
||||
#if defined(DEV_BRANCH) && defined(USE_XL24)
|
||||
# if defined(DEV_BRANCH) && defined(USE_XL24)
|
||||
extern const device_t ati28800_wonderxl24_device;
|
||||
#endif
|
||||
# endif
|
||||
|
||||
/* Cirrus Logic GD54xx */
|
||||
extern const device_t gd5401_isa_device;
|
||||
@@ -408,12 +399,12 @@ extern const device_t ht216_32_standalone_device;
|
||||
extern const device_t im1024_device;
|
||||
extern const device_t pgc_device;
|
||||
|
||||
#if defined(DEV_BRANCH) && defined(USE_MGA)
|
||||
# if defined(DEV_BRANCH) && defined(USE_MGA)
|
||||
/* Matrox MGA */
|
||||
extern const device_t millennium_device;
|
||||
extern const device_t mystique_device;
|
||||
extern const device_t mystique_220_device;
|
||||
#endif
|
||||
# endif
|
||||
|
||||
/* Oak OTI-0x7 */
|
||||
extern const device_t oti037c_device;
|
||||
@@ -541,4 +532,4 @@ extern const device_t wy700_device;
|
||||
extern const device_t agpgart_device;
|
||||
#endif
|
||||
|
||||
#endif /*EMU_VIDEO_H*/
|
||||
#endif /*EMU_VIDEO_H*/
|
||||
|
||||
@@ -21,53 +21,53 @@
|
||||
*/
|
||||
|
||||
#ifndef PLAT_WIN_H
|
||||
# define PLAT_WIN_H
|
||||
#define PLAT_WIN_H
|
||||
|
||||
# define UNICODE
|
||||
# define BITMAP WINDOWS_BITMAP
|
||||
# if 0
|
||||
# ifdef _WIN32_WINNT
|
||||
# undef _WIN32_WINNT
|
||||
# define _WIN32_WINNT 0x0501
|
||||
# endif
|
||||
# endif
|
||||
# include <windows.h>
|
||||
# include "resource.h"
|
||||
# undef BITMAP
|
||||
#define UNICODE
|
||||
#define BITMAP WINDOWS_BITMAP
|
||||
#if 0
|
||||
# ifdef _WIN32_WINNT
|
||||
# undef _WIN32_WINNT
|
||||
# define _WIN32_WINNT 0x0501
|
||||
# endif
|
||||
#endif
|
||||
#include "resource.h"
|
||||
#include <windows.h>
|
||||
#undef BITMAP
|
||||
|
||||
/* DPI Awareness Context, copied from MinGW-w64 windef.h */
|
||||
#ifndef _DPI_AWARENESS_CONTEXTS_
|
||||
DECLARE_HANDLE(DPI_AWARENESS_CONTEXT);
|
||||
#define DPI_AWARENESS_CONTEXT_UNAWARE ((DPI_AWARENESS_CONTEXT)-1)
|
||||
#define DPI_AWARENESS_CONTEXT_SYSTEM_AWARE ((DPI_AWARENESS_CONTEXT)-2)
|
||||
#define DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE ((DPI_AWARENESS_CONTEXT)-3)
|
||||
#define DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 ((DPI_AWARENESS_CONTEXT)-4)
|
||||
#define DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED ((DPI_AWARENESS_CONTEXT)-5)
|
||||
# define DPI_AWARENESS_CONTEXT_UNAWARE ((DPI_AWARENESS_CONTEXT) -1)
|
||||
# define DPI_AWARENESS_CONTEXT_SYSTEM_AWARE ((DPI_AWARENESS_CONTEXT) -2)
|
||||
# define DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE ((DPI_AWARENESS_CONTEXT) -3)
|
||||
# define DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 ((DPI_AWARENESS_CONTEXT) -4)
|
||||
# define DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED ((DPI_AWARENESS_CONTEXT) -5)
|
||||
#endif
|
||||
|
||||
#ifndef WM_DPICHANGED_AFTERPARENT
|
||||
#define WM_DPICHANGED_AFTERPARENT 0x02E3
|
||||
# define WM_DPICHANGED_AFTERPARENT 0x02E3
|
||||
#endif
|
||||
|
||||
/* Class names and such. */
|
||||
#define CLASS_NAME L"86BoxMainWnd"
|
||||
#define MENU_NAME L"MainMenu"
|
||||
#define ACCEL_NAME L"MainAccel"
|
||||
#define SUB_CLASS_NAME L"86BoxSubWnd"
|
||||
#define SB_CLASS_NAME L"86BoxStatusBar"
|
||||
#define SB_MENU_NAME L"StatusBarMenu"
|
||||
#define FS_CLASS_NAME L"86BoxFullScreen"
|
||||
#define SDL_CLASS_NAME L"86BoxSDLWnd"
|
||||
#define SDL_SUB_CLASS_NAME L"86BoxSDLSubWnd"
|
||||
#define CLASS_NAME L"86BoxMainWnd"
|
||||
#define MENU_NAME L"MainMenu"
|
||||
#define ACCEL_NAME L"MainAccel"
|
||||
#define SUB_CLASS_NAME L"86BoxSubWnd"
|
||||
#define SB_CLASS_NAME L"86BoxStatusBar"
|
||||
#define SB_MENU_NAME L"StatusBarMenu"
|
||||
#define FS_CLASS_NAME L"86BoxFullScreen"
|
||||
#define SDL_CLASS_NAME L"86BoxSDLWnd"
|
||||
#define SDL_SUB_CLASS_NAME L"86BoxSDLSubWnd"
|
||||
|
||||
#define CASSETTE_SUBMENU_NAME L"CassetteSubmenu"
|
||||
#define CARTRIDGE_SUBMENU_NAME L"CartridgeSubmenu"
|
||||
#define FLOPPY_SUBMENU_NAME L"FloppySubmenu"
|
||||
#define CDROM_SUBMENU_NAME L"CdromSubmenu"
|
||||
#define ZIP_SUBMENU_NAME L"ZIPSubmenu"
|
||||
#define MO_SUBMENU_NAME L"MOSubmenu"
|
||||
#define CASSETTE_SUBMENU_NAME L"CassetteSubmenu"
|
||||
#define CARTRIDGE_SUBMENU_NAME L"CartridgeSubmenu"
|
||||
#define FLOPPY_SUBMENU_NAME L"FloppySubmenu"
|
||||
#define CDROM_SUBMENU_NAME L"CdromSubmenu"
|
||||
#define ZIP_SUBMENU_NAME L"ZIPSubmenu"
|
||||
#define MO_SUBMENU_NAME L"MOSubmenu"
|
||||
|
||||
#define VID_GL_SUBMENU L"VidGLSubMenu"
|
||||
#define VID_GL_SUBMENU L"VidGLSubMenu"
|
||||
|
||||
/* Application-specific window messages.
|
||||
|
||||
@@ -75,185 +75,173 @@ DECLARE_HANDLE(DPI_AWARENESS_CONTEXT);
|
||||
and 0x8895 with WPARAM = <previous pause status> followed by 0x8896 with WPARAM = 0.
|
||||
|
||||
All shutdowns will send an 0x8897. */
|
||||
#define WM_LEAVEFULLSCREEN WM_USER
|
||||
#define WM_SAVESETTINGS 0x8888
|
||||
#define WM_SHOWSETTINGS 0x8889
|
||||
#define WM_PAUSE 0x8890
|
||||
#define WM_SENDHWND 0x8891
|
||||
#define WM_HARDRESET 0x8892
|
||||
#define WM_SHUTDOWN 0x8893
|
||||
#define WM_CTRLALTDEL 0x8894
|
||||
#define WM_LEAVEFULLSCREEN WM_USER
|
||||
#define WM_SAVESETTINGS 0x8888
|
||||
#define WM_SHOWSETTINGS 0x8889
|
||||
#define WM_PAUSE 0x8890
|
||||
#define WM_SENDHWND 0x8891
|
||||
#define WM_HARDRESET 0x8892
|
||||
#define WM_SHUTDOWN 0x8893
|
||||
#define WM_CTRLALTDEL 0x8894
|
||||
/* Pause/resume status: WPARAM = 1 for paused, 0 for resumed. */
|
||||
#define WM_SENDSTATUS 0x8895
|
||||
#define WM_SENDSTATUS 0x8895
|
||||
/* Dialog (Settings or message box) status: WPARAM = 1 for open, 0 for closed. */
|
||||
#define WM_SENDDLGSTATUS 0x8896
|
||||
#define WM_SENDDLGSTATUS 0x8896
|
||||
/* The emulator has shut down. */
|
||||
#define WM_HAS_SHUTDOWN 0x8897
|
||||
#define WM_HAS_SHUTDOWN 0x8897
|
||||
|
||||
#ifdef USE_VNC
|
||||
#define RENDERERS_NUM 5
|
||||
# define RENDERERS_NUM 5
|
||||
#else
|
||||
#define RENDERERS_NUM 4
|
||||
# define RENDERERS_NUM 4
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern HINSTANCE hinstance;
|
||||
extern HWND hwndMain,
|
||||
hwndRender;
|
||||
extern HANDLE ghMutex;
|
||||
extern HICON hIcon[256];
|
||||
extern int dpi;
|
||||
extern RECT oldclip;
|
||||
extern int sbar_height, tbar_height, user_resize;
|
||||
extern int acp_utf8;
|
||||
extern HINSTANCE hinstance;
|
||||
extern HWND hwndMain,
|
||||
hwndRender;
|
||||
extern HANDLE ghMutex;
|
||||
extern HICON hIcon[256];
|
||||
extern int dpi;
|
||||
extern RECT oldclip;
|
||||
extern int sbar_height, tbar_height, user_resize;
|
||||
extern int acp_utf8;
|
||||
|
||||
// extern int status_is_open;
|
||||
|
||||
extern char openfilestring[512];
|
||||
extern WCHAR wopenfilestring[512];
|
||||
extern char openfilestring[512];
|
||||
extern WCHAR wopenfilestring[512];
|
||||
|
||||
extern uint8_t filterindex;
|
||||
extern uint8_t filterindex;
|
||||
|
||||
|
||||
extern void ResizeWindowByClientArea(HWND hwnd, int width, int height);
|
||||
extern void ResizeWindowByClientArea(HWND hwnd, int width, int height);
|
||||
|
||||
/* Emulator start/stop support functions. */
|
||||
extern void do_start(void);
|
||||
extern void do_stop(void);
|
||||
extern void do_start(void);
|
||||
extern void do_stop(void);
|
||||
|
||||
/* Internal platform support functions. */
|
||||
extern int has_language_changed(uint32_t id);
|
||||
extern void set_language(uint32_t id);
|
||||
extern int get_vidpause(void);
|
||||
extern void show_cursor(int);
|
||||
extern int has_language_changed(uint32_t id);
|
||||
extern void set_language(uint32_t id);
|
||||
extern int get_vidpause(void);
|
||||
extern void show_cursor(int);
|
||||
|
||||
extern void keyboard_getkeymap(void);
|
||||
extern void keyboard_handle(PRAWINPUT raw);
|
||||
extern void keyboard_getkeymap(void);
|
||||
extern void keyboard_handle(PRAWINPUT raw);
|
||||
|
||||
extern void win_mouse_init(void);
|
||||
extern void win_mouse_close(void);
|
||||
extern void win_mouse_handle(PRAWINPUT raw);
|
||||
extern void win_mouse_init(void);
|
||||
extern void win_mouse_close(void);
|
||||
extern void win_mouse_handle(PRAWINPUT raw);
|
||||
|
||||
extern void win_joystick_handle(PRAWINPUT raw);
|
||||
extern void win_joystick_handle(PRAWINPUT raw);
|
||||
|
||||
extern void win_notify_dlg_open(void);
|
||||
extern void win_notify_dlg_closed(void);
|
||||
extern int win_get_dpi(HWND hwnd);
|
||||
extern int win_get_system_metrics(int i, int dpi);
|
||||
extern void win_notify_dlg_open(void);
|
||||
extern void win_notify_dlg_closed(void);
|
||||
extern int win_get_dpi(HWND hwnd);
|
||||
extern int win_get_system_metrics(int i, int dpi);
|
||||
|
||||
extern LPARAM win_get_string(int id);
|
||||
extern LPARAM win_get_string(int id);
|
||||
|
||||
extern void win_clear_icon_set();
|
||||
extern void win_system_icon_set();
|
||||
extern void win_load_icon_set();
|
||||
extern void win_get_icons_path(char* path_root);
|
||||
extern void win_clear_icon_set();
|
||||
extern void win_system_icon_set();
|
||||
extern void win_load_icon_set();
|
||||
extern void win_get_icons_path(char *path_root);
|
||||
|
||||
extern intptr_t fdd_type_to_icon(int type);
|
||||
extern intptr_t fdd_type_to_icon(int type);
|
||||
|
||||
#ifdef EMU_DEVICE_H
|
||||
extern uint8_t deviceconfig_open(HWND hwnd, const device_t *device);
|
||||
extern uint8_t deviceconfig_inst_open(HWND hwnd, const device_t *device, int inst);
|
||||
extern uint8_t deviceconfig_open(HWND hwnd, const device_t *device);
|
||||
extern uint8_t deviceconfig_inst_open(HWND hwnd, const device_t *device, int inst);
|
||||
#endif
|
||||
extern uint8_t joystickconfig_open(HWND hwnd, int joy_nr, int type);
|
||||
extern uint8_t joystickconfig_open(HWND hwnd, int joy_nr, int type);
|
||||
|
||||
extern int getfile(HWND hwnd, char *f, char *fn);
|
||||
extern int getsfile(HWND hwnd, char *f, char *fn);
|
||||
|
||||
extern void hard_disk_add_open(HWND hwnd, int is_existing);
|
||||
extern int hard_disk_was_added(void);
|
||||
extern int getfile(HWND hwnd, char *f, char *fn);
|
||||
extern int getsfile(HWND hwnd, char *f, char *fn);
|
||||
|
||||
extern void hard_disk_add_open(HWND hwnd, int is_existing);
|
||||
extern int hard_disk_was_added(void);
|
||||
|
||||
/* Platform UI support functions. */
|
||||
extern int ui_init(int nCmdShow);
|
||||
|
||||
extern int ui_init(int nCmdShow);
|
||||
|
||||
/* Functions in win_about.c: */
|
||||
extern void AboutDialogCreate(HWND hwnd);
|
||||
|
||||
extern void AboutDialogCreate(HWND hwnd);
|
||||
|
||||
/* Functions in win_snd_gain.c: */
|
||||
extern void SoundGainDialogCreate(HWND hwnd);
|
||||
|
||||
extern void SoundGainDialogCreate(HWND hwnd);
|
||||
|
||||
/* Functions in win_new_floppy.c: */
|
||||
extern void NewFloppyDialogCreate(HWND hwnd, int id, int part);
|
||||
|
||||
extern void NewFloppyDialogCreate(HWND hwnd, int id, int part);
|
||||
|
||||
/* Functions in win_specify_dim.c: */
|
||||
extern void SpecifyDimensionsDialogCreate(HWND hwnd);
|
||||
extern void SpecifyDimensionsDialogCreate(HWND hwnd);
|
||||
|
||||
/* Functions in win_preferences.c: */
|
||||
extern void PreferencesDlgCreate(HWND hwnd);
|
||||
|
||||
extern void PreferencesDlgCreate(HWND hwnd);
|
||||
|
||||
/* Functions in win_settings.c: */
|
||||
#define SETTINGS_PAGE_MACHINE 0
|
||||
#define SETTINGS_PAGE_VIDEO 1
|
||||
#define SETTINGS_PAGE_INPUT 2
|
||||
#define SETTINGS_PAGE_SOUND 3
|
||||
#define SETTINGS_PAGE_NETWORK 4
|
||||
#define SETTINGS_PAGE_PORTS 5
|
||||
#define SETTINGS_PAGE_STORAGE 6
|
||||
#define SETTINGS_PAGE_HARD_DISKS 7
|
||||
#define SETTINGS_PAGE_FLOPPY_AND_CDROM_DRIVES 8
|
||||
#define SETTINGS_PAGE_OTHER_REMOVABLE_DEVICES 9
|
||||
#define SETTINGS_PAGE_PERIPHERALS 10
|
||||
|
||||
extern void win_settings_open(HWND hwnd);
|
||||
extern void win_settings_open_ex(HWND hwnd, int category);
|
||||
#define SETTINGS_PAGE_MACHINE 0
|
||||
#define SETTINGS_PAGE_VIDEO 1
|
||||
#define SETTINGS_PAGE_INPUT 2
|
||||
#define SETTINGS_PAGE_SOUND 3
|
||||
#define SETTINGS_PAGE_NETWORK 4
|
||||
#define SETTINGS_PAGE_PORTS 5
|
||||
#define SETTINGS_PAGE_STORAGE 6
|
||||
#define SETTINGS_PAGE_HARD_DISKS 7
|
||||
#define SETTINGS_PAGE_FLOPPY_AND_CDROM_DRIVES 8
|
||||
#define SETTINGS_PAGE_OTHER_REMOVABLE_DEVICES 9
|
||||
#define SETTINGS_PAGE_PERIPHERALS 10
|
||||
|
||||
extern void win_settings_open(HWND hwnd);
|
||||
extern void win_settings_open_ex(HWND hwnd, int category);
|
||||
|
||||
/* Functions in win_stbar.c: */
|
||||
extern HWND hwndSBAR;
|
||||
extern void StatusBarCreate(HWND hwndParent, uintptr_t idStatus, HINSTANCE hInst);
|
||||
extern int MediaMenuHandler(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
|
||||
|
||||
extern HWND hwndSBAR;
|
||||
extern void StatusBarCreate(HWND hwndParent, uintptr_t idStatus, HINSTANCE hInst);
|
||||
extern int MediaMenuHandler(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
|
||||
|
||||
/* Functions in win_toolbar.c */
|
||||
extern HWND hwndRebar;
|
||||
extern void ToolBarCreate(HWND hwndParent, HINSTANCE hInst);
|
||||
extern void ToolBarLoadIcons();
|
||||
extern void ToolBarUpdatePause(int paused);
|
||||
|
||||
extern HWND hwndRebar;
|
||||
extern void ToolBarCreate(HWND hwndParent, HINSTANCE hInst);
|
||||
extern void ToolBarLoadIcons();
|
||||
extern void ToolBarUpdatePause(int paused);
|
||||
|
||||
/* Functions in win_dialog.c: */
|
||||
/* Pass NULL in the title param to use the default title. */
|
||||
extern int file_dlg_w(HWND hwnd, WCHAR *f, WCHAR *fn, WCHAR *title, int save);
|
||||
extern int file_dlg(HWND hwnd, WCHAR *f, char *fn, char *title, int save);
|
||||
extern int file_dlg_mb(HWND hwnd, char *f, char *fn, char *title, int save);
|
||||
extern int file_dlg_w_st(HWND hwnd, int i, WCHAR *fn, char *title, int save);
|
||||
extern int file_dlg_st(HWND hwnd, int i, char *fn, char *title, int save);
|
||||
|
||||
extern wchar_t *BrowseFolder(wchar_t *saved_path, wchar_t *title);
|
||||
extern int file_dlg_w(HWND hwnd, WCHAR *f, WCHAR *fn, WCHAR *title, int save);
|
||||
extern int file_dlg(HWND hwnd, WCHAR *f, char *fn, char *title, int save);
|
||||
extern int file_dlg_mb(HWND hwnd, char *f, char *fn, char *title, int save);
|
||||
extern int file_dlg_w_st(HWND hwnd, int i, WCHAR *fn, char *title, int save);
|
||||
extern int file_dlg_st(HWND hwnd, int i, char *fn, char *title, int save);
|
||||
|
||||
extern wchar_t *BrowseFolder(wchar_t *saved_path, wchar_t *title);
|
||||
|
||||
/* Functions in win_media_menu.c */
|
||||
extern void media_menu_init();
|
||||
extern void media_menu_reset();
|
||||
extern int media_menu_proc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
|
||||
extern HMENU media_menu_get_cassette(void);
|
||||
extern HMENU media_menu_get_cartridge(int id);
|
||||
extern HMENU media_menu_get_floppy(int id);
|
||||
extern HMENU media_menu_get_cdrom(int id);
|
||||
extern HMENU media_menu_get_zip(int id);
|
||||
extern HMENU media_menu_get_mo(int id);
|
||||
extern void media_menu_update_cassette(void);
|
||||
extern void media_menu_update_cartridge(int id);
|
||||
extern void media_menu_update_floppy(int id);
|
||||
extern void media_menu_update_cdrom(int id);
|
||||
extern void media_menu_update_zip(int id);
|
||||
extern void media_menu_update_mo(int id);
|
||||
extern void media_menu_init();
|
||||
extern void media_menu_reset();
|
||||
extern int media_menu_proc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
|
||||
extern HMENU media_menu_get_cassette(void);
|
||||
extern HMENU media_menu_get_cartridge(int id);
|
||||
extern HMENU media_menu_get_floppy(int id);
|
||||
extern HMENU media_menu_get_cdrom(int id);
|
||||
extern HMENU media_menu_get_zip(int id);
|
||||
extern HMENU media_menu_get_mo(int id);
|
||||
extern void media_menu_update_cassette(void);
|
||||
extern void media_menu_update_cartridge(int id);
|
||||
extern void media_menu_update_floppy(int id);
|
||||
extern void media_menu_update_cdrom(int id);
|
||||
extern void media_menu_update_zip(int id);
|
||||
extern void media_menu_update_mo(int id);
|
||||
|
||||
/* Functions in win_ui.c */
|
||||
extern HMENU menuMain;
|
||||
extern void ResetAllMenus();
|
||||
extern HMENU menuMain;
|
||||
extern void ResetAllMenus();
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /*PLAT_WIN_H*/
|
||||
#endif /*PLAT_WIN_H*/
|
||||
|
||||
@@ -19,8 +19,8 @@
|
||||
#define UNICODE
|
||||
#include <Windows.h>
|
||||
|
||||
extern int opengl_init(HWND hwnd);
|
||||
extern int opengl_pause(void);
|
||||
extern int opengl_init(HWND hwnd);
|
||||
extern int opengl_pause(void);
|
||||
extern void opengl_close(void);
|
||||
extern void opengl_set_fs(int fs);
|
||||
extern void opengl_resize(int w, int h);
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
#include <glad/glad.h>
|
||||
|
||||
GLuint load_custom_shaders(const char* path);
|
||||
GLuint load_custom_shaders(const char *path);
|
||||
GLuint load_default_shaders();
|
||||
|
||||
#endif /*!WIN_OPENGL_GLSLP_H*/
|
||||
|
||||
@@ -48,17 +48,16 @@
|
||||
*/
|
||||
|
||||
#ifndef WIN_SDL_H
|
||||
# define WIN_SDL_H
|
||||
#define WIN_SDL_H
|
||||
|
||||
extern void sdl_close(void);
|
||||
extern int sdl_inits(HWND h);
|
||||
extern int sdl_inith(HWND h);
|
||||
extern int sdl_initho(HWND h);
|
||||
extern int sdl_pause(void);
|
||||
extern void sdl_resize(int x, int y);
|
||||
extern void sdl_enable(int enable);
|
||||
extern void sdl_set_fs(int fs);
|
||||
extern void sdl_reload(void);
|
||||
|
||||
extern void sdl_close(void);
|
||||
extern int sdl_inits(HWND h);
|
||||
extern int sdl_inith(HWND h);
|
||||
extern int sdl_initho(HWND h);
|
||||
extern int sdl_pause(void);
|
||||
extern void sdl_resize(int x, int y);
|
||||
extern void sdl_enable(int enable);
|
||||
extern void sdl_set_fs(int fs);
|
||||
extern void sdl_reload(void);
|
||||
|
||||
#endif /*WIN_SDL_H*/
|
||||
#endif /*WIN_SDL_H*/
|
||||
|
||||
Reference in New Issue
Block a user