diff options
Diffstat (limited to 'src/emu')
-rw-r--r-- | src/emu/digfx.h | 3 | ||||
-rw-r--r-- | src/emu/driver.bak.h | 188 | ||||
-rw-r--r-- | src/emu/driver.h | 1 | ||||
-rw-r--r-- | src/emu/emuopts.cpp | 2 | ||||
-rw-r--r-- | src/emu/gamedrv.h | 21 | ||||
-rw-r--r-- | src/emu/romload.cpp | 4 | ||||
-rw-r--r-- | src/emu/screen.cpp | 4 | ||||
-rw-r--r-- | src/emu/validity.cpp | 2 | ||||
-rw-r--r-- | src/emu/video.h | 1 |
9 files changed, 219 insertions, 7 deletions
diff --git a/src/emu/digfx.h b/src/emu/digfx.h index 3829cd2882e..b991ff15f12 100644 --- a/src/emu/digfx.h +++ b/src/emu/digfx.h @@ -25,7 +25,8 @@ constexpr u8 MAX_GFX_ELEMENTS = 32; constexpr u16 MAX_GFX_PLANES = 8; -constexpr u16 MAX_GFX_SIZE = 32; +// HBMAME - needed by monaco +constexpr u16 MAX_GFX_SIZE = 64; diff --git a/src/emu/driver.bak.h b/src/emu/driver.bak.h new file mode 100644 index 00000000000..4d6da2856a7 --- /dev/null +++ b/src/emu/driver.bak.h @@ -0,0 +1,188 @@ +// license:BSD-3-Clause +// copyright-holders:Aaron Giles +/*************************************************************************** + + driver.h + + Core driver device base class. + +***************************************************************************/ + +#pragma once + +#ifndef __EMU_H__ +#error Dont include this file directly; include emu.h instead. +#endif + +#ifndef MAME_EMU_DRIVER_H +#define MAME_EMU_DRIVER_H + + +//************************************************************************** +// CONFIGURATION MACROS +//************************************************************************** + +// HBMAME start +// core machine callbacks +#define MCFG_MACHINE_START_OVERRIDE(_class, _func) \ + driver_device::static_set_callback(config.root_device(), driver_device::CB_MACHINE_START, driver_callback_delegate(&_class::MACHINE_START_NAME(_func), this)); + +#define MCFG_MACHINE_RESET_OVERRIDE(_class, _func) \ + driver_device::static_set_callback(config.root_device(), driver_device::CB_MACHINE_RESET, driver_callback_delegate(&_class::MACHINE_RESET_NAME(_func), this)); + +// core video callbacks +#define MCFG_VIDEO_START_OVERRIDE(_class, _func) \ + driver_device::static_set_callback(config.root_device(), driver_device::CB_VIDEO_START, driver_callback_delegate(&_class::VIDEO_START_NAME(_func), this)); +// HBMAME end + +//************************************************************************** +// OTHER MACROS +//************************************************************************** + +// HBMAME start +#define MACHINE_START_NAME(name) machine_start_##name +#define MACHINE_START_CALL_MEMBER(name) MACHINE_START_NAME(name)() +#define DECLARE_MACHINE_START(name) void MACHINE_START_NAME(name)() ATTR_COLD +#define MACHINE_START_MEMBER(cls,name) void cls::MACHINE_START_NAME(name)() + +#define MACHINE_RESET_NAME(name) machine_reset_##name +#define MACHINE_RESET_CALL_MEMBER(name) MACHINE_RESET_NAME(name)() +#define DECLARE_MACHINE_RESET(name) void MACHINE_RESET_NAME(name)() +#define MACHINE_RESET_MEMBER(cls,name) void cls::MACHINE_RESET_NAME(name)() + +#define VIDEO_START_NAME(name) video_start_##name +#define VIDEO_START_CALL_MEMBER(name) VIDEO_START_NAME(name)() +#define DECLARE_VIDEO_START(name) void VIDEO_START_NAME(name)() ATTR_COLD +#define VIDEO_START_MEMBER(cls,name) void cls::VIDEO_START_NAME(name)() +// HBMAME end + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +// forward declarations +typedef delegate<void ()> driver_callback_delegate; + + +// ======================> driver_device + +// base class for machine driver-specific devices +class driver_device : public device_t +{ +public: + // construction/destruction + driver_device(const machine_config &mconfig, device_type type, const char *tag); + virtual ~driver_device(); + + // getters + const game_driver &system() const { assert(m_system != nullptr); return *m_system; } + + // indexes into our generic callbacks + enum callback_type + { + CB_MACHINE_START, + CB_MACHINE_RESET, + CB_SOUND_START, + CB_SOUND_RESET, + CB_VIDEO_START, + CB_VIDEO_RESET, + CB_COUNT + }; + + // inline configuration helpers + void set_game_driver(const game_driver &game); + static void static_set_callback(device_t &device, callback_type type, driver_callback_delegate callback); + static void set_machine_start_cb(machine_config &config, driver_callback_delegate callback) { static_set_callback(config.root_device(), CB_MACHINE_START, callback); } + static void set_machine_reset_cb(machine_config &config, driver_callback_delegate callback) { static_set_callback(config.root_device(), CB_MACHINE_RESET, callback); } + static void set_sound_start_cb(machine_config &config, driver_callback_delegate callback) { static_set_callback(config.root_device(), CB_SOUND_START, callback); } + static void set_sound_reset_cb(machine_config &config, driver_callback_delegate callback) { static_set_callback(config.root_device(), CB_SOUND_RESET, callback); } + static void set_video_start_cb(machine_config &config, driver_callback_delegate callback) { static_set_callback(config.root_device(), CB_VIDEO_START, callback); } + static void set_video_reset_cb(machine_config &config, driver_callback_delegate callback) { static_set_callback(config.root_device(), CB_VIDEO_RESET, callback); } + static void remove_machine_reset_cb(machine_config &config) { static_set_callback(config.root_device(), CB_MACHINE_RESET, driver_callback_delegate()); } + + // dummy driver_init callback + void empty_init(); + void init_0() { } // HBMAME + + // memory helpers + address_space &generic_space() const { return machine().dummy_space(); } + + // output heler + output_manager &output() const { return machine().output(); } + + void nmi_line_pulse(device_t &device); + void nmi_line_assert(device_t &device); + + void irq0_line_hold(device_t &device); + void irq0_line_assert(device_t &device); + + void irq1_line_hold(device_t &device); + void irq1_line_assert(device_t &device); + + void irq2_line_hold(device_t &device); + void irq2_line_assert(device_t &device); + + void irq3_line_hold(device_t &device); + void irq3_line_assert(device_t &device); + + void irq4_line_hold(device_t &device); + void irq4_line_assert(device_t &device); + + void irq5_line_hold(device_t &device); + void irq5_line_assert(device_t &device); + + void irq6_line_hold(device_t &device); + void irq6_line_assert(device_t &device); + + void irq7_line_hold(device_t &device); + void irq7_line_assert(device_t &device); + + + // generic input port helpers + DECLARE_CUSTOM_INPUT_MEMBER( custom_port_read ); + + virtual void driver_init(); + +protected: + // helpers called at startup + virtual void driver_start(); + virtual void machine_start(); + virtual void sound_start(); + virtual void video_start(); + + // helpers called at reset + virtual void driver_reset(); + virtual void machine_reset(); + virtual void sound_reset(); + virtual void video_reset(); + + // device-level overrides + virtual const tiny_rom_entry *device_rom_region() const override; + virtual void device_add_mconfig(machine_config &config) override; + virtual ioport_constructor device_input_ports() const override; + virtual void device_start() override; + virtual void device_reset_after_children() override; + + // generic video + void flip_screen_set(u32 on); + void flip_screen_x_set(u32 on); + void flip_screen_y_set(u32 on); + u32 flip_screen() const { return m_flip_screen_x; } + u32 flip_screen_x() const { return m_flip_screen_x; } + u32 flip_screen_y() const { return m_flip_screen_y; } + +private: + // helpers + void updateflip(); + + // internal state + const game_driver *m_system; // pointer to the game driver + driver_callback_delegate m_callbacks[CB_COUNT]; // start/reset callbacks + + // generic video + u8 m_flip_screen_x; + u8 m_flip_screen_y; +}; + + +#endif /* MAME_EMU_DRIVER_H */ diff --git a/src/emu/driver.h b/src/emu/driver.h index 4f6576aa737..b3d102342ce 100644 --- a/src/emu/driver.h +++ b/src/emu/driver.h @@ -123,6 +123,7 @@ public: // dummy driver_init callback void empty_init(); + void init_0() { } // HBMAME // memory helpers address_space &generic_space() const { return machine().dummy_space(); } diff --git a/src/emu/emuopts.cpp b/src/emu/emuopts.cpp index c99748e67de..1ecc0b0293d 100644 --- a/src/emu/emuopts.cpp +++ b/src/emu/emuopts.cpp @@ -40,7 +40,7 @@ const options_entry emu_options::s_option_entries[] = { OPTION_SAMPLEPATH ";sp", "samples", OPTION_STRING, "path to audio sample sets" }, { OPTION_ARTPATH, "artwork", OPTION_STRING, "path to artwork files" }, { OPTION_CTRLRPATH, "ctrlr", OPTION_STRING, "path to controller definitions" }, - { OPTION_INIPATH, ".;ini;ini/presets", OPTION_STRING, "path to ini files" }, + { OPTION_INIPATH, ".", OPTION_STRING, "path to ini files" }, // MESSUI { OPTION_FONTPATH, ".", OPTION_STRING, "path to font files" }, { OPTION_CHEATPATH, "cheat", OPTION_STRING, "path to cheat files" }, { OPTION_CROSSHAIRPATH, "crosshair", OPTION_STRING, "path to crosshair files" }, diff --git a/src/emu/gamedrv.h b/src/emu/gamedrv.h index 834f5b16a43..c5ad4bc94f9 100644 --- a/src/emu/gamedrv.h +++ b/src/emu/gamedrv.h @@ -164,6 +164,27 @@ driver_device_creator< \ game_driver::unemulated_features(FLAGS), \ game_driver::imperfect_features(FLAGS)> +// HBMAME start +// standard GAME() macro +#define HACK(YEAR,NAME,PARENT,MACHINE,INPUT,CLASS,INIT,MONITOR,COMPANY,FULLNAME,FLAGS) \ +GAME_DRIVER_TRAITS(NAME,FULLNAME) \ +extern game_driver const GAME_NAME(NAME) \ +{ \ + GAME_DRIVER_TYPE(NAME, CLASS, FLAGS), \ + #PARENT, \ + #YEAR, \ + COMPANY, \ + [] (machine_config &config, device_t &owner) { downcast<CLASS &>(owner).MACHINE(config); }, \ + INPUT_PORTS_NAME(INPUT), \ + [] (device_t &owner) { downcast<CLASS &>(owner).init_##INIT(); }, \ + ROM_NAME(NAME), \ + nullptr, \ + nullptr, \ + machine_flags::type(u32((MONITOR) | (FLAGS) | MACHINE_TYPE_ARCADE)),\ + #NAME \ +}; +// HBMAME end + // standard GAME() macro #define GAME(YEAR,NAME,PARENT,MACHINE,INPUT,CLASS,INIT,MONITOR,COMPANY,FULLNAME,FLAGS) \ GAME_DRIVER_TRAITS(NAME,FULLNAME) \ diff --git a/src/emu/romload.cpp b/src/emu/romload.cpp index c5b03607509..2a117025ce6 100644 --- a/src/emu/romload.cpp +++ b/src/emu/romload.cpp @@ -683,8 +683,8 @@ int rom_load_manager::read_rom_data(const rom_entry *parent_region, const rom_en LOG("Loading ROM data: offs=%X len=%X mask=%02X group=%d skip=%d reverse=%d\n", ROM_GETOFFSET(romp), numbytes, datamask, groupsize, skip, reversed); /* make sure the length was an even multiple of the group size */ - if (numbytes % groupsize != 0) - osd_printf_warning("Warning in RomModule definition: %s length not an even multiple of group size\n", ROM_GETNAME(romp)); +// if (numbytes % groupsize != 0) +// osd_printf_warning("Warning in RomModule definition: %s length not an even multiple of group size\n", ROM_GETNAME(romp)); // HBMAME /* make sure we only fill within the region space */ if (ROM_GETOFFSET(romp) + numgroups * groupsize + (numgroups - 1) * skip > m_region->bytes()) diff --git a/src/emu/screen.cpp b/src/emu/screen.cpp index 103230ba114..1de7539e4b2 100644 --- a/src/emu/screen.cpp +++ b/src/emu/screen.cpp @@ -813,8 +813,8 @@ void screen_device::device_start() save_item(NAME(m_vblank_start_time)); save_item(NAME(m_vblank_end_time)); save_item(NAME(m_frame_number)); - if (m_oldstyle_vblank_supplied) - logerror("%s: Deprecated legacy Old Style screen configured (MCFG_SCREEN_VBLANK_TIME), please use MCFG_SCREEN_RAW_PARAMS instead.\n",this->tag()); +// if (m_oldstyle_vblank_supplied) +// logerror("%s: Deprecated legacy Old Style screen configured (MCFG_SCREEN_VBLANK_TIME), please use MCFG_SCREEN_RAW_PARAMS instead.\n",this->tag()); m_is_primary_screen = (this == screen_device_iterator(machine().root_device()).first()); } diff --git a/src/emu/validity.cpp b/src/emu/validity.cpp index 8e8519ecffa..2c87ec0081a 100644 --- a/src/emu/validity.cpp +++ b/src/emu/validity.cpp @@ -1611,7 +1611,7 @@ void validity_checker::validate_roms(device_t &root) } // for any non-region ending entries, make sure they don't extend past the end - if (!ROMENTRY_ISREGIONEND(romp) && current_length > 0) + if (!ROMENTRY_ISREGIONEND(romp) && current_length > 0 && !ROMENTRY_ISIGNORE(romp)) // HBMAME { items_since_region++; if (!ROMENTRY_ISIGNORE(romp) && (ROM_GETOFFSET(romp) + ROM_GETLENGTH(romp) > current_length)) diff --git a/src/emu/video.h b/src/emu/video.h index b0a67402424..a5f76fa81f1 100644 --- a/src/emu/video.h +++ b/src/emu/video.h @@ -61,6 +61,7 @@ public: bool is_recording() const; // setters + void set_speed_factor(int speed) { m_speed = speed; } // MESSUI void set_frameskip(int frameskip); void set_throttled(bool throttled = true) { m_throttled = throttled; } void set_throttle_rate(float throttle_rate) { m_throttle_rate = throttle_rate; } |