More cleanups, preparing for multi-language.
This commit is contained in:
@@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
* Common code to handle all sorts of hard disk images.
|
* Common code to handle all sorts of hard disk images.
|
||||||
*
|
*
|
||||||
* Version: @(#)hdd.c 1.0.6 2017/11/01
|
* Version: @(#)hdd.c 1.0.7 2017/11/18
|
||||||
*
|
*
|
||||||
* Authors: Miran Grca, <mgrca8@gmail.com>
|
* Authors: Miran Grca, <mgrca8@gmail.com>
|
||||||
* Fred N. van Kempen, <decwiz@yahoo.com>
|
* Fred N. van Kempen, <decwiz@yahoo.com>
|
||||||
@@ -21,6 +21,7 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <wchar.h>
|
#include <wchar.h>
|
||||||
#include "../86box.h"
|
#include "../86box.h"
|
||||||
|
#include "../plat.h"
|
||||||
#include "../ui.h"
|
#include "../ui.h"
|
||||||
#include "hdd.h"
|
#include "hdd.h"
|
||||||
|
|
||||||
|
|||||||
@@ -24,6 +24,12 @@ typedef struct
|
|||||||
char pov_names[4][32];
|
char pov_names[4][32];
|
||||||
} joystick_if_t;
|
} joystick_if_t;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
extern device_t gameport_device;
|
extern device_t gameport_device;
|
||||||
extern device_t gameport_201_device;
|
extern device_t gameport_201_device;
|
||||||
|
|
||||||
@@ -41,5 +47,9 @@ extern char *joystick_get_pov_name(int64_t joystick, int64_t id);
|
|||||||
|
|
||||||
extern void gameport_update_joystick_type(void);
|
extern void gameport_update_joystick_type(void);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#endif /*EMU_GAMEPORT_H*/
|
#endif /*EMU_GAMEPORT_H*/
|
||||||
|
|||||||
232
src/lang/language.h
Normal file
232
src/lang/language.h
Normal file
@@ -0,0 +1,232 @@
|
|||||||
|
/*
|
||||||
|
* 86Box A hypervisor and IBM PC system emulator that specializes in
|
||||||
|
* running old operating systems and software designed for IBM
|
||||||
|
* PC systems and compatibles from 1981 through fairly recent
|
||||||
|
* system designs based on the PCI bus.
|
||||||
|
*
|
||||||
|
* This file is part of the 86Box distribution.
|
||||||
|
*
|
||||||
|
* Definitions for the language management module.
|
||||||
|
*
|
||||||
|
* NOTE: FIXME: Strings 2176 and 2193 are same.
|
||||||
|
*
|
||||||
|
* Version: @(#)language.h 1.0.3 2017/11/18
|
||||||
|
*
|
||||||
|
* Author: Fred N. van Kempem, <decwiz@yahoo.com>
|
||||||
|
*
|
||||||
|
* Copyright 2017 Fred N. van Kempen.
|
||||||
|
*/
|
||||||
|
#ifndef LANG_UAGE_H
|
||||||
|
# define LANG_UAGE_H
|
||||||
|
|
||||||
|
|
||||||
|
/* String IDs. */
|
||||||
|
#define IDS_STRINGS 2048 // "86Box"
|
||||||
|
#define IDS_2049 2049 // "86Box Error"
|
||||||
|
#define IDS_2050 2050 // "86Box Fatal Error"
|
||||||
|
#define IDS_2051 2051 // "This will reset 86Box.."
|
||||||
|
#define IDS_2052 2052 // "DirectDraw Screenshot Error"
|
||||||
|
#define IDS_2053 2053 // "Invalid number of sectors.."
|
||||||
|
#define IDS_2054 2054 // "Invalid number of heads.."
|
||||||
|
#define IDS_2055 2055 // "Invalid number of cylinders.."
|
||||||
|
#define IDS_2056 2056 // "No usable ROM images found!"
|
||||||
|
#define IDS_2057 2057 // "(empty)"
|
||||||
|
#define IDS_2058 2058 // "(host drive %c:)"
|
||||||
|
#define IDS_2059 2059 // "(Turbo)"
|
||||||
|
#define IDS_2060 2060 // "On"
|
||||||
|
#define IDS_2061 2061 // "Off"
|
||||||
|
#define IDS_2062 2062 // "86Box was unable to find any.."
|
||||||
|
#define IDS_2063 2063 // "Configured ROM set not avai.."
|
||||||
|
#define IDS_2064 2064 // "Configured video BIOS not.."
|
||||||
|
#define IDS_2065 2065 // "Machine"
|
||||||
|
#define IDS_2066 2066 // "Display"
|
||||||
|
#define IDS_2067 2067 // "Input devices"
|
||||||
|
#define IDS_2068 2068 // "Sound"
|
||||||
|
#define IDS_2069 2069 // "Network"
|
||||||
|
#define IDS_2070 2070 // "Ports (COM & LPT)"
|
||||||
|
#define IDS_2071 2071 // "Other peripherals"
|
||||||
|
#define IDS_2072 2072 // "Hard disks"
|
||||||
|
#define IDS_2073 2073 // "Removable devices"
|
||||||
|
#define IDS_2074 2074 // "Use CTRL+ALT+PAGE DOWN.."
|
||||||
|
#define IDS_2075 2075 // "CD-ROM images (*.ISO;*.CU.."
|
||||||
|
#define IDS_2076 2076 // "Host CD/DVD Drive (%c:)"
|
||||||
|
#define IDS_2077 2077 // "Click to capture mouse"
|
||||||
|
#define IDS_2078 2078 // "Press F12-F8 to release mouse"
|
||||||
|
#define IDS_2079 2079 // "Press F12-F8 or middle button.."
|
||||||
|
#define IDS_2080 2080 // "Drive"
|
||||||
|
#define IDS_2081 2081 // "Location"
|
||||||
|
#define IDS_2082 2082 // "Bus"
|
||||||
|
#define IDS_2083 2083 // "File"
|
||||||
|
#define IDS_2084 2084 // "C"
|
||||||
|
#define IDS_2085 2085 // "H"
|
||||||
|
#define IDS_2086 2086 // "S"
|
||||||
|
#define IDS_2087 2087 // "MB"
|
||||||
|
#define IDS_2088 2088 // "Unable to create bitmap file: %s"
|
||||||
|
#define IDS_2089 2089 // "Enabled"
|
||||||
|
#define IDS_2090 2090 // "Mute"
|
||||||
|
#define IDS_2091 2091 // "Type"
|
||||||
|
#define IDS_2092 2092 // "Bus"
|
||||||
|
#define IDS_2093 2093 // "DMA"
|
||||||
|
#define IDS_2094 2094 // "KB"
|
||||||
|
#define IDS_2095 2095 // "Neither DirectDraw nor Dire.."
|
||||||
|
#define IDS_2096 2096 // "Slave"
|
||||||
|
#define IDS_2097 2097 // "SCSI (ID %s, LUN %s)"
|
||||||
|
#define IDS_2098 2098 // "Adapter Type"
|
||||||
|
#define IDS_2099 2099 // "Base Address"
|
||||||
|
#define IDS_2100 2100 // "IRQ"
|
||||||
|
#define IDS_2101 2101 // "8-bit DMA"
|
||||||
|
#define IDS_2102 2102 // "16-bit DMA"
|
||||||
|
#define IDS_2103 2103 // "BIOS"
|
||||||
|
#define IDS_2104 2104 // "Network Type"
|
||||||
|
#define IDS_2105 2105 // "Surround Module"
|
||||||
|
#define IDS_2106 2106 // "MPU-401 Base Address"
|
||||||
|
#define IDS_2107 2107 // "PCAP not found.."
|
||||||
|
#define IDS_2108 2108 // "On-board RAM"
|
||||||
|
#define IDS_2109 2109 // "Memory Size"
|
||||||
|
#define IDS_2110 2110 // "Display Type"
|
||||||
|
#define IDS_2111 2111 // "RGB"
|
||||||
|
#define IDS_2112 2112 // "Composite"
|
||||||
|
#define IDS_2113 2113 // "Composite Type"
|
||||||
|
#define IDS_2114 2114 // "Old"
|
||||||
|
#define IDS_2115 2115 // "New"
|
||||||
|
#define IDS_2116 2116 // "RGB Type"
|
||||||
|
#define IDS_2117 2117 // "Color"
|
||||||
|
#define IDS_2118 2118 // "Monochrome (Green)"
|
||||||
|
#define IDS_2119 2119 // "Monochrome (Amber)"
|
||||||
|
#define IDS_2120 2120 // "Monochrome (Gray)"
|
||||||
|
#define IDS_2121 2121 // "Color (no brown)"
|
||||||
|
#define IDS_2122 2122 // "Monochrome (Default)"
|
||||||
|
#define IDS_2123 2123 // "Snow Emulation"
|
||||||
|
#define IDS_2124 2124 // "Bilinear Filtering"
|
||||||
|
#define IDS_2125 2125 // "Dithering"
|
||||||
|
#define IDS_2126 2126 // "Framebuffer Memory Size"
|
||||||
|
#define IDS_2127 2127 // "Texture Memory Size"
|
||||||
|
#define IDS_2128 2128 // "Screen Filter"
|
||||||
|
#define IDS_2129 2129 // "Render Threads"
|
||||||
|
#define IDS_2130 2130 // "Recompiler"
|
||||||
|
#define IDS_2131 2131 // "System Default"
|
||||||
|
#define IDS_2132 2132 // "%i Wait state(s)"
|
||||||
|
#define IDS_2133 2133 // "8-bit"
|
||||||
|
#define IDS_2134 2134 // "Slow 16-bit"
|
||||||
|
#define IDS_2135 2135 // "Fast 16-bit"
|
||||||
|
#define IDS_2136 2136 // "Slow VLB/PCI"
|
||||||
|
#define IDS_2137 2137 // "Mid VLB/PCI"
|
||||||
|
#define IDS_2138 2138 // "Fast VLB/PCI"
|
||||||
|
#define IDS_2139 2139 // "PCap failed to set up.."
|
||||||
|
#define IDS_2140 2140 // "No PCap devices found"
|
||||||
|
#define IDS_2141 2141 // "Invalid PCap device"
|
||||||
|
#define IDS_2142 2142 // "&Notify disk change"
|
||||||
|
#define IDS_2143 2143 // "Type"
|
||||||
|
#define IDS_2144 2144 // "Standard 2-button joystick(s)"
|
||||||
|
#define IDS_2145 2145 // "Standard 4-button joystick"
|
||||||
|
#define IDS_2146 2146 // "Standard 6-button joystick"
|
||||||
|
#define IDS_2147 2147 // "Standard 8-button joystick"
|
||||||
|
#define IDS_2148 2148 // "CH Flightstick Pro"
|
||||||
|
#define IDS_2149 2149 // "Microsoft SideWinder Pad"
|
||||||
|
#define IDS_2150 2150 // "Thrustmaster Flight Cont.."
|
||||||
|
#define IDS_2151 2151 // "Disabled"
|
||||||
|
#define IDS_2152 2152 // "None"
|
||||||
|
#define IDS_2153 2153 // "Unable to load Accelerators"
|
||||||
|
#define IDS_2154 2154 // "Unable to register Raw Input"
|
||||||
|
#define IDS_2155 2155 // "IRQ %i"
|
||||||
|
#define IDS_2156 2156 // "%" PRIu64
|
||||||
|
#define IDS_2157 2157 // "%" PRIu64 " MB (CHS: %".."
|
||||||
|
#define IDS_2158 2158 // "Floppy %i (%s): %ls"
|
||||||
|
#define IDS_2159 2159 // "All floppy images (*.0??;*.."
|
||||||
|
#define IDS_2160 2160 // "Configuration files (*.CF.."
|
||||||
|
#define IDS_2161 2161 // "&New image..."
|
||||||
|
#define IDS_2162 2162 // "Existing image..."
|
||||||
|
#define IDS_2163 2163 // "Existing image (&Write-pr..."
|
||||||
|
#define IDS_2164 2164 // "E&ject"
|
||||||
|
#define IDS_2165 2165 // "&Mute"
|
||||||
|
#define IDS_2166 2166 // "E&mpty"
|
||||||
|
#define IDS_2167 2167 // "&Reload previous image"
|
||||||
|
#define IDS_2168 2168 // "&Image..."
|
||||||
|
#define IDS_2169 2169 // "Image (&Write-protected)..."
|
||||||
|
#define IDS_2170 2170 // "Check BPB"
|
||||||
|
#define IDS_2171 2171 // "Unable to initialize Flui.."
|
||||||
|
|
||||||
|
#define IDS_3072 3072 // "None"
|
||||||
|
#define IDS_3073 3073 // "Internal"
|
||||||
|
#define IDS_3074 3074 // "[Bus] Logitech Bus Mouse"
|
||||||
|
#define IDS_3075 3075 // "[Bus] Microsoft Bus Mous.."
|
||||||
|
#define IDS_3076 3076 // "[Serial] Mouse Systems Mouse"
|
||||||
|
#define IDS_3077 3077 // "[Serial] Microsoft 2-button Mouse"
|
||||||
|
#define IDS_3078 3078 // "[Serial] Logitech 3-button Mouse"
|
||||||
|
#define IDS_3079 3079 // "[Serial] Microsoft Wheel Mouse"
|
||||||
|
#define IDS_3080 3080 // "[PS/2] 2-button Mouse"
|
||||||
|
#define IDS_3081 3081 // "[PS/2] Microsoft Intellimouse"
|
||||||
|
#define IDS_3082 3082 // "[Proprietary] Amstrad Mouse"
|
||||||
|
#define IDS_3083 3083 // "[Proprietary] Olivetti M24.."
|
||||||
|
|
||||||
|
#define IDS_4096 4096 // "Hard disk (%s)"
|
||||||
|
#define IDS_4097 4097 // "%01i:%01i"
|
||||||
|
#define IDS_4098 4098 // "%i"
|
||||||
|
#define IDS_4099 4099 // "Disabled"
|
||||||
|
#define IDS_4100 4100 // "Custom..."
|
||||||
|
#define IDS_4101 4101 // "Custom (large)..."
|
||||||
|
#define IDS_4102 4102 // "Add New Hard Disk"
|
||||||
|
#define IDS_4103 4103 // "Add Existing Hard Disk"
|
||||||
|
#define IDS_4104 4104 // "Attempting to create a HDI ima.."
|
||||||
|
#define IDS_4105 4105 // "Attempting to create a spurio.."
|
||||||
|
#define IDS_4106 4106 // "Hard disk images (*.HDI;*.HD.."
|
||||||
|
#define IDS_4107 4107 // "Unable to open the file for read"
|
||||||
|
#define IDS_4108 4108 // "Unable to open the file for write"
|
||||||
|
#define IDS_4109 4109 // "HDI or HDX image with a sect.."
|
||||||
|
#define IDS_4110 4110 // "USB is not yet supported"
|
||||||
|
#define IDS_4111 4111 // "This image exists and will be.."
|
||||||
|
#define IDS_4112 4112 // "Please enter a valid file name"
|
||||||
|
#define IDS_4113 4113 // "Remember to partition and fo.."
|
||||||
|
#define IDS_4114 4114 // "MFM/RLL or ESDI CD-ROM driv.."
|
||||||
|
#define IDS_4115 4115 // "Removable disk %i (SCSI): %ls"
|
||||||
|
|
||||||
|
#define IDS_4352 4352 // "MFM/RLL"
|
||||||
|
#define IDS_4353 4353 // "XT IDE"
|
||||||
|
#define IDS_4354 4354 // "ESDI"
|
||||||
|
#define IDS_4355 4355 // "IDE (PIO-only)"
|
||||||
|
#define IDS_4356 4356 // "IDE (PIO+DMA)"
|
||||||
|
#define IDS_4357 4357 // "SCSI"
|
||||||
|
#define IDS_4358 4358 // "SCSI (removable)"
|
||||||
|
|
||||||
|
#define IDS_4608 4608 // "MFM/RLL (%01i:%01i)"
|
||||||
|
#define IDS_4609 4609 // "XT IDE (%01i:%01i)"
|
||||||
|
#define IDS_4610 4610 // "ESDI (%01i:%01i)"
|
||||||
|
#define IDS_4611 4611 // "IDE (PIO-only) (%01i:%01i)"
|
||||||
|
#define IDS_4612 4612 // "IDE (PIO+DMA) (%01i:%01i)"
|
||||||
|
#define IDS_4613 4613 // "SCSI (%02i:%02i)"
|
||||||
|
#define IDS_4614 4614 // "SCSI (removable) (%02i:%02i)"
|
||||||
|
|
||||||
|
#define IDS_5120 5120 // "CD-ROM %i (%s): %s"
|
||||||
|
|
||||||
|
#define IDS_5376 5376 // "Disabled"
|
||||||
|
#define IDS_5377 5377 // "<Reserved>"
|
||||||
|
#define IDS_5378 5378 // "<Reserved>"
|
||||||
|
#define IDS_5379 5379 // "<Reserved>"
|
||||||
|
#define IDS_5380 5380 // "ATAPI (PIO-only)"
|
||||||
|
#define IDS_5381 5381 // "ATAPI (PIO and DMA)"
|
||||||
|
#define IDS_5382 5382 // "SCSI"
|
||||||
|
|
||||||
|
#define IDS_5632 5632 // "Disabled"
|
||||||
|
#define IDS_5633 5633 // "<Reserved>"
|
||||||
|
#define IDS_5634 5634 // "<Reserved>"
|
||||||
|
#define IDS_5635 5635 // "<Reserved>"
|
||||||
|
#define IDS_5636 5636 // "ATAPI (PIO-only) (%01i:%01i)"
|
||||||
|
#define IDS_5637 5637 // "ATAPI (PIO and DMA) (%01i:%01i)"
|
||||||
|
#define IDS_5638 5638 // "SCSI (%02i:%02i)"
|
||||||
|
|
||||||
|
#define IDS_6144 6144 // "English (United States)"
|
||||||
|
|
||||||
|
#define IDS_LANG_ENUS IDS_6144
|
||||||
|
|
||||||
|
#define STR_NUM_2048 124
|
||||||
|
#define STR_NUM_3072 11
|
||||||
|
#define STR_NUM_4096 20
|
||||||
|
#define STR_NUM_4352 7
|
||||||
|
#define STR_NUM_4608 7
|
||||||
|
#define STR_NUM_5120 1
|
||||||
|
#define STR_NUM_5376 7
|
||||||
|
#define STR_NUM_5632 7
|
||||||
|
#define STR_NUM_6144 1
|
||||||
|
|
||||||
|
|
||||||
|
#endif /*LANG_UAGE_H*/
|
||||||
@@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
* Define the various platform support functions.
|
* Define the various platform support functions.
|
||||||
*
|
*
|
||||||
* Version: @(#)plat.h 1.0.20 2017/11/18
|
* Version: @(#)plat.h 1.0.21 2017/11/18
|
||||||
*
|
*
|
||||||
* Authors: Miran Grca, <mgrca8@gmail.com>
|
* Authors: Miran Grca, <mgrca8@gmail.com>
|
||||||
* Fred N. van Kempen, <decwiz@yahoo.com>
|
* Fred N. van Kempen, <decwiz@yahoo.com>
|
||||||
@@ -23,10 +23,8 @@
|
|||||||
# define GLOBAL extern
|
# define GLOBAL extern
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* String ID numbers. */
|
||||||
#ifndef _WIN32
|
#include "lang/language.h"
|
||||||
# define RENDER_FPS 30 /* default render speed */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* The Win32 API uses _wcsicmp. */
|
/* The Win32 API uses _wcsicmp. */
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
|
|||||||
12
src/ui.h
12
src/ui.h
@@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
* Define the various UI functions.
|
* Define the various UI functions.
|
||||||
*
|
*
|
||||||
* Version: @(#)ui.h 1.0.9 2017/11/01
|
* Version: @(#)ui.h 1.0.10 2017/11/18
|
||||||
*
|
*
|
||||||
* Authors: Miran Grca, <mgrca8@gmail.com>
|
* Authors: Miran Grca, <mgrca8@gmail.com>
|
||||||
* Fred N. van Kempen, <decwiz@yahoo.com>
|
* Fred N. van Kempen, <decwiz@yahoo.com>
|
||||||
@@ -24,14 +24,10 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Strings. Those are defined within the platform. */
|
|
||||||
#ifdef _WIN32
|
|
||||||
# include "win/resource.h"
|
|
||||||
#endif
|
|
||||||
#ifdef UNIX
|
|
||||||
# include "unix/resource.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
#ifdef USE_WX
|
||||||
|
# define RENDER_FPS 30 /* default render speed */
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Message Box functions. */
|
/* Message Box functions. */
|
||||||
#define MBX_INFO 1
|
#define MBX_INFO 1
|
||||||
|
|||||||
@@ -84,26 +84,21 @@ static int tris = 0;
|
|||||||
|
|
||||||
static uint64_t status_time = 0;
|
static uint64_t status_time = 0;
|
||||||
|
|
||||||
typedef union int_float
|
typedef union {
|
||||||
{
|
|
||||||
uint32_t i;
|
uint32_t i;
|
||||||
float f;
|
float f;
|
||||||
} int_float;
|
} int_float;
|
||||||
|
|
||||||
typedef struct rgb_t
|
typedef struct {
|
||||||
{
|
|
||||||
uint8_t b, g, r;
|
uint8_t b, g, r;
|
||||||
uint8_t pad;
|
uint8_t pad;
|
||||||
} rgb_t;
|
} rgbp_t;
|
||||||
typedef struct rgba8_t
|
typedef struct {
|
||||||
{
|
|
||||||
uint8_t b, g, r, a;
|
uint8_t b, g, r, a;
|
||||||
} rgba8_t;
|
} rgba8_t;
|
||||||
|
|
||||||
typedef union rgba_u
|
typedef union {
|
||||||
{
|
struct {
|
||||||
struct
|
|
||||||
{
|
|
||||||
uint8_t b, g, r, a;
|
uint8_t b, g, r, a;
|
||||||
} rgba;
|
} rgba;
|
||||||
uint32_t u;
|
uint32_t u;
|
||||||
@@ -175,7 +170,7 @@ typedef struct voodoo_params_t
|
|||||||
uint32_t fbzColorPath;
|
uint32_t fbzColorPath;
|
||||||
|
|
||||||
uint32_t fogMode;
|
uint32_t fogMode;
|
||||||
rgb_t fogColor;
|
rgbp_t fogColor;
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
uint8_t fog, dfog;
|
uint8_t fog, dfog;
|
||||||
@@ -401,9 +396,9 @@ typedef struct voodoo_t
|
|||||||
int dst_stride;
|
int dst_stride;
|
||||||
} blt;
|
} blt;
|
||||||
|
|
||||||
rgb_t clutData[33];
|
rgbp_t clutData[33];
|
||||||
int clutData_dirty;
|
int clutData_dirty;
|
||||||
rgb_t clutData256[256];
|
rgbp_t clutData256[256];
|
||||||
uint32_t video_16to32[0x10000];
|
uint32_t video_16to32[0x10000];
|
||||||
|
|
||||||
uint8_t dirty_line[1024];
|
uint8_t dirty_line[1024];
|
||||||
|
|||||||
@@ -6,13 +6,11 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
#include <sys/mman.h>
|
# include <sys/mman.h>
|
||||||
#include <unistd.h>
|
# include <unistd.h>
|
||||||
#endif
|
#endif
|
||||||
#if WIN64
|
#if WIN64
|
||||||
#define BITMAP windows_BITMAP
|
# include <windows.h>
|
||||||
#include <windows.h>
|
|
||||||
#undef BITMAP
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <xmmintrin.h>
|
#include <xmmintrin.h>
|
||||||
|
|||||||
@@ -6,13 +6,11 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
#include <sys/mman.h>
|
# include <sys/mman.h>
|
||||||
#include <unistd.h>
|
# include <unistd.h>
|
||||||
#endif
|
#endif
|
||||||
#if defined WIN32 || defined _WIN32 || defined _WIN32
|
#if defined WIN32 || defined _WIN32 || defined _WIN32
|
||||||
#define BITMAP windows_BITMAP
|
# include <windows.h>
|
||||||
#include <windows.h>
|
|
||||||
#undef BITMAP
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <xmmintrin.h>
|
#include <xmmintrin.h>
|
||||||
|
|||||||
@@ -40,7 +40,7 @@
|
|||||||
* W = 3 bus clocks
|
* W = 3 bus clocks
|
||||||
* L = 4 bus clocks
|
* L = 4 bus clocks
|
||||||
*
|
*
|
||||||
* Version: @(#)video.c 1.0.9 2017/11/05
|
* Version: @(#)video.c 1.0.10 2017/11/18
|
||||||
*
|
*
|
||||||
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
||||||
* Miran Grca, <mgrca8@gmail.com>
|
* Miran Grca, <mgrca8@gmail.com>
|
||||||
@@ -73,9 +73,9 @@ enum {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
BITMAP *screen = NULL;
|
bitmap_t *screen = NULL,
|
||||||
BITMAP *buffer= NULL,
|
*buffer = NULL,
|
||||||
*buffer32= NULL;
|
*buffer32 = NULL;
|
||||||
uint8_t fontdat[256][8]; /* IBM CGA font */
|
uint8_t fontdat[256][8]; /* IBM CGA font */
|
||||||
uint8_t fontdatm[256][16]; /* IBM MDA font */
|
uint8_t fontdatm[256][16]; /* IBM MDA font */
|
||||||
uint8_t fontdatw[512][32]; /* Wyse700 font */
|
uint8_t fontdatw[512][32]; /* Wyse700 font */
|
||||||
@@ -414,7 +414,7 @@ calc_16to32(int c)
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
hline(BITMAP *b, int x1, int y, int x2, uint32_t col)
|
hline(bitmap_t *b, int x1, int y, int x2, uint32_t col)
|
||||||
{
|
{
|
||||||
if (y < 0 || y >= buffer->h)
|
if (y < 0 || y >= buffer->h)
|
||||||
return;
|
return;
|
||||||
@@ -427,19 +427,19 @@ hline(BITMAP *b, int x1, int y, int x2, uint32_t col)
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
blit(BITMAP *src, BITMAP *dst, int x1, int y1, int x2, int y2, int xs, int ys)
|
blit(bitmap_t *src, bitmap_t *dst, int x1, int y1, int x2, int y2, int xs, int ys)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
stretch_blit(BITMAP *src, BITMAP *dst, int x1, int y1, int xs1, int ys1, int x2, int y2, int xs2, int ys2)
|
stretch_blit(bitmap_t *src, bitmap_t *dst, int x1, int y1, int xs1, int ys1, int x2, int y2, int xs2, int ys2)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
rectfill(BITMAP *b, int x1, int y1, int x2, int y2, uint32_t col)
|
rectfill(bitmap_t *b, int x1, int y1, int x2, int y2, uint32_t col)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -451,15 +451,18 @@ set_palette(PALETTE p)
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
destroy_bitmap(BITMAP *b)
|
destroy_bitmap(bitmap_t *b)
|
||||||
{
|
{
|
||||||
|
if (b->dat != NULL)
|
||||||
|
free(b->dat);
|
||||||
|
free(b);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
BITMAP *
|
bitmap_t *
|
||||||
create_bitmap(int x, int y)
|
create_bitmap(int x, int y)
|
||||||
{
|
{
|
||||||
BITMAP *b = malloc(sizeof(BITMAP) + (y * sizeof(uint8_t *)));
|
bitmap_t *b = malloc(sizeof(bitmap_t) + (y * sizeof(uint8_t *)));
|
||||||
int c;
|
int c;
|
||||||
|
|
||||||
b->dat = malloc(x * y * 4);
|
b->dat = malloc(x * y * 4);
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
* Definitions for the video controller module.
|
* Definitions for the video controller module.
|
||||||
*
|
*
|
||||||
* Version: @(#)video.h 1.0.3 2017/11/05
|
* Version: @(#)video.h 1.0.4 2017/11/18
|
||||||
*
|
*
|
||||||
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
||||||
* Miran Grca, <mgrca8@gmail.com>
|
* Miran Grca, <mgrca8@gmail.com>
|
||||||
@@ -125,13 +125,13 @@ typedef struct {
|
|||||||
int w, h;
|
int w, h;
|
||||||
uint8_t *dat;
|
uint8_t *dat;
|
||||||
uint8_t *line[];
|
uint8_t *line[];
|
||||||
} BITMAP;
|
} bitmap_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
uint8_t r, g, b;
|
uint8_t r, g, b;
|
||||||
} RGB;
|
} rgb_t;
|
||||||
|
|
||||||
typedef RGB PALETTE[256];
|
typedef rgb_t PALETTE[256];
|
||||||
|
|
||||||
|
|
||||||
extern int gfx_present[GFX_MAX];
|
extern int gfx_present[GFX_MAX];
|
||||||
@@ -139,7 +139,7 @@ extern int egareads,
|
|||||||
egawrites;
|
egawrites;
|
||||||
extern int changeframecount;
|
extern int changeframecount;
|
||||||
|
|
||||||
extern BITMAP *screen,
|
extern bitmap_t *screen,
|
||||||
*buffer,
|
*buffer,
|
||||||
*buffer32;
|
*buffer32;
|
||||||
extern PALETTE cgapal,
|
extern PALETTE cgapal,
|
||||||
@@ -203,10 +203,10 @@ extern void video_blit_complete(void);
|
|||||||
extern void video_wait_for_blit(void);
|
extern void video_wait_for_blit(void);
|
||||||
extern void video_wait_for_buffer(void);
|
extern void video_wait_for_buffer(void);
|
||||||
|
|
||||||
extern BITMAP *create_bitmap(int w, int h);
|
extern bitmap_t *create_bitmap(int w, int h);
|
||||||
extern void destroy_bitmap(BITMAP *b);
|
extern void destroy_bitmap(bitmap_t *b);
|
||||||
extern void cgapal_rebuild(void);
|
extern void cgapal_rebuild(void);
|
||||||
extern void hline(BITMAP *b, int x1, int y, int x2, uint32_t col);
|
extern void hline(bitmap_t *b, int x1, int y, int x2, uint32_t col);
|
||||||
extern void updatewindowsize(int x, int y);
|
extern void updatewindowsize(int x, int y);
|
||||||
|
|
||||||
extern void video_init(void);
|
extern void video_init(void);
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
* Implement the VNC remote renderer with LibVNCServer.
|
* Implement the VNC remote renderer with LibVNCServer.
|
||||||
*
|
*
|
||||||
* Version: @(#)vnc.c 1.0.8 2017/10/25
|
* Version: @(#)vnc.c 1.0.9 2017/11/18
|
||||||
*
|
*
|
||||||
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||||
* Based on raw code by RichardG, <richardg867@gmail.com>
|
* Based on raw code by RichardG, <richardg867@gmail.com>
|
||||||
@@ -20,9 +20,7 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <wchar.h>
|
#include <wchar.h>
|
||||||
#define BITMAP MY_BITMAP
|
|
||||||
#include <rfb/rfb.h>
|
#include <rfb/rfb.h>
|
||||||
#undef BITMAP
|
|
||||||
#include "86box.h"
|
#include "86box.h"
|
||||||
#include "device.h"
|
#include "device.h"
|
||||||
#include "video/video.h"
|
#include "video/video.h"
|
||||||
|
|||||||
@@ -6,9 +6,9 @@
|
|||||||
*
|
*
|
||||||
* This file is part of the 86Box distribution.
|
* This file is part of the 86Box distribution.
|
||||||
*
|
*
|
||||||
* Windows resource script.
|
* Application resource script for Windows.
|
||||||
*
|
*
|
||||||
* Version: @(#)86Box.rc 1.0.19 2017/11/12
|
* Version: @(#)86Box.rc 1.0.20 2017/11/18
|
||||||
*
|
*
|
||||||
* Authors: Miran Grca, <mgrca8@gmail.com>
|
* Authors: Miran Grca, <mgrca8@gmail.com>
|
||||||
* Fred N. van Kempen, <decwiz@yahoo.com>
|
* Fred N. van Kempen, <decwiz@yahoo.com>
|
||||||
@@ -19,6 +19,7 @@
|
|||||||
#define IN_RESOURCE_H
|
#define IN_RESOURCE_H
|
||||||
#include "resource.h"
|
#include "resource.h"
|
||||||
#include "../86box.h"
|
#include "../86box.h"
|
||||||
|
#include "../plat.h"
|
||||||
#undef IN_RESOURCE_H
|
#undef IN_RESOURCE_H
|
||||||
|
|
||||||
#define APSTUDIO_READONLY_SYMBOLS
|
#define APSTUDIO_READONLY_SYMBOLS
|
||||||
|
|||||||
@@ -8,17 +8,12 @@
|
|||||||
#
|
#
|
||||||
# Makefile for Win32 (MinGW32) environment.
|
# Makefile for Win32 (MinGW32) environment.
|
||||||
#
|
#
|
||||||
# Version: @(#)Makefile.mingw 1.0.77 2017/11/17
|
# Version: @(#)Makefile.mingw 1.0.78 2017/11/18
|
||||||
#
|
#
|
||||||
# Authors: Miran Grca, <mgrca8@gmail.com>
|
# Authors: Miran Grca, <mgrca8@gmail.com>
|
||||||
# Fred N. van Kempen, <decwiz@yahoo.com>
|
# Fred N. van Kempen, <decwiz@yahoo.com>
|
||||||
#
|
#
|
||||||
|
|
||||||
# Name of the executable.
|
|
||||||
ifndef PROG
|
|
||||||
PROG := 86Box
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Various compile-time options.
|
# Various compile-time options.
|
||||||
ifndef STUFF
|
ifndef STUFF
|
||||||
STUFF :=
|
STUFF :=
|
||||||
@@ -45,11 +40,17 @@ endif
|
|||||||
ifndef RELEASE
|
ifndef RELEASE
|
||||||
RELEASE := n
|
RELEASE := n
|
||||||
endif
|
endif
|
||||||
|
ifndef X64
|
||||||
|
X64 := n
|
||||||
|
endif
|
||||||
|
ifndef WX
|
||||||
|
WX := n
|
||||||
|
endif
|
||||||
ifndef USB
|
ifndef USB
|
||||||
USB := n
|
USB := n
|
||||||
endif
|
endif
|
||||||
ifndef VNC
|
ifndef VNC
|
||||||
VNC := n
|
VNC := y
|
||||||
endif
|
endif
|
||||||
ifndef RDP
|
ifndef RDP
|
||||||
RDP := n
|
RDP := n
|
||||||
@@ -84,8 +85,15 @@ endif
|
|||||||
ifndef DYNAREC
|
ifndef DYNAREC
|
||||||
DYNAREC := y
|
DYNAREC := y
|
||||||
endif
|
endif
|
||||||
ifndef X64
|
|
||||||
X64 := n
|
|
||||||
|
# Name of the executable.
|
||||||
|
ifndef PROG
|
||||||
|
ifneq ($(WX), n)
|
||||||
|
PROG := Wx86Box
|
||||||
|
else
|
||||||
|
PROG := 86Box
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(DEV_BUILD), y)
|
ifeq ($(DEV_BUILD), y)
|
||||||
@@ -94,7 +102,38 @@ CIRRUS := y
|
|||||||
NE1000 := y
|
NE1000 := y
|
||||||
NV_RIVA := y
|
NV_RIVA := y
|
||||||
PAS16 := y
|
PAS16 := y
|
||||||
VNC := y
|
endif
|
||||||
|
|
||||||
|
# WxWidgets basic info. Extract using the config program.
|
||||||
|
ifneq ($(WX), n)
|
||||||
|
EXPATH += wx
|
||||||
|
WX_CONFIG := wx-config.exe
|
||||||
|
ifeq ($(WX), y)
|
||||||
|
WX_PATH := C:/MinGW32/WxWidgets
|
||||||
|
WX_FLAGS := -I$(WX_PATH)/lib/wx/include/msw-unicode-3.0 \
|
||||||
|
-I$(WX_PATH)/include/wx-3.0 \
|
||||||
|
-D__WXMSW__ -DWX_PRECOMP -D_FILE_OFFSET_BITS=64 -pthread
|
||||||
|
# -lwx_mswu_gl-3.0 -lwxtiff-3.0 -llzma
|
||||||
|
WX_LIBS := -mwindows -mthreads -L$(WX_PATH)/lib \
|
||||||
|
-lwx_mswu-3.0.dll \
|
||||||
|
-lrpcrt4 -loleaut32 -lole32 -luuid \
|
||||||
|
-lwinspool -lwinmm -lshell32 -lcomctl32 \
|
||||||
|
-lcomdlg32 -ladvapi32 -lwsock32 -lgdi32
|
||||||
|
endif
|
||||||
|
ifeq ($(WX), static)
|
||||||
|
WX_PATH := C:/MinGW32/WxWidgets
|
||||||
|
WX_FLAGS := -I$(WX_PATH)/lib/wx/include/msw-unicode-3.0 \
|
||||||
|
-I$(WX_PATH)/include/wx-3.0 \
|
||||||
|
-D__WXMSW__ -DWX_PRECOMP -D_FILE_OFFSET_BITS=64 -pthread
|
||||||
|
# -lwx_mswu_gl-3.0 -lwxtiff-3.0 -llzma
|
||||||
|
WX_LIBS := -mwindows -mthreads -L$(WX_PATH)/lib \
|
||||||
|
-lwx_mswu-3.0 -lwxscintilla-3.0 \
|
||||||
|
-lwxjpeg-3.0 -lwxpng-3.0 -lwxzlib-3.0 \
|
||||||
|
-lwxregexu-3.0 -lwxexpat-3.0 \
|
||||||
|
-lrpcrt4 -loleaut32 -lole32 -luuid \
|
||||||
|
-lwinspool -lwinmm -lshell32 -lcomctl32 \
|
||||||
|
-lcomdlg32 -ladvapi32 -lwsock32 -lgdi32
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
@@ -159,18 +198,16 @@ else
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
AFLAGS := -msse -msse2 -mfpmath=sse
|
AFLAGS := -msse -msse2 -mfpmath=sse
|
||||||
CFLAGS := $(OPTS) $(DFLAGS) $(COPTIM) $(AOPTIM) $(AFLAGS) \
|
|
||||||
-fomit-frame-pointer -mstackrealign -Wall
|
|
||||||
RFLAGS := --input-format=rc -O coff
|
RFLAGS := --input-format=rc -O coff
|
||||||
ifeq ($(CRASHDUMP), y)
|
ifeq ($(CRASHDUMP), y)
|
||||||
CFLAGS += -DUSE_CRASHDUMP
|
OPTS += -DUSE_CRASHDUMP
|
||||||
endif
|
endif
|
||||||
ifeq ($(RELEASE), y)
|
ifeq ($(RELEASE), y)
|
||||||
CFLAGS += -DRELEASE_BUILD
|
OPTS += -DRELEASE_BUILD
|
||||||
RFLAGS += -DRELEASE_BUILD
|
RFLAGS += -DRELEASE_BUILD
|
||||||
endif
|
endif
|
||||||
ifeq ($(VRAMDUMP), y)
|
ifeq ($(VRAMDUMP), y)
|
||||||
CFLAGS += -DENABLE_VRAM_DUMP
|
OPTS += -DENABLE_VRAM_DUMP
|
||||||
RFLAGS += -DENABLE_VRAM_DUMP
|
RFLAGS += -DENABLE_VRAM_DUMP
|
||||||
endif
|
endif
|
||||||
ifeq ($(X64), y)
|
ifeq ($(X64), y)
|
||||||
@@ -186,7 +223,7 @@ endif
|
|||||||
|
|
||||||
# Optional modules.
|
# Optional modules.
|
||||||
ifeq ($(DYNAREC), y)
|
ifeq ($(DYNAREC), y)
|
||||||
CFLAGS += -DUSE_DYNAREC
|
OPTS += -DUSE_DYNAREC
|
||||||
RFLAGS += -DUSE_DYNAREC
|
RFLAGS += -DUSE_DYNAREC
|
||||||
DYNARECOBJ := 386_dynarec_ops.o \
|
DYNARECOBJ := 386_dynarec_ops.o \
|
||||||
codegen.o \
|
codegen.o \
|
||||||
@@ -196,16 +233,26 @@ DYNARECOBJ := 386_dynarec_ops.o \
|
|||||||
codegen_timing_winchip.o $(PLATCG)
|
codegen_timing_winchip.o $(PLATCG)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifneq ($(WX), n)
|
||||||
|
OPTS += -DUSE_WX $(WX_FLAGS)
|
||||||
|
LIBS += $(WX_LIBS)
|
||||||
|
UIOBJ := wx_main.o wx_ui.o wx_stbar.o wx_render.o
|
||||||
|
else
|
||||||
|
UIOBJ := win_ui.o win_ddraw.o win_d3d.o win_png.o \
|
||||||
|
win_dialog.o win_about.o win_status.o win_stbar.o \
|
||||||
|
win_settings.o win_devconf.o win_jsconf.o
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq ($(OPENAL), y)
|
ifeq ($(OPENAL), y)
|
||||||
CFLAGS += -DUSE_OPENAL
|
OPTS += -DUSE_OPENAL
|
||||||
endif
|
endif
|
||||||
ifeq ($(FLUIDSYNTH), y)
|
ifeq ($(FLUIDSYNTH), y)
|
||||||
CFLAGS += -DUSE_FLUIDSYNTH
|
OPTS += -DUSE_FLUIDSYNTH
|
||||||
FSYNTHOBJ := midi_fluidsynth.o
|
FSYNTHOBJ := midi_fluidsynth.o
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(MUNT), y)
|
ifeq ($(MUNT), y)
|
||||||
CFLAGS += -DUSE_MUNT
|
OPTS += -DUSE_MUNT
|
||||||
MUNTOBJ := midi_mt32.o \
|
MUNTOBJ := midi_mt32.o \
|
||||||
Analog.o BReverbModel.o File.o FileStream.o LA32Ramp.o \
|
Analog.o BReverbModel.o File.o FileStream.o LA32Ramp.o \
|
||||||
LA32FloatWaveGenerator.o LA32WaveGenerator.o \
|
LA32FloatWaveGenerator.o LA32WaveGenerator.o \
|
||||||
@@ -215,10 +262,10 @@ MUNTOBJ := midi_mt32.o \
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(VNC), y)
|
ifeq ($(VNC), y)
|
||||||
CFLAGS += -DUSE_VNC
|
OPTS += -DUSE_VNC
|
||||||
RFLAGS += -DUSE_VNC
|
RFLAGS += -DUSE_VNC
|
||||||
ifneq ($(VNC_PATH), )
|
ifneq ($(VNC_PATH), )
|
||||||
CFLAGS += -I$(VNC_PATH)\INCLUDE
|
OPTS += -I$(VNC_PATH)\INCLUDE
|
||||||
VNCLIB := -L$(VNC_PATH)\LIB
|
VNCLIB := -L$(VNC_PATH)\LIB
|
||||||
endif
|
endif
|
||||||
VNCLIB += -lvncserver
|
VNCLIB += -lvncserver
|
||||||
@@ -226,10 +273,10 @@ VNCOBJ := vnc.o vnc_keymap.o
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(RDP), y)
|
ifeq ($(RDP), y)
|
||||||
CFLAGS += -DUSE_RDP
|
OPTS += -DUSE_RDP
|
||||||
RFLAGS += -DUSE_RDP
|
RFLAGS += -DUSE_RDP
|
||||||
ifneq ($(RDP_PATH), )
|
ifneq ($(RDP_PATH), )
|
||||||
CFLAGS += -I$(RDP_PATH)\INCLUDE
|
OPTS += -I$(RDP_PATH)\INCLUDE
|
||||||
RDPLIB := -L$(RDP_PATH)\LIB
|
RDPLIB := -L$(RDP_PATH)\LIB
|
||||||
endif
|
endif
|
||||||
RDPLIB += -lrdp
|
RDPLIB += -lrdp
|
||||||
@@ -238,25 +285,25 @@ endif
|
|||||||
|
|
||||||
# Options for the DEV branch.
|
# Options for the DEV branch.
|
||||||
ifeq ($(DEV_BRANCH), y)
|
ifeq ($(DEV_BRANCH), y)
|
||||||
CFLAGS += -DDEV_BRANCH
|
OPTS += -DDEV_BRANCH
|
||||||
DEVBROBJ :=
|
DEVBROBJ :=
|
||||||
|
|
||||||
ifeq ($(CIRRUS), y)
|
ifeq ($(CIRRUS), y)
|
||||||
CFLAGS += -DUSE_CIRRUS
|
OPTS += -DUSE_CIRRUS
|
||||||
DEVBROBJ += vid_cl_gd.o vid_cl_gd_blit.o vid_cl_ramdac.o
|
DEVBROBJ += vid_cl_gd.o vid_cl_gd_blit.o vid_cl_ramdac.o
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(NE1000), y)
|
ifeq ($(NE1000), y)
|
||||||
CFLAGS += -DUSE_NE1000
|
OPTS += -DUSE_NE1000
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(NV_RIVA), y)
|
ifeq ($(NV_RIVA), y)
|
||||||
CFLAGS += -DUSE_RIVA
|
OPTS += -DUSE_RIVA
|
||||||
DEVBROBJ += vid_nv_riva128.o
|
DEVBROBJ += vid_nv_riva128.o
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(PAS16), y)
|
ifeq ($(PAS16), y)
|
||||||
CFLAGS += -DUSE_PAS16
|
OPTS += -DUSE_PAS16
|
||||||
DEVBROBJ += snd_pas16.o
|
DEVBROBJ += snd_pas16.o
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -272,41 +319,14 @@ EUROPC := m_europc.o
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
ifeq ($(WX), y)
|
|
||||||
CFLAGS += -I$(WXLIB)/wx/include/msw-unicode-3.0 -I$(WXINC) \
|
|
||||||
-D__WXMSW__ -DWX_PRECOMP -D_FILE_OFFSET_BITS=64
|
|
||||||
# -lwx_mswu_gl-3.0.dll -llzma
|
|
||||||
WXLIBS := -mwindows -mthreads \
|
|
||||||
-L$(WXLIB) \
|
|
||||||
-lwx_mswu-3.0.dll \
|
|
||||||
-lrpcrt4 -loleaut32 -lole32 -luuid \
|
|
||||||
-lwinspool -lwinmm -lshell32 -lcomctl32 \
|
|
||||||
-lcomdlg32 -ladvapi32 -lwsock32 -lgdi32
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(WX), static)
|
|
||||||
CFLAGS += -I$(WXLIB)/wx/include/msw-unicode-3.0 -I$(WXINC) \
|
|
||||||
-D__WXMSW__ -DWX_PRECOMP -D_FILE_OFFSET_BITS=64
|
|
||||||
# -lwx_mswu_gl-3.0 -lwxtiff-3.0 -llzma
|
|
||||||
WXLIBS := -mwindows -mthreads \
|
|
||||||
-L$(WXLIB) \
|
|
||||||
-lwx_mswu-3.0 -lwxscintilla-3.0 \
|
|
||||||
-lwxjpeg-3.0 -lwxpng-3.0 -lwxzlib-3.0 \
|
|
||||||
-lwxregexu-3.0 -lwxexpat-3.0 \
|
|
||||||
-lrpcrt4 -loleaut32 -lole32 -luuid \
|
|
||||||
-lwinspool -lwinmm -lshell32 -lcomctl32 \
|
|
||||||
-lcomdlg32 -ladvapi32 -lwsock32 -lgdi32
|
|
||||||
endif
|
|
||||||
|
|
||||||
|
|
||||||
# Final versions of the toolchain flags.
|
# Final versions of the toolchain flags.
|
||||||
#CFLAGS := $(WX_FLAGS) $(OPTS) $(DFLAGS) $(COPTIM) $(AOPTIM) \
|
CFLAGS := $(WX_FLAGS) $(OPTS) $(DFLAGS) $(COPTIM) $(AOPTIM) \
|
||||||
# $(AFLAGS) -fomit-frame-pointer -mstackrealign -Wall
|
$(AFLAGS) -fomit-frame-pointer -mstackrealign -Wall
|
||||||
#CXXFLAGS := $(WX_FLAGS) $(OPTS) $(DFLAGS) $(AOPTIM) \
|
CXXFLAGS := $(WX_FLAGS) $(OPTS) $(DFLAGS) $(COPTIM) $(AOPTIM) \
|
||||||
# $(AFLAGS) -fno-strict-aliasing -fvisibility=hidden \
|
$(AFLAGS) -fno-strict-aliasing -fvisibility=hidden \
|
||||||
# -Wall -Wundef -fvisibility-inlines-hidden \
|
-Wall -Wundef -fvisibility-inlines-hidden \
|
||||||
# -Wunused-parameter -Wno-ctor-dtor-privacy \
|
-Wunused-parameter -Wno-ctor-dtor-privacy \
|
||||||
# -Woverloaded-virtual
|
-Woverloaded-virtual
|
||||||
|
|
||||||
|
|
||||||
#########################################################################
|
#########################################################################
|
||||||
@@ -424,17 +444,14 @@ VIDOBJ := video.o \
|
|||||||
vid_voodoo.o
|
vid_voodoo.o
|
||||||
|
|
||||||
PLATOBJ := win.o \
|
PLATOBJ := win.o \
|
||||||
win_crashdump.o win_ddraw.o win_d3d.o win_png.o \
|
win_crashdump.o win_dynld.o win_thread.o $(WSERIAL) \
|
||||||
win_dynld.o win_thread.o $(WSERIAL) win_video.o \
|
|
||||||
win_cdrom.o win_cdrom_ioctl.o win_keyboard.o \
|
win_cdrom.o win_cdrom_ioctl.o win_keyboard.o \
|
||||||
win_mouse.o win_joystick.o win_midi.o \
|
win_mouse.o win_joystick.o win_midi.o win_video.o
|
||||||
win_dialog.o win_about.o win_status.o win_stbar.o \
|
|
||||||
win_settings.o win_deviceconfig.o win_joystickconfig.o
|
|
||||||
|
|
||||||
OBJ := $(MAINOBJ) $(CPUOBJ) $(MCHOBJ) $(DEVOBJ) \
|
OBJ := $(MAINOBJ) $(CPUOBJ) $(MCHOBJ) $(DEVOBJ) \
|
||||||
$(FDDOBJ) $(CDROMOBJ) $(HDDOBJ) \
|
$(FDDOBJ) $(CDROMOBJ) $(HDDOBJ) \
|
||||||
$(USBOBJ) $(NETOBJ) $(SCSIOBJ) $(SNDOBJ) $(VIDOBJ) \
|
$(USBOBJ) $(NETOBJ) $(SCSIOBJ) $(SNDOBJ) $(VIDOBJ) \
|
||||||
$(PLATOBJ) $(DEVBROBJ)
|
$(PLATOBJ) $(UIOBJ) $(DEVBROBJ)
|
||||||
ifdef EXOBJ
|
ifdef EXOBJ
|
||||||
OBJ += $(EXOBJ)
|
OBJ += $(EXOBJ)
|
||||||
endif
|
endif
|
||||||
@@ -451,6 +468,9 @@ endif
|
|||||||
ifeq ($(RDP), y)
|
ifeq ($(RDP), y)
|
||||||
LIBS += $(RDPLIB)
|
LIBS += $(RDPLIB)
|
||||||
endif
|
endif
|
||||||
|
ifneq ($(WX), n)
|
||||||
|
LIBS += $(WX_LIBS) -lz -lm
|
||||||
|
endif
|
||||||
LIBS += -lkernel32 -lwsock32 -liphlpapi -lpsapi
|
LIBS += -lkernel32 -lwsock32 -liphlpapi -lpsapi
|
||||||
LIBS += -lpthread -static -lstdc++ -lgcc
|
LIBS += -lpthread -static -lstdc++ -lgcc
|
||||||
LIBS += -Wl,--large-address-aware
|
LIBS += -Wl,--large-address-aware
|
||||||
@@ -464,11 +484,11 @@ ifeq ($(AUTODEP), y)
|
|||||||
|
|
||||||
%.o: %.cc
|
%.o: %.cc
|
||||||
@echo $<
|
@echo $<
|
||||||
@$(CPP) $(CFLAGS) $(DEPS) -c $<
|
@$(CPP) $(CXXFLAGS) $(DEPS) -c $<
|
||||||
|
|
||||||
%.o: %.cpp
|
%.o: %.cpp
|
||||||
@echo $<
|
@echo $<
|
||||||
@$(CPP) $(CFLAGS) $(DEPS) -c $<
|
@$(CPP) $(CXXFLAGS) $(DEPS) -c $<
|
||||||
else
|
else
|
||||||
%.o: %.c
|
%.o: %.c
|
||||||
@echo $<
|
@echo $<
|
||||||
@@ -476,11 +496,11 @@ else
|
|||||||
|
|
||||||
%.o: %.cc
|
%.o: %.cc
|
||||||
@echo $<
|
@echo $<
|
||||||
@$(CPP) $(CFLAGS) -c $<
|
@$(CPP) $(CXXFLAGS) -c $<
|
||||||
|
|
||||||
%.o: %.cpp
|
%.o: %.cpp
|
||||||
@echo $<
|
@echo $<
|
||||||
@$(CPP) $(CFLAGS) -c $<
|
@$(CPP) $(CXXFLAGS) -c $<
|
||||||
|
|
||||||
%.d: %.c $(wildcard $*.d)
|
%.d: %.c $(wildcard $*.d)
|
||||||
@echo $<
|
@echo $<
|
||||||
@@ -488,11 +508,11 @@ else
|
|||||||
|
|
||||||
%.d: %.cc $(wildcard $*.d)
|
%.d: %.cc $(wildcard $*.d)
|
||||||
@echo $<
|
@echo $<
|
||||||
@$(CPP) $(CFLAGS) $(DEPS) -E $< >NUL
|
@$(CPP) $(CXXFLAGS) $(DEPS) -E $< >NUL
|
||||||
|
|
||||||
%.d: %.cpp $(wildcard $*.d)
|
%.d: %.cpp $(wildcard $*.d)
|
||||||
@echo $<
|
@echo $<
|
||||||
@$(CPP) $(CFLAGS) $(DEPS) -E $< >NUL
|
@$(CPP) $(CXXFLAGS) $(DEPS) -E $< >NUL
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -8,9 +8,7 @@
|
|||||||
*
|
*
|
||||||
* Windows resource defines.
|
* Windows resource defines.
|
||||||
*
|
*
|
||||||
* NOTE: FIXME: Strings 2176 and 2193 are same.
|
* Version: @(#)resource.h 1.0.14 2017/11/18
|
||||||
*
|
|
||||||
* Version: @(#)resource.h 1.0.13 2017/11/11
|
|
||||||
*
|
*
|
||||||
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
||||||
* Miran Grca, <mgrca8@gmail.com>
|
* Miran Grca, <mgrca8@gmail.com>
|
||||||
@@ -202,215 +200,6 @@
|
|||||||
#define IDC_STATUS 1282
|
#define IDC_STATUS 1282
|
||||||
|
|
||||||
|
|
||||||
/* String IDs. */
|
|
||||||
#define IDS_STRINGS 2048 // "86Box"
|
|
||||||
#define IDS_2049 2049 // "86Box Error"
|
|
||||||
#define IDS_2050 2050 // "86Box Fatal Error"
|
|
||||||
#define IDS_2051 2051 // "This will reset 86Box.."
|
|
||||||
#define IDS_2052 2052 // "DirectDraw Screenshot Error"
|
|
||||||
#define IDS_2053 2053 // "Invalid number of sectors.."
|
|
||||||
#define IDS_2054 2054 // "Invalid number of heads.."
|
|
||||||
#define IDS_2055 2055 // "Invalid number of cylinders.."
|
|
||||||
#define IDS_2056 2056 // "No usable ROM images found!"
|
|
||||||
#define IDS_2057 2057 // "(empty)"
|
|
||||||
#define IDS_2058 2058 // "(host drive %c:)"
|
|
||||||
#define IDS_2059 2059 // "(Turbo)"
|
|
||||||
#define IDS_2060 2060 // "On"
|
|
||||||
#define IDS_2061 2061 // "Off"
|
|
||||||
#define IDS_2062 2062 // "86Box was unable to find any.."
|
|
||||||
#define IDS_2063 2063 // "Configured ROM set not avai.."
|
|
||||||
#define IDS_2064 2064 // "Configured video BIOS not.."
|
|
||||||
#define IDS_2065 2065 // "Machine"
|
|
||||||
#define IDS_2066 2066 // "Display"
|
|
||||||
#define IDS_2067 2067 // "Input devices"
|
|
||||||
#define IDS_2068 2068 // "Sound"
|
|
||||||
#define IDS_2069 2069 // "Network"
|
|
||||||
#define IDS_2070 2070 // "Ports (COM & LPT)"
|
|
||||||
#define IDS_2071 2071 // "Other peripherals"
|
|
||||||
#define IDS_2072 2072 // "Hard disks"
|
|
||||||
#define IDS_2073 2073 // "Removable devices"
|
|
||||||
#define IDS_2074 2074 // "Use CTRL+ALT+PAGE DOWN.."
|
|
||||||
#define IDS_2075 2075 // "CD-ROM images (*.ISO;*.CU.."
|
|
||||||
#define IDS_2076 2076 // "Host CD/DVD Drive (%c:)"
|
|
||||||
#define IDS_2077 2077 // "Click to capture mouse"
|
|
||||||
#define IDS_2078 2078 // "Press F12-F8 to release mouse"
|
|
||||||
#define IDS_2079 2079 // "Press F12-F8 or middle button.."
|
|
||||||
#define IDS_2080 2080 // "Drive"
|
|
||||||
#define IDS_2081 2081 // "Location"
|
|
||||||
#define IDS_2082 2082 // "Bus"
|
|
||||||
#define IDS_2083 2083 // "File"
|
|
||||||
#define IDS_2084 2084 // "C"
|
|
||||||
#define IDS_2085 2085 // "H"
|
|
||||||
#define IDS_2086 2086 // "S"
|
|
||||||
#define IDS_2087 2087 // "MB"
|
|
||||||
#define IDS_2088 2088 // "Unable to create bitmap file: %s"
|
|
||||||
#define IDS_2089 2089 // "Enabled"
|
|
||||||
#define IDS_2090 2090 // "Mute"
|
|
||||||
#define IDS_2091 2091 // "Type"
|
|
||||||
#define IDS_2092 2092 // "Bus"
|
|
||||||
#define IDS_2093 2093 // "DMA"
|
|
||||||
#define IDS_2094 2094 // "KB"
|
|
||||||
#define IDS_2095 2095 // "Neither DirectDraw nor Dire.."
|
|
||||||
#define IDS_2096 2096 // "Slave"
|
|
||||||
#define IDS_2097 2097 // "SCSI (ID %s, LUN %s)"
|
|
||||||
#define IDS_2098 2098 // "Adapter Type"
|
|
||||||
#define IDS_2099 2099 // "Base Address"
|
|
||||||
#define IDS_2100 2100 // "IRQ"
|
|
||||||
#define IDS_2101 2101 // "8-bit DMA"
|
|
||||||
#define IDS_2102 2102 // "16-bit DMA"
|
|
||||||
#define IDS_2103 2103 // "BIOS"
|
|
||||||
#define IDS_2104 2104 // "Network Type"
|
|
||||||
#define IDS_2105 2105 // "Surround Module"
|
|
||||||
#define IDS_2106 2106 // "MPU-401 Base Address"
|
|
||||||
#define IDS_2107 2107 // "PCAP not found.."
|
|
||||||
#define IDS_2108 2108 // "On-board RAM"
|
|
||||||
#define IDS_2109 2109 // "Memory Size"
|
|
||||||
#define IDS_2110 2110 // "Display Type"
|
|
||||||
#define IDS_2111 2111 // "RGB"
|
|
||||||
#define IDS_2112 2112 // "Composite"
|
|
||||||
#define IDS_2113 2113 // "Composite Type"
|
|
||||||
#define IDS_2114 2114 // "Old"
|
|
||||||
#define IDS_2115 2115 // "New"
|
|
||||||
#define IDS_2116 2116 // "RGB Type"
|
|
||||||
#define IDS_2117 2117 // "Color"
|
|
||||||
#define IDS_2118 2118 // "Monochrome (Green)"
|
|
||||||
#define IDS_2119 2119 // "Monochrome (Amber)"
|
|
||||||
#define IDS_2120 2120 // "Monochrome (Gray)"
|
|
||||||
#define IDS_2121 2121 // "Color (no brown)"
|
|
||||||
#define IDS_2122 2122 // "Monochrome (Default)"
|
|
||||||
#define IDS_2123 2123 // "Snow Emulation"
|
|
||||||
#define IDS_2124 2124 // "Bilinear Filtering"
|
|
||||||
#define IDS_2125 2125 // "Dithering"
|
|
||||||
#define IDS_2126 2126 // "Framebuffer Memory Size"
|
|
||||||
#define IDS_2127 2127 // "Texture Memory Size"
|
|
||||||
#define IDS_2128 2128 // "Screen Filter"
|
|
||||||
#define IDS_2129 2129 // "Render Threads"
|
|
||||||
#define IDS_2130 2130 // "Recompiler"
|
|
||||||
#define IDS_2131 2131 // "System Default"
|
|
||||||
#define IDS_2132 2132 // "%i Wait state(s)"
|
|
||||||
#define IDS_2133 2133 // "8-bit"
|
|
||||||
#define IDS_2134 2134 // "Slow 16-bit"
|
|
||||||
#define IDS_2135 2135 // "Fast 16-bit"
|
|
||||||
#define IDS_2136 2136 // "Slow VLB/PCI"
|
|
||||||
#define IDS_2137 2137 // "Mid VLB/PCI"
|
|
||||||
#define IDS_2138 2138 // "Fast VLB/PCI"
|
|
||||||
#define IDS_2139 2139 // "PCap failed to set up.."
|
|
||||||
#define IDS_2140 2140 // "No PCap devices found"
|
|
||||||
#define IDS_2141 2141 // "Invalid PCap device"
|
|
||||||
#define IDS_2142 2142 // "&Notify disk change"
|
|
||||||
#define IDS_2143 2143 // "Type"
|
|
||||||
#define IDS_2144 2144 // "Standard 2-button joystick(s)"
|
|
||||||
#define IDS_2145 2145 // "Standard 4-button joystick"
|
|
||||||
#define IDS_2146 2146 // "Standard 6-button joystick"
|
|
||||||
#define IDS_2147 2147 // "Standard 8-button joystick"
|
|
||||||
#define IDS_2148 2148 // "CH Flightstick Pro"
|
|
||||||
#define IDS_2149 2149 // "Microsoft SideWinder Pad"
|
|
||||||
#define IDS_2150 2150 // "Thrustmaster Flight Cont.."
|
|
||||||
#define IDS_2151 2151 // "Disabled"
|
|
||||||
#define IDS_2152 2152 // "None"
|
|
||||||
#define IDS_2153 2153 // "Unable to load Accelerators"
|
|
||||||
#define IDS_2154 2154 // "Unable to register Raw Input"
|
|
||||||
#define IDS_2155 2155 // "IRQ %i"
|
|
||||||
#define IDS_2156 2156 // "%" PRIu64
|
|
||||||
#define IDS_2157 2157 // "%" PRIu64 " MB (CHS: %".."
|
|
||||||
#define IDS_2158 2158 // "Floppy %i (%s): %ls"
|
|
||||||
#define IDS_2159 2159 // "All floppy images (*.0??;*.."
|
|
||||||
#define IDS_2160 2160 // "Configuration files (*.CF.."
|
|
||||||
#define IDS_2161 2161 // "&New image..."
|
|
||||||
#define IDS_2162 2162 // "Existing image..."
|
|
||||||
#define IDS_2163 2163 // "Existing image (&Write-pr..."
|
|
||||||
#define IDS_2164 2164 // "E&ject"
|
|
||||||
#define IDS_2165 2165 // "&Mute"
|
|
||||||
#define IDS_2166 2166 // "E&mpty"
|
|
||||||
#define IDS_2167 2167 // "&Reload previous image"
|
|
||||||
#define IDS_2168 2168 // "&Image..."
|
|
||||||
#define IDS_2169 2169 // "Image (&Write-protected)..."
|
|
||||||
#define IDS_2170 2170 // "Check BPB"
|
|
||||||
#define IDS_2171 2171 // "Unable to initialize Flui.."
|
|
||||||
|
|
||||||
#define IDS_3072 3072 // "None"
|
|
||||||
#define IDS_3073 3073 // "Internal"
|
|
||||||
#define IDS_3074 3074 // "[Bus] Logitech Bus Mouse"
|
|
||||||
#define IDS_3075 3075 // "[Bus] Microsoft Bus Mous.."
|
|
||||||
#define IDS_3076 3076 // "[Serial] Mouse Systems Mouse"
|
|
||||||
#define IDS_3077 3077 // "[Serial] Microsoft 2-button Mouse"
|
|
||||||
#define IDS_3078 3078 // "[Serial] Logitech 3-button Mouse"
|
|
||||||
#define IDS_3079 3079 // "[Serial] Microsoft Wheel Mouse"
|
|
||||||
#define IDS_3080 3080 // "[PS/2] 2-button Mouse"
|
|
||||||
#define IDS_3081 3081 // "[PS/2] Microsoft Intellimouse"
|
|
||||||
#define IDS_3082 3082 // "[Proprietary] Amstrad Mouse"
|
|
||||||
#define IDS_3083 3083 // "[Proprietary] Olivetti M24.."
|
|
||||||
|
|
||||||
#define IDS_4096 4096 // "Hard disk (%s)"
|
|
||||||
#define IDS_4097 4097 // "%01i:%01i"
|
|
||||||
#define IDS_4098 4098 // "%i"
|
|
||||||
#define IDS_4099 4099 // "Disabled"
|
|
||||||
#define IDS_4100 4100 // "Custom..."
|
|
||||||
#define IDS_4101 4101 // "Custom (large)..."
|
|
||||||
#define IDS_4102 4102 // "Add New Hard Disk"
|
|
||||||
#define IDS_4103 4103 // "Add Existing Hard Disk"
|
|
||||||
#define IDS_4104 4104 // "Attempting to create a HDI ima.."
|
|
||||||
#define IDS_4105 4105 // "Attempting to create a spurio.."
|
|
||||||
#define IDS_4106 4106 // "Hard disk images (*.HDI;*.HD.."
|
|
||||||
#define IDS_4107 4107 // "Unable to open the file for read"
|
|
||||||
#define IDS_4108 4108 // "Unable to open the file for write"
|
|
||||||
#define IDS_4109 4109 // "HDI or HDX image with a sect.."
|
|
||||||
#define IDS_4110 4110 // "USB is not yet supported"
|
|
||||||
#define IDS_4111 4111 // "This image exists and will be.."
|
|
||||||
#define IDS_4112 4112 // "Please enter a valid file name"
|
|
||||||
#define IDS_4113 4113 // "Remember to partition and fo.."
|
|
||||||
#define IDS_4114 4114 // "MFM/RLL or ESDI CD-ROM driv.."
|
|
||||||
#define IDS_4115 4115 // "Removable disk %i (SCSI): %ls"
|
|
||||||
|
|
||||||
#define IDS_4352 4352 // "MFM/RLL"
|
|
||||||
#define IDS_4353 4353 // "XT IDE"
|
|
||||||
#define IDS_4354 4354 // "ESDI"
|
|
||||||
#define IDS_4355 4355 // "IDE (PIO-only)"
|
|
||||||
#define IDS_4356 4356 // "IDE (PIO+DMA)"
|
|
||||||
#define IDS_4357 4357 // "SCSI"
|
|
||||||
#define IDS_4358 4358 // "SCSI (removable)"
|
|
||||||
|
|
||||||
#define IDS_4608 4608 // "MFM/RLL (%01i:%01i)"
|
|
||||||
#define IDS_4609 4609 // "XT IDE (%01i:%01i)"
|
|
||||||
#define IDS_4610 4610 // "ESDI (%01i:%01i)"
|
|
||||||
#define IDS_4611 4611 // "IDE (PIO-only) (%01i:%01i)"
|
|
||||||
#define IDS_4612 4612 // "IDE (PIO+DMA) (%01i:%01i)"
|
|
||||||
#define IDS_4613 4613 // "SCSI (%02i:%02i)"
|
|
||||||
#define IDS_4614 4614 // "SCSI (removable) (%02i:%02i)"
|
|
||||||
|
|
||||||
#define IDS_5120 5120 // "CD-ROM %i (%s): %s"
|
|
||||||
|
|
||||||
#define IDS_5376 5376 // "Disabled"
|
|
||||||
#define IDS_5377 5377 // "<Reserved>"
|
|
||||||
#define IDS_5378 5378 // "<Reserved>"
|
|
||||||
#define IDS_5379 5379 // "<Reserved>"
|
|
||||||
#define IDS_5380 5380 // "ATAPI (PIO-only)"
|
|
||||||
#define IDS_5381 5381 // "ATAPI (PIO and DMA)"
|
|
||||||
#define IDS_5382 5382 // "SCSI"
|
|
||||||
|
|
||||||
#define IDS_5632 5632 // "Disabled"
|
|
||||||
#define IDS_5633 5633 // "<Reserved>"
|
|
||||||
#define IDS_5634 5634 // "<Reserved>"
|
|
||||||
#define IDS_5635 5635 // "<Reserved>"
|
|
||||||
#define IDS_5636 5636 // "ATAPI (PIO-only) (%01i:%01i)"
|
|
||||||
#define IDS_5637 5637 // "ATAPI (PIO and DMA) (%01i:%01i)"
|
|
||||||
#define IDS_5638 5638 // "SCSI (%02i:%02i)"
|
|
||||||
|
|
||||||
#define IDS_6144 6144 // "English (United States)"
|
|
||||||
|
|
||||||
#define IDS_LANG_ENUS IDS_6144
|
|
||||||
|
|
||||||
#define STRINGS_NUM_2048 124
|
|
||||||
#define STRINGS_NUM_3072 11
|
|
||||||
#define STRINGS_NUM_4096 20
|
|
||||||
#define STRINGS_NUM_4352 7
|
|
||||||
#define STRINGS_NUM_4608 7
|
|
||||||
#define STRINGS_NUM_5120 1
|
|
||||||
#define STRINGS_NUM_5376 7
|
|
||||||
#define STRINGS_NUM_5632 7
|
|
||||||
#define STRINGS_NUM_6144 1
|
|
||||||
|
|
||||||
|
|
||||||
#define IDM_ABOUT 40001
|
#define IDM_ABOUT 40001
|
||||||
#define IDC_ABOUT_ICON 65535
|
#define IDC_ABOUT_ICON 65535
|
||||||
#define IDM_ACTION_SCREENSHOT 40011
|
#define IDM_ACTION_SCREENSHOT 40011
|
||||||
|
|||||||
1146
src/win/win.c
1146
src/win/win.c
File diff suppressed because it is too large
Load Diff
@@ -98,6 +98,10 @@ extern void hard_disk_add_open(HWND hwnd, int is_existing);
|
|||||||
extern int hard_disk_was_added(void);
|
extern int hard_disk_was_added(void);
|
||||||
|
|
||||||
|
|
||||||
|
/* Platform UI support functions. */
|
||||||
|
extern int ui_init(int nStyle);
|
||||||
|
|
||||||
|
|
||||||
/* Functions in win_about.c: */
|
/* Functions in win_about.c: */
|
||||||
extern void AboutDialogCreate(HWND hwnd);
|
extern void AboutDialogCreate(HWND hwnd);
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
* Windows device configuration dialog implementation.
|
* Windows device configuration dialog implementation.
|
||||||
*
|
*
|
||||||
* Version: @(#)win_deviceconfig.c 1.0.8 2017/10/16
|
* Version: @(#)win_devconf.c 1.0.9 2017/11/18
|
||||||
*
|
*
|
||||||
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
||||||
* Miran Grca, <mgrca8@gmail.com>
|
* Miran Grca, <mgrca8@gmail.com>
|
||||||
@@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
* Several dialogs for the application.
|
* Several dialogs for the application.
|
||||||
*
|
*
|
||||||
* Version: @(#)win_dialog.c 1.0.4 2017/10/16
|
* Version: @(#)win_dialog.c 1.0.5 2017/11/18
|
||||||
*
|
*
|
||||||
* Author: Miran Grca, <mgrca8@gmail.com>
|
* Author: Miran Grca, <mgrca8@gmail.com>
|
||||||
* Fred N. van Kempen, <decwiz@yahoo.com>
|
* Fred N. van Kempen, <decwiz@yahoo.com>
|
||||||
@@ -17,11 +17,9 @@
|
|||||||
* Copyright 2017 Fred N. van Kempen.
|
* Copyright 2017 Fred N. van Kempen.
|
||||||
*/
|
*/
|
||||||
#define UNICODE
|
#define UNICODE
|
||||||
#define BITMAP WINDOWS_BITMAP
|
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <windowsx.h>
|
#include <windowsx.h>
|
||||||
#include <shlobj.h>
|
#include <shlobj.h>
|
||||||
#undef BITMAP
|
|
||||||
#include <commdlg.h>
|
#include <commdlg.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
@@ -35,6 +33,8 @@
|
|||||||
|
|
||||||
|
|
||||||
WCHAR path[MAX_PATH];
|
WCHAR path[MAX_PATH];
|
||||||
|
WCHAR wopenfilestring[260];
|
||||||
|
char openfilestring[260];
|
||||||
|
|
||||||
|
|
||||||
static int CALLBACK
|
static int CALLBACK
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
* Joystick interface to host device.
|
* Joystick interface to host device.
|
||||||
*
|
*
|
||||||
* Version: @(#)win_joystick.cc 1.0.5 2017/10/17
|
* Version: @(#)win_joystick.cc 1.0.6 2017/11/18
|
||||||
*
|
*
|
||||||
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
||||||
* Miran Grca, <mgrca8@gmail.com>
|
* Miran Grca, <mgrca8@gmail.com>
|
||||||
@@ -21,33 +21,25 @@
|
|||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
extern "C" {
|
#include "../86box.h"
|
||||||
#include "../device.h"
|
#include "../device.h"
|
||||||
#include "../game/gameport.h"
|
|
||||||
}
|
|
||||||
#include "../plat.h"
|
#include "../plat.h"
|
||||||
|
#include "../game/gameport.h"
|
||||||
#include "../plat_joystick.h"
|
#include "../plat_joystick.h"
|
||||||
#include "win.h"
|
#include "win.h"
|
||||||
|
|
||||||
extern "C" int video_fullscreen;
|
|
||||||
|
|
||||||
extern "C" void fatal(const char *format, ...);
|
|
||||||
extern "C" void pclog(const char *format, ...);
|
|
||||||
|
|
||||||
extern "C" void joystick_init();
|
|
||||||
extern "C" void joystick_close();
|
|
||||||
extern "C" void poll_joystick();
|
|
||||||
|
|
||||||
plat_joystick_t plat_joystick_state[MAX_PLAT_JOYSTICKS];
|
plat_joystick_t plat_joystick_state[MAX_PLAT_JOYSTICKS];
|
||||||
joystick_t joystick_state[MAX_JOYSTICKS];
|
joystick_t joystick_state[MAX_JOYSTICKS];
|
||||||
|
int joysticks_present = 0;
|
||||||
|
|
||||||
|
|
||||||
static LPDIRECTINPUT8 lpdi;
|
static LPDIRECTINPUT8 lpdi;
|
||||||
static LPDIRECTINPUTDEVICE8 lpdi_joystick[2] = {NULL, NULL};
|
static LPDIRECTINPUTDEVICE8 lpdi_joystick[2] = {NULL, NULL};
|
||||||
|
|
||||||
int joysticks_present = 0;
|
|
||||||
static GUID joystick_guids[MAX_JOYSTICKS];
|
static GUID joystick_guids[MAX_JOYSTICKS];
|
||||||
|
|
||||||
static BOOL CALLBACK joystick_enum_callback(LPCDIDEVICEINSTANCE lpddi, LPVOID data)
|
|
||||||
|
static BOOL CALLBACK joystick_enum_callback(LPCDIDEVICEINSTANCE lpddi, UNUSED(LPVOID data))
|
||||||
{
|
{
|
||||||
if (joysticks_present >= MAX_JOYSTICKS)
|
if (joysticks_present >= MAX_JOYSTICKS)
|
||||||
return DIENUM_STOP;
|
return DIENUM_STOP;
|
||||||
|
|||||||
@@ -1,10 +1,8 @@
|
|||||||
/* Copyright holders: Sarah Walker
|
/* Copyright holders: Sarah Walker
|
||||||
see COPYING for more details
|
see COPYING for more details
|
||||||
*/
|
*/
|
||||||
#define BITMAP WINDOWS_BITMAP
|
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <windowsx.h>
|
#include <windowsx.h>
|
||||||
#undef BITMAP
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
991
src/win/win_ui.c
Normal file
991
src/win/win_ui.c
Normal file
@@ -0,0 +1,991 @@
|
|||||||
|
/*
|
||||||
|
* 86Box A hypervisor and IBM PC system emulator that specializes in
|
||||||
|
* running old operating systems and software designed for IBM
|
||||||
|
* PC systems and compatibles from 1981 through fairly recent
|
||||||
|
* system designs based on the PCI bus.
|
||||||
|
*
|
||||||
|
* This file is part of the 86Box distribution.
|
||||||
|
*
|
||||||
|
* user Interface module for WinAPI on Windows.
|
||||||
|
*
|
||||||
|
* Version: @(#)win_ui.c 1.0.2 2017/11/18
|
||||||
|
*
|
||||||
|
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
||||||
|
* Miran Grca, <mgrca8@gmail.com>
|
||||||
|
* Fred N. van Kempen, <decwiz@yahoo.com>
|
||||||
|
*
|
||||||
|
* Copyright 2008-2017 Sarah Walker.
|
||||||
|
* Copyright 2016,2017 Miran Grca.
|
||||||
|
* Copyright 2017 Fred N. van Kempen.
|
||||||
|
*/
|
||||||
|
#define UNICODE
|
||||||
|
#include <windows.h>
|
||||||
|
#include <commctrl.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <time.h>
|
||||||
|
#include <wchar.h>
|
||||||
|
#include "../86box.h"
|
||||||
|
#include "../config.h"
|
||||||
|
#include "../machine/machine.h"
|
||||||
|
#include "../mem.h" // because of load_config
|
||||||
|
#include "../rom.h" // because of load_config
|
||||||
|
#include "../device.h"
|
||||||
|
#include "../mouse.h"
|
||||||
|
#include "../keyboard.h"
|
||||||
|
#include "../cdrom/cdrom.h"
|
||||||
|
#include "../cdrom/cdrom_image.h"
|
||||||
|
#include "../cdrom/cdrom_null.h"
|
||||||
|
#include "../floppy/floppy.h"
|
||||||
|
#include "../scsi/scsi.h"
|
||||||
|
#include "../network/network.h"
|
||||||
|
#include "../video/video.h"
|
||||||
|
#include "../video/vid_ega.h" // for update_overscan
|
||||||
|
#include "../sound/sound.h"
|
||||||
|
#include "../plat.h"
|
||||||
|
#include "../plat_mouse.h"
|
||||||
|
#include "../plat_midi.h"
|
||||||
|
#include "../ui.h"
|
||||||
|
#include "win.h"
|
||||||
|
#include "win_d3d.h"
|
||||||
|
|
||||||
|
|
||||||
|
#define TIMER_1SEC 1 /* ID of the one-second timer */
|
||||||
|
|
||||||
|
|
||||||
|
/* Platform Public data, specific. */
|
||||||
|
HINSTANCE hinstance; /* application instance */
|
||||||
|
HWND hwndMain, /* application main window */
|
||||||
|
hwndRender; /* machine render window */
|
||||||
|
HMENU menuMain; /* application main menu */
|
||||||
|
HANDLE ghMutex;
|
||||||
|
HICON hIcon[512]; /* icon data loaded from resources */
|
||||||
|
LCID lang_id; /* current language ID used */
|
||||||
|
DWORD dwSubLangID;
|
||||||
|
RECT oldclip; /* mouse rect */
|
||||||
|
int infocus = 1;
|
||||||
|
|
||||||
|
char openfilestring[260];
|
||||||
|
WCHAR wopenfilestring[260];
|
||||||
|
|
||||||
|
|
||||||
|
/* Local data. */
|
||||||
|
//static HANDLE thMain;
|
||||||
|
static wchar_t wTitle[512];
|
||||||
|
static RAWINPUTDEVICE device;
|
||||||
|
static HHOOK hKeyboardHook;
|
||||||
|
static int hook_enabled = 0;
|
||||||
|
static int save_window_pos = 0;
|
||||||
|
|
||||||
|
|
||||||
|
HICON
|
||||||
|
LoadIconEx(PCTSTR pszIconName)
|
||||||
|
{
|
||||||
|
return((HICON)LoadImage(hinstance, pszIconName, IMAGE_ICON,
|
||||||
|
16, 16, LR_SHARED));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
static void
|
||||||
|
win_menu_update(void)
|
||||||
|
{
|
||||||
|
menuMain = LoadMenu(hinstance, L"MainMenu"));
|
||||||
|
|
||||||
|
menuSBAR = LoadMenu(hinstance, L"StatusBarMenu");
|
||||||
|
|
||||||
|
initmenu();
|
||||||
|
|
||||||
|
SetMenu(hwndMain, menu);
|
||||||
|
|
||||||
|
win_title_update = 1;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
video_toggle_option(HMENU h, int *val, int id)
|
||||||
|
{
|
||||||
|
startblit();
|
||||||
|
video_wait_for_blit();
|
||||||
|
*val ^= 1;
|
||||||
|
CheckMenuItem(h, id, *val ? MF_CHECKED : MF_UNCHECKED);
|
||||||
|
endblit();
|
||||||
|
config_save();
|
||||||
|
device_force_redraw();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
ResetAllMenus(void)
|
||||||
|
{
|
||||||
|
#ifdef ENABLE_LOG_TOGGLES
|
||||||
|
# ifdef ENABLE_BUSLOGIC_LOG
|
||||||
|
CheckMenuItem(menuMain, IDM_LOG_BUSLOGIC, MF_UNCHECKED);
|
||||||
|
# endif
|
||||||
|
# ifdef ENABLE_CDROM_LOG
|
||||||
|
CheckMenuItem(menuMain, IDM_LOG_CDROM, MF_UNCHECKED);
|
||||||
|
# endif
|
||||||
|
# ifdef ENABLE_D86F_LOG
|
||||||
|
CheckMenuItem(menuMain, IDM_LOG_D86F, MF_UNCHECKED);
|
||||||
|
# endif
|
||||||
|
# ifdef ENABLE_FDC_LOG
|
||||||
|
CheckMenuItem(menuMain, IDM_LOG_FDC, MF_UNCHECKED);
|
||||||
|
# endif
|
||||||
|
# ifdef ENABLE_IDE_LOG
|
||||||
|
CheckMenuItem(menuMain, IDM_LOG_IDE, MF_UNCHECKED);
|
||||||
|
# endif
|
||||||
|
# ifdef ENABLE_SERIAL_LOG
|
||||||
|
CheckMenuItem(menuMain, IDM_LOG_SERIAL, MF_UNCHECKED);
|
||||||
|
# endif
|
||||||
|
# ifdef ENABLE_NIC_LOG
|
||||||
|
CheckMenuItem(menuMain, IDM_LOG_NIC, MF_UNCHECKED);
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
CheckMenuItem(menuMain, IDM_VID_FORCE43, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(menuMain, IDM_VID_OVERSCAN, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(menuMain, IDM_VID_INVERT, MF_UNCHECKED);
|
||||||
|
|
||||||
|
CheckMenuItem(menuMain, IDM_VID_RESIZE, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(menuMain, IDM_VID_DDRAW+0, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(menuMain, IDM_VID_DDRAW+1, MF_UNCHECKED);
|
||||||
|
#ifdef USE_VNC
|
||||||
|
CheckMenuItem(menuMain, IDM_VID_DDRAW+2, MF_UNCHECKED);
|
||||||
|
#endif
|
||||||
|
#ifdef USE_VNC
|
||||||
|
CheckMenuItem(menuMain, IDM_VID_DDRAW+3, MF_UNCHECKED);
|
||||||
|
#endif
|
||||||
|
CheckMenuItem(menuMain, IDM_VID_FS_FULL+0, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(menuMain, IDM_VID_FS_FULL+1, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(menuMain, IDM_VID_FS_FULL+2, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(menuMain, IDM_VID_FS_FULL+3, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(menuMain, IDM_VID_REMEMBER, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(menuMain, IDM_VID_SCALE_1X+0, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(menuMain, IDM_VID_SCALE_1X+1, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(menuMain, IDM_VID_SCALE_1X+2, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(menuMain, IDM_VID_SCALE_1X+3, MF_UNCHECKED);
|
||||||
|
|
||||||
|
CheckMenuItem(menuMain, IDM_VID_CGACON, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(menuMain, IDM_VID_GRAYCT_601+0, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(menuMain, IDM_VID_GRAYCT_601+1, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(menuMain, IDM_VID_GRAYCT_601+2, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(menuMain, IDM_VID_GRAY_RGB+0, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(menuMain, IDM_VID_GRAY_RGB+1, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(menuMain, IDM_VID_GRAY_RGB+2, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(menuMain, IDM_VID_GRAY_RGB+3, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(menuMain, IDM_VID_GRAY_RGB+4, MF_UNCHECKED);
|
||||||
|
|
||||||
|
#ifdef ENABLE_LOG_TOGGLES
|
||||||
|
# ifdef ENABLE_BUSLOGIC_LOG
|
||||||
|
CheckMenuItem(menuMain, IDM_LOG_BUSLOGIC, buslogic_do_log?MF_CHECKED:MF_UNCHECKED);
|
||||||
|
# endif
|
||||||
|
# ifdef ENABLE_CDROM_LOG
|
||||||
|
CheckMenuItem(menuMain, IDM_LOG_CDROM, cdrom_do_log?MF_CHECKED:MF_UNCHECKED);
|
||||||
|
# endif
|
||||||
|
# ifdef ENABLE_D86F_LOG
|
||||||
|
CheckMenuItem(menuMain, IDM_LOG_D86F, d86f_do_log?MF_CHECKED:MF_UNCHECKED);
|
||||||
|
# endif
|
||||||
|
# ifdef ENABLE_FDC_LOG
|
||||||
|
CheckMenuItem(menuMain, IDM_LOG_FDC, fdc_do_log?MF_CHECKED:MF_UNCHECKED);
|
||||||
|
# endif
|
||||||
|
# ifdef ENABLE_IDE_LOG
|
||||||
|
CheckMenuItem(menuMain, IDM_LOG_IDE, ide_do_log?MF_CHECKED:MF_UNCHECKED);
|
||||||
|
# endif
|
||||||
|
# ifdef ENABLE_SERIAL_LOG
|
||||||
|
CheckMenuItem(menuMain, IDM_LOG_SERIAL, serial_do_log?MF_CHECKED:MF_UNCHECKED);
|
||||||
|
# endif
|
||||||
|
# ifdef ENABLE_NIC_LOG
|
||||||
|
CheckMenuItem(menuMain, IDM_LOG_NIC, nic_do_log?MF_CHECKED:MF_UNCHECKED);
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
CheckMenuItem(menuMain, IDM_VID_FORCE43, force_43?MF_CHECKED:MF_UNCHECKED);
|
||||||
|
CheckMenuItem(menuMain, IDM_VID_OVERSCAN, enable_overscan?MF_CHECKED:MF_UNCHECKED);
|
||||||
|
CheckMenuItem(menuMain, IDM_VID_INVERT, invert_display ? MF_CHECKED : MF_UNCHECKED);
|
||||||
|
|
||||||
|
if (vid_resize)
|
||||||
|
CheckMenuItem(menuMain, IDM_VID_RESIZE, MF_CHECKED);
|
||||||
|
CheckMenuItem(menuMain, IDM_VID_DDRAW+vid_api, MF_CHECKED);
|
||||||
|
CheckMenuItem(menuMain, IDM_VID_FS_FULL+video_fullscreen_scale, MF_CHECKED);
|
||||||
|
CheckMenuItem(menuMain, IDM_VID_REMEMBER, window_remember?MF_CHECKED:MF_UNCHECKED);
|
||||||
|
CheckMenuItem(menuMain, IDM_VID_SCALE_1X+scale, MF_CHECKED);
|
||||||
|
|
||||||
|
CheckMenuItem(menuMain, IDM_VID_CGACON, vid_cga_contrast?MF_CHECKED:MF_UNCHECKED);
|
||||||
|
CheckMenuItem(menuMain, IDM_VID_GRAYCT_601+video_graytype, MF_CHECKED);
|
||||||
|
CheckMenuItem(menuMain, IDM_VID_GRAY_RGB+video_grayscale, MF_CHECKED);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static LRESULT CALLBACK
|
||||||
|
LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
|
||||||
|
{
|
||||||
|
BOOL bControlKeyDown;
|
||||||
|
KBDLLHOOKSTRUCT *p;
|
||||||
|
|
||||||
|
if (nCode < 0 || nCode != HC_ACTION)
|
||||||
|
return(CallNextHookEx(hKeyboardHook, nCode, wParam, lParam));
|
||||||
|
|
||||||
|
p = (KBDLLHOOKSTRUCT*)lParam;
|
||||||
|
|
||||||
|
/* disable alt-tab */
|
||||||
|
if (p->vkCode == VK_TAB && p->flags & LLKHF_ALTDOWN) return(1);
|
||||||
|
|
||||||
|
/* disable alt-space */
|
||||||
|
if (p->vkCode == VK_SPACE && p->flags & LLKHF_ALTDOWN) return(1);
|
||||||
|
|
||||||
|
/* disable alt-escape */
|
||||||
|
if (p->vkCode == VK_ESCAPE && p->flags & LLKHF_ALTDOWN) return(1);
|
||||||
|
|
||||||
|
/* disable windows keys */
|
||||||
|
if((p->vkCode == VK_LWIN) || (p->vkCode == VK_RWIN)) return(1);
|
||||||
|
|
||||||
|
/* checks ctrl key pressed */
|
||||||
|
bControlKeyDown = GetAsyncKeyState(VK_CONTROL)>>((sizeof(SHORT)*8)-1);
|
||||||
|
|
||||||
|
/* disable ctrl-escape */
|
||||||
|
if (p->vkCode == VK_ESCAPE && bControlKeyDown) return(1);
|
||||||
|
|
||||||
|
return(CallNextHookEx(hKeyboardHook, nCode, wParam, lParam));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static LRESULT CALLBACK
|
||||||
|
MainWindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||||
|
{
|
||||||
|
HMENU hmenu;
|
||||||
|
RECT rect;
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
switch (message) {
|
||||||
|
case WM_CREATE:
|
||||||
|
SetTimer(hwnd, TIMER_1SEC, 1000, NULL);
|
||||||
|
hKeyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL,
|
||||||
|
LowLevelKeyboardProc,
|
||||||
|
GetModuleHandle(NULL), 0);
|
||||||
|
hook_enabled = 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WM_COMMAND:
|
||||||
|
hmenu = GetMenu(hwnd);
|
||||||
|
switch (LOWORD(wParam)) {
|
||||||
|
case IDM_ACTION_SCREENSHOT:
|
||||||
|
take_screenshot();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IDM_ACTION_HRESET:
|
||||||
|
pc_reset(1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IDM_ACTION_RESET_CAD:
|
||||||
|
pc_reset(0);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IDM_ACTION_EXIT:
|
||||||
|
PostQuitMessage(0);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IDM_ACTION_CTRL_ALT_ESC:
|
||||||
|
pc_send_cae();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IDM_ACTION_PAUSE:
|
||||||
|
plat_pause(dopause ^ 1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IDM_CONFIG:
|
||||||
|
win_settings_open(hwnd);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IDM_ABOUT:
|
||||||
|
AboutDialogCreate(hwnd);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IDM_STATUS:
|
||||||
|
StatusWindowCreate(hwnd);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IDM_VID_RESIZE:
|
||||||
|
vid_resize = !vid_resize;
|
||||||
|
CheckMenuItem(hmenu, IDM_VID_RESIZE, (vid_resize)? MF_CHECKED : MF_UNCHECKED);
|
||||||
|
if (vid_resize)
|
||||||
|
SetWindowLongPtr(hwnd, GWL_STYLE, (WS_OVERLAPPEDWINDOW & ~WS_MINIMIZEBOX) | WS_VISIBLE);
|
||||||
|
else
|
||||||
|
SetWindowLongPtr(hwnd, GWL_STYLE, (WS_OVERLAPPEDWINDOW & ~WS_SIZEBOX & ~WS_THICKFRAME & ~WS_MAXIMIZEBOX & ~WS_MINIMIZEBOX) | WS_VISIBLE);
|
||||||
|
GetWindowRect(hwnd, &rect);
|
||||||
|
SetWindowPos(hwnd, 0, rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top, SWP_NOZORDER | SWP_FRAMECHANGED);
|
||||||
|
GetWindowRect(hwndSBAR,&rect);
|
||||||
|
SetWindowPos(hwndSBAR, 0, rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top, SWP_NOZORDER | SWP_FRAMECHANGED);
|
||||||
|
if (vid_resize) {
|
||||||
|
CheckMenuItem(hmenu, IDM_VID_SCALE_1X + scale, MF_UNCHECKED);
|
||||||
|
CheckMenuItem(hmenu, IDM_VID_SCALE_2X, MF_CHECKED);
|
||||||
|
scale = 1;
|
||||||
|
}
|
||||||
|
EnableMenuItem(hmenu, IDM_VID_SCALE_1X, vid_resize ? MF_GRAYED : MF_ENABLED);
|
||||||
|
EnableMenuItem(hmenu, IDM_VID_SCALE_2X, vid_resize ? MF_GRAYED : MF_ENABLED);
|
||||||
|
EnableMenuItem(hmenu, IDM_VID_SCALE_3X, vid_resize ? MF_GRAYED : MF_ENABLED);
|
||||||
|
EnableMenuItem(hmenu, IDM_VID_SCALE_4X, vid_resize ? MF_GRAYED : MF_ENABLED);
|
||||||
|
doresize = 1;
|
||||||
|
config_save();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IDM_VID_REMEMBER:
|
||||||
|
window_remember = !window_remember;
|
||||||
|
CheckMenuItem(hmenu, IDM_VID_REMEMBER, window_remember ? MF_CHECKED : MF_UNCHECKED);
|
||||||
|
GetWindowRect(hwnd, &rect);
|
||||||
|
if (window_remember) {
|
||||||
|
window_x = rect.left;
|
||||||
|
window_y = rect.top;
|
||||||
|
window_w = rect.right - rect.left;
|
||||||
|
window_h = rect.bottom - rect.top;
|
||||||
|
}
|
||||||
|
config_save();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IDM_VID_DDRAW:
|
||||||
|
case IDM_VID_D3D:
|
||||||
|
#ifdef USE_VNC
|
||||||
|
case IDM_VID_VNC:
|
||||||
|
#endif
|
||||||
|
#ifdef USE_RDP
|
||||||
|
case IDM_VID_RDP:
|
||||||
|
#endif
|
||||||
|
CheckMenuItem(hmenu, IDM_VID_DDRAW+vid_api, MF_UNCHECKED);
|
||||||
|
plat_setvid(LOWORD(wParam) - IDM_VID_DDRAW);
|
||||||
|
CheckMenuItem(hmenu, IDM_VID_DDRAW+vid_api, MF_CHECKED);
|
||||||
|
config_save();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IDM_VID_FULLSCREEN:
|
||||||
|
plat_setfullscreen(1);
|
||||||
|
config_save();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IDM_VID_FS_FULL:
|
||||||
|
case IDM_VID_FS_43:
|
||||||
|
case IDM_VID_FS_SQ:
|
||||||
|
case IDM_VID_FS_INT:
|
||||||
|
CheckMenuItem(hmenu, IDM_VID_FS_FULL+video_fullscreen_scale, MF_UNCHECKED);
|
||||||
|
video_fullscreen_scale = LOWORD(wParam) - IDM_VID_FS_FULL;
|
||||||
|
CheckMenuItem(hmenu, IDM_VID_FS_FULL+video_fullscreen_scale, MF_CHECKED);
|
||||||
|
device_force_redraw();
|
||||||
|
config_save();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IDM_VID_SCALE_1X:
|
||||||
|
case IDM_VID_SCALE_2X:
|
||||||
|
case IDM_VID_SCALE_3X:
|
||||||
|
case IDM_VID_SCALE_4X:
|
||||||
|
CheckMenuItem(hmenu, IDM_VID_SCALE_1X+scale, MF_UNCHECKED);
|
||||||
|
scale = LOWORD(wParam) - IDM_VID_SCALE_1X;
|
||||||
|
CheckMenuItem(hmenu, IDM_VID_SCALE_1X+scale, MF_CHECKED);
|
||||||
|
device_force_redraw();
|
||||||
|
video_force_resize_set(1);
|
||||||
|
config_save();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IDM_VID_FORCE43:
|
||||||
|
video_toggle_option(hmenu, &force_43, IDM_VID_FORCE43);
|
||||||
|
video_force_resize_set(1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IDM_VID_INVERT:
|
||||||
|
video_toggle_option(hmenu, &invert_display, IDM_VID_INVERT);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IDM_VID_OVERSCAN:
|
||||||
|
update_overscan = 1;
|
||||||
|
video_toggle_option(hmenu, &enable_overscan, IDM_VID_OVERSCAN);
|
||||||
|
video_force_resize_set(1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IDM_VID_CGACON:
|
||||||
|
vid_cga_contrast ^= 1;
|
||||||
|
CheckMenuItem(hmenu, IDM_VID_CGACON, vid_cga_contrast ? MF_CHECKED : MF_UNCHECKED);
|
||||||
|
cgapal_rebuild();
|
||||||
|
config_save();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IDM_VID_GRAYCT_601:
|
||||||
|
case IDM_VID_GRAYCT_709:
|
||||||
|
case IDM_VID_GRAYCT_AVE:
|
||||||
|
CheckMenuItem(hmenu, IDM_VID_GRAYCT_601+video_graytype, MF_UNCHECKED);
|
||||||
|
video_graytype = LOWORD(wParam) - IDM_VID_GRAYCT_601;
|
||||||
|
CheckMenuItem(hmenu, IDM_VID_GRAYCT_601+video_graytype, MF_CHECKED);
|
||||||
|
device_force_redraw();
|
||||||
|
config_save();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IDM_VID_GRAY_RGB:
|
||||||
|
case IDM_VID_GRAY_MONO:
|
||||||
|
case IDM_VID_GRAY_AMBER:
|
||||||
|
case IDM_VID_GRAY_GREEN:
|
||||||
|
case IDM_VID_GRAY_WHITE:
|
||||||
|
CheckMenuItem(hmenu, IDM_VID_GRAY_RGB+video_grayscale, MF_UNCHECKED);
|
||||||
|
video_grayscale = LOWORD(wParam) - IDM_VID_GRAY_RGB;
|
||||||
|
CheckMenuItem(hmenu, IDM_VID_GRAY_RGB+video_grayscale, MF_CHECKED);
|
||||||
|
device_force_redraw();
|
||||||
|
config_save();
|
||||||
|
break;
|
||||||
|
|
||||||
|
#ifdef ENABLE_LOG_TOGGLES
|
||||||
|
# ifdef ENABLE_BUSLOGIC_LOG
|
||||||
|
case IDM_LOG_BUSLOGIC:
|
||||||
|
buslogic_do_log ^= 1;
|
||||||
|
CheckMenuItem(hmenu, IDM_LOG_BUSLOGIC, buslogic_do_log ? MF_CHECKED : MF_UNCHECKED);
|
||||||
|
break;
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifdef ENABLE_CDROM_LOG
|
||||||
|
case IDM_LOG_CDROM:
|
||||||
|
cdrom_do_log ^= 1;
|
||||||
|
CheckMenuItem(hmenu, IDM_LOG_CDROM, cdrom_do_log ? MF_CHECKED : MF_UNCHECKED);
|
||||||
|
break;
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifdef ENABLE_D86F_LOG
|
||||||
|
case IDM_LOG_D86F:
|
||||||
|
d86f_do_log ^= 1;
|
||||||
|
CheckMenuItem(hmenu, IDM_LOG_D86F, d86f_do_log ? MF_CHECKED : MF_UNCHECKED);
|
||||||
|
break;
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifdef ENABLE_FDC_LOG
|
||||||
|
case IDM_LOG_FDC:
|
||||||
|
fdc_do_log ^= 1;
|
||||||
|
CheckMenuItem(hmenu, IDM_LOG_FDC, fdc_do_log ? MF_CHECKED : MF_UNCHECKED);
|
||||||
|
break;
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifdef ENABLE_IDE_LOG
|
||||||
|
case IDM_LOG_IDE:
|
||||||
|
ide_do_log ^= 1;
|
||||||
|
CheckMenuItem(hmenu, IDM_LOG_IDE, ide_do_log ? MF_CHECKED : MF_UNCHECKED);
|
||||||
|
break;
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifdef ENABLE_SERIAL_LOG
|
||||||
|
case IDM_LOG_SERIAL:
|
||||||
|
serial_do_log ^= 1;
|
||||||
|
CheckMenuItem(hmenu, IDM_LOG_SERIAL, serial_do_log ? MF_CHECKED : MF_UNCHECKED);
|
||||||
|
break;
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifdef ENABLE_NIC_LOG
|
||||||
|
case IDM_LOG_NIC:
|
||||||
|
nic_do_log ^= 1;
|
||||||
|
CheckMenuItem(hmenu, IDM_LOG_NIC, nic_do_log ? MF_CHECKED : MF_UNCHECKED);
|
||||||
|
break;
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef ENABLE_LOG_BREAKPOINT
|
||||||
|
case IDM_LOG_BREAKPOINT:
|
||||||
|
pclog("---- LOG BREAKPOINT ----\n");
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef ENABLE_VRAM_DUMP
|
||||||
|
case IDM_DUMP_VRAM:
|
||||||
|
svga_dump_vram();
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
case IDM_CONFIG_LOAD:
|
||||||
|
plat_pause(1);
|
||||||
|
if (! file_dlg_st(hwnd, IDS_2160, "", 0)) {
|
||||||
|
if (ui_msgbox(MBX_QUESTION, (wchar_t *)IDS_2051) == IDYES) {
|
||||||
|
config_write(config_file_default);
|
||||||
|
for (i = 0; i < FDD_NUM; i++)
|
||||||
|
floppy_close(i);
|
||||||
|
for (i = 0; i < CDROM_NUM; i++)
|
||||||
|
{
|
||||||
|
cdrom_drives[i].handler->exit(i);
|
||||||
|
if (cdrom_drives[i].host_drive == 200)
|
||||||
|
image_close(i);
|
||||||
|
else if ((cdrom_drives[i].host_drive >= 'A') && (cdrom_drives[i].host_drive <= 'Z'))
|
||||||
|
ioctl_close(i);
|
||||||
|
else
|
||||||
|
null_close(i);
|
||||||
|
}
|
||||||
|
pc_reset_hard_close();
|
||||||
|
config_load(wopenfilestring);
|
||||||
|
for (i = 0; i < CDROM_NUM; i++)
|
||||||
|
{
|
||||||
|
if (cdrom_drives[i].bus_type)
|
||||||
|
SCSIReset(cdrom_drives[i].scsi_device_id, cdrom_drives[i].scsi_device_lun);
|
||||||
|
|
||||||
|
if (cdrom_drives[i].host_drive == 200)
|
||||||
|
image_open(i, cdrom_image[i].image_path);
|
||||||
|
else if ((cdrom_drives[i].host_drive >= 'A') && (cdrom_drives[i].host_drive <= 'Z'))
|
||||||
|
ioctl_open(i, cdrom_drives[i].host_drive);
|
||||||
|
else
|
||||||
|
cdrom_null_open(i, cdrom_drives[i].host_drive);
|
||||||
|
}
|
||||||
|
|
||||||
|
floppy_load(0, floppyfns[0]);
|
||||||
|
floppy_load(1, floppyfns[1]);
|
||||||
|
floppy_load(2, floppyfns[2]);
|
||||||
|
floppy_load(3, floppyfns[3]);
|
||||||
|
|
||||||
|
mem_resize();
|
||||||
|
rom_load_bios(romset);
|
||||||
|
network_init();
|
||||||
|
ResetAllMenus();
|
||||||
|
pc_reset_hard_init();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
plat_pause(0);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IDM_CONFIG_SAVE:
|
||||||
|
plat_pause(1);
|
||||||
|
if (! file_dlg_st(hwnd, IDS_2160, "", 1)) {
|
||||||
|
config_write(wopenfilestring);
|
||||||
|
}
|
||||||
|
plat_pause(0);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return(0);
|
||||||
|
|
||||||
|
case WM_INPUT:
|
||||||
|
keyboard_handle(lParam, infocus);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WM_SETFOCUS:
|
||||||
|
infocus = 1;
|
||||||
|
if (! hook_enabled) {
|
||||||
|
hKeyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL,
|
||||||
|
LowLevelKeyboardProc,
|
||||||
|
GetModuleHandle(NULL),
|
||||||
|
0);
|
||||||
|
hook_enabled = 1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WM_KILLFOCUS:
|
||||||
|
infocus = 0;
|
||||||
|
plat_mouse_capture(0);
|
||||||
|
if (video_fullscreen)
|
||||||
|
leave_fullscreen_flag = 1;
|
||||||
|
if (hook_enabled) {
|
||||||
|
UnhookWindowsHookEx(hKeyboardHook);
|
||||||
|
hook_enabled = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WM_LBUTTONUP:
|
||||||
|
if (! video_fullscreen)
|
||||||
|
plat_mouse_capture(1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WM_MBUTTONUP:
|
||||||
|
if (!(mouse_get_type(mouse_type) & MOUSE_TYPE_3BUTTON))
|
||||||
|
plat_mouse_capture(0);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WM_ENTERMENULOOP:
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WM_SIZE:
|
||||||
|
scrnsz_x = (lParam & 0xFFFF);
|
||||||
|
scrnsz_y = (lParam >> 16) - (17 + 6);
|
||||||
|
if (scrnsz_y < 0)
|
||||||
|
scrnsz_y = 0;
|
||||||
|
|
||||||
|
MoveWindow(hwndRender, 0, 0, scrnsz_x, scrnsz_y, TRUE);
|
||||||
|
|
||||||
|
plat_vidsize(scrnsz_x, scrnsz_y);
|
||||||
|
|
||||||
|
MoveWindow(hwndSBAR, 0, scrnsz_y + 6, scrnsz_x, 17, TRUE);
|
||||||
|
|
||||||
|
if (mouse_capture) {
|
||||||
|
GetWindowRect(hwndRender, &rect);
|
||||||
|
|
||||||
|
ClipCursor(&rect);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (window_remember) {
|
||||||
|
GetWindowRect(hwnd, &rect);
|
||||||
|
window_x = rect.left;
|
||||||
|
window_y = rect.top;
|
||||||
|
window_w = rect.right - rect.left;
|
||||||
|
window_h = rect.bottom - rect.top;
|
||||||
|
save_window_pos = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
config_save();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WM_MOVE:
|
||||||
|
if (window_remember) {
|
||||||
|
GetWindowRect(hwnd, &rect);
|
||||||
|
window_x = rect.left;
|
||||||
|
window_y = rect.top;
|
||||||
|
window_w = rect.right - rect.left;
|
||||||
|
window_h = rect.bottom - rect.top;
|
||||||
|
save_window_pos = 1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WM_TIMER:
|
||||||
|
if (wParam == TIMER_1SEC) {
|
||||||
|
pc_onesec();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WM_RESETD3D:
|
||||||
|
startblit();
|
||||||
|
if (video_fullscreen)
|
||||||
|
d3d_reset_fs();
|
||||||
|
else
|
||||||
|
d3d_reset();
|
||||||
|
endblit();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WM_LEAVEFULLSCREEN:
|
||||||
|
plat_setfullscreen(0);
|
||||||
|
config_save();
|
||||||
|
cgapal_rebuild();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WM_KEYDOWN:
|
||||||
|
case WM_KEYUP:
|
||||||
|
case WM_SYSKEYDOWN:
|
||||||
|
case WM_SYSKEYUP:
|
||||||
|
return(0);
|
||||||
|
|
||||||
|
case WM_DESTROY:
|
||||||
|
UnhookWindowsHookEx(hKeyboardHook);
|
||||||
|
KillTimer(hwnd, TIMER_1SEC);
|
||||||
|
PostQuitMessage(0);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WM_SYSCOMMAND:
|
||||||
|
/*
|
||||||
|
* Disable ALT key *ALWAYS*,
|
||||||
|
* I don't think there's any use for
|
||||||
|
* reaching the menu that way.
|
||||||
|
*/
|
||||||
|
if (wParam == SC_KEYMENU && HIWORD(lParam) <= 0) {
|
||||||
|
return 0; /*disable ALT key for menu*/
|
||||||
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
return(DefWindowProc(hwnd, message, wParam, lParam));
|
||||||
|
}
|
||||||
|
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static LRESULT CALLBACK
|
||||||
|
SubWindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||||
|
{
|
||||||
|
return(DefWindowProc(hwnd, message, wParam, lParam));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int
|
||||||
|
ui_init(int nFunsterStil)
|
||||||
|
{
|
||||||
|
WCHAR title[200];
|
||||||
|
WNDCLASSEX wincl; /* buffer for main window's class */
|
||||||
|
MSG messages; /* received-messages buffer */
|
||||||
|
HWND hwnd; /* handle for our window */
|
||||||
|
HACCEL haccel; /* handle to accelerator table */
|
||||||
|
int bRet;
|
||||||
|
|
||||||
|
/* Create our main window's class and register it. */
|
||||||
|
wincl.hInstance = hinstance;
|
||||||
|
wincl.lpszClassName = CLASS_NAME;
|
||||||
|
wincl.lpfnWndProc = MainWindowProcedure;
|
||||||
|
wincl.style = CS_DBLCLKS; /* Catch double-clicks */
|
||||||
|
wincl.cbSize = sizeof(WNDCLASSEX);
|
||||||
|
wincl.hIcon = LoadIcon(hinstance, (LPCTSTR)100);
|
||||||
|
wincl.hIconSm = LoadIcon(hinstance, (LPCTSTR)100);
|
||||||
|
wincl.hCursor = NULL;
|
||||||
|
wincl.lpszMenuName = NULL;
|
||||||
|
wincl.cbClsExtra = 0;
|
||||||
|
wincl.cbWndExtra = 0;
|
||||||
|
wincl.hbrBackground = CreateSolidBrush(RGB(0,0,0));
|
||||||
|
if (! RegisterClassEx(&wincl))
|
||||||
|
return(2);
|
||||||
|
wincl.lpszClassName = SUB_CLASS_NAME;
|
||||||
|
wincl.lpfnWndProc = SubWindowProcedure;
|
||||||
|
if (! RegisterClassEx(&wincl))
|
||||||
|
return(2);
|
||||||
|
|
||||||
|
/* Load the Window Menu(s) from the resources. */
|
||||||
|
menuMain = LoadMenu(hinstance, MENU_NAME);
|
||||||
|
|
||||||
|
/* Now create our main window. */
|
||||||
|
mbstowcs(title, emu_version, sizeof_w(title));
|
||||||
|
hwnd = CreateWindowEx (
|
||||||
|
0, /* no extended possibilites */
|
||||||
|
CLASS_NAME, /* class name */
|
||||||
|
title, /* Title Text */
|
||||||
|
(WS_OVERLAPPEDWINDOW & ~WS_SIZEBOX) | DS_3DLOOK,
|
||||||
|
CW_USEDEFAULT, /* Windows decides the position */
|
||||||
|
CW_USEDEFAULT, /* where window ends up on the screen */
|
||||||
|
scrnsz_x+(GetSystemMetrics(SM_CXFIXEDFRAME)*2), /* width */
|
||||||
|
scrnsz_y+(GetSystemMetrics(SM_CYFIXEDFRAME)*2)+GetSystemMetrics(SM_CYMENUSIZE)+GetSystemMetrics(SM_CYCAPTION)+1, /* and height in pixels */
|
||||||
|
HWND_DESKTOP, /* window is a child to desktop */
|
||||||
|
menuMain, /* menu */
|
||||||
|
hinstance, /* Program Instance handler */
|
||||||
|
NULL); /* no Window Creation data */
|
||||||
|
hwndMain = hwnd;
|
||||||
|
|
||||||
|
ui_window_title(title);
|
||||||
|
|
||||||
|
/* Set up main window for resizing if configured. */
|
||||||
|
if (vid_resize)
|
||||||
|
SetWindowLongPtr(hwnd, GWL_STYLE,
|
||||||
|
(WS_OVERLAPPEDWINDOW));
|
||||||
|
else
|
||||||
|
SetWindowLongPtr(hwnd, GWL_STYLE,
|
||||||
|
(WS_OVERLAPPEDWINDOW&~WS_SIZEBOX&~WS_THICKFRAME&~WS_MAXIMIZEBOX));
|
||||||
|
|
||||||
|
/* Move to the last-saved position if needed. */
|
||||||
|
if (window_remember)
|
||||||
|
MoveWindow(hwnd, window_x, window_y, window_w, window_h, TRUE);
|
||||||
|
|
||||||
|
/* Reset all menus to their defaults. */
|
||||||
|
ResetAllMenus();
|
||||||
|
|
||||||
|
/* Make the window visible on the screen. */
|
||||||
|
ShowWindow(hwnd, nFunsterStil);
|
||||||
|
|
||||||
|
/* Load the accelerator table */
|
||||||
|
haccel = LoadAccelerators(hinstance, ACCEL_NAME);
|
||||||
|
if (haccel == NULL) {
|
||||||
|
MessageBox(hwndMain,
|
||||||
|
plat_get_string(IDS_2053),
|
||||||
|
plat_get_string(IDS_2050),
|
||||||
|
MB_OK | MB_ICONERROR);
|
||||||
|
return(3);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Initialize the input (keyboard, mouse, game) module. */
|
||||||
|
device.usUsagePage = 0x01;
|
||||||
|
device.usUsage = 0x06;
|
||||||
|
device.dwFlags = RIDEV_NOHOTKEYS;
|
||||||
|
device.hwndTarget = hwnd;
|
||||||
|
if (! RegisterRawInputDevices(&device, 1, sizeof(device))) {
|
||||||
|
MessageBox(hwndMain,
|
||||||
|
plat_get_string(IDS_2054),
|
||||||
|
plat_get_string(IDS_2050),
|
||||||
|
MB_OK | MB_ICONERROR);
|
||||||
|
return(4);
|
||||||
|
}
|
||||||
|
keyboard_getkeymap();
|
||||||
|
|
||||||
|
/* Create the status bar window. */
|
||||||
|
StatusBarCreate(hwndMain, IDC_STATUS, hinstance);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Before we can create the Render window, we first have
|
||||||
|
* to prepare some other things that it depends on.
|
||||||
|
*/
|
||||||
|
ghMutex = CreateMutex(NULL, FALSE, L"86Box.BlitMutex");
|
||||||
|
|
||||||
|
/* Create the Machine Rendering window. */
|
||||||
|
hwndRender = CreateWindow(L"STATIC", NULL, WS_CHILD|SS_BITMAP,
|
||||||
|
0, 0, 1, 1, hwnd, NULL, hinstance, NULL);
|
||||||
|
MoveWindow(hwndRender, 0, 0, scrnsz_x, scrnsz_y, TRUE);
|
||||||
|
|
||||||
|
/* Initialize the configured Video API. */
|
||||||
|
if (! plat_setvid(vid_api)) {
|
||||||
|
MessageBox(hwnd,
|
||||||
|
plat_get_string(IDS_2095),
|
||||||
|
plat_get_string(IDS_2050),
|
||||||
|
MB_OK | MB_ICONERROR);
|
||||||
|
return(5);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Initialize the rendering window, or fullscreen. */
|
||||||
|
if (start_in_fullscreen)
|
||||||
|
plat_setfullscreen(1);
|
||||||
|
|
||||||
|
/* Set up the current window size. */
|
||||||
|
plat_resize(scrnsz_x, scrnsz_y);
|
||||||
|
|
||||||
|
/* All done, fire up the actual emulated machine. */
|
||||||
|
if (! pc_init_modules()) {
|
||||||
|
/* Dang, no ROMs found at all! */
|
||||||
|
MessageBox(hwnd,
|
||||||
|
plat_get_string(IDS_2056),
|
||||||
|
plat_get_string(IDS_2050),
|
||||||
|
MB_OK | MB_ICONERROR);
|
||||||
|
return(6);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Fire up the machine. */
|
||||||
|
pc_reset_hard();
|
||||||
|
|
||||||
|
/* Set the PAUSE mode depending on the renderer. */
|
||||||
|
plat_pause(0);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Everything has been configured, and all seems to work,
|
||||||
|
* so now it is time to start the main thread to do some
|
||||||
|
* real work, and we will hang in here, dealing with the
|
||||||
|
* UI until we're done.
|
||||||
|
*/
|
||||||
|
do_start();
|
||||||
|
|
||||||
|
/* Run the message loop. It will run until GetMessage() returns 0 */
|
||||||
|
while (! quited) {
|
||||||
|
bRet = GetMessage(&messages, NULL, 0, 0);
|
||||||
|
if ((bRet == 0) || quited) break;
|
||||||
|
|
||||||
|
if (bRet == -1) {
|
||||||
|
fatal("bRet is -1\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (messages.message == WM_QUIT) {
|
||||||
|
quited = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! TranslateAccelerator(hwnd, haccel, &messages)) {
|
||||||
|
TranslateMessage(&messages);
|
||||||
|
DispatchMessage(&messages);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mouse_capture && keyboard_ismsexit()) {
|
||||||
|
/* Release the in-app mouse. */
|
||||||
|
plat_mouse_capture(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (video_fullscreen && keyboard_isfsexit()) {
|
||||||
|
/* Signal "exit fullscreen mode". */
|
||||||
|
plat_setfullscreen(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
timeEndPeriod(1);
|
||||||
|
|
||||||
|
if (mouse_capture)
|
||||||
|
plat_mouse_capture(0);
|
||||||
|
|
||||||
|
UnregisterClass(SUB_CLASS_NAME, hinstance);
|
||||||
|
UnregisterClass(CLASS_NAME, hinstance);
|
||||||
|
|
||||||
|
/* Close down the emulator. */
|
||||||
|
do_stop();
|
||||||
|
|
||||||
|
return(messages.wParam);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
wchar_t *
|
||||||
|
ui_window_title(wchar_t *s)
|
||||||
|
{
|
||||||
|
if (! video_fullscreen) {
|
||||||
|
if (s != NULL)
|
||||||
|
wcscpy(wTitle, s);
|
||||||
|
else
|
||||||
|
s = wTitle;
|
||||||
|
|
||||||
|
SetWindowText(hwndMain, s);
|
||||||
|
} else {
|
||||||
|
if (s == NULL)
|
||||||
|
s = wTitle;
|
||||||
|
}
|
||||||
|
|
||||||
|
return(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* We should have the language ID as a parameter. */
|
||||||
|
void
|
||||||
|
plat_pause(int p)
|
||||||
|
{
|
||||||
|
static wchar_t oldtitle[512];
|
||||||
|
wchar_t title[512];
|
||||||
|
|
||||||
|
/* If un-pausing, as the renderer if that's OK. */
|
||||||
|
if (p == 0)
|
||||||
|
p = get_vidpause();
|
||||||
|
|
||||||
|
/* If already so, done. */
|
||||||
|
if (dopause == p) return;
|
||||||
|
|
||||||
|
if (p) {
|
||||||
|
wcscpy(oldtitle, ui_window_title(NULL));
|
||||||
|
wcscpy(title, oldtitle);
|
||||||
|
wcscat(title, L" - PAUSED -");
|
||||||
|
ui_window_title(title);
|
||||||
|
} else {
|
||||||
|
ui_window_title(oldtitle);
|
||||||
|
}
|
||||||
|
|
||||||
|
dopause = p;
|
||||||
|
|
||||||
|
/* Update the actual menu. */
|
||||||
|
CheckMenuItem(menuMain, IDM_ACTION_PAUSE,
|
||||||
|
(dopause) ? MF_CHECKED : MF_UNCHECKED);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Tell the UI about a new screen resolution. */
|
||||||
|
void
|
||||||
|
plat_resize(int x, int y)
|
||||||
|
{
|
||||||
|
int sb_borders[3];
|
||||||
|
RECT r;
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
pclog("PLAT: VID[%d,%d] resizing to %dx%d\n", video_fullscreen, vid_api, x, y);
|
||||||
|
#endif
|
||||||
|
/* First, see if we should resize the UI window. */
|
||||||
|
if (!vid_resize) {
|
||||||
|
video_wait_for_blit();
|
||||||
|
SendMessage(hwndSBAR, SB_GETBORDERS, 0, (LPARAM) sb_borders);
|
||||||
|
GetWindowRect(hwndMain, &r);
|
||||||
|
MoveWindow(hwndRender, 0, 0, x, y, TRUE);
|
||||||
|
GetWindowRect(hwndRender, &r);
|
||||||
|
MoveWindow(hwndSBAR,
|
||||||
|
0, r.bottom + GetSystemMetrics(SM_CYEDGE),
|
||||||
|
x, 17, TRUE);
|
||||||
|
GetWindowRect(hwndMain, &r);
|
||||||
|
|
||||||
|
MoveWindow(hwndMain, r.left, r.top,
|
||||||
|
x + (GetSystemMetrics(vid_resize ? SM_CXSIZEFRAME : SM_CXFIXEDFRAME) * 2),
|
||||||
|
y + (GetSystemMetrics(SM_CYEDGE) * 2) + (GetSystemMetrics(vid_resize ? SM_CYSIZEFRAME : SM_CYFIXEDFRAME) * 2) + GetSystemMetrics(SM_CYMENUSIZE) + GetSystemMetrics(SM_CYCAPTION) + 17 + sb_borders[1] + 1,
|
||||||
|
TRUE);
|
||||||
|
|
||||||
|
if (mouse_capture) {
|
||||||
|
GetWindowRect(hwndRender, &r);
|
||||||
|
ClipCursor(&r);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
plat_mouse_capture(int on)
|
||||||
|
{
|
||||||
|
RECT rect;
|
||||||
|
|
||||||
|
if (on && !mouse_capture) {
|
||||||
|
/* Enable the in-app mouse. */
|
||||||
|
GetClipCursor(&oldclip);
|
||||||
|
GetWindowRect(hwndRender, &rect);
|
||||||
|
ClipCursor(&rect);
|
||||||
|
while (1) {
|
||||||
|
if (ShowCursor(FALSE) < 0) break;
|
||||||
|
}
|
||||||
|
|
||||||
|
mouse_capture = 1;
|
||||||
|
} else if (!on && mouse_capture) {
|
||||||
|
/* Disable the in-app mouse. */
|
||||||
|
ClipCursor(&oldclip);
|
||||||
|
ShowCursor(TRUE);
|
||||||
|
|
||||||
|
mouse_capture = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -6,20 +6,18 @@
|
|||||||
*
|
*
|
||||||
* This file is part of the 86Box distribution.
|
* This file is part of the 86Box distribution.
|
||||||
*
|
*
|
||||||
* Platform video API support for Win32.
|
* Video API platform support for Windows.
|
||||||
*
|
*
|
||||||
* Version: @(#)win_video.c 1.0.7 2017/11/12
|
* Version: @(#)win_video.c 1.0.8 2017/11/18
|
||||||
*
|
*
|
||||||
* Author: Fred N. van Kempen, <decwiz@yahoo.com>
|
* Author: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||||
*
|
*
|
||||||
* Copyright 2017 Fred N. van Kempen.
|
* Copyright 2017 Fred N. van Kempen.
|
||||||
*/
|
*/
|
||||||
#define UNICODE
|
#define UNICODE
|
||||||
#define BITMAP WINDOWS_BITMAP
|
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <windowsx.h>
|
#include <windowsx.h>
|
||||||
#include <commctrl.h>
|
#include <commctrl.h>
|
||||||
#undef BITMAP
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
@@ -40,9 +38,13 @@
|
|||||||
#ifdef USE_RDP
|
#ifdef USE_RDP
|
||||||
# include "../rdp.h"
|
# include "../rdp.h"
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef USE_WX
|
||||||
|
# include "../wx/wx_ui.h"
|
||||||
|
#else
|
||||||
|
# include "win_ddraw.h"
|
||||||
|
# include "win_d3d.h"
|
||||||
|
#endif
|
||||||
#include "win.h"
|
#include "win.h"
|
||||||
#include "win_ddraw.h"
|
|
||||||
#include "win_d3d.h"
|
|
||||||
|
|
||||||
|
|
||||||
static struct {
|
static struct {
|
||||||
@@ -54,8 +56,13 @@ static struct {
|
|||||||
int (*pause)(void);
|
int (*pause)(void);
|
||||||
} vid_apis[2][4] = {
|
} vid_apis[2][4] = {
|
||||||
{
|
{
|
||||||
|
#ifdef USE_WX
|
||||||
|
{ "WxWidgets", 1, wx_init, wx_close, NULL, wx_pause },
|
||||||
|
{ "WxWidgets", 1, wx_init, wx_close, NULL, wx_pause },
|
||||||
|
#else
|
||||||
{ "DDraw", 1, (int(*)(void*))ddraw_init, ddraw_close, NULL, ddraw_pause },
|
{ "DDraw", 1, (int(*)(void*))ddraw_init, ddraw_close, NULL, ddraw_pause },
|
||||||
{ "D3D", 1, (int(*)(void*))d3d_init, d3d_close, d3d_resize, d3d_pause },
|
{ "D3D", 1, (int(*)(void*))d3d_init, d3d_close, d3d_resize, d3d_pause },
|
||||||
|
#endif
|
||||||
#ifdef USE_VNC
|
#ifdef USE_VNC
|
||||||
{ "VNC", 0, vnc_init, vnc_close, vnc_resize, vnc_pause },
|
{ "VNC", 0, vnc_init, vnc_close, vnc_resize, vnc_pause },
|
||||||
#else
|
#else
|
||||||
@@ -68,8 +75,13 @@ static struct {
|
|||||||
#endif
|
#endif
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
#ifdef USE_WX
|
||||||
|
{ "WxWidgets", 1, wx_init, wx_close, NULL, wx_pause },
|
||||||
|
{ "WxWidgets", 1, wx_init, wx_close, NULL, wx_pause },
|
||||||
|
#else
|
||||||
{ "DDraw", 1, (int(*)(void*))ddraw_init_fs, ddraw_close, NULL, ddraw_pause },
|
{ "DDraw", 1, (int(*)(void*))ddraw_init_fs, ddraw_close, NULL, ddraw_pause },
|
||||||
{ "D3D", 1, (int(*)(void*))d3d_init_fs, d3d_close, NULL, d3d_pause },
|
{ "D3D", 1, (int(*)(void*))d3d_init_fs, d3d_close, NULL, d3d_pause },
|
||||||
|
#endif
|
||||||
#ifdef USE_VNC
|
#ifdef USE_VNC
|
||||||
{ "VNC", 0, vnc_init, vnc_close, vnc_resize, vnc_pause },
|
{ "VNC", 0, vnc_init, vnc_close, vnc_resize, vnc_pause },
|
||||||
#else
|
#else
|
||||||
@@ -109,6 +121,14 @@ plat_vidapi_name(int api)
|
|||||||
char *name = "default";
|
char *name = "default";
|
||||||
|
|
||||||
switch(api) {
|
switch(api) {
|
||||||
|
#if USE_WX
|
||||||
|
case 0:
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
name = "wxwidgets";
|
||||||
|
break;
|
||||||
|
#else
|
||||||
case 0:
|
case 0:
|
||||||
name = "ddraw";
|
name = "ddraw";
|
||||||
break;
|
break;
|
||||||
@@ -119,6 +139,7 @@ plat_vidapi_name(int api)
|
|||||||
name = "d3d";
|
name = "d3d";
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef USE_VNC
|
#ifdef USE_VNC
|
||||||
case 2:
|
case 2:
|
||||||
@@ -148,15 +169,25 @@ plat_setvid(int api)
|
|||||||
|
|
||||||
/* Close the (old) API. */
|
/* Close the (old) API. */
|
||||||
vid_apis[0][vid_api].close();
|
vid_apis[0][vid_api].close();
|
||||||
|
//#ifdef USE_WX
|
||||||
|
// ui_check_menu_item(IDM_View_WX+vid_api, 0);
|
||||||
|
//#endif
|
||||||
vid_api = api;
|
vid_api = api;
|
||||||
|
|
||||||
|
#ifndef USE_WX
|
||||||
if (vid_apis[0][vid_api].local)
|
if (vid_apis[0][vid_api].local)
|
||||||
ShowWindow(hwndRender, SW_SHOW);
|
ShowWindow(hwndRender, SW_SHOW);
|
||||||
else
|
else
|
||||||
ShowWindow(hwndRender, SW_HIDE);
|
ShowWindow(hwndRender, SW_HIDE);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Initialize the (new) API. */
|
/* Initialize the (new) API. */
|
||||||
|
#ifdef USE_WX
|
||||||
|
// ui_check_menu_item(IDM_View_WX+vid_api, 1);
|
||||||
|
i = vid_apis[0][vid_api].init(NULL);
|
||||||
|
#else
|
||||||
i = vid_apis[0][vid_api].init((void *)hwndRender);
|
i = vid_apis[0][vid_api].init((void *)hwndRender);
|
||||||
|
#endif
|
||||||
endblit();
|
endblit();
|
||||||
if (! i) return(0);
|
if (! i) return(0);
|
||||||
|
|
||||||
@@ -202,6 +233,9 @@ plat_setfullscreen(int on)
|
|||||||
/* We want to leave FS mode. */
|
/* We want to leave FS mode. */
|
||||||
flag = 1;
|
flag = 1;
|
||||||
|
|
||||||
|
#ifdef USE_WX
|
||||||
|
goto doit;
|
||||||
|
#endif
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -211,6 +245,9 @@ plat_setfullscreen(int on)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* OK, claim the video. */
|
/* OK, claim the video. */
|
||||||
|
#ifdef USE_WX
|
||||||
|
doit:
|
||||||
|
#endif
|
||||||
startblit();
|
startblit();
|
||||||
video_wait_for_blit();
|
video_wait_for_blit();
|
||||||
|
|
||||||
@@ -223,6 +260,10 @@ plat_setfullscreen(int on)
|
|||||||
vid_apis[video_fullscreen][vid_api].init((void *) *hw);
|
vid_apis[video_fullscreen][vid_api].init((void *) *hw);
|
||||||
flag = 0;
|
flag = 0;
|
||||||
|
|
||||||
|
#ifdef USE_WX
|
||||||
|
wx_set_fullscreen(on);
|
||||||
|
#endif
|
||||||
|
|
||||||
mouse_init();
|
mouse_init();
|
||||||
leave_fullscreen_flag = 0;
|
leave_fullscreen_flag = 0;
|
||||||
|
|
||||||
@@ -256,26 +297,32 @@ take_screenshot(void)
|
|||||||
wcscat(path, L"\\");
|
wcscat(path, L"\\");
|
||||||
|
|
||||||
switch(vid_api) {
|
switch(vid_api) {
|
||||||
|
#ifdef USE_WX
|
||||||
|
case 0:
|
||||||
|
case 1:
|
||||||
|
wcsftime(fn, 128, L"%Y%m%d_%H%M%S.png", info);
|
||||||
|
wcscat(path, fn);
|
||||||
|
wx_screenshot(path);
|
||||||
|
break;
|
||||||
|
#else
|
||||||
case 0: /* ddraw */
|
case 0: /* ddraw */
|
||||||
wcsftime(path, 128, L"%Y%m%d_%H%M%S.bmp", info);
|
wcsftime(path, 128, L"%Y%m%d_%H%M%S.bmp", info);
|
||||||
wcscat(path, fn);
|
wcscat(path, fn);
|
||||||
ddraw_take_screenshot(path);
|
ddraw_take_screenshot(path);
|
||||||
pclog("Screenshot: fn='%ls'\n", path);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 1: /* d3d9 */
|
case 1: /* d3d9 */
|
||||||
wcsftime(fn, 128, L"%Y%m%d_%H%M%S.png", info);
|
wcsftime(fn, 128, L"%Y%m%d_%H%M%S.png", info);
|
||||||
wcscat(path, fn);
|
wcscat(path, fn);
|
||||||
d3d_take_screenshot(path);
|
d3d_take_screenshot(path);
|
||||||
pclog("Screenshot: fn='%ls'\n", path);
|
|
||||||
break;
|
break;
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef USE_VNC
|
#ifdef USE_VNC
|
||||||
case 2: /* vnc */
|
case 2: /* vnc */
|
||||||
wcsftime(fn, 128, L"%Y%m%d_%H%M%S.png", info);
|
wcsftime(fn, 128, L"%Y%m%d_%H%M%S.png", info);
|
||||||
wcscat(path, fn);
|
wcscat(path, fn);
|
||||||
vnc_take_screenshot(path);
|
vnc_take_screenshot(path);
|
||||||
pclog("Screenshot: fn='%ls'\n", path);
|
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@@ -294,3 +341,54 @@ endblit(void)
|
|||||||
{
|
{
|
||||||
ReleaseMutex(ghMutex);
|
ReleaseMutex(ghMutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
/* Tell the UI and/or renderers about a new screen resolution. */
|
||||||
|
void
|
||||||
|
plat_resize(int x, int y)
|
||||||
|
{
|
||||||
|
pclog("PLAT: VID[%d,%d] resizing to %dx%d\n", video_fullscreen, vid_api, x, y);
|
||||||
|
|
||||||
|
/* Do not accept these sizes. */
|
||||||
|
if (x==0 || x<320 || y==0 || y<200) return;
|
||||||
|
|
||||||
|
/* First, see if we should resize the UI window. */
|
||||||
|
if (! vid_resize)
|
||||||
|
#ifdef USE_WX
|
||||||
|
wx_resize(x, y);
|
||||||
|
#else
|
||||||
|
ui_resize(x, y);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
/* Now, tell the renderer about the new screen size we want. */
|
||||||
|
if (vid_apis[video_fullscreen][vid_api].resize) {
|
||||||
|
startblit();
|
||||||
|
vid_apis[video_fullscreen][vid_api].resize(x, y);
|
||||||
|
endblit();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
plat_mouse_capture(int on)
|
||||||
|
{
|
||||||
|
if (on && !mouse_capture) {
|
||||||
|
/* Enable the in-app mouse. */
|
||||||
|
#ifdef USE_WX
|
||||||
|
wx_capture_mouse(1);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
mouse_capture = 1;
|
||||||
|
} else if (!on && mouse_capture) {
|
||||||
|
/* Disable the in-app mouse. */
|
||||||
|
#ifdef USE_WX
|
||||||
|
wx_capture_mouse(0);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
mouse_capture = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user