mirror of
https://github.com/holub/mame
synced 2025-04-23 08:49:55 +03:00
Merge branch 'master' of https://github.com/mamedev/mame
This commit is contained in:
commit
7333404896
@ -2,9 +2,9 @@
|
||||
(c) 2000 ExPotato Co. Ltd (Excellent Potato)
|
||||
|
||||
TODO:
|
||||
Can't be emulated without proper motherboard BIOS
|
||||
Nearly everything.
|
||||
|
||||
There also appears to be a sequel which may be running on the same hardware, which might not have been released.
|
||||
There also appears to be a sequel which may be running on the same hardware, but which does not seem to have been released.
|
||||
Come On Baby - Ballympic Heroes! (c) 2001
|
||||
|
||||
Other games in this series include:
|
||||
@ -16,29 +16,138 @@ Can't be emulated without proper motherboard BIOS
|
||||
This is a Korean PC based board running Windows. The game runs fully from
|
||||
the hard disk making these things rather fragile and prone to damage.
|
||||
|
||||
Very little is known about the actual PC at this time, and the driver is
|
||||
just a skeleton placeholder for the CHD dump of the hard disk.
|
||||
PC Motherboard: PC Partner BXAS1-928
|
||||
BIOS String: 07/03/2000-440BX-ITE8671-2A69KV3IC-00
|
||||
aka. BIOS-I-2M
|
||||
Award BIOS
|
||||
B1120IAG.BIN For Super IO = ITE 8671
|
||||
Clock Gen IC : Winbond-39A
|
||||
(Nov/2000 built)
|
||||
|
||||
CPU - Slot 1 Celeron 633MHz (66x9.5)
|
||||
Memory - 65536k SDRAM PC100
|
||||
|
||||
The donor PC looks like a standard Windows98 setup.
|
||||
Brief motherboard overview (from PC Partner BXAS1-928 motherboard manual)
|
||||
--
|
||||
|
||||
HARDWARE CONFIGURATION
|
||||
This motherboard is based on Intel 82440BX chipset. The chipset is a
|
||||
highly integrated solution for a cost-effective and compact motherboard.
|
||||
The motherboard supports standard DIMM module, PC-100 DIMM module or
|
||||
Registered DIMM Module.
|
||||
|
||||
Features on-board include....
|
||||
super-I/O, Ultra DMA33 (Ultra DMA66 optional for VIA chipset), PCI bus master IDE, AGP Ver 1.0, PCI Ver 2.1 compliance,
|
||||
USB, VRM 8.4 compliance, ECC, ATX specification 2.01 compliance, hardware monitoring (optional), On-board PCI Sound
|
||||
Sub-system(optional). Supports PC-100 DIMM Module.
|
||||
|
||||
Key Features:
|
||||
|
||||
Processor
|
||||
- Full support for the Intel Pentium II & Intel Pentium III, Intel Celeron and Deschutes processors using Slot 1 connector.
|
||||
- Slot 1 connector for Intel Pentium II & Intel Pentium III microprocessors.
|
||||
- Supports 66MHz and 100MHz bus speed including all Pentium II & Pentium III processors and future processor.
|
||||
|
||||
CPU Speed Setting
|
||||
- Jumper setting or no jumper is needed to set for various speed of CPU (Factory optional).
|
||||
|
||||
VRM (Voltage Regulator Modules) on Board
|
||||
- Flexible motherboard design with on-board VRM 8.4, easy to upgrade with
|
||||
Future Intel Pentium II & Pentium III processors.
|
||||
|
||||
Cache
|
||||
- Pentium II & Pentium III Processor built-in L2 cache.
|
||||
|
||||
System Memory
|
||||
- Up to 384MB (SDRAM) or 768MB (Registered SDRAM) - for 440BX.
|
||||
- A total of three 168-pin DIMM sockets for 440BX.
|
||||
- Supports SDRAM (only for 66MHz bus speed).
|
||||
- Supports PC-100.
|
||||
|
||||
Memory Organization
|
||||
- Supports single-density DIMMs of 1MB, 2MB, 4MB, 8MB and 16MB depth (x64 or 72).
|
||||
- Supports double-density DIMMs of 2MB, 4MB, 8MB, 16MB and 32MB depth
|
||||
(x64 or 72).
|
||||
- Supports error checking correction (ECC) using parity DRAM modules (for 440BX).
|
||||
- Banks of different DRAM types depths can be mixed.
|
||||
|
||||
Expansion Slots
|
||||
- Supports SB-LINK Port for Creative Sound PCI Card.
|
||||
- 1 AGP slot (ver. 1.0, 1x/2x mode supported).
|
||||
- 5 PCI bus master slots (rev. 2.1 compliant, with 1 PCI slot sharing with 1 ISA slot)
|
||||
- 2 ISA slots (1 ISA slot sharing with 1 PCI slot).
|
||||
|
||||
On-Board I/O
|
||||
- Two PCI fast IDE ports supporting up to 4 ATA2, Ultra DMA33 IDE HDDs, Ultra DMA66 (optional only for VIA Chipset)
|
||||
IDE HDDs, CD-Roms, ZIP devices and LS-120 drives as boot drive.
|
||||
- Supports bus master IDE, PIO mode 4 (up to 16M bytes/sec), Ultra DMA33 (up
|
||||
to 33M bytes/sec) transfer.
|
||||
- One ECP/EPP parallel port .
|
||||
- Two 16550-compatible UART serial ports.
|
||||
- One floppy port supporting two FDDs of 360KB, 720KB, 1.2MB, 1.44MB
|
||||
or 2.88MB formated capacity.
|
||||
- Two USB ports.
|
||||
- PS/2 keyboard port.
|
||||
- PS/2 mouse port.
|
||||
- Infrared (IrDA) support (via a header).
|
||||
- One Line / Speaker out, one Mic in, one Line in and MIDI / Gameport
|
||||
|
||||
System BIOS
|
||||
- 2MB flash BIOS supporting PnP, APM, ATAPI, ACPI and DMI;
|
||||
- Jumper selection for 5V or 12V flash memory voltage.
|
||||
- Auto detects and supports LBA hard disks with formatted capacities over
|
||||
8.4GB.
|
||||
- Easily upgradable by end-user.
|
||||
|
||||
Plug-and-Play
|
||||
- Supports Plug-and-Play Specification 1.1.
|
||||
- Plug-and-play for DOS, Windows 3.X, Windows 95 as well as Windows 98.
|
||||
- Fully steerable PCI interrupts.
|
||||
|
||||
Power Management
|
||||
- Supports SMM, APM and ACPI.
|
||||
- Break switch for instant suspend/resume on system operation.
|
||||
- Energy star "Green PC" compliant .
|
||||
- Supports WAKE-ON-LAN (WOL).
|
||||
- Supports Wake on Ring for External Modem.
|
||||
- Supports ATX specification 2.01.
|
||||
|
||||
Creative PCI Sound (optional)
|
||||
- Full DOS game support (DDMA, PC/PCI, CLS).
|
||||
- PCI 2.1 Bus Master, hardware sound acceleration.
|
||||
- Direct sound and sound Blaster Compatible.
|
||||
- Full Duplex, 3D Enhancement, Software wavetable.
|
||||
- PNP and APM 1.2 support.
|
||||
- Win95/98, NT drivers ready.
|
||||
|
||||
Keyboard Password Turn ON
|
||||
- Special feature for system security.
|
||||
|
||||
System monitoring (optional)
|
||||
- Hardware monitoring circuitry is supported, provides voltages, temperature, fan speeds etc. monitoring.
|
||||
|
||||
--
|
||||
|
||||
The donor PC looks like a standard Windows 98 setup.
|
||||
The only exceptions we see are that there's a game logo.sys/logo.bmp in the
|
||||
root directory to hide the Windows98 startup screen, and a shortcut to
|
||||
root directory to hide the Windows 98 startup screen, and a shortcut to
|
||||
the game in the startup programs.
|
||||
Also of interest, Windows98 was installed from a setup folder on the HD.
|
||||
Also of interest, Windows 98 was installed from a setup folder on the HD.
|
||||
To me this hints that there may have been some expectation of the disk
|
||||
being plugged into random hardware.
|
||||
|
||||
The game is pretty much standard PC game running on Windows98 PC.
|
||||
It uses DirectSound and the Microsoft MCI interfaces and Glide for video.
|
||||
The game is pretty much a standard PC game running on a Windows 98 PC.
|
||||
It uses DirectSound and the Microsoft MCI interfaces and 3dfx Glide for video.
|
||||
The PC that the game was dumped from has Sound Blaster and Ensoniq drivers,
|
||||
but it works fine with some other sound configurations.
|
||||
The donor PC has a 3dfxvoodoo3 driver installation directory, but it works
|
||||
The donor PC has a "3dfxvoodoo3" driver installation directory, but it works
|
||||
fine with a Voodoo4 4500.
|
||||
|
||||
The game itself has some protection, it expects a file C:\\WINDOWS\win386p.swp of 84 bytes
|
||||
to have the hard disk volume serial number in ascii number (not hex) format at offset 4.
|
||||
|
||||
The game appears to use parallel port (0x378,0x379)for I/O.
|
||||
The direct port access means it won't run on XP
|
||||
The game appears to use parallel port (0x378,0x379) for I/O.
|
||||
The direct port access means it won't run on XP.
|
||||
For the controls, it writes a device select to 0x378, and reads the device value from 0x379.
|
||||
There is some other output, maybe lights?
|
||||
--------------------------------------------
|
||||
@ -126,8 +235,8 @@ MACHINE_CONFIG_END
|
||||
|
||||
|
||||
ROM_START(comebaby)
|
||||
ROM_REGION32_LE(0x20000, "maincpu", 0) /* motherboard bios */
|
||||
ROM_LOAD("comeonbaby.pcbios", 0x000000, 0x10000, NO_DUMP )
|
||||
ROM_REGION32_LE(0x80000, "maincpu", 0) /* motherboard bios */
|
||||
ROM_LOAD("b1120iag.bin", 0x000000, 0x40000, CRC(9b6f95f1) SHA1(65d6a2fea9911593f093b2e2a43d1534b54d60b3) )
|
||||
|
||||
DISK_REGION( "disks" )
|
||||
DISK_IMAGE( "comebaby", 0, SHA1(ea57919319c0b6a1d4abd7822cff028855bf082f) )
|
||||
|
@ -156,12 +156,12 @@ void sdl_monitor_info::refresh()
|
||||
#if defined(SDLMAME_WIN32) // Win32 version
|
||||
MONITORINFOEX info;
|
||||
info.cbSize = sizeof(info);
|
||||
GetMonitorInfo((HMONITOR)monitor->handle, (LPMONITORINFO)&info);
|
||||
monitor->m_dimensions.x = monitor->m_dimensions.y = 0;
|
||||
monitor->m_center_width = monitor->m_dimensions.w = info.rcMonitor.right - info.rcMonitor.left;
|
||||
monitor->m_center_height = monitor->m_dimensions.h = info.rcMonitor.bottom - info.rcMonitor.top;
|
||||
GetMonitorInfo((HMONITOR)m_handle, (LPMONITORINFO)&info);
|
||||
m_dimensions.x = m_dimensions.y = 0;
|
||||
m_center_width = m_dimensions.w = info.rcMonitor.right - info.rcMonitor.left;
|
||||
m_center_height = m_dimensions.h = info.rcMonitor.bottom - info.rcMonitor.top;
|
||||
char *temp = utf8_from_wstring(info.szDevice);
|
||||
strcpy(monitor->monitor_device, temp);
|
||||
strcpy(m_monitor_device, temp);
|
||||
osd_free(temp);
|
||||
#elif defined(SDLMAME_MACOSX) // Mac OS X Core Imaging version
|
||||
CGDirectDisplayID primary;
|
||||
@ -171,9 +171,10 @@ void sdl_monitor_info::refresh()
|
||||
primary = CGMainDisplayID();
|
||||
dbounds = CGDisplayBounds(primary);
|
||||
|
||||
monitor->center_width = monitor->monitor_width = dbounds.size.width - dbounds.origin.x;
|
||||
monitor->center_height = monitor->monitor_height = dbounds.size.height - dbounds.origin.y;
|
||||
strcpy(monitor->monitor_device, "Mac OS X display");
|
||||
m_dimensions.x = m_dimensions.y = 0;
|
||||
m_center_width = m_dimensions.w = dbounds.size.width - dbounds.origin.x;
|
||||
m_center_height = m_dimensions.h = dbounds.size.height - dbounds.origin.y;
|
||||
strcpy(m_monitor_device, "Mac OS X display");
|
||||
#elif defined(SDLMAME_X11) || defined(SDLMAME_NO_X11) // X11 version
|
||||
{
|
||||
#if defined(SDLMAME_X11)
|
||||
@ -185,9 +186,10 @@ void sdl_monitor_info::refresh()
|
||||
if ( SDL_GetWMInfo(&info) && (info.subsystem == SDL_SYSWM_X11) )
|
||||
{
|
||||
screen = DefaultScreen(info.info.x11.display);
|
||||
SDL_VideoDriverName(monitor->monitor_device, sizeof(monitor->monitor_device)-1);
|
||||
monitor->monitor_width = DisplayWidth(info.info.x11.display, screen);
|
||||
monitor->monitor_height = DisplayHeight(info.info.x11.display, screen);
|
||||
SDL_VideoDriverName(m_monitor_device, sizeof(m_monitor_device)-1);
|
||||
m_dimensions.x = m_dimensions.y = 0;
|
||||
m_dimensions.w = DisplayWidth(info.info.x11.display, screen);
|
||||
m_dimensions.h = DisplayHeight(info.info.x11.display, screen);
|
||||
|
||||
if ((XineramaIsActive(info.info.x11.display)) && video_config.restrictonemonitor)
|
||||
{
|
||||
@ -196,15 +198,15 @@ void sdl_monitor_info::refresh()
|
||||
|
||||
xineinfo = XineramaQueryScreens(info.info.x11.display, &numscreens);
|
||||
|
||||
monitor->center_width = xineinfo[0].width;
|
||||
monitor->center_height = xineinfo[0].height;
|
||||
m_center_width = xineinfo[0].width;
|
||||
m_center_height = xineinfo[0].height;
|
||||
|
||||
XFree(xineinfo);
|
||||
}
|
||||
else
|
||||
{
|
||||
monitor->center_width = monitor->monitor_width;
|
||||
monitor->center_height = monitor->monitor_height;
|
||||
m_center_width = m_dimensions.w;
|
||||
m_center_height = m_dimensions.h;
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -213,7 +215,7 @@ void sdl_monitor_info::refresh()
|
||||
static int first_call=0;
|
||||
static int cw = 0, ch = 0;
|
||||
|
||||
SDL_VideoDriverName(monitor->monitor_device, sizeof(monitor->monitor_device)-1);
|
||||
SDL_VideoDriverName(m_monitor_device, sizeof(m_monitor_device)-1);
|
||||
if (first_call==0)
|
||||
{
|
||||
const char *dimstr = osd_getenv(SDLENV_DESKTOPDIM);
|
||||
@ -233,7 +235,7 @@ void sdl_monitor_info::refresh()
|
||||
}
|
||||
if ((cw==0) || (ch==0))
|
||||
{
|
||||
osd_printf_warning("WARNING: SDL_GetVideoInfo() for driver <%s> is broken.\n", monitor->monitor_device);
|
||||
osd_printf_warning("WARNING: SDL_GetVideoInfo() for driver <%s> is broken.\n", m_monitor_device);
|
||||
osd_printf_warning(" You should set SDLMAME_DESKTOPDIM to your desktop size.\n");
|
||||
osd_printf_warning(" e.g. export SDLMAME_DESKTOPDIM=800x600\n");
|
||||
osd_printf_warning(" Assuming 1024x768 now!\n");
|
||||
@ -242,16 +244,17 @@ void sdl_monitor_info::refresh()
|
||||
}
|
||||
}
|
||||
}
|
||||
monitor->monitor_width = cw;
|
||||
monitor->monitor_height = ch;
|
||||
monitor->center_width = cw;
|
||||
monitor->center_height = ch;
|
||||
m_dimensions.w = cw;
|
||||
m_dimensions.h = ch;
|
||||
m_center_width = cw;
|
||||
m_center_height = ch;
|
||||
}
|
||||
}
|
||||
#elif defined(SDLMAME_OS2) // OS2 version
|
||||
monitor->center_width = monitor->monitor_width = WinQuerySysValue( HWND_DESKTOP, SV_CXSCREEN );
|
||||
monitor->center_height = monitor->monitor_height = WinQuerySysValue( HWND_DESKTOP, SV_CYSCREEN );
|
||||
strcpy(monitor->monitor_device, "OS/2 display");
|
||||
m_dimensions.x = m_dimensions.y = 0;
|
||||
m_center_width = m_dimensions.w = WinQuerySysValue( HWND_DESKTOP, SV_CXSCREEN );
|
||||
m_center_height = m_dimensions.h = WinQuerySysValue( HWND_DESKTOP, SV_CYSCREEN );
|
||||
strcpy(m_monitor_device, "OS/2 display");
|
||||
#else
|
||||
#error Unknown SDLMAME_xx OS type!
|
||||
#endif
|
||||
@ -260,8 +263,8 @@ void sdl_monitor_info::refresh()
|
||||
static int info_shown=0;
|
||||
if (!info_shown)
|
||||
{
|
||||
osd_printf_verbose("SDL Device Driver : %s\n", monitor->monitor_device);
|
||||
osd_printf_verbose("SDL Monitor Dimensions: %d x %d\n", monitor->monitor_width, monitor->monitor_height);
|
||||
osd_printf_verbose("SDL Device Driver : %s\n", m_monitor_device);
|
||||
osd_printf_verbose("SDL Monitor Dimensions: %d x %d\n", m_dimensions.w, m_dimensions.h);
|
||||
info_shown = 1;
|
||||
}
|
||||
}
|
||||
@ -323,7 +326,7 @@ void sdl_osd_interface::update(bool skip_redraw)
|
||||
//============================================================
|
||||
|
||||
#if !defined(SDLMAME_WIN32) && !(SDLMAME_SDL2)
|
||||
static void add_primary_monitor(void *data)
|
||||
void sdl_monitor_info::add_primary_monitor(void *data)
|
||||
{
|
||||
sdl_monitor_info ***tailptr = (sdl_monitor_info ***)data;
|
||||
sdl_monitor_info *monitor;
|
||||
@ -332,19 +335,19 @@ static void add_primary_monitor(void *data)
|
||||
monitor = global_alloc_clear(sdl_monitor_info);
|
||||
|
||||
// copy in the data
|
||||
monitor->handle = 1;
|
||||
monitor->m_handle = 1;
|
||||
|
||||
sdlvideo_monitor_refresh(monitor);
|
||||
monitor->refresh();
|
||||
|
||||
// guess the aspect ratio assuming square pixels
|
||||
monitor->aspect = (float)(monitor->monitor_width) / (float)(monitor->monitor_height);
|
||||
monitor->m_aspect = (float)(monitor->m_dimensions.w) / (float)(monitor->m_dimensions.h);
|
||||
|
||||
// save the primary monitor handle
|
||||
primary_monitor = monitor;
|
||||
|
||||
// hook us into the list
|
||||
**tailptr = monitor;
|
||||
*tailptr = &monitor->next;
|
||||
*tailptr = &monitor->m_next;
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -367,34 +370,22 @@ static BOOL CALLBACK monitor_enum_callback(HMONITOR handle, HDC dc, LPRECT rect,
|
||||
assert(result);
|
||||
(void)result; // to silence gcc 4.6
|
||||
|
||||
// allocate a new monitor info
|
||||
monitor = global_alloc_clear(sdl_monitor_info);
|
||||
|
||||
// copy in the data
|
||||
|
||||
#ifdef PTR64
|
||||
monitor->handle = (UINT64)handle;
|
||||
#else
|
||||
monitor->handle = (UINT32)handle;
|
||||
#endif
|
||||
monitor->monitor_width = info.rcMonitor.right - info.rcMonitor.left;
|
||||
monitor->monitor_height = info.rcMonitor.bottom - info.rcMonitor.top;
|
||||
monitor->center_width = monitor->monitor_width;
|
||||
monitor->center_height = monitor->monitor_height;
|
||||
char *temp = utf8_from_wstring(info.szDevice);
|
||||
strcpy(monitor->monitor_device, temp);
|
||||
osd_free(temp);
|
||||
|
||||
// guess the aspect ratio assuming square pixels
|
||||
monitor->aspect = (float)(info.rcMonitor.right - info.rcMonitor.left) / (float)(info.rcMonitor.bottom - info.rcMonitor.top);
|
||||
float aspect = (float)(info.rcMonitor.right - info.rcMonitor.left) / (float)(info.rcMonitor.bottom - info.rcMonitor.top);
|
||||
|
||||
// allocate a new monitor info
|
||||
char *temp = utf8_from_wstring(info.szDevice);
|
||||
// copy in the data
|
||||
monitor = global_alloc(sdl_monitor_info((UINT64) handle, temp, aspect));
|
||||
osd_free(temp);
|
||||
|
||||
// save the primary monitor handle
|
||||
if (info.dwFlags & MONITORINFOF_PRIMARY)
|
||||
primary_monitor = monitor;
|
||||
sdl_monitor_info::primary_monitor = monitor;
|
||||
|
||||
// hook us into the list
|
||||
**tailptr = monitor;
|
||||
*tailptr = &monitor->next;
|
||||
*tailptr = &monitor->m_next;
|
||||
|
||||
// enumerate all the available monitors so to list their names in verbose mode
|
||||
return TRUE;
|
||||
@ -449,7 +440,7 @@ void sdl_monitor_info::init()
|
||||
|
||||
// hook us into the list
|
||||
*tailptr = monitor;
|
||||
tailptr = &monitor->next;
|
||||
tailptr = &monitor->m_next;
|
||||
}
|
||||
}
|
||||
osd_printf_verbose("Leave init_monitors\n");
|
||||
@ -466,7 +457,7 @@ void sdl_monitor_info::exit()
|
||||
while (sdl_monitor_info::list != NULL)
|
||||
{
|
||||
sdl_monitor_info *temp = sdl_monitor_info::list;
|
||||
sdl_monitor_info::list = temp->next;
|
||||
sdl_monitor_info::list = temp->next();
|
||||
global_free(temp);
|
||||
}
|
||||
}
|
||||
@ -498,7 +489,7 @@ sdl_monitor_info *sdl_monitor_info::pick_monitor(sdl_options &options, int index
|
||||
// look for a match in the name first
|
||||
if (scrname != NULL)
|
||||
{
|
||||
for (monitor = sdl_monitor_info::list; monitor != NULL; monitor = monitor->next)
|
||||
for (monitor = sdl_monitor_info::list; monitor != NULL; monitor = monitor->next())
|
||||
{
|
||||
moncount++;
|
||||
if (strcmp(scrname, monitor->device()) == 0)
|
||||
@ -508,7 +499,7 @@ sdl_monitor_info *sdl_monitor_info::pick_monitor(sdl_options &options, int index
|
||||
|
||||
// didn't find it; alternate monitors until we hit the jackpot
|
||||
index %= moncount;
|
||||
for (monitor = sdl_monitor_info::list; monitor != NULL; monitor = monitor->next)
|
||||
for (monitor = sdl_monitor_info::list; monitor != NULL; monitor = monitor->next())
|
||||
if (index-- == 0)
|
||||
goto finishit;
|
||||
|
||||
@ -523,7 +514,7 @@ finishit:
|
||||
return monitor;
|
||||
}
|
||||
#else
|
||||
static sdl_monitor_info *pick_monitor(sdl_options &options, int index)
|
||||
sdl_monitor_info *sdl_monitor_info::pick_monitor(sdl_options &options, int index)
|
||||
{
|
||||
sdl_monitor_info *monitor;
|
||||
float aspect;
|
||||
@ -536,7 +527,7 @@ static sdl_monitor_info *pick_monitor(sdl_options &options, int index)
|
||||
|
||||
if (aspect != 0)
|
||||
{
|
||||
monitor->aspect = aspect;
|
||||
monitor->m_aspect = aspect;
|
||||
}
|
||||
return monitor;
|
||||
}
|
||||
|
@ -58,10 +58,22 @@ struct sdl_mode
|
||||
int height;
|
||||
};
|
||||
|
||||
// FIXME: This is sort of ugly ... and should be a real interface only
|
||||
class sdl_monitor_info
|
||||
{
|
||||
public:
|
||||
sdl_monitor_info * next; // pointer to next monitor in list
|
||||
|
||||
sdl_monitor_info()
|
||||
: m_next(NULL), m_handle(0), m_aspect(0.0f),
|
||||
m_center_width(0), m_center_height(0)
|
||||
{}
|
||||
sdl_monitor_info(const UINT64 handle, const char *monitor_device, float aspect)
|
||||
: m_next(NULL), m_handle(handle), m_aspect(aspect),
|
||||
m_center_width(0), m_center_height(0)
|
||||
{
|
||||
strncpy(m_monitor_device, monitor_device, 64);
|
||||
refresh();
|
||||
}
|
||||
|
||||
const UINT64 handle() { return m_handle; }
|
||||
const SDL_Rect &position_size() { refresh(); return m_dimensions; }
|
||||
@ -69,6 +81,7 @@ public:
|
||||
const char *device() { return m_monitor_device; }
|
||||
|
||||
float aspect();
|
||||
|
||||
int center_width() { refresh(); return m_center_width; }
|
||||
int center_height() { refresh(); return m_center_height; }
|
||||
|
||||
@ -78,7 +91,18 @@ public:
|
||||
static void init();
|
||||
static void exit();
|
||||
static sdl_monitor_info *pick_monitor(sdl_options &options, int index);
|
||||
#if !defined(SDLMAME_WIN32) && !(SDLMAME_SDL2)
|
||||
static void add_primary_monitor(void *data);
|
||||
#endif
|
||||
|
||||
sdl_monitor_info * next() { return m_next; } // pointer to next monitor in list
|
||||
|
||||
// STATIC
|
||||
static sdl_monitor_info *primary_monitor;
|
||||
static sdl_monitor_info *list;
|
||||
|
||||
// FIXME: shouldn't be here - see windows enumeration callback
|
||||
sdl_monitor_info * m_next; // pointer to next monitor in list
|
||||
private:
|
||||
void refresh();
|
||||
|
||||
@ -89,9 +113,6 @@ private:
|
||||
int m_center_width; // width of first physical screen for centering
|
||||
int m_center_height; // height of first physical screen for centering
|
||||
|
||||
// STATIC
|
||||
static sdl_monitor_info *primary_monitor;
|
||||
static sdl_monitor_info *list;
|
||||
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user