summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author Nathan Woods <npwoods@mess.org>2016-07-31 23:52:57 -0400
committer Nathan Woods <npwoods@mess.org>2016-07-31 23:52:57 -0400
commit59ca4d1763ab890144465cb9822d1530a1e5ec6f (patch)
tree8354f829f91af50f1deeed65b403baa5b6a16c68 /src
parenta4f24a24d3ed131d75b407a96a44b7d7c5d68b65 (diff)
parente2682ec4daae69e3519452446c6e16a6e0999ca6 (diff)
1. Merge branch 'master' into diimage_filetype_as_stdstring
2. Introduced is_filetype(), instead of normalizing filetype() to lower case
Diffstat (limited to 'src')
-rw-r--r--src/devices/bus/a7800/a78_slot.cpp8
-rw-r--r--src/devices/bus/a7800/a78_slot.h2
-rw-r--r--src/devices/bus/apricot/keyboard/hle.cpp87
-rw-r--r--src/devices/bus/apricot/keyboard/hle.h14
-rw-r--r--src/devices/bus/c64/exp.cpp8
-rw-r--r--src/devices/bus/cbm2/exp.cpp6
-rw-r--r--src/devices/bus/intv/slot.cpp2
-rw-r--r--src/devices/bus/sega8/sega8_slot.cpp8
-rw-r--r--src/devices/bus/sega8/sega8_slot.h2
-rw-r--r--src/devices/bus/vic10/exp.cpp8
-rw-r--r--src/devices/bus/vic20/exp.cpp14
-rw-r--r--src/devices/imagedev/cassette.cpp6
-rw-r--r--src/devices/imagedev/chd_cd.cpp2
-rw-r--r--src/devices/imagedev/midiin.h2
-rw-r--r--src/devices/imagedev/midiout.h2
-rw-r--r--src/emu/debug/debugcon.cpp2
-rw-r--r--src/emu/diimage.cpp168
-rw-r--r--src/emu/diimage.h45
-rw-r--r--src/emu/image.cpp42
-rw-r--r--src/emu/input.cpp2
-rw-r--r--src/emu/romload.cpp24
-rw-r--r--src/emu/screen.cpp4
-rw-r--r--src/frontend/mame/clifront.cpp4
-rw-r--r--src/frontend/mame/info.cpp52
-rw-r--r--src/frontend/mame/ui/filemngr.cpp4
-rw-r--r--src/frontend/mame/ui/floppycntrl.cpp2
-rw-r--r--src/frontend/mame/ui/ui.cpp2
-rw-r--r--src/lib/formats/dsk_dsk.cpp4
-rw-r--r--src/lib/util/aviio.cpp2
-rw-r--r--src/lib/util/corefile.cpp4
-rw-r--r--src/lib/util/corefile.h2
-rw-r--r--src/mame/drivers/chihiro.cpp12
-rw-r--r--src/mame/drivers/coleco.cpp8
-rw-r--r--src/mame/drivers/d6800.cpp2
-rw-r--r--src/mame/drivers/eti660.cpp2
-rw-r--r--src/mame/drivers/jaguar.cpp6
-rw-r--r--src/mame/drivers/lynx.cpp2
-rw-r--r--src/mame/drivers/ssem.cpp4
-rw-r--r--src/mame/drivers/studio2.cpp2
-rw-r--r--src/mame/drivers/vc4000.cpp4
-rw-r--r--src/mame/drivers/vip.cpp4
-rw-r--r--src/mame/includes/lviv.h2
-rw-r--r--src/mame/includes/lynx.h2
-rw-r--r--src/mame/includes/microtan.h2
-rw-r--r--src/mame/machine/atarifdc.cpp8
-rw-r--r--src/mame/machine/lviv.cpp10
-rw-r--r--src/mame/machine/lynx.cpp16
-rw-r--r--src/mame/machine/mbee.cpp6
-rw-r--r--src/mame/machine/microtan.cpp10
-rw-r--r--src/mame/machine/z80bin.cpp2
-rw-r--r--src/mame/machine/z80bin.h2
-rw-r--r--src/mame/video/chihiro.cpp59
-rw-r--r--src/osd/modules/debugger/osx/debugview.mm4
-rw-r--r--src/osd/modules/debugger/osx/debugwindowhandler.mm2
-rw-r--r--src/osd/modules/debugger/osx/errorlogviewer.mm2
-rw-r--r--src/osd/modules/input/input_common.h8
-rw-r--r--src/osd/modules/input/input_rawinput.cpp10
-rw-r--r--src/osd/modules/input/input_win32.cpp10
-rw-r--r--src/osd/modules/render/d3d/d3dhlsl.cpp28
-rw-r--r--src/osd/modules/render/drawd3d.cpp2
-rw-r--r--src/osd/modules/sound/coreaudio_sound.cpp4
-rw-r--r--src/osd/osdsync.h2
-rw-r--r--src/osd/windows/window.cpp8
-rw-r--r--src/tools/imgtool/stream.cpp8
64 files changed, 474 insertions, 313 deletions
diff --git a/src/devices/bus/a7800/a78_slot.cpp b/src/devices/bus/a7800/a78_slot.cpp
index 9e028502170..b28b71564bb 100644
--- a/src/devices/bus/a7800/a78_slot.cpp
+++ b/src/devices/bus/a7800/a78_slot.cpp
@@ -378,7 +378,7 @@ bool a78_cart_slot_device::call_load()
char head[128];
fread(head, 128);
- if (verify_header((char *)head) == IMAGE_VERIFY_FAIL)
+ if (!verify_header((char *)head))
return IMAGE_INIT_FAIL;
len = (head[49] << 24) | (head[50] << 16) | (head[51] << 8) | head[52];
@@ -499,18 +499,18 @@ void a78_cart_slot_device::call_unload()
has an admissible header
-------------------------------------------------*/
-int a78_cart_slot_device::verify_header(char *header)
+bool a78_cart_slot_device::verify_header(char *header)
{
const char *magic = "ATARI7800";
if (strncmp(magic, header + 1, 9))
{
logerror("Not a valid A7800 image\n");
- return IMAGE_VERIFY_FAIL;
+ return false;
}
logerror("returning ID_OK\n");
- return IMAGE_VERIFY_PASS;
+ return true;
}
diff --git a/src/devices/bus/a7800/a78_slot.h b/src/devices/bus/a7800/a78_slot.h
index 88a758b8ce2..933ef663958 100644
--- a/src/devices/bus/a7800/a78_slot.h
+++ b/src/devices/bus/a7800/a78_slot.h
@@ -128,7 +128,7 @@ private:
device_a78_cart_interface* m_cart;
int m_type;
- int verify_header(char *header);
+ bool verify_header(char *header);
int validate_header(int head, bool log);
void internal_header_logging(UINT8 *header, UINT32 len);
};
diff --git a/src/devices/bus/apricot/keyboard/hle.cpp b/src/devices/bus/apricot/keyboard/hle.cpp
index 4fb94c1f1a4..5315cb6e31a 100644
--- a/src/devices/bus/apricot/keyboard/hle.cpp
+++ b/src/devices/bus/apricot/keyboard/hle.cpp
@@ -189,6 +189,15 @@ ioport_constructor apricot_keyboard_hle_device::device_input_ports() const
return INPUT_PORTS_NAME( keyboard );
}
+static MACHINE_CONFIG_FRAGMENT( keyboard_components )
+ MCFG_MSM5832_ADD("rtc", XTAL_32_768kHz)
+MACHINE_CONFIG_END
+
+machine_config_constructor apricot_keyboard_hle_device::device_mconfig_additions() const
+{
+ return MACHINE_CONFIG_NAME( keyboard_components );
+}
+
//**************************************************************************
// LIVE DEVICE
@@ -202,7 +211,9 @@ apricot_keyboard_hle_device::apricot_keyboard_hle_device(const machine_config &m
device_t(mconfig, APRICOT_KEYBOARD_HLE, "Apricot Keyboard (HLE)", tag, owner, clock, "apricotkb_hle", __FILE__),
device_apricot_keyboard_interface(mconfig, *this),
device_buffered_serial_interface(mconfig, *this),
- device_matrix_keyboard_interface(mconfig, *this, "row_0", "row_1", "row_2", "row_3", "row_4", "row_5", "row_6", "row_7", "row_8", "row_9", "row_a", "row_b", "row_c")
+ device_matrix_keyboard_interface(mconfig, *this, "row_0", "row_1", "row_2", "row_3", "row_4", "row_5", "row_6", "row_7", "row_8", "row_9", "row_a", "row_b", "row_c"),
+ m_rtc(*this, "rtc"),
+ m_rtc_index(0)
{
}
@@ -234,19 +245,72 @@ void apricot_keyboard_hle_device::device_reset()
start_processing(attotime::from_hz(7800));
}
+//-------------------------------------------------
+// tra_callback - send bit to host
+//-------------------------------------------------
+
void apricot_keyboard_hle_device::tra_callback()
{
m_host->in_w(transmit_register_get_data_bit());
}
-void apricot_keyboard_hle_device::tra_complete()
-{
- device_buffered_serial_interface::tra_complete();
-}
+//-------------------------------------------------
+// received_byte - handle received byte
+//-------------------------------------------------
void apricot_keyboard_hle_device::received_byte(UINT8 byte)
{
- logerror("received command: %02x\n", byte);
+ if ((byte & 0xf0) == 0xf0)
+ {
+ // rtc data
+ if (m_rtc_index >= 0)
+ {
+ m_rtc->address_w(m_rtc_index--);
+ m_rtc->data_w(machine().driver_data()->generic_space(), 0, byte);
+ }
+ }
+ else
+ {
+ switch (byte)
+ {
+ case CMD_REQ_TIME_AND_DATE:
+ logerror("System requests current time\n");
+
+ // remove pending keys just in case
+ clear_fifo();
+
+ // send time prefix
+ transmit_byte(0xed);
+
+ // make rtc chip ready
+ m_rtc->cs_w(1);
+ m_rtc->read_w(1);
+
+ // send bcd encoded date and time to system
+ for (int i = 12; i >= 0; i--)
+ {
+ m_rtc->address_w(i);
+ transmit_byte(0xf0 | m_rtc->data_r(machine().driver_data()->generic_space(), 0));
+ }
+
+ break;
+
+ case CMD_SET_TIME_AND_DATE:
+ logerror("System requests to set time\n");
+
+ // we start with the year
+ m_rtc_index = 12;
+
+ // make rtc chip ready
+ m_rtc->cs_w(1);
+ m_rtc->write_w(1);
+
+ break;
+
+ default:
+ logerror("Unhandled command: %02x\n", byte);
+ }
+ }
}
//-------------------------------------------------
@@ -269,18 +333,13 @@ void apricot_keyboard_hle_device::key_break(UINT8 row, UINT8 column)
transmit_byte(0x80 | (row << 3) | column);
}
-void apricot_keyboard_hle_device::out_w(int state)
-{
- device_buffered_serial_interface::rx_w(state);
-}
-
//-------------------------------------------------
-// transmit_byte - send a byte or queue it
+// out_w - receive bit from host
//-------------------------------------------------
-void apricot_keyboard_hle_device::transmit_byte(UINT8 byte)
+void apricot_keyboard_hle_device::out_w(int state)
{
- device_buffered_serial_interface::transmit_byte(byte);
+ device_buffered_serial_interface::rx_w(state);
}
//-------------------------------------------------
diff --git a/src/devices/bus/apricot/keyboard/hle.h b/src/devices/bus/apricot/keyboard/hle.h
index a0d8b1b306f..139fa9da1c7 100644
--- a/src/devices/bus/apricot/keyboard/hle.h
+++ b/src/devices/bus/apricot/keyboard/hle.h
@@ -14,6 +14,7 @@
#include "emu.h"
#include "keyboard.h"
#include "machine/keyboard.h"
+#include "machine/msm5832.h"
//**************************************************************************
@@ -24,7 +25,7 @@
class apricot_keyboard_hle_device : public device_t,
public device_apricot_keyboard_interface,
- public device_buffered_serial_interface<8>,
+ public device_buffered_serial_interface<16>,
protected device_matrix_keyboard_interface<13>
{
public:
@@ -37,22 +38,29 @@ public:
protected:
// device_t overrides
virtual ioport_constructor device_input_ports() const override;
+ virtual machine_config_constructor device_mconfig_additions() const override;
virtual void device_start() override;
virtual void device_reset() override;
// device_buffered_serial_interface overrides
virtual void tra_callback() override;
- virtual void tra_complete() override;
virtual void received_byte(UINT8 byte) override;
// device_matrix_keyboard_interface overrides
virtual void key_make(UINT8 row, UINT8 column) override;
virtual void key_break(UINT8 row, UINT8 column) override;
- void transmit_byte(UINT8 byte);
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
private:
+ required_device<msm5832_device> m_rtc;
+
+ enum {
+ CMD_REQ_TIME_AND_DATE = 0xe1,
+ CMD_SET_TIME_AND_DATE = 0xe4
+ };
+
+ int m_rtc_index;
};
diff --git a/src/devices/bus/c64/exp.cpp b/src/devices/bus/c64/exp.cpp
index 8915d3301b7..ff9db982e57 100644
--- a/src/devices/bus/c64/exp.cpp
+++ b/src/devices/bus/c64/exp.cpp
@@ -123,7 +123,7 @@ bool c64_expansion_slot_device::call_load()
{
size = length();
- if (filetype() == "80")
+ if (is_filetype("80"))
{
fread(m_card->m_roml, size);
m_card->m_exrom = (0);
@@ -133,20 +133,20 @@ bool c64_expansion_slot_device::call_load()
m_card->m_game = 0;
}
}
- else if (filetype() == "a0")
+ else if (is_filetype("a0"))
{
fread(m_card->m_romh, 0x2000);
m_card->m_exrom = 0;
m_card->m_game = 0;
}
- else if (filetype() == "e0")
+ else if (is_filetype("e0"))
{
fread(m_card->m_romh, 0x2000);
m_card->m_game = 0;
}
- else if (filetype() == "crt")
+ else if (is_filetype("crt"))
{
size_t roml_size = 0;
size_t romh_size = 0;
diff --git a/src/devices/bus/cbm2/exp.cpp b/src/devices/bus/cbm2/exp.cpp
index 08cdb2e84c7..227dd3d858e 100644
--- a/src/devices/bus/cbm2/exp.cpp
+++ b/src/devices/bus/cbm2/exp.cpp
@@ -111,17 +111,17 @@ bool cbm2_expansion_slot_device::call_load()
{
size = length();
- if (filetype() == "20")
+ if (is_filetype("20"))
{
m_card->m_bank1.allocate(size);
fread(m_card->m_bank1, size);
}
- else if (filetype() == "40")
+ else if (is_filetype("40"))
{
m_card->m_bank2.allocate(size);
fread(m_card->m_bank2, size);
}
- else if (filetype() == "60")
+ else if (is_filetype("60"))
{
m_card->m_bank3.allocate(size);
fread(m_card->m_bank3, size);
diff --git a/src/devices/bus/intv/slot.cpp b/src/devices/bus/intv/slot.cpp
index 30e6d07aa23..2f4abb0fcd0 100644
--- a/src/devices/bus/intv/slot.cpp
+++ b/src/devices/bus/intv/slot.cpp
@@ -249,7 +249,7 @@ int intv_cart_slot_device::load_fullpath()
UINT8 *ROM;
/* if it is in .rom format, we enter here */
- if (filetype() == "rom")
+ if (is_filetype("rom"))
{
// header
fread(&temp, 1);
diff --git a/src/devices/bus/sega8/sega8_slot.cpp b/src/devices/bus/sega8/sega8_slot.cpp
index 2d5905e240c..937d08d4e2c 100644
--- a/src/devices/bus/sega8/sega8_slot.cpp
+++ b/src/devices/bus/sega8/sega8_slot.cpp
@@ -213,15 +213,15 @@ static const char *sega8_get_slot(int type)
call load
-------------------------------------------------*/
-int sega8_cart_slot_device::verify_cart( UINT8 *magic, int size )
+bool sega8_cart_slot_device::verify_cart( UINT8 *magic, int size )
{
- int retval = IMAGE_VERIFY_FAIL;
+ int retval = false;
// Verify the file is a valid image - check $7ff0 for "TMR SEGA"
if (size >= 0x8000)
{
if (!strncmp((char*)&magic[0x7ff0], "TMR SEGA", 8))
- retval = IMAGE_VERIFY_PASS;
+ retval = true;
}
return retval;
@@ -368,7 +368,7 @@ bool sega8_cart_slot_device::call_load()
memcpy(ROM, get_software_region("rom"), get_software_region_length("rom"));
/* check the image */
- if (verify_cart(ROM, len) == IMAGE_VERIFY_FAIL)
+ if (!verify_cart(ROM, len))
logerror("Warning loading image: verify_cart failed\n");
if (software_entry() != nullptr)
diff --git a/src/devices/bus/sega8/sega8_slot.h b/src/devices/bus/sega8/sega8_slot.h
index b136f68ea99..c9236b41eed 100644
--- a/src/devices/bus/sega8/sega8_slot.h
+++ b/src/devices/bus/sega8/sega8_slot.h
@@ -117,7 +117,7 @@ public:
void setup_ram();
void internal_header_logging(UINT8 *ROM, UINT32 len, UINT32 nvram_len);
- int verify_cart(UINT8 *magic, int size);
+ bool verify_cart(UINT8 *magic, int size);
void set_lphaser_xoffset(UINT8 *rom, int size);
void save_ram() { if (m_cart && m_cart->get_ram_size()) m_cart->save_ram(); }
diff --git a/src/devices/bus/vic10/exp.cpp b/src/devices/bus/vic10/exp.cpp
index 27a2e8a07df..dedf6e81053 100644
--- a/src/devices/bus/vic10/exp.cpp
+++ b/src/devices/bus/vic10/exp.cpp
@@ -119,7 +119,7 @@ bool vic10_expansion_slot_device::call_load()
{
size = length();
- if (filetype() == "80")
+ if (is_filetype("80"))
{
fread(m_card->m_lorom, 0x2000);
@@ -128,11 +128,11 @@ bool vic10_expansion_slot_device::call_load()
fread(m_card->m_uprom, 0x2000);
}
}
- else if (filetype() == "e0")
+ else if (is_filetype("e0"))
{
fread(m_card->m_uprom, size);
}
- else if (filetype() == "crt")
+ else if (is_filetype("crt"))
{
size_t roml_size = 0;
size_t romh_size = 0;
@@ -174,7 +174,7 @@ std::string vic10_expansion_slot_device::get_default_card_software()
{
if (open_image_file(mconfig().options()))
{
- if (filetype() == "crt")
+ if (is_filetype("crt"))
return cbm_crt_get_card(*m_file);
clear();
diff --git a/src/devices/bus/vic20/exp.cpp b/src/devices/bus/vic20/exp.cpp
index 3cca5366f04..0ced76c50b5 100644
--- a/src/devices/bus/vic20/exp.cpp
+++ b/src/devices/bus/vic20/exp.cpp
@@ -113,13 +113,13 @@ bool vic20_expansion_slot_device::call_load()
{
if (software_entry() == nullptr)
{
- if (filetype() == "20") fread(m_card->m_blk1, 0x2000);
- else if (filetype() == "40") fread(m_card->m_blk2, 0x2000);
- else if (filetype() == "60") fread(m_card->m_blk3, 0x2000);
- else if (filetype() == "70") fread(m_card->m_blk3, 0x2000, 0x1000);
- else if (filetype() == "a0") fread(m_card->m_blk5, 0x2000);
- else if (filetype() == "b0") fread(m_card->m_blk5, 0x2000, 0x1000);
- else if (filetype() == "crt")
+ if (is_filetype("20")) fread(m_card->m_blk1, 0x2000);
+ else if (is_filetype("40")) fread(m_card->m_blk2, 0x2000);
+ else if (is_filetype("60")) fread(m_card->m_blk3, 0x2000);
+ else if (is_filetype("70")) fread(m_card->m_blk3, 0x2000, 0x1000);
+ else if (is_filetype("a0")) fread(m_card->m_blk5, 0x2000);
+ else if (is_filetype("b0")) fread(m_card->m_blk5, 0x2000, 0x1000);
+ else if (is_filetype("crt"))
{
// read the header
UINT8 header[2];
diff --git a/src/devices/imagedev/cassette.cpp b/src/devices/imagedev/cassette.cpp
index 753dc195387..d358533497c 100644
--- a/src/devices/imagedev/cassette.cpp
+++ b/src/devices/imagedev/cassette.cpp
@@ -73,10 +73,10 @@ void cassette_image_device::device_config_complete()
bool cassette_image_device::is_motor_on()
{
if ((m_state & CASSETTE_MASK_UISTATE) == CASSETTE_STOPPED)
- return FALSE;
+ return false;
if ((m_state & CASSETTE_MASK_MOTOR) != CASSETTE_MOTOR_ENABLED)
- return FALSE;
- return TRUE;
+ return false;
+ return true;
}
diff --git a/src/devices/imagedev/chd_cd.cpp b/src/devices/imagedev/chd_cd.cpp
index c2f643ebf80..655e03dfe23 100644
--- a/src/devices/imagedev/chd_cd.cpp
+++ b/src/devices/imagedev/chd_cd.cpp
@@ -108,7 +108,7 @@ bool cdrom_image_device::call_load()
if (software_entry() == nullptr)
{
- if ((filetype() == ".chd") && is_loaded()) {
+ if (is_filetype("chd") && is_loaded()) {
err = m_self_chd.open( image_core_file() ); /* CDs are never writeable */
if ( err )
goto error;
diff --git a/src/devices/imagedev/midiin.h b/src/devices/imagedev/midiin.h
index 3309d366f7c..c0279f9822d 100644
--- a/src/devices/imagedev/midiin.h
+++ b/src/devices/imagedev/midiin.h
@@ -42,7 +42,7 @@ public:
virtual bool must_be_loaded() const override { return 0; }
virtual bool is_reset_on_load() const override { return 0; }
virtual const char *file_extensions() const override { return "mid"; }
- virtual bool core_opens_image_file() const override { return FALSE; }
+ virtual bool core_opens_image_file() const override { return false; }
protected:
// device-level overrides
diff --git a/src/devices/imagedev/midiout.h b/src/devices/imagedev/midiout.h
index 0954987a824..096bece8fef 100644
--- a/src/devices/imagedev/midiout.h
+++ b/src/devices/imagedev/midiout.h
@@ -45,7 +45,7 @@ public:
virtual bool must_be_loaded() const override { return 0; }
virtual bool is_reset_on_load() const override { return 0; }
virtual const char *file_extensions() const override { return "mid"; }
- virtual bool core_opens_image_file() const override { return FALSE; }
+ virtual bool core_opens_image_file() const override { return false; }
virtual void tx(UINT8 state) { rx_w(state); }
diff --git a/src/emu/debug/debugcon.cpp b/src/emu/debug/debugcon.cpp
index 9ce385554ee..b90c9e0d556 100644
--- a/src/emu/debug/debugcon.cpp
+++ b/src/emu/debug/debugcon.cpp
@@ -332,7 +332,7 @@ CMDERR debugger_console::execute_command(const char *command, bool echo)
printf(">%s\n", command);
/* parse and execute */
- result = internal_parse_command(command, TRUE);
+ result = internal_parse_command(command, true);
/* display errors */
if (result != CMDERR_NONE)
diff --git a/src/emu/diimage.cpp b/src/emu/diimage.cpp
index dec39310bc1..47260e17004 100644
--- a/src/emu/diimage.cpp
+++ b/src/emu/diimage.cpp
@@ -197,23 +197,14 @@ void device_image_interface::set_image_filename(const std::string &filename)
[](char c) { return (c == '\\') || (c == '/') || (c == ':'); });
if (iter != m_image_name.rend())
- {
- if (*iter == ':')
- {
- // temp workaround for softlists now that m_image_name contains the part name too (e.g. list:gamename:cart)
- m_basename.assign(m_image_name.begin(), std::next(iter).base());
- int tmploc = m_basename.find_last_of(':');
- m_basename = m_basename.substr(tmploc + 1);
- }
- else
- m_basename.assign(iter.base(), m_image_name.end());
- }
+ m_basename.assign(iter.base(), m_image_name.end());
+
m_basename_noext = m_basename;
auto loc = m_basename_noext.find_last_of('.');
if (loc != std::string::npos)
m_basename_noext = m_basename_noext.substr(0, loc);
- m_filetype = core_filename_extract_extension(m_basename, true, true);
+ m_filetype = core_filename_extract_extension(m_basename, true);
}
@@ -932,10 +923,6 @@ bool device_image_interface::load_internal(const std::string &path, bool is_crea
{
UINT32 open_plan[4];
int i;
- bool softload = false;
-
- // if the path contains no period, we are using softlists, so we won't create an image
- bool filename_has_period = (path.find_last_of('.') != -1);
// first unload the image
unload();
@@ -951,30 +938,7 @@ bool device_image_interface::load_internal(const std::string &path, bool is_crea
if (core_opens_image_file())
{
- // Check if there's a software list defined for this device and use that if we're not creating an image
- if (!filename_has_period && !just_load)
- {
- softload = load_software_part(path.c_str(), m_software_part_ptr);
- if (softload)
- {
- m_software_info_ptr = &m_software_part_ptr->info();
- m_software_list_name.assign(m_software_info_ptr->list().list_name());
- m_full_software_name.assign(m_software_part_ptr->info().shortname());
-
- // if we had launched from softlist with a specified part, e.g. "shortname:part"
- // we would have recorded the wrong name, so record it again based on software_info
- if (m_software_info_ptr && !m_full_software_name.empty())
- set_image_filename(m_full_software_name);
-
- // check if image should be read-only
- const char *read_only = get_feature("read_only");
- if (read_only && !strcmp(read_only, "true")) {
- make_readonly();
- }
- }
- }
-
- if (is_create || filename_has_period)
+ if (is_create)
{
// determine open plan
determine_open_plan(is_create, open_plan);
@@ -989,28 +953,8 @@ bool device_image_interface::load_internal(const std::string &path, bool is_crea
}
}
- // Copy some image information when we have been loaded through a software list
- if ( m_software_info_ptr )
- {
- // sanitize
- if (m_software_info_ptr->longname().empty() || m_software_info_ptr->publisher().empty() || m_software_info_ptr->year().empty())
- fatalerror("Each entry in an XML list must have all of the following fields: description, publisher, year!\n");
-
- // store
- m_longname = m_software_info_ptr->longname();
- m_manufacturer = m_software_info_ptr->publisher();
- m_year = m_software_info_ptr->year();
- //m_playable = m_software_info_ptr->supported();
-
- // set file type
- std::string filename = (m_mame_file != nullptr) && (m_mame_file->filename() != nullptr)
- ? m_mame_file->filename()
- : "";
- m_filetype = core_filename_extract_extension(filename, true, true);
- }
-
// did we fail to find the file?
- if (!is_loaded() && !softload)
+ if (!is_loaded())
{
m_err = IMAGE_ERROR_FILENOTFOUND;
goto done;
@@ -1022,7 +966,7 @@ bool device_image_interface::load_internal(const std::string &path, bool is_crea
m_create_args = create_args;
if (m_init_phase==false) {
- m_err = (image_error_t)finish_load();
+ m_err = (finish_load()==IMAGE_INIT_PASS) ? IMAGE_ERROR_SUCCESS : IMAGE_ERROR_INTERNAL;
if (m_err)
goto done;
}
@@ -1044,10 +988,8 @@ done:
clear();
}
else {
- /* do we need to reset the CPU? only schedule it if load/create is successful */
- if (device().machine().time() > attotime::zero && is_reset_on_load())
- device().machine().schedule_hard_reset();
- else
+ // do we need to reset the CPU? only schedule it if load/create is successful
+ if (!schedule_postload_hard_reset_if_needed())
{
if (!m_init_phase)
{
@@ -1062,6 +1004,18 @@ done:
}
+//-------------------------------------------------
+// schedule_postload_hard_reset_if_needed
+//-------------------------------------------------
+
+bool device_image_interface::schedule_postload_hard_reset_if_needed()
+{
+ bool postload_hard_reset_needed = device().machine().time() > attotime::zero && is_reset_on_load();
+ if (postload_hard_reset_needed)
+ device().machine().schedule_hard_reset();
+ return postload_hard_reset_needed;
+}
+
//-------------------------------------------------
// load - load an image into MAME
@@ -1074,6 +1028,82 @@ bool device_image_interface::load(const char *path)
//-------------------------------------------------
+// load_software - loads a softlist item by name
+//-------------------------------------------------
+
+bool device_image_interface::load_software(const std::string &softlist_name)
+{
+ // Prepare to load
+ unload();
+ clear_error();
+ m_is_loading = true;
+
+ // Check if there's a software list defined for this device and use that if we're not creating an image
+ bool softload = load_software_part(softlist_name.c_str(), m_software_part_ptr);
+ if (!softload)
+ {
+ m_is_loading = false;
+ return IMAGE_INIT_FAIL;
+ }
+
+ // set up softlist stuff
+ m_software_info_ptr = &m_software_part_ptr->info();
+ m_software_list_name.assign(m_software_info_ptr->list().list_name());
+ m_full_software_name.assign(m_software_part_ptr->info().shortname());
+
+ // specify image name with softlist-derived names
+ m_image_name = m_full_software_name;
+ m_basename = m_full_software_name;
+ m_basename_noext = m_full_software_name;
+ m_filetype = "";
+
+ // check if image should be read-only
+ const char *read_only = get_feature("read_only");
+ if (read_only && !strcmp(read_only, "true"))
+ {
+ make_readonly();
+
+ // Copy some image information when we have been loaded through a software list
+ if (m_software_info_ptr)
+ {
+ // sanitize
+ if (m_software_info_ptr->longname().empty() || m_software_info_ptr->publisher().empty() || m_software_info_ptr->year().empty())
+ fatalerror("Each entry in an XML list must have all of the following fields: description, publisher, year!\n");
+
+ // store
+ m_longname = m_software_info_ptr->longname();
+ m_manufacturer = m_software_info_ptr->publisher();
+ m_year = m_software_info_ptr->year();
+
+ // set file type
+ std::string filename = (m_mame_file != nullptr) && (m_mame_file->filename() != nullptr)
+ ? m_mame_file->filename()
+ : "";
+ m_filetype = core_filename_extract_extension(filename, true);
+ }
+ }
+
+ // call finish_load if necessary
+ if (m_init_phase == false && finish_load())
+ return IMAGE_INIT_FAIL;
+
+ // do we need to reset the CPU? only schedule it if load is successful
+ if (!schedule_postload_hard_reset_if_needed())
+ {
+ if (!m_init_phase)
+ {
+ if (device().machine().phase() == MACHINE_PHASE_RUNNING)
+ device().popmessage("Image '%s' was successfully loaded.", softlist_name);
+ else
+ osd_printf_info("Image '%s' was successfully loaded.\n", softlist_name.c_str());
+ }
+ }
+
+ return IMAGE_INIT_PASS;
+}
+
+
+//-------------------------------------------------
// open_image_file - opening plain image file
//-------------------------------------------------
@@ -1108,7 +1138,7 @@ bool device_image_interface::finish_load()
if (m_created)
{
err = call_create(m_create_format, m_create_args);
- if (err)
+ if (err == IMAGE_INIT_FAIL)
{
if (!m_err)
m_err = IMAGE_ERROR_UNSPECIFIED;
@@ -1118,7 +1148,7 @@ bool device_image_interface::finish_load()
{
// using device load
err = call_load();
- if (err)
+ if (err == IMAGE_INIT_FAIL)
{
if (!m_err)
m_err = IMAGE_ERROR_UNSPECIFIED;
@@ -1166,6 +1196,8 @@ void device_image_interface::clear()
m_image_name.clear();
m_readonly = false;
m_created = false;
+ m_create_format = 0;
+ m_create_args = nullptr;
m_longname.clear();
m_manufacturer.clear();
diff --git a/src/emu/diimage.h b/src/emu/diimage.h
index 9d31b295f3c..aeff3dc54fc 100644
--- a/src/emu/diimage.h
+++ b/src/emu/diimage.h
@@ -101,7 +101,7 @@ class software_part;
class software_info;
// device image interface function types
-typedef delegate<int (device_image_interface &)> device_image_load_delegate;
+typedef delegate<bool (device_image_interface &)> device_image_load_delegate;
typedef delegate<void (device_image_interface &)> device_image_func_delegate;
// legacy
typedef void (*device_image_partialhash_func)(util::hash_collection &, const unsigned char *, unsigned long, const char *);
@@ -110,15 +110,13 @@ typedef void (*device_image_partialhash_func)(util::hash_collection &, const uns
// MACROS
//**************************************************************************
-#define IMAGE_INIT_PASS FALSE
-#define IMAGE_INIT_FAIL TRUE
-#define IMAGE_VERIFY_PASS FALSE
-#define IMAGE_VERIFY_FAIL TRUE
+#define IMAGE_INIT_PASS false
+#define IMAGE_INIT_FAIL true
#define DEVICE_IMAGE_LOAD_MEMBER_NAME(_name) device_image_load_##_name
#define DEVICE_IMAGE_LOAD_NAME(_class,_name) _class::DEVICE_IMAGE_LOAD_MEMBER_NAME(_name)
-#define DECLARE_DEVICE_IMAGE_LOAD_MEMBER(_name) int DEVICE_IMAGE_LOAD_MEMBER_NAME(_name)(device_image_interface &image)
-#define DEVICE_IMAGE_LOAD_MEMBER(_class,_name) int DEVICE_IMAGE_LOAD_NAME(_class,_name)(device_image_interface &image)
+#define DECLARE_DEVICE_IMAGE_LOAD_MEMBER(_name) bool DEVICE_IMAGE_LOAD_MEMBER_NAME(_name)(device_image_interface &image)
+#define DEVICE_IMAGE_LOAD_MEMBER(_class,_name) bool DEVICE_IMAGE_LOAD_NAME(_class,_name)(device_image_interface &image)
#define DEVICE_IMAGE_LOAD_DELEGATE(_class,_name) device_image_load_delegate(&DEVICE_IMAGE_LOAD_NAME(_class,_name),#_class "::device_image_load_" #_name, downcast<_class *>(device->owner()))
#define DEVICE_IMAGE_UNLOAD_MEMBER_NAME(_name) device_image_unload_##_name
@@ -149,12 +147,12 @@ public:
virtual void device_compute_hash(util::hash_collection &hashes, const void *data, size_t length, const char *types) const;
- virtual bool call_load() { return FALSE; }
- virtual bool call_create(int format_type, util::option_resolution *format_options) { return FALSE; }
+ virtual bool call_load() { return IMAGE_INIT_PASS; }
+ virtual bool call_create(int format_type, util::option_resolution *format_options) { return IMAGE_INIT_PASS; }
virtual void call_unload() { }
virtual std::string call_display() { return std::string(); }
virtual device_image_partialhash_func get_partial_hash() const { return nullptr; }
- virtual bool core_opens_image_file() const { return TRUE; }
+ virtual bool core_opens_image_file() const { return true; }
virtual iodevice_t image_type() const = 0;
virtual bool is_readable() const = 0;
virtual bool is_writeable() const = 0;
@@ -178,6 +176,7 @@ public:
const char *basename() const { if (m_basename.empty()) return nullptr; else return m_basename.c_str(); }
const char *basename_noext() const { if (m_basename_noext.empty()) return nullptr; else return m_basename_noext.c_str(); }
const std::string &filetype() const { return m_filetype; }
+ bool is_filetype(const std::string &candidate_filetype) { return !core_stricmp(filetype().c_str(), candidate_filetype.c_str()); }
bool is_open() const { return bool(m_file); }
util::core_file &image_core_file() const { return *m_file; }
UINT64 length() { check_for_file(); return m_file->size(); }
@@ -194,7 +193,7 @@ public:
int image_feof() { check_for_file(); return m_file->eof(); }
void *ptr() {check_for_file(); return const_cast<void *>(m_file->buffer()); }
// configuration access
- void set_init_phase() { m_init_phase = TRUE; }
+ void set_init_phase() { m_init_phase = true; }
const char* longname() const { return m_longname.c_str(); }
const char* manufacturer() const { return m_manufacturer.c_str(); }
@@ -228,7 +227,12 @@ public:
bool uses_file_extension(const char *file_extension) const;
const formatlist_type &formatlist() const { return m_formatlist; }
+ // loads an image file
bool load(const char *path);
+
+ // loads a softlist item by name
+ bool load_software(const std::string &softlist_name);
+
bool open_image_file(emu_options &options);
bool finish_load();
void unload();
@@ -294,15 +298,22 @@ protected:
std::string m_basename_noext;
std::string m_filetype;
- // working directory; persists across mounts
- std::string m_working_directory;
-
// Software information
std::string m_full_software_name;
const software_info *m_software_info_ptr;
const software_part *m_software_part_ptr;
std::string m_software_list_name;
+private:
+ static image_error_t image_error_from_file_error(osd_file::error filerr);
+ bool schedule_postload_hard_reset_if_needed();
+
+ // creation info
+ formatlist_type m_formatlist;
+
+ // working directory; persists across mounts
+ std::string m_working_directory;
+
// info read from the hash file/software list
std::string m_longname;
std::string m_manufacturer;
@@ -328,12 +339,6 @@ protected:
bool m_user_loadable;
bool m_is_loading;
-
-private:
- static image_error_t image_error_from_file_error(osd_file::error filerr);
-
- // creation info
- formatlist_type m_formatlist;
};
// iterator
diff --git a/src/emu/image.cpp b/src/emu/image.cpp
index 707c36ba0a5..129fc197717 100644
--- a/src/emu/image.cpp
+++ b/src/emu/image.cpp
@@ -2,13 +2,15 @@
// copyright-holders:Nathan Woods, Miodrag Milanovic
/***************************************************************************
- image.c
+ image.cpp
Core image functions and definitions.
***************************************************************************/
+
#include <ctype.h>
+#include <regex>
#include "emu.h"
#include "emuopts.h"
@@ -17,6 +19,13 @@
#include "xmlfile.h"
//**************************************************************************
+// STATIC VARIABLES
+//**************************************************************************
+
+static std::regex s_softlist_regex("\\w+\\:\\w+\\:\\w+");
+
+
+//**************************************************************************
// IMAGE MANAGER
//**************************************************************************
@@ -27,35 +36,42 @@
image_manager::image_manager(running_machine &machine)
: m_machine(machine)
{
- /* make sure that any required devices have been allocated */
+ // make sure that any required devices have been allocated
for (device_image_interface &image : image_interface_iterator(machine.root_device()))
{
- /* is an image specified for this image */
- const char *image_name = machine.options().value(image.instance_name());
+ // ignore things not user loadable
if (!image.user_loadable())
continue;
- if ((image_name != nullptr) && (image_name[0] != '\0'))
+ // is an image specified for this image
+ const char *image_name_ptr = machine.options().value(image.instance_name());
+ if ((image_name_ptr != nullptr) && (image_name_ptr[0] != '\0'))
{
- /* mark init state */
+ std::string image_name(image_name_ptr);
+
+ // mark init state
image.set_init_phase();
- /* try to load this image */
- bool result = image.load(image_name);
+ // is this image really a softlist part?
+ bool is_softlist_part = std::regex_match(image_name, s_softlist_regex);
+
+ // try to load this image
+ bool result = is_softlist_part
+ ? image.load_software(image_name)
+ : image.load(image_name.c_str());
- /* did the image load fail? */
+ // did the image load fail?
if (result)
{
- /* retrieve image error message */
+ // retrieve image error message
std::string image_err = std::string(image.error());
- std::string image_basename(image_name);
- /* unload all images */
+ // unload all images
unload_all();
fatalerror_exitcode(machine, EMU_ERR_DEVICE, "Device %s load (%s) failed: %s",
image.device().name(),
- image_basename.c_str(),
+ image_name.c_str(),
image_err.c_str());
}
}
diff --git a/src/emu/input.cpp b/src/emu/input.cpp
index d1a85452757..6e87f0826b3 100644
--- a/src/emu/input.cpp
+++ b/src/emu/input.cpp
@@ -718,7 +718,7 @@ bool input_seq::is_valid() const
// non-switch items can't have a NOT
input_item_class itemclass = code.item_class();
if (itemclass != ITEM_CLASS_SWITCH && lastcode == not_code)
- return FALSE;
+ return false;
// absolute/relative items must all be the same class
if ((lastclass == ITEM_CLASS_ABSOLUTE && itemclass != ITEM_CLASS_ABSOLUTE) ||
diff --git a/src/emu/romload.cpp b/src/emu/romload.cpp
index ad4b222dce5..eabf943eb1e 100644
--- a/src/emu/romload.cpp
+++ b/src/emu/romload.cpp
@@ -576,13 +576,13 @@ int rom_load_manager::open_rom_file(const char *regiontag, const rom_entry *romp
// is actually a concatenation of: listname + setname + parentname
// separated by '%' (parentname being present only for clones)
std::string tag1(regiontag), tag2, tag3, tag4, tag5;
- bool is_list = FALSE;
- bool has_parent = FALSE;
+ bool is_list = false;
+ bool has_parent = false;
int separator1 = tag1.find_first_of('%');
if (separator1 != -1)
{
- is_list = TRUE;
+ is_list = true;
// we are loading through softlists, split the listname from the regiontag
tag4.assign(tag1.substr(separator1 + 1, tag1.length() - separator1 + 1));
@@ -593,7 +593,7 @@ int rom_load_manager::open_rom_file(const char *regiontag, const rom_entry *romp
int separator2 = tag4.find_first_of('%');
if (separator2 != -1)
{
- has_parent = TRUE;
+ has_parent = true;
// we are loading a clone through softlists, split the setname from the parentname
tag5.assign(tag4.substr(separator2 + 1, tag4.length() - separator2 + 1));
@@ -983,13 +983,13 @@ int open_disk_image(emu_options &options, const game_driver *gamedrv, const rom_
// is actually a concatenation of: listname + setname + parentname
// separated by '%' (parentname being present only for clones)
std::string tag1(locationtag), tag2, tag3, tag4, tag5;
- bool is_list = FALSE;
- bool has_parent = FALSE;
+ bool is_list = false;
+ bool has_parent = false;
int separator1 = tag1.find_first_of('%');
if (separator1 != -1)
{
- is_list = TRUE;
+ is_list = true;
// we are loading through softlists, split the listname from the regiontag
tag4.assign(tag1.substr(separator1 + 1, tag1.length() - separator1 + 1));
@@ -1000,7 +1000,7 @@ int open_disk_image(emu_options &options, const game_driver *gamedrv, const rom_
int separator2 = tag4.find_first_of('%');
if (separator2 != -1)
{
- has_parent = TRUE;
+ has_parent = true;
// we are loading a clone through softlists, split the setname from the parentname
tag5.assign(tag4.substr(separator2 + 1, tag4.length() - separator2 + 1));
@@ -1357,7 +1357,7 @@ void rom_load_manager::load_software_part_region(device_t &device, software_list
/* now process the entries in the region */
if (ROMREGION_ISROMDATA(region))
- process_rom_entries(locationtag.c_str(), region, region + 1, &device, TRUE);
+ process_rom_entries(locationtag.c_str(), region, region + 1, &device, true);
else if (ROMREGION_ISDISKDATA(region))
process_disk_entries(regiontag.c_str(), region, region + 1, locationtag.c_str());
}
@@ -1370,7 +1370,7 @@ void rom_load_manager::load_software_part_region(device_t &device, software_list
}
/* display the results and exit */
- display_rom_load_results(TRUE);
+ display_rom_load_results(true);
}
@@ -1422,7 +1422,7 @@ void rom_load_manager::process_region_list()
#endif
/* now process the entries in the region */
- process_rom_entries(device.shortname(), region, region + 1, &device, FALSE);
+ process_rom_entries(device.shortname(), region, region + 1, &device, false);
}
else if (ROMREGION_ISDISKDATA(region))
process_disk_entries(regiontag.c_str(), region, region + 1, nullptr);
@@ -1483,5 +1483,5 @@ rom_load_manager::rom_load_manager(running_machine &machine)
process_region_list();
/* display the results and exit */
- display_rom_load_results(FALSE);
+ display_rom_load_results(false);
}
diff --git a/src/emu/screen.cpp b/src/emu/screen.cpp
index b96e3b85738..9e1c4e3ebae 100644
--- a/src/emu/screen.cpp
+++ b/src/emu/screen.cpp
@@ -1143,14 +1143,14 @@ bool screen_device::update_partial(int scanline)
if (machine().video().skip_this_frame())
{
LOG_PARTIAL_UPDATES(("skipped due to frameskipping\n"));
- return FALSE;
+ return false;
}
// skip if this screen is not visible anywhere
if (!machine().render().is_live(*this))
{
LOG_PARTIAL_UPDATES(("skipped because screen not live\n"));
- return FALSE;
+ return false;
}
}
diff --git a/src/frontend/mame/clifront.cpp b/src/frontend/mame/clifront.cpp
index 0dfaa4c97dd..2ce5a6a5581 100644
--- a/src/frontend/mame/clifront.cpp
+++ b/src/frontend/mame/clifront.cpp
@@ -1620,7 +1620,7 @@ void cli_frontend::getsoftlist(const char *gamename)
{
FILE *out = stdout;
std::unordered_set<std::string> list_map;
- bool isfirst = TRUE;
+ bool isfirst = true;
driver_enumerator drivlist(m_options);
while (drivlist.next())
@@ -1629,7 +1629,7 @@ void cli_frontend::getsoftlist(const char *gamename)
if (core_strwildcmp(gamename, swlistdev.list_name()) == 0 && list_map.insert(swlistdev.list_name()).second)
if (!swlistdev.get_info().empty())
{
- if (isfirst) { fprintf( out, SOFTLIST_XML_BEGIN); isfirst = FALSE; }
+ if (isfirst) { fprintf( out, SOFTLIST_XML_BEGIN); isfirst = false; }
output_single_softlist(out, swlistdev);
}
}
diff --git a/src/frontend/mame/info.cpp b/src/frontend/mame/info.cpp
index 811f927262b..918cd07f673 100644
--- a/src/frontend/mame/info.cpp
+++ b/src/frontend/mame/info.cpp
@@ -268,7 +268,7 @@ void info_xml_creator::output_one()
{
if (field.type() == IPT_KEYBOARD)
{
- if (!new_kbd) new_kbd = TRUE;
+ if (!new_kbd) new_kbd = true;
field.set_player(field.player() + kbd_offset);
}
else
@@ -355,11 +355,11 @@ void info_xml_creator::output_one()
void info_xml_creator::output_one_device(device_t &device, const char *devtag)
{
- bool has_speaker = FALSE, has_input = FALSE;
+ bool has_speaker = false, has_input = false;
// check if the device adds speakers to the system
sound_interface_iterator snditer(device);
if (snditer.first() != nullptr)
- has_speaker = TRUE;
+ has_speaker = true;
// generate input list
ioport_list portlist;
std::string errors;
@@ -370,7 +370,7 @@ void info_xml_creator::output_one_device(device_t &device, const char *devtag)
for (ioport_field &field : port.second->fields())
if (field.type() >= IPT_START1 && field.type() < IPT_UI_FIRST)
{
- has_input = TRUE;
+ has_input = true;
break;
}
@@ -894,7 +894,7 @@ void info_xml_creator::output_input(const ioport_list &portlist)
for (auto &port : portlist)
{
int ctrl_type = CTRL_DIGITAL_BUTTONS;
- bool ctrl_analog = FALSE;
+ bool ctrl_analog = false;
for (ioport_field &field : port.second->fields())
{
// track the highest player number
@@ -996,75 +996,75 @@ void info_xml_creator::output_input(const ioport_list &portlist)
case IPT_AD_STICK_X:
case IPT_AD_STICK_Y:
case IPT_AD_STICK_Z:
- ctrl_analog = TRUE;
+ ctrl_analog = true;
ctrl_type = CTRL_ANALOG_JOYSTICK;
control_info[field.player() * CTRL_COUNT + ctrl_type].type = "stick";
control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1;
- control_info[field.player() * CTRL_COUNT + ctrl_type].analog = TRUE;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].analog = true;
break;
case IPT_PADDLE:
case IPT_PADDLE_V:
- ctrl_analog = TRUE;
+ ctrl_analog = true;
ctrl_type = CTRL_ANALOG_PADDLE;
control_info[field.player() * CTRL_COUNT + ctrl_type].type = "paddle";
control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1;
- control_info[field.player() * CTRL_COUNT + ctrl_type].analog = TRUE;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].analog = true;
break;
case IPT_PEDAL:
case IPT_PEDAL2:
case IPT_PEDAL3:
- ctrl_analog = TRUE;
+ ctrl_analog = true;
ctrl_type = CTRL_ANALOG_PEDAL;
control_info[field.player() * CTRL_COUNT + ctrl_type].type = "pedal";
control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1;
- control_info[field.player() * CTRL_COUNT + ctrl_type].analog = TRUE;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].analog = true;
break;
case IPT_LIGHTGUN_X:
case IPT_LIGHTGUN_Y:
- ctrl_analog = TRUE;
+ ctrl_analog = true;
ctrl_type = CTRL_ANALOG_LIGHTGUN;
control_info[field.player() * CTRL_COUNT + ctrl_type].type = "lightgun";
control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1;
- control_info[field.player() * CTRL_COUNT + ctrl_type].analog = TRUE;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].analog = true;
break;
case IPT_POSITIONAL:
case IPT_POSITIONAL_V:
- ctrl_analog = TRUE;
+ ctrl_analog = true;
ctrl_type = CTRL_ANALOG_POSITIONAL;
control_info[field.player() * CTRL_COUNT + ctrl_type].type = "positional";
control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1;
- control_info[field.player() * CTRL_COUNT + ctrl_type].analog = TRUE;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].analog = true;
break;
case IPT_DIAL:
case IPT_DIAL_V:
- ctrl_analog = TRUE;
+ ctrl_analog = true;
ctrl_type = CTRL_ANALOG_DIAL;
control_info[field.player() * CTRL_COUNT + ctrl_type].type = "dial";
control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1;
- control_info[field.player() * CTRL_COUNT + ctrl_type].analog = TRUE;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].analog = true;
break;
case IPT_TRACKBALL_X:
case IPT_TRACKBALL_Y:
- ctrl_analog = TRUE;
+ ctrl_analog = true;
ctrl_type = CTRL_ANALOG_TRACKBALL;
control_info[field.player() * CTRL_COUNT + ctrl_type].type = "trackball";
control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1;
- control_info[field.player() * CTRL_COUNT + ctrl_type].analog = TRUE;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].analog = true;
break;
case IPT_MOUSE_X:
case IPT_MOUSE_Y:
- ctrl_analog = TRUE;
+ ctrl_analog = true;
ctrl_type = CTRL_ANALOG_MOUSE;
control_info[field.player() * CTRL_COUNT + ctrl_type].type = "mouse";
control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1;
- control_info[field.player() * CTRL_COUNT + ctrl_type].analog = TRUE;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].analog = true;
break;
// map buttons
@@ -1084,12 +1084,12 @@ void info_xml_creator::output_input(const ioport_list &portlist)
case IPT_BUTTON14:
case IPT_BUTTON15:
case IPT_BUTTON16:
- ctrl_analog = FALSE;
+ ctrl_analog = false;
if (control_info[field.player() * CTRL_COUNT + ctrl_type].type == nullptr)
{
control_info[field.player() * CTRL_COUNT + ctrl_type].type = "only_buttons";
control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1;
- control_info[field.player() * CTRL_COUNT + ctrl_type].analog = FALSE;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].analog = false;
}
control_info[field.player() * CTRL_COUNT + ctrl_type].maxbuttons = std::max(control_info[field.player() * CTRL_COUNT + ctrl_type].maxbuttons, field.type() - IPT_BUTTON1 + 1);
control_info[field.player() * CTRL_COUNT + ctrl_type].nbuttons++;
@@ -1184,7 +1184,7 @@ void info_xml_creator::output_input(const ioport_list &portlist)
if (field.delta() != 0)
control_info[field.player() * CTRL_COUNT + ctrl_type].keydelta = field.delta();
if (field.analog_reverse() != 0)
- control_info[field.player() * CTRL_COUNT + ctrl_type].reverse = TRUE;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].reverse = true;
}
}
}
@@ -1196,7 +1196,7 @@ void info_xml_creator::output_input(const ioport_list &portlist)
// for lightguns) and therefore we really need this separate loop.
for (int i = 0; i < CTRL_PCOUNT; i++)
{
- bool fix_done = FALSE;
+ bool fix_done = false;
for (int j = 1; j < CTRL_COUNT; j++)
if (control_info[i * CTRL_COUNT].type != nullptr && control_info[i * CTRL_COUNT + j].type != nullptr && !fix_done)
{
@@ -1205,7 +1205,7 @@ void info_xml_creator::output_input(const ioport_list &portlist)
control_info[i * CTRL_COUNT + j].maxbuttons = std::max(control_info[i * CTRL_COUNT + j].maxbuttons, control_info[i * CTRL_COUNT].maxbuttons);
memset(&control_info[i * CTRL_COUNT], 0, sizeof(control_info[0]));
- fix_done = TRUE;
+ fix_done = true;
}
}
diff --git a/src/frontend/mame/ui/filemngr.cpp b/src/frontend/mame/ui/filemngr.cpp
index 87fa7ff0a60..485e2f41130 100644
--- a/src/frontend/mame/ui/filemngr.cpp
+++ b/src/frontend/mame/ui/filemngr.cpp
@@ -40,7 +40,7 @@ menu_file_manager::menu_file_manager(mame_ui_manager &mui, render_container &con
else
m_warnings.clear();
- m_curr_selected = FALSE;
+ m_curr_selected = false;
}
@@ -180,7 +180,7 @@ void menu_file_manager::handle()
selected_device = (device_image_interface *) event->itemref;
if (selected_device != nullptr)
{
- m_curr_selected = TRUE;
+ m_curr_selected = true;
floppy_image_device *floppy_device = dynamic_cast<floppy_image_device *>(selected_device);
if (floppy_device != nullptr)
{
diff --git a/src/frontend/mame/ui/floppycntrl.cpp b/src/frontend/mame/ui/floppycntrl.cpp
index 1208f0b1181..21f8e28fe6a 100644
--- a/src/frontend/mame/ui/floppycntrl.cpp
+++ b/src/frontend/mame/ui/floppycntrl.cpp
@@ -66,7 +66,7 @@ void menu_control_floppy_image::hook_load(std::string filename, bool softlist)
if (softlist)
{
machine().popmessage("When loaded from software list, the disk is Read-only.\n");
- m_image.load(filename.c_str());
+ m_image.load_software(filename);
stack_pop();
return;
}
diff --git a/src/frontend/mame/ui/ui.cpp b/src/frontend/mame/ui/ui.cpp
index 56c180571cf..7394f03be2f 100644
--- a/src/frontend/mame/ui/ui.cpp
+++ b/src/frontend/mame/ui/ui.cpp
@@ -281,7 +281,7 @@ void mame_ui_manager::display_startup_screens(bool first_time)
// disable everything if we are using -str for 300 or fewer seconds, or if we're the empty driver,
// or if we are debugging
if (!first_time || (str > 0 && str < 60*5) || &machine().system() == &GAME_NAME(___empty) || (machine().debug_flags & DEBUG_FLAG_ENABLED) != 0)
- show_gameinfo = show_warnings = show_mandatory_fileman = FALSE;
+ show_gameinfo = show_warnings = show_mandatory_fileman = false;
#if defined(EMSCRIPTEN)
// also disable for the JavaScript port since the startup screens do not run asynchronously
diff --git a/src/lib/formats/dsk_dsk.cpp b/src/lib/formats/dsk_dsk.cpp
index 4987a5bb52b..528f30c24be 100644
--- a/src/lib/formats/dsk_dsk.cpp
+++ b/src/lib/formats/dsk_dsk.cpp
@@ -343,13 +343,13 @@ struct sector_header
bool dsk_format::load(io_generic *io, UINT32 form_factor, floppy_image *image)
{
UINT8 header[0x100];
- bool extendformat = FALSE;
+ bool extendformat = false;
UINT64 image_size = io_generic_size(io);
io_generic_read(io, &header, 0, sizeof(header));
if ( memcmp( header, EXT_FORMAT_HEADER, 16 ) ==0) {
- extendformat = TRUE;
+ extendformat = true;
}
int heads = header[0x31];
diff --git a/src/lib/util/aviio.cpp b/src/lib/util/aviio.cpp
index f0feceeffbd..6efae25a654 100644
--- a/src/lib/util/aviio.cpp
+++ b/src/lib/util/aviio.cpp
@@ -1945,7 +1945,7 @@ avi_file::error avi_file_impl::append_sound_samples(int channel, const std::int1
m_soundbuf_chansamples[channel] = sampoffset;
/* flush any full sound chunks to disk */
- return soundbuf_flush(TRUE);
+ return soundbuf_flush(true);
}
diff --git a/src/lib/util/corefile.cpp b/src/lib/util/corefile.cpp
index 22b67046150..ff8f3137cc0 100644
--- a/src/lib/util/corefile.cpp
+++ b/src/lib/util/corefile.cpp
@@ -1294,14 +1294,12 @@ std::string core_filename_extract_base(const std::string &name, bool strip_exten
// core_filename_extract_extension
// -------------------------------------------------
-std::string core_filename_extract_extension(const std::string &filename, bool strip_period, bool normalize_to_lowercase)
+std::string core_filename_extract_extension(const std::string &filename, bool strip_period)
{
auto loc = filename.find_last_of('.');
std::string result = loc != std::string::npos
? filename.substr(loc + (strip_period ? 1 : 0))
: "";
- if (normalize_to_lowercase)
- std::transform(result.begin(), result.end(), result.begin(), ::tolower);
return result;
}
diff --git a/src/lib/util/corefile.h b/src/lib/util/corefile.h
index fff2240c0cc..efbda400202 100644
--- a/src/lib/util/corefile.h
+++ b/src/lib/util/corefile.h
@@ -143,7 +143,7 @@ protected:
std::string core_filename_extract_base(const std::string &name, bool strip_extension = false);
// extracts the file extension from a filename
-std::string core_filename_extract_extension(const std::string &filename, bool strip_period = false, bool normalize_to_lowercase = false);
+std::string core_filename_extract_extension(const std::string &filename, bool strip_period = false);
// true if the given filename ends with a particular extension
bool core_filename_ends_with(const std::string &filename, const std::string &extension);
diff --git a/src/mame/drivers/chihiro.cpp b/src/mame/drivers/chihiro.cpp
index 37df775313c..a8e7d9cf510 100644
--- a/src/mame/drivers/chihiro.cpp
+++ b/src/mame/drivers/chihiro.cpp
@@ -710,6 +710,7 @@ void chihiro_state::hack_eeprom()
m_maincpu->space(0).write_byte(0x3b767, 0xc3);
}
+#define HACK_ITEMS 4
static const struct {
const char *game_name;
const bool disable_usb;
@@ -717,10 +718,11 @@ static const struct {
UINT32 address;
UINT8 write_byte;
} modify[16];
-} hacks[3] = { { "chihiro", false, { { 0x6a79f/*3f79f*/, 0x01 }, { 0x6a7a0/*3f7a0*/, 0x00 }, { 0x6b575/*40575*/, 0x00 }, { 0x6b576/*40576*/, 0x00 }, { 0x6b5af/*405af*/, 0x75 }, { 0x6b78a/*4078a*/, 0x75 }, { 0x6b7ca/*407ca*/, 0x00 }, { 0x6b7b8/*407b8*/, 0x00 }, { 0x8f5b2, 0x75 }, { 0x79a9e/*2ea9e*/, 0x74 }, { 0x79b80/*2eb80*/, 0xeb }, { 0x79b97/*2eb97*/, 0x74 }, { 0, 0 } } },
- { "outr2", true, { { 0x12e4cf, 0x01 }, { 0x12e4d0, 0x00 }, { 0x4793e, 0x01 }, { 0x4793f, 0x00 }, { 0x47aa3, 0x01 }, { 0x47aa4, 0x00 }, { 0x14f2b6, 0x84 }, { 0x14f2d1, 0x75 }, { 0x8732f, 0x7d }, { 0x87384, 0x7d }, { 0x87388, 0xeb }, { 0, 0 } } },
- { "crtaxihr", false, { { 0x14ada5/*11fda5*/, 0x90 },{ 0x14ada6/*11fda6*/, 0x90 }, { 0, 0 } } },
- };
+} hacks[HACK_ITEMS] = { { "chihiro", false, { { 0x6a79f/*3f79f*/, 0x01 }, { 0x6a7a0/*3f7a0*/, 0x00 }, { 0x6b575/*40575*/, 0x00 }, { 0x6b576/*40576*/, 0x00 }, { 0x6b5af/*405af*/, 0x75 }, { 0x6b78a/*4078a*/, 0x75 }, { 0x6b7ca/*407ca*/, 0x00 }, { 0x6b7b8/*407b8*/, 0x00 }, { 0x8f5b2, 0x75 }, { 0x79a9e/*2ea9e*/, 0x74 }, { 0x79b80/*2eb80*/, 0xeb }, { 0x79b97/*2eb97*/, 0x74 }, { 0, 0 } } },
+ { "outr2", true, { { 0x12e4cf, 0x01 }, { 0x12e4d0, 0x00 }, { 0x4793e, 0x01 }, { 0x4793f, 0x00 }, { 0x47aa3, 0x01 }, { 0x47aa4, 0x00 }, { 0x14f2b6, 0x84 }, { 0x14f2d1, 0x75 }, { 0x8732f, 0x7d }, { 0x87384, 0x7d }, { 0x87388, 0xeb }, { 0, 0 } } },
+ { "crtaxihr", false, { { 0x14ada5/*11fda5*/, 0x90 },{ 0x14ada6/*11fda6*/, 0x90 }, { 0, 0 } } },
+ { "ghostsqu", false, { { 0x78833/*4d833*/, 0x90 },{ 0x78834/*4d834*/, 0x90 }, { 0, 0 } } },
+};
void chihiro_state::hack_usb()
{
@@ -1569,7 +1571,7 @@ void chihiro_state::machine_start()
machine().debugger().console().register_command("chihiro", CMDFLAG_NONE, 0, 1, 4, std::bind(&chihiro_state::debug_commands, this, _1, _2, _3));
}
usbhack_index = -1;
- for (int a = 1; a < 3; a++)
+ for (int a = 1; a < HACK_ITEMS; a++)
if (strcmp(machine().basename(), hacks[a].game_name) == 0) {
usbhack_index = a;
if (hacks[a].disable_usb == true)
diff --git a/src/mame/drivers/coleco.cpp b/src/mame/drivers/coleco.cpp
index 9c3038c9b71..b7c12e5e6d1 100644
--- a/src/mame/drivers/coleco.cpp
+++ b/src/mame/drivers/coleco.cpp
@@ -352,15 +352,15 @@ void coleco_state::machine_reset()
m_last_nmi_state = 0;
}
-//static int coleco_cart_verify(const UINT8 *cartdata, size_t size)
+//static bool coleco_cart_verify(const UINT8 *cartdata, size_t size)
//{
-// int retval = IMAGE_VERIFY_FAIL;
+// int retval = false;
//
// /* Verify the file is in Colecovision format */
// if ((cartdata[0] == 0xAA) && (cartdata[1] == 0x55)) /* Production Cartridge */
-// retval = IMAGE_VERIFY_PASS;
+// retval = true;
// if ((cartdata[0] == 0x55) && (cartdata[1] == 0xAA)) /* "Test" Cartridge. Some games use this method to skip ColecoVision title screen and delay */
-// retval = IMAGE_VERIFY_PASS;
+// retval = true;
//
// return retval;
//}
diff --git a/src/mame/drivers/d6800.cpp b/src/mame/drivers/d6800.cpp
index 9b1b7cd620c..ef69ab8eec5 100644
--- a/src/mame/drivers/d6800.cpp
+++ b/src/mame/drivers/d6800.cpp
@@ -366,7 +366,7 @@ QUICKLOAD_LOAD_MEMBER( d6800_state, d6800 )
image.message(" Quickload: size=%04X : start=%04X : end=%04X : exec=%04X",quick_length,quick_addr,quick_addr+quick_length,exec_addr);
// Start the quickload
- if (image.filetype() == "bin")
+ if (image.is_filetype("bin"))
m_maincpu->set_pc(quick_addr);
else
m_maincpu->set_pc(exec_addr);
diff --git a/src/mame/drivers/eti660.cpp b/src/mame/drivers/eti660.cpp
index 7f420f16178..6f55f3fc43d 100644
--- a/src/mame/drivers/eti660.cpp
+++ b/src/mame/drivers/eti660.cpp
@@ -286,7 +286,7 @@ QUICKLOAD_LOAD_MEMBER( eti660_state, eti660 )
space.write_byte(i + quick_addr, quick_data[i]);
/* display a message about the loaded quickload */
- if (image.filetype() == "bin")
+ if (image.is_filetype("bin"))
image.message(" Quickload: size=%04X : start=%04X : end=%04X : Press 6 to start",quick_length,quick_addr,quick_addr+quick_length);
else
image.message(" Quickload: size=%04X : start=%04X : end=%04X : Press 8 to start",quick_length,quick_addr,quick_addr+quick_length);
diff --git a/src/mame/drivers/jaguar.cpp b/src/mame/drivers/jaguar.cpp
index ff4d8129b76..448d92b1526 100644
--- a/src/mame/drivers/jaguar.cpp
+++ b/src/mame/drivers/jaguar.cpp
@@ -2018,11 +2018,11 @@ int jaguar_state::quickload(device_image_interface &image, const char *file_type
skip = 96;
else /* ABS binary */
- if (image.filetype() == "abs")
+ if (image.is_filetype("abs"))
start = 0xc000;
else /* JAG binary */
- if (image.filetype() == "jag")
+ if (image.is_filetype("jag"))
start = 0x5000;
@@ -2063,7 +2063,7 @@ DEVICE_IMAGE_LOAD_MEMBER( jaguar_state, jaguar_cart )
size = image.length();
/* .rom files load & run at 802000 */
- if (image.filetype() == "rom")
+ if (image.is_filetype("rom"))
{
load_offset = 0x2000; // fix load address
m_cart_base[0x101] = 0x802000; // fix exec address
diff --git a/src/mame/drivers/lynx.cpp b/src/mame/drivers/lynx.cpp
index c4d0c8db5ba..1c866a91cfc 100644
--- a/src/mame/drivers/lynx.cpp
+++ b/src/mame/drivers/lynx.cpp
@@ -162,7 +162,7 @@ QUICKLOAD_LOAD_MEMBER( lynx_state, lynx )
return IMAGE_INIT_FAIL;
/* Check the image */
- if (lynx_verify_cart((char*)header, LYNX_QUICKLOAD) == IMAGE_VERIFY_FAIL)
+ if (!lynx_verify_cart((char*)header, LYNX_QUICKLOAD))
return IMAGE_INIT_FAIL;
start = header[3] | (header[2]<<8); //! big endian format in file format for little endian cpu
diff --git a/src/mame/drivers/ssem.cpp b/src/mame/drivers/ssem.cpp
index 010183798ae..65f81ab2214 100644
--- a/src/mame/drivers/ssem.cpp
+++ b/src/mame/drivers/ssem.cpp
@@ -549,7 +549,7 @@ QUICKLOAD_LOAD_MEMBER(ssem_state, ssem_store)
token_buf[4] = '\0';
sscanf(token_buf, "%04u", &line);
- if (image.filetype() == "snp")
+ if (image.is_filetype("snp"))
{
UINT32 word = 0;
@@ -565,7 +565,7 @@ QUICKLOAD_LOAD_MEMBER(ssem_state, ssem_store)
space.write_byte((line << 2) + 2, (word >> 8) & 0x000000ff);
space.write_byte((line << 2) + 3, (word >> 0) & 0x000000ff);
}
- else if (image.filetype() == "asm")
+ else if (image.is_filetype("asm"))
{
char op_buf[4] = { 0 };
INT32 value = 0;
diff --git a/src/mame/drivers/studio2.cpp b/src/mame/drivers/studio2.cpp
index d03f2dde54b..b1b27d475bc 100644
--- a/src/mame/drivers/studio2.cpp
+++ b/src/mame/drivers/studio2.cpp
@@ -535,7 +535,7 @@ DEVICE_IMAGE_LOAD_MEMBER( studio2_state, studio2_cart_load )
if (image.software_entry() == nullptr)
{
- if (image.filetype() == "st2")
+ if (image.is_filetype("st2"))
{
UINT8 header[0x100];
UINT8 catalogue[10], title[32], pages[64];
diff --git a/src/mame/drivers/vc4000.cpp b/src/mame/drivers/vc4000.cpp
index ab0a3b3b216..1b645e8ecf4 100644
--- a/src/mame/drivers/vc4000.cpp
+++ b/src/mame/drivers/vc4000.cpp
@@ -414,7 +414,7 @@ QUICKLOAD_LOAD_MEMBER( vc4000_state,vc4000)
}
else
{
- if (image.filetype() == "tvc")
+ if (image.is_filetype("tvc"))
{
if (quick_data[0] != 2)
{
@@ -455,7 +455,7 @@ QUICKLOAD_LOAD_MEMBER( vc4000_state,vc4000)
}
}
else
- if (image.filetype() == "pgm")
+ if (image.is_filetype("pgm"))
{
if (quick_data[0] != 0)
{
diff --git a/src/mame/drivers/vip.cpp b/src/mame/drivers/vip.cpp
index 537fb4b2342..6179d3d5b9c 100644
--- a/src/mame/drivers/vip.cpp
+++ b/src/mame/drivers/vip.cpp
@@ -667,13 +667,13 @@ QUICKLOAD_LOAD_MEMBER( vip_state, vip )
int chip8_size = 0;
int size = image.length();
- if (image.filetype() == "c8")
+ if (image.is_filetype("c8"))
{
/* CHIP-8 program */
chip8_ptr = m_chip8->base();
chip8_size = m_chip8->bytes();
}
- else if (image.filetype() == "c8x")
+ else if (image.is_filetype("c8x"))
{
/* CHIP-8X program */
chip8_ptr = m_chip8x->base();
diff --git a/src/mame/includes/lviv.h b/src/mame/includes/lviv.h
index f0634fc237d..3a50e491732 100644
--- a/src/mame/includes/lviv.h
+++ b/src/mame/includes/lviv.h
@@ -57,7 +57,7 @@ public:
void lviv_update_memory ();
void lviv_setup_snapshot (UINT8 * data);
void dump_registers();
- int lviv_verify_snapshot (UINT8 * data, UINT32 size);
+ bool lviv_verify_snapshot (UINT8 * data, UINT32 size);
DECLARE_SNAPSHOT_LOAD_MEMBER( lviv );
DECLARE_INPUT_CHANGED_MEMBER(lviv_reset);
};
diff --git a/src/mame/includes/lynx.h b/src/mame/includes/lynx.h
index f11b34bd69f..6f3fcf779fa 100644
--- a/src/mame/includes/lynx.h
+++ b/src/mame/includes/lynx.h
@@ -181,7 +181,7 @@ public:
void lynx_timer_count_down(int which);
UINT32 lynx_time_factor(int val);
void lynx_uart_reset();
- int lynx_verify_cart (char *header, int kind);
+ bool lynx_verify_cart (char *header, int kind);
DECLARE_QUICKLOAD_LOAD_MEMBER( lynx );
protected:
diff --git a/src/mame/includes/microtan.h b/src/mame/includes/microtan.h
index c9e990ea472..1ab63792b4a 100644
--- a/src/mame/includes/microtan.h
+++ b/src/mame/includes/microtan.h
@@ -88,7 +88,7 @@ public:
UINT8 read_dsw();
void microtan_set_irq_line();
void store_key(int key);
- int microtan_verify_snapshot(UINT8 *data, int size);
+ bool microtan_verify_snapshot(UINT8 *data, int size);
int parse_intel_hex(UINT8 *snapshot_buff, char *src);
int parse_zillion_hex(UINT8 *snapshot_buff, char *src);
void microtan_set_cpu_regs(const UINT8 *snapshot_buff, int base);
diff --git a/src/mame/machine/atarifdc.cpp b/src/mame/machine/atarifdc.cpp
index cab09ef2b93..4da212bcb7e 100644
--- a/src/mame/machine/atarifdc.cpp
+++ b/src/mame/machine/atarifdc.cpp
@@ -144,28 +144,28 @@ void atari_fdc_device::atari_load_proc(device_image_interface &image, bool is_cr
//m_drv[id].image = (UINT8*)image.image_realloc(m_drv[id].image, size);
/* no extension: assume XFD format (no header) */
- if (image.filetype() == "")
+ if (image.is_filetype(""))
{
m_drv[id].type = FORMAT_XFD;
m_drv[id].header_skip = 0;
}
else
/* XFD extension */
- if( image.filetype() == "xfd" )
+ if( image.is_filetype("xfd") )
{
m_drv[id].type = FORMAT_XFD;
m_drv[id].header_skip = 0;
}
else
/* ATR extension */
- if( image.filetype() == "atr" )
+ if( image.is_filetype("atr") )
{
m_drv[id].type = FORMAT_ATR;
m_drv[id].header_skip = 16;
}
else
/* DSK extension */
- if( image.filetype() == "dsk" )
+ if( image.is_filetype("dsk") )
{
m_drv[id].type = FORMAT_DSK;
m_drv[id].header_skip = sizeof(atari_dsk_format);
diff --git a/src/mame/machine/lviv.cpp b/src/mame/machine/lviv.cpp
index e2fd86c293f..44f307b7164 100644
--- a/src/mame/machine/lviv.cpp
+++ b/src/mame/machine/lviv.cpp
@@ -281,24 +281,24 @@ void lviv_state::dump_registers()
logerror("HL = %04x\n", (unsigned) m_maincpu->state_int(I8085_HL));
}
-int lviv_state::lviv_verify_snapshot (UINT8 * data, UINT32 size)
+bool lviv_state::lviv_verify_snapshot (UINT8 * data, UINT32 size)
{
const char* tag = "LVOV/DUMP/2.0/";
if( strncmp( tag, (char*)data, strlen(tag) ) )
{
logerror("Not a Lviv snapshot\n");
- return IMAGE_VERIFY_FAIL;
+ return false;
}
if (size != LVIV_SNAPSHOT_SIZE)
{
logerror ("Incomplete snapshot file\n");
- return IMAGE_VERIFY_FAIL;
+ return false;
}
logerror("returning ID_OK\n");
- return IMAGE_VERIFY_PASS;
+ return true;
}
SNAPSHOT_LOAD_MEMBER( lviv_state, lviv )
@@ -307,7 +307,7 @@ SNAPSHOT_LOAD_MEMBER( lviv_state, lviv )
image.fread( &lviv_snapshot_data[0], LVIV_SNAPSHOT_SIZE);
- if(lviv_verify_snapshot(&lviv_snapshot_data[0], snapshot_size) == IMAGE_VERIFY_FAIL)
+ if(!lviv_verify_snapshot(&lviv_snapshot_data[0], snapshot_size))
{
return IMAGE_INIT_FAIL;
}
diff --git a/src/mame/machine/lynx.cpp b/src/mame/machine/lynx.cpp
index 562c0e89407..e7a83692d4a 100644
--- a/src/mame/machine/lynx.cpp
+++ b/src/mame/machine/lynx.cpp
@@ -2030,14 +2030,14 @@ void lynx_state::machine_start()
****************************************/
-int lynx_state::lynx_verify_cart (char *header, int kind)
+bool lynx_state::lynx_verify_cart (char *header, int kind)
{
if (kind)
{
if (strncmp("BS93", &header[6], 4))
{
logerror("This is not a valid Lynx image\n");
- return IMAGE_VERIFY_FAIL;
+ return false;
}
}
else
@@ -2051,11 +2051,11 @@ int lynx_state::lynx_verify_cart (char *header, int kind)
}
else
logerror("This is not a valid Lynx image\n");
- return IMAGE_VERIFY_FAIL;
+ return false;
}
}
- return IMAGE_VERIFY_PASS;
+ return true;
}
DEVICE_IMAGE_LOAD_MEMBER( lynx_state, lynx_cart )
@@ -2069,7 +2069,7 @@ DEVICE_IMAGE_LOAD_MEMBER( lynx_state, lynx_cart )
if (image.software_entry() == nullptr)
{
// check for lnx header
- if (image.filetype() == "lnx")
+ if (image.is_filetype("lnx"))
{
// 64 byte header
// LYNX
@@ -2081,7 +2081,7 @@ DEVICE_IMAGE_LOAD_MEMBER( lynx_state, lynx_cart )
image.fread(header, 0x40);
// Check the image
- if (lynx_verify_cart((char*)header, LYNX_CART) == IMAGE_VERIFY_FAIL)
+ if (!lynx_verify_cart((char*)header, LYNX_CART))
return IMAGE_INIT_FAIL;
/* 2008-10 FP: According to Handy source these should be page_size_bank0. Are we using
@@ -2100,9 +2100,9 @@ DEVICE_IMAGE_LOAD_MEMBER( lynx_state, lynx_cart )
// set-up granularity
if (image.software_entry() == nullptr)
{
- if (image.filetype() == "lnx") // from header
+ if (image.is_filetype("lnx")) // from header
m_granularity = gran;
- else if (image.filetype() == "lyx")
+ else if (image.is_filetype("lyx"))
{
/* 2008-10 FP: FIXME: .lyx file don't have an header, hence they miss "lynx_granularity"
(see above). What if bank 0 has to be loaded elsewhere? And what about bank 1?
diff --git a/src/mame/machine/mbee.cpp b/src/mame/machine/mbee.cpp
index 034d498759f..70c22e71384 100644
--- a/src/mame/machine/mbee.cpp
+++ b/src/mame/machine/mbee.cpp
@@ -627,7 +627,7 @@ QUICKLOAD_LOAD_MEMBER( mbee_state, mbee )
UINT16 i, j;
UINT8 data, sw = m_io_config->read() & 1; /* reading the config switch: 1 = autorun */
- if (image.filetype() == "mwb")
+ if (image.is_filetype("mwb"))
{
/* mwb files - standard basic files */
for (i = 0; i < quickload_size; i++)
@@ -657,7 +657,7 @@ QUICKLOAD_LOAD_MEMBER( mbee_state, mbee )
else
space.write_word(0xa2,0x8517);
}
- else if (image.filetype() == "com")
+ else if (image.is_filetype("com"))
{
/* com files - most com files are just machine-language games with a wrapper and don't need cp/m to be present */
for (i = 0; i < quickload_size; i++)
@@ -681,7 +681,7 @@ QUICKLOAD_LOAD_MEMBER( mbee_state, mbee )
if (sw) m_maincpu->set_pc(0x100);
}
- else if (image.filetype() == "bee")
+ else if (image.is_filetype("bee"))
{
/* bee files - machine-language games that start at 0900 */
for (i = 0; i < quickload_size; i++)
diff --git a/src/mame/machine/microtan.cpp b/src/mame/machine/microtan.cpp
index eb9c555cd04..422e79e16aa 100644
--- a/src/mame/machine/microtan.cpp
+++ b/src/mame/machine/microtan.cpp
@@ -522,23 +522,23 @@ void microtan_state::machine_reset()
output().set_led_value(1, (m_keyrows[3] & 0x80) ? 0 : 1);
}
-int microtan_state::microtan_verify_snapshot(UINT8 *data, int size)
+bool microtan_state::microtan_verify_snapshot(UINT8 *data, int size)
{
if (size == 8263)
{
logerror("microtan_snapshot_id: magic size %d found\n", size);
- return IMAGE_VERIFY_PASS;
+ return true;
}
else
{
if (4 + data[2] + 256 * data[3] + 1 + 16 + 16 + 16 + 1 + 1 + 16 + 16 + 64 + 7 == size)
{
logerror("microtan_snapshot_id: header RAM size + structures matches filesize %d\n", size);
- return IMAGE_VERIFY_PASS;
+ return true;
}
}
- return IMAGE_VERIFY_FAIL;
+ return false;
}
int microtan_state::parse_intel_hex(UINT8 *snapshot_buff, char *src)
@@ -827,7 +827,7 @@ SNAPSHOT_LOAD_MEMBER( microtan_state, microtan )
if (!snapshot_buff)
return IMAGE_INIT_FAIL;
- if (microtan_verify_snapshot(snapshot_buff, snapshot_size)==IMAGE_VERIFY_FAIL)
+ if (!microtan_verify_snapshot(snapshot_buff, snapshot_size))
return IMAGE_INIT_FAIL;
microtan_snapshot_copy(snapshot_buff, snapshot_size);
diff --git a/src/mame/machine/z80bin.cpp b/src/mame/machine/z80bin.cpp
index d058ea613db..7a5bb3d24c3 100644
--- a/src/mame/machine/z80bin.cpp
+++ b/src/mame/machine/z80bin.cpp
@@ -8,7 +8,7 @@
memory
-------------------------------------------------*/
-int z80bin_load_file(device_image_interface *image, address_space &space, const char *file_type, UINT16 *exec_addr, UINT16 *start_addr, UINT16 *end_addr )
+bool z80bin_load_file(device_image_interface *image, address_space &space, const char *file_type, UINT16 *exec_addr, UINT16 *start_addr, UINT16 *end_addr )
{
int ch;
UINT16 args[3];
diff --git a/src/mame/machine/z80bin.h b/src/mame/machine/z80bin.h
index 1690ebffcda..7a839466506 100644
--- a/src/mame/machine/z80bin.h
+++ b/src/mame/machine/z80bin.h
@@ -13,6 +13,6 @@
#ifndef __Z80_BIN__
#define __Z80_BIN__
-int z80bin_load_file(device_image_interface *image, address_space &space, const char *file_type, UINT16 *exec_addr, UINT16 *start_addr, UINT16 *end_addr );
+bool z80bin_load_file(device_image_interface *image, address_space &space, const char *file_type, UINT16 *exec_addr, UINT16 *start_addr, UINT16 *end_addr );
#endif
diff --git a/src/mame/video/chihiro.cpp b/src/mame/video/chihiro.cpp
index b3ef942a1cb..dfe867e78cc 100644
--- a/src/mame/video/chihiro.cpp
+++ b/src/mame/video/chihiro.cpp
@@ -2366,7 +2366,7 @@ void nv2a_renderer::convert_vertices_poly(vertex_nv *source, nv2avertex_t *desti
// should use either the vertex program or transformation matrices
if (vertex_pipeline == 4) {
// transformation matrices
- // it is not implemented, so we pretend its always using screen coordinates
+ // this part needs more testing
for (m = 0; m < count; m++) {
for (int i = 0; i < 4; i++) {
t[i] = 0;
@@ -2378,7 +2378,8 @@ void nv2a_renderer::convert_vertices_poly(vertex_nv *source, nv2avertex_t *desti
for (int j = 0; j < 4; j++)
v[i] += matrix.projection[i][j] * t[j];
};
- /*for (int i = 0; i < 3; i++) {
+ /* it seems these are not needed ?
+ for (int i = 0; i < 3; i++) {
v[i] *= matrix.scale[i];
}
for (int i = 0; i < 3; i++) {
@@ -2400,6 +2401,7 @@ void nv2a_renderer::convert_vertices_poly(vertex_nv *source, nv2avertex_t *desti
// vertex program
// run vertex program
vertexprogram.exec.process(vertexprogram.start_instruction, source, vert, count);
+ // the output of the vertex program has the perspective divide, viewport scale and offset already applied
// copy data for poly.c
for (m = 0; m < count; m++) {
destination[m].w = vert[m].attribute[0].fv[3];
@@ -2680,6 +2682,15 @@ UINT32 nv2a_renderer::render_triangle_clipping(const rectangle &cliprect, render
vi[2] = &_v3;
for (int n=0;n < 3;n++)
{
+ // remove translate
+ vi[n]->x = vi[n]->x - translatex;
+ vi[n]->y = vi[n]->y - translatey;
+ vi[n]->p[(int)VERTEX_PARAMETER::PARAM_Z] = vi[n]->p[(int)VERTEX_PARAMETER::PARAM_Z] - translatez;
+ // remove scale
+ vi[n]->x = vi[n]->x / scalex;
+ vi[n]->y = vi[n]->y / scaley;
+ vi[n]->p[(int)VERTEX_PARAMETER::PARAM_Z] = vi[n]->p[(int)VERTEX_PARAMETER::PARAM_Z] / scalez;
+ // remove perspective divide
vi[n]->x = vi[n]->x * vi[n]->w;
vi[n]->y = vi[n]->y * vi[n]->w;
vi[n]->p[(int)VERTEX_PARAMETER::PARAM_Z] = vi[n]->p[(int)VERTEX_PARAMETER::PARAM_Z] * vi[n]->w;
@@ -2715,16 +2726,26 @@ UINT32 nv2a_renderer::render_triangle_clipping(const rectangle &cliprect, render
}
for (int n = 0; n < idx; n++)
{
+ // apply perspective divide
vo[n].x = vo[n].x / vo[n].w;
vo[n].y = vo[n].y / vo[n].w;
vo[n].p[(int)VERTEX_PARAMETER::PARAM_Z] = vo[n].p[(int)VERTEX_PARAMETER::PARAM_Z] / vo[n].w;
+ // apply scale
+ vo[n].x = vo[n].x * scalex;
+ vo[n].y = vo[n].y * scaley;
+ vo[n].p[(int)VERTEX_PARAMETER::PARAM_Z] = vo[n].p[(int)VERTEX_PARAMETER::PARAM_Z] * scalez;
+ // apply translate
+ vo[n].x = vo[n].x + translatex;
+ vo[n].y = vo[n].y + translatey;
+ vo[n].p[(int)VERTEX_PARAMETER::PARAM_Z] = vo[n].p[(int)VERTEX_PARAMETER::PARAM_Z] + translatez;
+ }
+ for (int n = 0; n < (idx-2); n++)
+ {
+ if ((n & 1) == 0)
+ render_triangle_culling(cliprect, callback, paramcount, vo[n], vo[n + 1], vo[n + 2]);
+ else
+ render_triangle_culling(cliprect, callback, paramcount, vo[n], vo[n + 2], vo[n + 1]);
}
- if (idx > 2)
- render_triangle_culling(cliprect, callback, paramcount, vo[0], vo[1], vo[2]);
- if (idx > 3)
- render_triangle_culling(cliprect, callback, paramcount, vo[0], vo[2], vo[3]);
- if (idx > 4)
- exit(0);
#endif
return 0;
}
@@ -2869,7 +2890,7 @@ int nv2a_renderer::geforce_exec_method(address_space & space, UINT32 chanel, UIN
data = space.read_dword(address);
channel[chanel][subchannel].object.method[method] = data;
#ifdef LOG_NV2A
- printf("A:%08X MTHD:%08X D:%08X\n\r",address,maddress,data);
+ //printf("A:%08X MTHD:%08X D:%08X\n\r",address,maddress,data);
#endif
if (maddress == 0x17fc) {
#if 0 // useful while debugging to see what coordinates have been used
@@ -3489,6 +3510,10 @@ int nv2a_renderer::geforce_exec_method(address_space & space, UINT32 chanel, UIN
*(UINT32 *)(&matrix.translate[maddress]) = data;
// set corresponding vertex shader constant too
vertexprogram.exec.c_constant[59].iv[maddress] = data; // constant -37
+#ifdef LOG_NV2A
+ if (maddress == 3)
+ machine().logerror("viewport translate = {%f %f %f %f}\n", matrix.translate[0], matrix.translate[1], matrix.translate[2], matrix.translate[3]);
+#endif
countlen--;
}
// viewport scale
@@ -3497,6 +3522,10 @@ int nv2a_renderer::geforce_exec_method(address_space & space, UINT32 chanel, UIN
*(UINT32 *)(&matrix.scale[maddress]) = data;
// set corresponding vertex shader constant too
vertexprogram.exec.c_constant[58].iv[maddress] = data; // constant -38
+#ifdef LOG_NV2A
+ if (maddress == 3)
+ machine().logerror("viewport scale = {%f %f %f %f}\n", matrix.scale[0], matrix.scale[1], matrix.scale[2], matrix.scale[3]);
+#endif
countlen--;
}
// Vertex program (shader)
@@ -3557,6 +3586,15 @@ int nv2a_renderer::geforce_exec_method(address_space & space, UINT32 chanel, UIN
machine().logerror("Need to increase size of vertexprogram.parameter to %d\n\r", vertexprogram.upload_parameter_index);
vertexprogram.upload_parameter_component++;
if (vertexprogram.upload_parameter_component >= 4) {
+#ifdef LOG_NV2A
+ if ((vertexprogram.upload_parameter_index == 58) || (vertexprogram.upload_parameter_index == 59))
+ machine().logerror("vp constant %d (%s) = {%f %f %f %f}\n", vertexprogram.upload_parameter_index,
+ vertexprogram.upload_parameter_index == 58 ? "viewport scale" : "viewport translate",
+ vertexprogram.exec.c_constant[vertexprogram.upload_parameter_index].fv[0],
+ vertexprogram.exec.c_constant[vertexprogram.upload_parameter_index].fv[1],
+ vertexprogram.exec.c_constant[vertexprogram.upload_parameter_index].fv[2],
+ vertexprogram.exec.c_constant[vertexprogram.upload_parameter_index].fv[3]);
+#endif
vertexprogram.upload_parameter_component = 0;
vertexprogram.upload_parameter_index++;
}
@@ -4616,6 +4654,9 @@ WRITE32_MEMBER(nv2a_renderer::geforce_w)
dmaget = &channel[chanel][0].regs[0x44 / 4];
//printf("dmaget %08X dmaput %08X\n\r",*dmaget,*dmaput);
if (((*dmaput == 0x048cf000) && (*dmaget == 0x07f4d000)) || // only for outr2
+ ((*dmaput == 0x045cd000) && (*dmaget == 0x07f4d000)) || // only for scg06nt
+ ((*dmaput == 0x0494c000) && (*dmaget == 0x07f4d000)) || // only for wangmid
+ ((*dmaput == 0x05acd000) && (*dmaget == 0x07f4d000)) || // only for ghostsqu
((*dmaput == 0x07dca000) && (*dmaget == 0x07f4d000))) // only for crtaxihr
{
*dmaget = *dmaput;
diff --git a/src/osd/modules/debugger/osx/debugview.mm b/src/osd/modules/debugger/osx/debugview.mm
index f4a7c8cd2cb..f9bf650a7ac 100644
--- a/src/osd/modules/debugger/osx/debugview.mm
+++ b/src/osd/modules/debugger/osx/debugview.mm
@@ -583,7 +583,7 @@ static void debugwin_view_update(debug_view &view, void *osdprivate)
if (wholeLineScroll)
{
CGFloat const clamp = [self bounds].size.height - fontHeight - proposedVisibleRect.size.height;
- proposedVisibleRect.origin.y = std::min((int)proposedVisibleRect.origin.y, std::max((int)clamp, 0));
+ proposedVisibleRect.origin.y = std::min(proposedVisibleRect.origin.y, std::max(clamp, CGFloat(0)));
proposedVisibleRect.origin.y -= fmod(proposedVisibleRect.origin.y, fontHeight);
}
return proposedVisibleRect;
@@ -668,7 +668,7 @@ static void debugwin_view_update(debug_view &view, void *osdprivate)
inTextContainer:textContainer];
if (start == 0)
box.origin.x = 0;
- box.size.width = std::max((int)([self bounds].size.width - box.origin.x), 0);
+ box.size.width = std::max([self bounds].size.width - box.origin.x, CGFloat(0));
[[self backgroundForAttribute:attr] set];
[NSBezierPath fillRect:NSMakeRect(box.origin.x,
row * fontHeight,
diff --git a/src/osd/modules/debugger/osx/debugwindowhandler.mm b/src/osd/modules/debugger/osx/debugwindowhandler.mm
index 18c17a3aef0..853fe8fd4b6 100644
--- a/src/osd/modules/debugger/osx/debugwindowhandler.mm
+++ b/src/osd/modules/debugger/osx/debugwindowhandler.mm
@@ -350,7 +350,7 @@ NSString *const MAMEAuxiliaryDebugWindowWillCloseNotification = @"MAMEAuxiliaryD
windowFrame.size.height = std::min(windowFrame.size.height, available.size.height);
// arbitrary additional height limit
- windowFrame.size.height = std::min((int)windowFrame.size.height, 320);
+ windowFrame.size.height = std::min(windowFrame.size.height, CGFloat(320));
// place it in the bottom right corner and apply
windowFrame.origin.x = available.origin.x + available.size.width - windowFrame.size.width;
diff --git a/src/osd/modules/debugger/osx/errorlogviewer.mm b/src/osd/modules/debugger/osx/errorlogviewer.mm
index cf8d7936c6b..56108223cb7 100644
--- a/src/osd/modules/debugger/osx/errorlogviewer.mm
+++ b/src/osd/modules/debugger/osx/errorlogviewer.mm
@@ -44,7 +44,7 @@
borderType:[logScroll borderType]];
// this thing starts with no content, so its prefered height may be very small
- desired.height = std::max((int)desired.height, 240);
+ desired.height = std::max(desired.height, CGFloat(240));
[self cascadeWindowWithDesiredSize:desired forView:logScroll];
}
diff --git a/src/osd/modules/input/input_common.h b/src/osd/modules/input/input_common.h
index d3ac27a7862..45752639d0a 100644
--- a/src/osd/modules/input/input_common.h
+++ b/src/osd/modules/input/input_common.h
@@ -464,10 +464,10 @@ class input_module_base : public input_module
public:
input_module_base(const char *type, const char* name)
: input_module(type, name),
- m_input_enabled(FALSE),
- m_mouse_enabled(FALSE),
- m_lightgun_enabled(FALSE),
- m_input_paused(FALSE),
+ m_input_enabled(false),
+ m_mouse_enabled(false),
+ m_lightgun_enabled(false),
+ m_input_paused(false),
m_options(nullptr)
{
}
diff --git a/src/osd/modules/input/input_rawinput.cpp b/src/osd/modules/input/input_rawinput.cpp
index 739ae4496f3..1bd0cd9fe28 100644
--- a/src/osd/modules/input/input_rawinput.cpp
+++ b/src/osd/modules/input/input_rawinput.cpp
@@ -523,7 +523,7 @@ protected:
{
// Only handle raw input data
if (!input_enabled() || eventid != INPUT_EVENT_RAWINPUT)
- return FALSE;
+ return false;
HRAWINPUT rawinputdevice = *static_cast<HRAWINPUT*>(eventdata);
@@ -535,11 +535,11 @@ protected:
// ignore if not enabled
if (!input_enabled())
- return FALSE;
+ return false;
// determine the size of databuffer we need
if ((*get_rawinput_data)(rawinputdevice, RID_INPUT, nullptr, &size, sizeof(RAWINPUTHEADER)) != 0)
- return FALSE;
+ return false;
// if necessary, allocate a temporary buffer and fetch the data
if (size > sizeof(small_buffer))
@@ -547,7 +547,7 @@ protected:
larger_buffer = std::make_unique<BYTE[]>(size);
data = larger_buffer.get();
if (data == nullptr)
- return FALSE;
+ return false;
}
// fetch the data and process the appropriate message types
@@ -567,7 +567,7 @@ protected:
if (input->header.hDevice == devinfo->device_handle())
{
devinfo->queue_events(input, 1);
- result = TRUE;
+ result = true;
}
}
}
diff --git a/src/osd/modules/input/input_win32.cpp b/src/osd/modules/input/input_win32.cpp
index dc9b95b3f28..ce1cf4e883f 100644
--- a/src/osd/modules/input/input_win32.cpp
+++ b/src/osd/modules/input/input_win32.cpp
@@ -95,7 +95,7 @@ public:
bool handle_input_event(input_event eventid, void *eventdata) override
{
if (!input_enabled())
- return FALSE;
+ return false;
KeyPressEventArgs *args;
@@ -107,10 +107,10 @@ public:
for (int i = 0; i < devicelist()->size(); i++)
downcast<win32_keyboard_device*>(devicelist()->at(i))->queue_events(args, 1);
- return TRUE;
+ return true;
default:
- return FALSE;
+ return false;
}
}
};
@@ -231,13 +231,13 @@ public:
bool handle_input_event(input_event eventid, void *eventdata) override
{
if (!input_enabled() || !mouse_enabled() || eventid != INPUT_EVENT_MOUSE_BUTTON)
- return FALSE;
+ return false;
auto args = static_cast<MouseButtonEventArgs*>(eventdata);
for (int i = 0; i < devicelist()->size(); i++)
downcast<win32_mouse_device*>(devicelist()->at(i))->queue_events(args, 1);
- return TRUE;
+ return true;
}
};
diff --git a/src/osd/modules/render/d3d/d3dhlsl.cpp b/src/osd/modules/render/d3d/d3dhlsl.cpp
index e41008e03c2..105313cb308 100644
--- a/src/osd/modules/render/d3d/d3dhlsl.cpp
+++ b/src/osd/modules/render/d3d/d3dhlsl.cpp
@@ -540,19 +540,19 @@ bool shaders::init(d3d_base *d3dintf, running_machine *machine, renderer_d3d9 *r
options->scanline_bright_offset = winoptions.screen_scanline_bright_offset();
options->scanline_jitter = winoptions.screen_scanline_jitter();
options->hum_bar_alpha = winoptions.screen_hum_bar_alpha();
- get_vector(winoptions.screen_defocus(), 2, options->defocus, TRUE);
- get_vector(winoptions.screen_converge_x(), 3, options->converge_x, TRUE);
- get_vector(winoptions.screen_converge_y(), 3, options->converge_y, TRUE);
- get_vector(winoptions.screen_radial_converge_x(), 3, options->radial_converge_x, TRUE);
- get_vector(winoptions.screen_radial_converge_y(), 3, options->radial_converge_y, TRUE);
- get_vector(winoptions.screen_red_ratio(), 3, options->red_ratio, TRUE);
- get_vector(winoptions.screen_grn_ratio(), 3, options->grn_ratio, TRUE);
- get_vector(winoptions.screen_blu_ratio(), 3, options->blu_ratio, TRUE);
- get_vector(winoptions.screen_offset(), 3, options->offset, TRUE);
- get_vector(winoptions.screen_scale(), 3, options->scale, TRUE);
- get_vector(winoptions.screen_power(), 3, options->power, TRUE);
- get_vector(winoptions.screen_floor(), 3, options->floor, TRUE);
- get_vector(winoptions.screen_phosphor(), 3, options->phosphor, TRUE);
+ get_vector(winoptions.screen_defocus(), 2, options->defocus, true);
+ get_vector(winoptions.screen_converge_x(), 3, options->converge_x, true);
+ get_vector(winoptions.screen_converge_y(), 3, options->converge_y, true);
+ get_vector(winoptions.screen_radial_converge_x(), 3, options->radial_converge_x, true);
+ get_vector(winoptions.screen_radial_converge_y(), 3, options->radial_converge_y, true);
+ get_vector(winoptions.screen_red_ratio(), 3, options->red_ratio, true);
+ get_vector(winoptions.screen_grn_ratio(), 3, options->grn_ratio, true);
+ get_vector(winoptions.screen_blu_ratio(), 3, options->blu_ratio, true);
+ get_vector(winoptions.screen_offset(), 3, options->offset, true);
+ get_vector(winoptions.screen_scale(), 3, options->scale, true);
+ get_vector(winoptions.screen_power(), 3, options->power, true);
+ get_vector(winoptions.screen_floor(), 3, options->floor, true);
+ get_vector(winoptions.screen_phosphor(), 3, options->phosphor, true);
options->saturation = winoptions.screen_saturation();
options->yiq_enable = winoptions.screen_yiq_enable();
options->yiq_jitter = winoptions.screen_yiq_jitter();
@@ -572,7 +572,7 @@ bool shaders::init(d3d_base *d3dintf, running_machine *machine, renderer_d3d9 *r
options->vector_length_ratio = winoptions.screen_vector_length_ratio();
options->bloom_blend_mode = winoptions.screen_bloom_blend_mode();
options->bloom_scale = winoptions.screen_bloom_scale();
- get_vector(winoptions.screen_bloom_overdrive(), 3, options->bloom_overdrive, TRUE);
+ get_vector(winoptions.screen_bloom_overdrive(), 3, options->bloom_overdrive, true);
options->bloom_level0_weight = winoptions.screen_bloom_lvl0_weight();
options->bloom_level1_weight = winoptions.screen_bloom_lvl1_weight();
options->bloom_level2_weight = winoptions.screen_bloom_lvl2_weight();
diff --git a/src/osd/modules/render/drawd3d.cpp b/src/osd/modules/render/drawd3d.cpp
index 1035a875bc2..17d77dd4446 100644
--- a/src/osd/modules/render/drawd3d.cpp
+++ b/src/osd/modules/render/drawd3d.cpp
@@ -854,7 +854,7 @@ try_again:
D3DRTYPE_TEXTURE, m_screen_format);
if (FAILED(result) && m_texture_manager->is_dynamic_supported())
{
- m_texture_manager->set_dynamic_supported(FALSE);
+ m_texture_manager->set_dynamic_supported(false);
goto try_again;
}
if (FAILED(result))
diff --git a/src/osd/modules/sound/coreaudio_sound.cpp b/src/osd/modules/sound/coreaudio_sound.cpp
index e445dc27059..483af364aa4 100644
--- a/src/osd/modules/sound/coreaudio_sound.cpp
+++ b/src/osd/modules/sound/coreaudio_sound.cpp
@@ -81,7 +81,7 @@ private:
EFFECT_COUNT_MAX = 10
};
- UINT32 clamped_latency() const { return std::max(std::min(UINT32(m_audio_latency), UINT32(LATENCY_MAX)), UINT32(LATENCY_MIN)); }
+ UINT32 clamped_latency() const { return unsigned(std::max(std::min(m_audio_latency, int(LATENCY_MAX)), int(LATENCY_MIN))); }
UINT32 buffer_avail() const { return ((m_writepos >= m_playpos) ? m_buffer_size : 0) + m_playpos - m_writepos; }
UINT32 buffer_used() const { return ((m_playpos > m_writepos) ? m_buffer_size : 0) + m_writepos - m_playpos; }
@@ -228,7 +228,7 @@ int sound_coreaudio::init(const osd_options &options)
// Allocate buffer
m_headroom = m_sample_bytes * (clamped_latency() * sample_rate() / 40);
- m_buffer_size = m_sample_bytes * std::max(UINT32(sample_rate() * (clamped_latency() + 3) / 40), 256U);
+ m_buffer_size = m_sample_bytes * std::max<UINT32>(sample_rate() * (clamped_latency() + 3) / 40, 256U);
m_buffer = global_alloc_array_clear<INT8>(m_buffer_size);
if (!m_buffer)
{
diff --git a/src/osd/osdsync.h b/src/osd/osdsync.h
index 07b1d9fd82d..92bfd11fedc 100644
--- a/src/osd/osdsync.h
+++ b/src/osd/osdsync.h
@@ -91,7 +91,7 @@ public:
{
if (!m_signalled)
{
- return FALSE;
+ return false;
}
else
break;
diff --git a/src/osd/windows/window.cpp b/src/osd/windows/window.cpp
index 12e578d4682..12832f8580d 100644
--- a/src/osd/windows/window.cpp
+++ b/src/osd/windows/window.cpp
@@ -406,7 +406,7 @@ void winwindow_process_events_periodic(running_machine &machine)
// update once every 1/8th of a second
if (currticks - last_event_check < std::chrono::milliseconds(1000 / 8))
return;
- winwindow_process_events(machine, TRUE, FALSE);
+ winwindow_process_events(machine, TRUE, false);
}
@@ -415,13 +415,13 @@ void winwindow_process_events_periodic(running_machine &machine)
// is_mame_window
//============================================================
-static BOOL is_mame_window(HWND hwnd)
+static bool is_mame_window(HWND hwnd)
{
for (auto window : osd_common_t::s_window_list)
if (window->platform_window<HWND>() == hwnd)
- return TRUE;
+ return true;
- return FALSE;
+ return false;
}
inline static BOOL handle_mouse_button(windows_osd_interface *osd, int button, int down, int x, int y)
diff --git a/src/tools/imgtool/stream.cpp b/src/tools/imgtool/stream.cpp
index 97dfba16800..8aea81031e5 100644
--- a/src/tools/imgtool/stream.cpp
+++ b/src/tools/imgtool/stream.cpp
@@ -444,12 +444,12 @@ UINT64 stream_fill(imgtool_stream *f, unsigned char b, UINT64 sz)
char buf[1024];
outsz = 0;
- memset(buf, b, std::min(sz, UINT64(sizeof(buf))));
+ memset(buf, b, (std::min<UINT64>)(sz, sizeof(buf)));
- while(sz)
+ while (sz)
{
- outsz += stream_write(f, buf, std::min(sz, UINT64(sizeof(buf))));
- sz -= std::min(sz, UINT64(sizeof(buf)));
+ outsz += stream_write(f, buf, (std::min<UINT64>)(sz, sizeof(buf)));
+ sz -= (std::min<UINT64>)(sz, sizeof(buf));
}
return outsz;
}