diff options
author | 2020-12-13 09:54:03 +1100 | |
---|---|---|
committer | 2020-12-13 09:54:03 +1100 | |
commit | 4d7ef2749083e5e3aaf41e5b2c6b03a93c237c47 (patch) | |
tree | 47076411b64212db0145e73f953325affa9d49dc /src | |
parent | bc951bcfa9c9b4a54e40dc3ab5559531f820fafc (diff) |
-luaengine.cpp: Clean up render classes and expose screen image adjustments.
* Started moving Lua class reference to docs. Expecting people to find
the class reference material in the source isn’t going to help make it
approachable. The docs allow longer explanations, better formatting,
and cross reference links.
* Added another layout scripting example to the docs.
-goldnpkr.cpp: Minor clean-up.
* Improved the short names for Witch Card and Witch Game clone sets.
* Made Witch Up & Down artwork clickable.
* Added working Video Klein sets where the parent is a working Video
Klein set to the tiny subtarget.
* Removed history from the header comment - we have version control for
a readon.
Diffstat (limited to 'src')
-rw-r--r-- | src/emu/render.cpp | 10 | ||||
-rw-r--r-- | src/emu/render.h | 4 | ||||
-rw-r--r-- | src/emu/rendlay.cpp | 9 | ||||
-rw-r--r-- | src/emu/screen.cpp | 3 | ||||
-rw-r--r-- | src/frontend/mame/luaengine.cpp | 16 | ||||
-rw-r--r-- | src/frontend/mame/luaengine.h | 3 | ||||
-rw-r--r-- | src/frontend/mame/luaengine.ipp | 53 | ||||
-rw-r--r-- | src/frontend/mame/luaengine_input.cpp | 23 | ||||
-rw-r--r-- | src/frontend/mame/luaengine_render.cpp | 306 | ||||
-rw-r--r-- | src/frontend/mame/ui/ui.cpp | 21 | ||||
-rw-r--r-- | src/frontend/mame/ui/videoopt.cpp | 3 | ||||
-rw-r--r-- | src/mame/drivers/goldnpkr.cpp | 378 | ||||
-rw-r--r-- | src/mame/layout/upndown.lay | 18 | ||||
-rw-r--r-- | src/mame/mame.lst | 24 | ||||
-rw-r--r-- | src/mame/tiny.lst | 34 | ||||
-rw-r--r-- | src/osd/modules/render/drawogl.cpp | 3 |
16 files changed, 318 insertions, 590 deletions
diff --git a/src/emu/render.cpp b/src/emu/render.cpp index b2e278a59ea..26b7057ffb3 100644 --- a/src/emu/render.cpp +++ b/src/emu/render.cpp @@ -2634,10 +2634,8 @@ void render_target::config_load(util::xml::data_node const &targetnode) // apply the opposite orientation to the UI if (is_ui_target()) { - render_container::user_settings settings; render_container &ui_container = m_manager.ui_container(); - - ui_container.get_user_settings(settings); + render_container::user_settings settings = ui_container.get_user_settings(); settings.m_orientation = orientation_add(orientation_reverse(rotate), settings.m_orientation); ui_container.set_user_settings(settings); } @@ -3326,10 +3324,9 @@ void render_manager::config_load(config_type cfg_type, util::xml::data_node cons { int const index = screennode->get_attribute_int("index", -1); render_container *container = m_screen_container_list.find(index); - render_container::user_settings settings; // fetch current settings - container->get_user_settings(settings); + render_container::user_settings settings = container->get_user_settings(); // fetch color controls settings.m_brightness = screennode->get_attribute_float("brightness", settings.m_brightness); @@ -3395,8 +3392,7 @@ void render_manager::config_save(config_type cfg_type, util::xml::data_node *par // output the basics screennode->set_attribute_int("index", scrnum); - render_container::user_settings settings; - container->get_user_settings(settings); + render_container::user_settings settings = container->get_user_settings(); // output the color controls if (settings.m_brightness != machine().options().brightness()) diff --git a/src/emu/render.h b/src/emu/render.h index 3b945a08b8c..694c5bc8784 100644 --- a/src/emu/render.h +++ b/src/emu/render.h @@ -444,8 +444,8 @@ public: float yscale() const { return m_user.m_yscale; } float xoffset() const { return m_user.m_xoffset; } float yoffset() const { return m_user.m_yoffset; } - bool is_empty() const { return (m_itemlist.count() == 0); } - void get_user_settings(user_settings &settings) const { settings = m_user; } + bool is_empty() const { return m_itemlist.empty(); } + const user_settings &get_user_settings() const { return m_user; } // setters void set_overlay(bitmap_argb32 *bitmap); diff --git a/src/emu/rendlay.cpp b/src/emu/rendlay.cpp index 50882d0d214..a71857175e1 100644 --- a/src/emu/rendlay.cpp +++ b/src/emu/rendlay.cpp @@ -5064,9 +5064,12 @@ layout_file::layout_file( } // load the content of the first script node - util::xml::data_node const *const scriptnode = mamelayoutnode->get_child("script"); - if (scriptnode) - emulator_info::layout_script_cb(*this, scriptnode->get_value()); + if (!m_viewlist.empty()) + { + util::xml::data_node const *const scriptnode = mamelayoutnode->get_child("script"); + if (scriptnode) + emulator_info::layout_script_cb(*this, scriptnode->get_value()); + } } catch (layout_syntax_error const &err) { diff --git a/src/emu/screen.cpp b/src/emu/screen.cpp index 88e0dc00e8c..7b84b3d9b6b 100644 --- a/src/emu/screen.cpp +++ b/src/emu/screen.cpp @@ -826,8 +826,7 @@ void screen_device::device_start() m_texture[1]->set_id((u64(m_unique_id) << 57) | 1); // configure the default cliparea - render_container::user_settings settings; - m_container->get_user_settings(settings); + render_container::user_settings settings = m_container->get_user_settings(); settings.m_xoffset = m_xoffset; settings.m_yoffset = m_yoffset; settings.m_xscale = m_xscale; diff --git a/src/frontend/mame/luaengine.cpp b/src/frontend/mame/luaengine.cpp index 488bd2bc571..45e6367bdfc 100644 --- a/src/frontend/mame/luaengine.cpp +++ b/src/frontend/mame/luaengine.cpp @@ -79,7 +79,7 @@ int sol_lua_push(sol::types<buffer *>, lua_State *L, buffer *value) } template <typename T> -struct usertype_container<lua_engine::devenum<T> > : lua_engine::immutable_container_helper<lua_engine::devenum<T>, T> +struct usertype_container<lua_engine::devenum<T> > : lua_engine::immutable_collection_helper<lua_engine::devenum<T>, T> { private: using enumerator = lua_engine::devenum<T>; @@ -182,7 +182,7 @@ public: template <typename T> -struct usertype_container<lua_engine::object_ptr_vector_wrapper<T> > : lua_engine::immutable_container_helper<lua_engine::object_ptr_vector_wrapper<T>, std::vector<std::unique_ptr<T>> const, typename std::vector<std::unique_ptr<T>>::const_iterator> +struct usertype_container<lua_engine::object_ptr_vector_wrapper<T> > : lua_engine::immutable_collection_helper<lua_engine::object_ptr_vector_wrapper<T>, std::vector<std::unique_ptr<T>> const, typename std::vector<std::unique_ptr<T>>::const_iterator> { private: static int next_pairs(lua_State *L) @@ -1173,6 +1173,7 @@ void lua_engine::initialize() * machine:popmessage(str) - print str as popup * machine:popmessage() - clear displayed popup message * machine:logerror(str) - print str to log + * * machine:system() - get game_driver for running driver * machine:video() - get video_manager * machine:sound() - get sound_manager @@ -1196,7 +1197,7 @@ void lua_engine::initialize() * machine.images[] - get available image devices table (k=type, v=device_image_interface) */ - auto machine_type = sol().registry().new_usertype<running_machine>("machine", "new", sol::no_constructor); + auto machine_type = sol().registry().new_usertype<running_machine>("machine", sol::no_constructor); machine_type["exit"] = &running_machine::schedule_exit; machine_type["hard_reset"] = &running_machine::schedule_hard_reset; machine_type["soft_reset"] = &running_machine::schedule_soft_reset; @@ -1231,6 +1232,9 @@ void lua_engine::initialize() return false; } }; + machine_type["popmessage"] = sol::overload( + [](running_machine &m, const char *str) { m.popmessage("%s", str); }, + [](running_machine &m) { m.popmessage(); }); machine_type["system"] = &running_machine::system; machine_type["video"] = &running_machine::video; machine_type["sound"] = &running_machine::sound; @@ -1245,7 +1249,7 @@ void lua_engine::initialize() machine_type["debugger"] = [this] (running_machine &m) -> sol::object { - if(!(m.debug_flags & DEBUG_FLAG_ENABLED)) + if (!(m.debug_flags & DEBUG_FLAG_ENABLED)) return sol::make_object(sol(), sol::lua_nil); return sol::make_object(sol(), &m.debugger()); }; @@ -1258,9 +1262,6 @@ void lua_engine::initialize() machine_type["cassettes"] = sol::property([] (running_machine &m) { return devenum<cassette_device_enumerator>(m.root_device()); }); machine_type["images"] = sol::property([] (running_machine &m) { return devenum<image_interface_enumerator>(m.root_device()); }); machine_type["slots"] = sol::property([](running_machine &m) { return devenum<slot_interface_enumerator>(m.root_device()); }); - machine_type["popmessage"] = sol::overload( - [](running_machine &m, const char *str) { m.popmessage("%s", str); }, - [](running_machine &m) { m.popmessage(); }); machine_type["logerror"] = [] (running_machine &m, const char *str) { m.logerror("[luaengine] %s\n", str); }; @@ -1608,6 +1609,7 @@ void lua_engine::initialize() "screen_dev", sol::no_constructor, sol::base_classes, sol::bases<device_t>()); + screen_dev_type.set("container", sol::property(&screen_device::container)); screen_dev_type.set("draw_box", [](screen_device &sdev, float x1, float y1, float x2, float y2, uint32_t bgcolor, uint32_t fgcolor) { int sc_width = sdev.visible_area().width(); int sc_height = sdev.visible_area().height(); diff --git a/src/frontend/mame/luaengine.h b/src/frontend/mame/luaengine.h index 1157d2083c2..b0bbf2210c3 100644 --- a/src/frontend/mame/luaengine.h +++ b/src/frontend/mame/luaengine.h @@ -37,7 +37,8 @@ public: template <typename T> struct object_ptr_vector_wrapper; template <typename T> struct tag_object_ptr_map; template <typename T> using standard_tag_object_ptr_map = tag_object_ptr_map<std::unordered_map<std::string, std::unique_ptr<T> > >; - template <typename T, typename C, typename I = typename C::iterator> struct immutable_container_helper; + template <typename T> struct immutable_container_helper; + template <typename T, typename C, typename I = typename C::iterator> struct immutable_collection_helper; // construction/destruction lua_engine(); diff --git a/src/frontend/mame/luaengine.ipp b/src/frontend/mame/luaengine.ipp index ee4eb5d0030..3c878b68c2a 100644 --- a/src/frontend/mame/luaengine.ipp +++ b/src/frontend/mame/luaengine.ipp @@ -96,7 +96,7 @@ template <typename T> struct usertype_container<lua_engine::devenum<T> >; template <typename T> -struct usertype_container<lua_engine::simple_list_wrapper<T> > : lua_engine::immutable_container_helper<lua_engine::simple_list_wrapper<T>, simple_list<T> const, typename simple_list<T>::auto_iterator> +struct usertype_container<lua_engine::simple_list_wrapper<T> > : lua_engine::immutable_collection_helper<lua_engine::simple_list_wrapper<T>, simple_list<T> const, typename simple_list<T>::auto_iterator> { private: static int next_pairs(lua_State *L) @@ -163,7 +163,7 @@ public: template <typename T> -struct usertype_container<lua_engine::tag_object_ptr_map<T> > : lua_engine::immutable_container_helper<lua_engine::tag_object_ptr_map<T>, T const, typename T::const_iterator> +struct usertype_container<lua_engine::tag_object_ptr_map<T> > : lua_engine::immutable_collection_helper<lua_engine::tag_object_ptr_map<T>, T const, typename T::const_iterator> { private: template <bool Indexed> @@ -269,12 +269,10 @@ bool sol_lua_check(sol::types<osd_file::error>, lua_State *L, int index, Handler int sol_lua_push(sol::types<map_handler_type>, lua_State *L, map_handler_type &&value); -template <typename T, typename C, typename I> +template <typename T> struct lua_engine::immutable_container_helper { protected: - using iterator = I; - static T &get_self(lua_State *L) { auto p(sol::stack::unqualified_check_get<T *>(L, 1)); @@ -285,22 +283,6 @@ protected: return **p; } - struct indexed_iterator - { - indexed_iterator(C &s, iterator i) : src(s), it(i), ix(0U) { } - - C &src; - iterator it; - std::size_t ix; - - indexed_iterator &operator++() - { - ++it; - ++ix; - return *this; - } - }; - public: static int set(lua_State *L) { @@ -327,6 +309,11 @@ public: return luaL_error(L, "sol: cannot call 'find' on type '%s': no supported comparison operator for the value type", sol::detail::demangle<T>().c_str()); } + static int index_of(lua_State *L) + { + return luaL_error(L, "sol: cannot call 'index_of' on type '%s': no supported comparison operator for the value type", sol::detail::demangle<T>().c_str()); + } + static int clear(lua_State *L) { return luaL_error(L, "sol: cannot call 'clear' on type '%s': container is not modifiable", sol::detail::demangle<T>().c_str()); @@ -339,6 +326,30 @@ public: }; +template <typename T, typename C, typename I> +struct lua_engine::immutable_collection_helper : immutable_container_helper<T> +{ +protected: + using iterator = I; + + struct indexed_iterator + { + indexed_iterator(C &s, iterator i) : src(s), it(i), ix(0U) { } + + C &src; + iterator it; + std::size_t ix; + + indexed_iterator &operator++() + { + ++it; + ++ix; + return *this; + } + }; +}; + + struct lua_engine::addr_space { addr_space(address_space &s, device_memory_interface &d) : space(s), dev(d) { } diff --git a/src/frontend/mame/luaengine_input.cpp b/src/frontend/mame/luaengine_input.cpp index 30a4d34c181..77e002ce848 100644 --- a/src/frontend/mame/luaengine_input.cpp +++ b/src/frontend/mame/luaengine_input.cpp @@ -48,19 +48,9 @@ template <> struct is_container<natkbd_kbd_list> : std::true_type { }; template <> -struct usertype_container<natkbd_kbd_list> +struct usertype_container<natkbd_kbd_list> : lua_engine::immutable_container_helper<natkbd_kbd_list> { private: - static natkbd_kbd_list &get_self(lua_State *L) - { - auto p(sol::stack::unqualified_check_get<natkbd_kbd_list *>(L, 1)); - if (!p) - luaL_error(L, "sol: 'self' is not of type 'natkbd_kbd_list' (pass 'self' as first argument with ':' or call on proper type)"); - if (!*p) - luaL_error(L, "sol: 'self' argument is nil (pass 'self' as first argument with ':' or call on a 'natkbd_kbd_list' type"); - return **p; - } - template <bool Indexed> static int next_pairs(lua_State *L) { @@ -127,17 +117,6 @@ public: return stack::push(L, !self.manager.keyboard_count()); } - // produce errors for unsupported operations - static int set(lua_State *L) { return luaL_error(L, "sol: cannot call 'set(key, value)' on type 'natkbd_kbd_list': container is not modifiable"); } - static int index_set(lua_State *L) { return luaL_error(L, "sol: cannot call 'container[key] = value' on type 'natkbd_kbd_list': container is not modifiable"); } - static int add(lua_State *L) { return luaL_error(L, "sol: cannot call 'add' on type 'natkbd_kbd_list': container is not modifiable"); } - static int insert(lua_State *L) { return luaL_error(L, "sol: cannot call 'insert' on type 'natkbd_kbd_list': container is not modifiable"); } - static int find(lua_State *L) { return luaL_error(L, "sol: cannot call 'find' on type 'natkbd_kbd_list': no supported comparison operator for the value type"); } - static int index_of(lua_State *L) { return luaL_error(L, "sol: cannot call 'index_of' on type 'natkbd_kbd_list': no supported comparison operator for the value type"); } - static int clear(lua_State *L) { return luaL_error(L, "sol: cannot call 'clear' on type 'natkbd_kbd_list': container is not modifiable"); } - static int erase(lua_State *L) { return luaL_error(L, "sol: cannot call 'erase' on type 'natkbd_kbd_list': container is not modifiable"); } - - // support for iteration with pairs and ipairs static int next(lua_State *L) { return stack::push(L, next_pairs<false>); } static int pairs(lua_State *L) { return start_pairs<false>(L); } static int ipairs(lua_State *L) { return start_pairs<true>(L); } diff --git a/src/frontend/mame/luaengine_render.cpp b/src/frontend/mame/luaengine_render.cpp index 9fff8f4171b..ca472dba675 100644 --- a/src/frontend/mame/luaengine_render.cpp +++ b/src/frontend/mame/luaengine_render.cpp @@ -33,6 +33,15 @@ struct layout_view_items layout_view &view; }; + +struct render_target_view_names +{ + render_target_view_names(render_target &t) : target(t), count(-1) { } + + render_target ⌖ + int count; +}; + } // anonymous namespace @@ -40,10 +49,11 @@ namespace sol { template <> struct is_container<layout_file_views> : std::true_type { }; template <> struct is_container<layout_view_items> : std::true_type { }; +template <> struct is_container<render_target_view_names> : std::true_type { }; template <> -struct usertype_container<layout_file_views> : lua_engine::immutable_container_helper<layout_file_views, layout_file::view_list> +struct usertype_container<layout_file_views> : lua_engine::immutable_collection_helper<layout_file_views, layout_file::view_list> { private: using view_list = layout_file::view_list; @@ -140,7 +150,7 @@ public: template <> -struct usertype_container<layout_view_items> : lua_engine::immutable_container_helper<layout_view_items, layout_view::item_list> +struct usertype_container<layout_view_items> : lua_engine::immutable_collection_helper<layout_view_items, layout_view::item_list> { private: using item_list = layout_view::item_list; @@ -231,6 +241,102 @@ public: } }; + +template <> +struct usertype_container<render_target_view_names> : lua_engine::immutable_container_helper<render_target_view_names> +{ +private: + struct iterator + { + iterator(render_target &t, unsigned i) : target(t), index(i) { } + + render_target ⌖ + unsigned index; + }; + + static int next_pairs(lua_State *L) + { + iterator &i(stack::unqualified_get<user<iterator> >(L, 1)); + char const *name(i.target.view_name(i.index)); + if (!name) + return stack::push(L, lua_nil); + int result = stack::push(L, i.index + 1); + result += stack::push(L, name); + ++i.index; + return result; + } + +public: + static int at(lua_State *L) + { + render_target_view_names &self(get_self(L)); + unsigned const index(stack::unqualified_get<unsigned>(L, 2)); + return stack::push(L, self.target.view_name(index - 1)); + } + + static int get(lua_State *L) + { + return at(L); + } + + static int index_get(lua_State *L) + { + return at(L); + } + + static int find(lua_State *L) + { + render_target_view_names &self(get_self(L)); + char const *const key(stack::unqualified_get<char const *>(L, 2)); + for (unsigned i = 0; ; ++i) + { + char const *const name(self.target.view_name(i)); + if (!name) + return stack::push(L, lua_nil); + else if (!std::strcmp(key, name)) + return stack::push(L, i + 1); + } + } + + static int index_of(lua_State *L) + { + return find(L); + } + + static int size(lua_State *L) + { + render_target_view_names &self(get_self(L)); + if (0 > self.count) + for (self.count = 0; self.target.view_name(self.count); ++self.count) { } + return stack::push(L, self.count); + } + + static int empty(lua_State *L) + { + render_target_view_names &self(get_self(L)); + return stack::push(L, !self.target.view_name(0)); + } + + static int next(lua_State *L) + { + return stack::push(L, next_pairs); + } + + static int pairs(lua_State *L) + { + render_target_view_names &self(get_self(L)); + stack::push(L, next_pairs); + stack::push<user<iterator> >(L, self.target, 0); + stack::push(L, lua_nil); + return 3; + } + + static int ipairs(lua_State *L) + { + return pairs(L); + } +}; + } // namespace sol @@ -241,20 +347,6 @@ public: void lua_engine::initialize_render(sol::table &emu) { -/* render_bounds library - * - * bounds:includes(x, y) - returns true if point is within bounds - * bounds:set_xy(left, top, right, bottom) - set bounds - * bounds:set_wh(left, top, width, height) - set bounds - * - * bounds.x0 - leftmost X coordinate - * bounds.y0 - topmost Y coordinate - * bounds.x1 - rightmost X coordinate - * bounds.y1 - bottommost Y coordinate - * bounds.width - get/set width - * bounds.height - get/set height - * bounds.aspect - read-only aspect ratio width:height - */ auto bounds_type = emu.new_usertype<render_bounds>( "render_bounds", sol::call_constructor, sol::initializers( @@ -272,15 +364,6 @@ void lua_engine::initialize_render(sol::table &emu) bounds_type["aspect"] = sol::property(&render_bounds::aspect); -/* render_color library - * - * set(a, r, g, b) - set color - * - * color.a - alpha channel - * color.r - red channel - * color.g - green channel - * color.b - blue channel - */ auto color_type = emu.new_usertype<render_color>( "render_color", sol::call_constructor, sol::initializers( @@ -293,24 +376,6 @@ void lua_engine::initialize_render(sol::table &emu) color_type["b"] = &render_color::b; -/* layout_view library - * - * manager:machine():render().targets[target_index]:current_view() - * - * view:has_screen(screen) - returns whether a given screen is present in the view (including hidden screens) - * view:set_prepare_items_callback(cb) - set additional tasks before adding items to render target - * view:set_preload_callback(cb) - set additional tasks after preloading visible items - * view:set_recomputed_callback(cb) - set additional tasks after recomputing for resize or visibility change - * - * view.items - get the items in the view (including hidden items) - * view.name - display name for the view - * view.unqualified_name - name of the view as specified in the layout file - * view.visible_screen_count - number of screens items currently enabled - * view.effective_aspect - effective aspect ratio in current configuration - * view.bounds - effective bounds in current configuration - * view.has_art - true if the view has non-screen items - */ - auto layout_view_type = sol().registry().new_usertype<layout_view>("layout_view", sol::no_constructor); layout_view_type["has_screen"] = &layout_view::has_screen; layout_view_type["set_prepare_items_callback"] = @@ -340,25 +405,6 @@ void lua_engine::initialize_render(sol::table &emu) layout_view_type["has_art"] = sol::property(&layout_view::has_art); -/* layout_view::item library - * - * item:set_state(state) - set state value used in absence of bindings - * item.set_element_state_callback(cb) - set callback to obtain element state - * item.set_animation_state_callback(cb) - set callback to obtain animation state - * item.set_bounds_callback(cb) - set callback to obtain item bounds - * item.set_color_callback(cb) - set callback to obtain item color - * - * item.id - get optional item identifier - * item.bounds_animated - true if bounds depend on state - * item.color_animated - true if color depends on state - * item.bounds - get bounds for current state - * item.color - get color for current state - * item.blend_mode - get blend mode or -1 - * item.orientation - get item orientation - * item.element_state - get effective element state - * item.animation_state - get effective animation state - */ - auto layout_view_item_type = sol().registry().new_usertype<layout_view::item>("layout_item", sol::no_constructor); layout_view_item_type["set_state"] = &layout_view::item::set_state; layout_view_item_type["set_element_state_callback"] = @@ -449,14 +495,6 @@ void lua_engine::initialize_render(sol::table &emu) layout_view_item_type["animation_state"] = sol::property(&layout_view::item::animation_state); -/* layout_file library - * - * file:set_resolve_tags_callback(cb) - set additional tasks after resolving tags - * - * file.device - get device that caused the file to be loaded - * file.views[] - get view table (k=name, v=layout_view) - */ - auto layout_file_type = sol().registry().new_usertype<layout_file>("layout_file", sol::no_constructor); layout_file_type["set_resolve_tags_callback"] = make_simple_callback_setter<void>( @@ -468,79 +506,85 @@ void lua_engine::initialize_render(sol::table &emu) layout_file_type["views"] = sol::property([] (layout_file &f) { return layout_file_views(f); }); -/* render_target library - * - * manager:machine():render().targets[target_index] - * manager:machine():render():ui_target() - * - * target:current_view() - get current view for target - * target:width() - get target width - * target:height() - get target height - * target:pixel_aspect() - get target aspect - * target:hidden() - is target hidden - * target:is_ui_target() - is ui render target - * target:index() - target index - * target:view_name([opt] index) - current target layout view name - * - * target.max_update_rate - - * target.view - current target layout view - * target.orientation - current target orientation - * target.screen_overlay - enable overlays - * target.zoom - enable zoom - */ - auto target_type = sol().registry().new_usertype<render_target>("target", sol::no_constructor); - target_type["current_view"] = &render_target::current_view; - target_type["width"] = &render_target::width; - target_type["height"] = &render_target::height; - target_type["pixel_aspect"] = &render_target::pixel_aspect; - target_type["hidden"] = &render_target::hidden; - target_type["is_ui_target"] = &render_target::is_ui_target; - target_type["index"] = &render_target::index; - target_type["view_name"] = &render_target::view_name; + target_type["index"] = sol::property([] (render_target const &t) { return t.index() + 1; }); + target_type["width"] = sol::property(&render_target::width); + target_type["height"] = sol::property(&render_target::height); + target_type["pixel_aspect"] = sol::property(&render_target::pixel_aspect); + target_type["hidden"] = sol::property(&render_target::hidden); + target_type["is_ui_target"] = sol::property(&render_target::is_ui_target); target_type["max_update_rate"] = sol::property(&render_target::max_update_rate, &render_target::set_max_update_rate); - target_type["view"] = sol::property(&render_target::view, &render_target::set_view); target_type["orientation"] = sol::property(&render_target::orientation, &render_target::set_orientation); + target_type["view_names"] = sol::property([] (render_target &t) { return render_target_view_names(t); }); + target_type["current_view"] = sol::property(&render_target::current_view); + target_type["view_index"] = sol::property( + [] (render_target const &t) { return t.view() + 1; }, + [] (render_target &t, unsigned v) { t.set_view(v - 1); }); + target_type["visibility_mask"] = sol::property(&render_target::visibility_mask); target_type["screen_overlay"] = sol::property(&render_target::screen_overlay_enabled, &render_target::set_screen_overlay_enabled); - target_type["zoom"] = sol::property(&render_target::zoom_to_screen, &render_target::set_zoom_to_screen); - + target_type["zoom_to_screen"] = sol::property(&render_target::zoom_to_screen, &render_target::set_zoom_to_screen); -/* render_container library - * - * manager:machine():render():ui_container() - * - * container.orientation - * container.xscale - * container.yscale - * container.xoffset - * container.yoffset - * container.is_empty - */ auto render_container_type = sol().registry().new_usertype<render_container>("render_container", sol::no_constructor); - render_container_type["orientation"] = sol::property(&render_container::orientation); - render_container_type["xscale"] = sol::property(&render_container::xscale); - render_container_type["yscale"] = sol::property(&render_container::yscale); - render_container_type["xoffset"] = sol::property(&render_container::xoffset); - render_container_type["yoffset"] = sol::property(&render_container::yoffset); + render_container_type["user_settings"] = sol::property(&render_container::get_user_settings, &render_container::set_user_settings); + render_container_type["orientation"] = sol::property( + &render_container::orientation, + [] (render_container &c, int v) + { + render_container::user_settings s(c.get_user_settings()); + s.m_orientation = v; + c.set_user_settings(s); + }); + render_container_type["xscale"] = sol::property( + &render_container::xscale, + [] (render_container &c, float v) + { + render_container::user_settings s(c.get_user_settings()); + s.m_xscale = v; + c.set_user_settings(s); + }); + render_container_type["yscale"] = sol::property( + &render_container::yscale, + [] (render_container &c, float v) + { + render_container::user_settings s(c.get_user_settings()); + s.m_yscale = v; + c.set_user_settings(s); + }); + render_container_type["xoffset"] = sol::property( + &render_container::xoffset, + [] (render_container &c, float v) + { + render_container::user_settings s(c.get_user_settings()); + s.m_xoffset = v; + c.set_user_settings(s); + }); + render_container_type["yoffset"] = sol::property( + &render_container::yoffset, + [] (render_container &c, float v) + { + render_container::user_settings s(c.get_user_settings()); + s.m_yoffset = v; + c.set_user_settings(s); + }); render_container_type["is_empty"] = sol::property(&render_container::is_empty); -/* render_manager library - * - * manager:machine():render() - * - * render:max_update_rate() - - * render:ui_target() - render_target for ui drawing - * render:ui_container() - render_container for ui drawing - * - * render.targets[] - render_target table - */ + auto user_settings_type = sol().registry().new_usertype<render_container::user_settings>("render_container_settings", sol::no_constructor); + user_settings_type["orientation"] = &render_container::user_settings::m_orientation; + user_settings_type["brightness"] = &render_container::user_settings::m_brightness; + user_settings_type["contrast"] = &render_container::user_settings::m_contrast; + user_settings_type["gamma"] = &render_container::user_settings::m_gamma; + user_settings_type["xscale"] = &render_container::user_settings::m_xscale; + user_settings_type["yscale"] = &render_container::user_settings::m_yscale; + user_settings_type["xoffset"] = &render_container::user_settings::m_xoffset; + user_settings_type["yoffset"] = &render_container::user_settings::m_yoffset; + auto render_type = sol().registry().new_usertype<render_manager>("render", sol::no_constructor); - render_type["max_update_rate"] = &render_manager::max_update_rate; - render_type["ui_target"] = &render_manager::ui_target; - render_type["ui_container"] = &render_manager::ui_container; + render_type["max_update_rate"] = sol::property(&render_manager::max_update_rate); + render_type["ui_target"] = sol::property(&render_manager::ui_target); + render_type["ui_container"] = sol::property(&render_manager::ui_container); render_type["targets"] = sol::property([] (render_manager &m) { return simple_list_wrapper<render_target>(m.targets()); }); } diff --git a/src/frontend/mame/ui/ui.cpp b/src/frontend/mame/ui/ui.cpp index 1400cc19295..5918d0e13d6 100644 --- a/src/frontend/mame/ui/ui.cpp +++ b/src/frontend/mame/ui/ui.cpp @@ -1839,9 +1839,8 @@ int32_t mame_ui_manager::slider_refresh(running_machine &machine, void *arg, int int32_t mame_ui_manager::slider_brightness(running_machine &machine, void *arg, int id, std::string *str, int32_t newval) { screen_device *screen = reinterpret_cast<screen_device *>(arg); - render_container::user_settings settings; - screen->container().get_user_settings(settings); + render_container::user_settings settings = screen->container().get_user_settings(); if (newval != SLIDER_NOCHANGE) { settings.m_brightness = (float)newval * 0.001f; @@ -1861,9 +1860,8 @@ int32_t mame_ui_manager::slider_brightness(running_machine &machine, void *arg, int32_t mame_ui_manager::slider_contrast(running_machine &machine, void *arg, int id, std::string *str, int32_t newval) { screen_device *screen = reinterpret_cast<screen_device *>(arg); - render_container::user_settings settings; - screen->container().get_user_settings(settings); + render_container::user_settings settings = screen->container().get_user_settings(); if (newval != SLIDER_NOCHANGE) { settings.m_contrast = (float)newval * 0.001f; @@ -1882,9 +1880,8 @@ int32_t mame_ui_manager::slider_contrast(running_machine &machine, void *arg, in int32_t mame_ui_manager::slider_gamma(running_machine &machine, void *arg, int id, std::string *str, int32_t newval) { screen_device *screen = reinterpret_cast<screen_device *>(arg); - render_container::user_settings settings; - screen->container().get_user_settings(settings); + render_container::user_settings settings = screen->container().get_user_settings(); if (newval != SLIDER_NOCHANGE) { settings.m_gamma = (float)newval * 0.001f; @@ -1904,9 +1901,8 @@ int32_t mame_ui_manager::slider_gamma(running_machine &machine, void *arg, int i int32_t mame_ui_manager::slider_xscale(running_machine &machine, void *arg, int id, std::string *str, int32_t newval) { screen_device *screen = reinterpret_cast<screen_device *>(arg); - render_container::user_settings settings; - screen->container().get_user_settings(settings); + render_container::user_settings settings = screen->container().get_user_settings(); if (newval != SLIDER_NOCHANGE) { settings.m_xscale = (float)newval * 0.001f; @@ -1926,9 +1922,8 @@ int32_t mame_ui_manager::slider_xscale(running_machine &machine, void *arg, int int32_t mame_ui_manager::slider_yscale(running_machine &machine, void *arg, int id, std::string *str, int32_t newval) { screen_device *screen = reinterpret_cast<screen_device *>(arg); - render_container::user_settings settings; - screen->container().get_user_settings(settings); + render_container::user_settings settings = screen->container().get_user_settings(); if (newval != SLIDER_NOCHANGE) { settings.m_yscale = (float)newval * 0.001f; @@ -1948,9 +1943,8 @@ int32_t mame_ui_manager::slider_yscale(running_machine &machine, void *arg, int int32_t mame_ui_manager::slider_xoffset(running_machine &machine, void *arg, int id, std::string *str, int32_t newval) { screen_device *screen = reinterpret_cast<screen_device *>(arg); - render_container::user_settings settings; - screen->container().get_user_settings(settings); + render_container::user_settings settings = screen->container().get_user_settings(); if (newval != SLIDER_NOCHANGE) { settings.m_xoffset = (float)newval * 0.001f; @@ -1970,9 +1964,8 @@ int32_t mame_ui_manager::slider_xoffset(running_machine &machine, void *arg, int int32_t mame_ui_manager::slider_yoffset(running_machine &machine, void *arg, int id, std::string *str, int32_t newval) { screen_device *screen = reinterpret_cast<screen_device *>(arg); - render_container::user_settings settings; - screen->container().get_user_settings(settings); + render_container::user_settings settings = screen->container().get_user_settings(); if (newval != SLIDER_NOCHANGE) { settings.m_yoffset = (float)newval * 0.001f; diff --git a/src/frontend/mame/ui/videoopt.cpp b/src/frontend/mame/ui/videoopt.cpp index da8a554d550..81b01365764 100644 --- a/src/frontend/mame/ui/videoopt.cpp +++ b/src/frontend/mame/ui/videoopt.cpp @@ -152,8 +152,7 @@ void menu_video_options::handle() m_target.set_orientation(orientation_add(delta, m_target.orientation())); if (m_target.is_ui_target()) { - render_container::user_settings settings; - container().get_user_settings(settings); + render_container::user_settings settings = container().get_user_settings(); settings.m_orientation = orientation_add(delta ^ ROT180, settings.m_orientation); container().set_user_settings(settings); } diff --git a/src/mame/drivers/goldnpkr.cpp b/src/mame/drivers/goldnpkr.cpp index a1f1522eddb..5d62be8fda9 100644 --- a/src/mame/drivers/goldnpkr.cpp +++ b/src/mame/drivers/goldnpkr.cpp @@ -959,338 +959,6 @@ ************************************************************************************ - DRIVER UPDATES: - - - [2006-09-02] - - - Initial release. - - - [2006-09-06] - - - Understood the GFX banks: - - 1 bank (1bpp) for text layer and minor graphics. - - 1 bank (3bpp) for the undumped cards deck graphics. - - - Partially added inputs through 6821 PIAs. - ("Bitte techniker rufen" error messages. Press 'W' to reset the machine) - - - Confirmed the CPU as 6502. (was in doubt due to use of illegal opcodes) - - - [2006-09-15] - - - Confirmed the GFX banks (a complete dump appeared!). - - Improved technical notes and added a PCB layout based on PCB picture. - - Found and fixed the 3rd bitplane of BigBoy gfx. - - Renamed Big-Boy to Golden Poker Double Up. (Big-Boy and Mini-Boy are names of cabinet models). - - Added 'Joker Poker' (Golden Poker version without the 'double-up' feature). - - Added 'Jack Potten's Poker' (same as Joker Poker, but with 'Aces or better' instead of jacks). - - Simulated colors for all sets till color PROMs appear. - - Fixed bit corruption in goldnpkr rom u40_4a.bin. - - Completed inputs in all sets (except DIP switches). - - Removed flags MACHINE_WRONG_COLORS and MACHINE_IMPERFECT_GRAPHICS in all sets. - - Removed flag MACHINE_NOT_WORKING. All sets are now playable. :) - - - [2006-10-09] - - - Added service/settings mode to pmpoker. - - Added PORT_IMPULSE to manage correct timings for most inputs in all games. - (jokerpkr still trigger more than 1 credit for coin pulse). - - - [2007-02-01] - - - Crystal documented via #define. - - CPU clock derived from #defined crystal value. - - Replaced simulated colors with proper color prom decode. - - Renamed "Golden Poker Double Up" to "Golden Poker Double Up (Big Boy)". - - Added set Golden Poker Double Up (Mini Boy). - - Cleaned up the driver a bit. - - Updated technical notes. - - - [2007-05-05] - - - Removed all inputs hacks. - - Connected both PIAs properly. - - Demuxed all inputs for each game. - - Documented all outputs. - - Added lamps support. - - Created different layout files to cover each game. - - Add NVRAM support to all games. - - Corrected the color PROM status for each set. - - Figured out most of the DIP switches. - - Added diplocations to goldnpkb. - - Replaced the remaining IPT_SERVICE with IPT_BUTTON for regular buttons. - - Updated technical notes. - - Cleaned up the driver. Now is better organized and documented. - - - [2007-07-07] - - - Added set goldnpkc (Golden Poker without the double up feature). - - Updated technical notes. - - - [2008-10-12] *** REWRITE *** - - - Added discrete sound support to Golden Poker hardware games based on schematics. - - Added discrete sound support to Potten's Poker hardware games based on PCB analysis. - - Added discrete circuitry diagrams for both hardware types. - - Adjusted the CPU addressing to 15 bits for pmpoker/goldenpkr hardware. - - Adjusted the CPU addressing to 14 bits for pottnpkr hardware. - - Rewrote all the ROM loads based on these changes. - - Defined MASTER Xtal & CPU clock. - - Fixed the visible area based on M6845 registers. - - Improved the lamps layouts to be more realistic. - - Added Good Luck (potten's poker hybrid running in goldnpkr hardware). - - Added Buena Suerte (Spanish) x 2 sets. - - Added set Royale. - - Added Witch Card and Spanish variants. - - Added Super Loco 93 (Spanish) x 2 sets. - - Renamed set goldnpkc to pottnpkr (parent Jack Potten's Poker set). - - Renamed set jokerpkr to potnpkra, since is another Jack Potten's Poker set. - - Added other 2 clones of Jack Potten's Poker. - - Renamed/cleaned all sets based on code/hardware analysis. - - Added intensity bit to the color system. - - Implemented the blue killer bit for Witch Card hardware. - - Implemented the extended graphics addressing bit for Witch Card hardware. - - Added proper visible area to sloco93. - - Rewrote the graphics & color decode system based on schematics. No more patched codes. - - Changed the char gfx bank structure and rom load according to the new routines. - - Adjusted the amount of color codes and PROM region size accordingly. - - Updated all notes. - - - [2008-11-29] *** REWRITE (part II) *** - - - Changed the driver name to goldnpkr.c (Golden Poker is the most representative hardware). - - Splitted the PIA interfases to cover witchcrd/pottenpkr connections. - - Fixed the witchcrd/pottnpkr/sloco93 double up mode. - - Replaced the pottenpkr layout with goldnpkr one in all Jack Potten's Poker sets. - - Updated game notes for Witch Card and Super Loco 93 sets. - - Fixed al inputs & lamps to allow double up mode to the above games. - - Added Witch Card (Video Klein) but still not working. - - Added several Buena Suerte! sets. - - Added new games: Maverik, Brasil 89 & Poker'91. - - Reworked the sets parent-clone relationship (still in progress). - - - [2008-12-26] - - - Correctly setup the MC6845 device for all systems. - - Added common MC6845 device interface. - - Merged witchcrd and sloco93 machine drivers. - - Added/corrected the 50/60 Hz. DIP switches to all games. - The 50hz mode needs to be corrected. Some games as most bsuerte sets have - the 50/60 Hz. DIP switch connection patched. - - - [2009-09-05] - - - Added 2 new Witch Card sets. - - Reworked inputs for Witch Card (German set 1). - - Created new inputs for Witch Card (English, witch game, lamps). - - Added and connected lamps for both sets. - - Added minimal bet and 50/60 Hz. switches to both sets. - - Added DIP switches info for Witch Card (German, set 2). - - - Added Genius, running in a modified Golden Poker board. - - - [2010-09-28] - - - Added 3 new Witch Card sets. - - Added 3 new Falcons Wild sets (from 3 different hardwares). - - Hooked the second CPU (still encrypted) to the Falcon hardware. - - Partially decrypted the second CPU program from Falcon hardware. - - Figured out the Falcons Wild (Video Klein) memory map and machine. - - Defeated the evil Video Klein's Witch Card hardware. - - Reworked inputs for some sets. - - Added lamps layouts/connections to the new sets. - - Figured out the multiplexed data/address from Falcon's boards sound. - - Added full sound support to Falcon hardware. - - Reorganized and partially cleaned-up the driver. - - Added more technical notes. - - - [2010-11-18] - - - Added Karateco Super Double (French) - - Extended ROM space for goldnpkr game to include the 0x2000..0x3fff range - - - [2011-01-20] - - - Lots of changes to get working the Video Klein games. - - Renamed witchcde to witchjol --> Jolly Witch (Export, 6T/12T ver 1.57D). - - Added Wild Witch (Export, 6T/12T ver 1.74A). - - New video hardware and machine driver for Video Klein's extended tiles games. - - Added Dallas DS1210 + battery backed RAM support to the Video Klein CPU boxed games. - - Improved inputs for Jolli Witch and Wild Witch. Added the game selector switch. - - Cleaned up some witch card sets. - - Added technical and game notes. - - - [2011-10-19] - - - Mapped the Dallas DS1210 for Video Klein sets that have one. - - Mapped the 2800-2fff range as RAM for the non-Dallas Video Klein sets. - - Added Witch Card (Video Klein CPU box, set 2) - - Added Witch Game (Video Klein, set 2) - - Some minor fixes. - - - [2012-02-19] - - - Added Casino Poker (Ver PM86LO-35-5, German). - - Inputs from the scratch. - - Switched manufacturer 'Playman' to PM / Beck Elektronik, since - it's PM and Beck Elektronik/Computer/etc... - - Added technical and game notes. - - - [2012-03-12] - - - Emulated the Video Klein extended hardware, with Dallas Timekeeper, - and the insane 16 graphics banks scheme. - - Added Witch Up & Down (Export, 6T/12T ver 0.99). - - Added Witch Up & Down (Export, 6T/12T ver 1.02). - - Switched Wild Witch and Jolli Witch to the extended hardware. - - Accurate colors. - - Inputs and lamps from the scratch. - - Added technical notes. - - - [2012-03-14] - - - Fixed and improved the Video Klein extended hardware banking. - - Added Witch Strike (Export, 6T/12T ver 1.01A). - - Added Witch Strike (Export, 6T/12T ver 1.01B). - - Added technical notes. - - - [2012-03-15] - - - Found and patched the Witch Strike protection scheme. - - Proper inputs and lamps support for Witch Strike. - - Promoted both Witch Strike sets to working state. - - Added technical notes. - - - [2012-03-17] - - - Added Wild Witch (Export, 6T/12T ver 1.57-SP). - - Added Wild Witch (Export, 6T/12T ver 1.57-TE). - - Added Wild Witch (Export, 6T/12T ver 1.62A). - - Added Wild Witch (Export, 6T/12T ver 1.62B). - - Added Wild Witch (Export, 6T/12T ver 1.62A-F). - - Added Wild Witch (Export, 6T/12T ver 1.62A alt). - - Added Wild Witch (Export, 6T/12T ver 1.62B alt). - - Added Wild Witch (Export, 6T/12T ver 1.65A). - - Added Wild Witch (Export, 6T/12T ver 1.65A-S). - - Added Wild Witch (Export, 6T/12T ver 1.65A-S alt). - - Added Wild Witch (Export, 6T/12T ver 1.65A-N). - - Added Wild Witch (Export, 6T/12T ver 1.70A beta). - - Added Wild Witch (Export, 6T/12T ver 1.70A). - - Added Wild Witch (Export, 6T/12T ver 1.70A alt). - - Added Wild Witch (Export, 6T/12T ver 1.74A-SP-BELG). - - Added Wild Witch (Export, 6T/12T ver 1.74A). - - Added Wild Witch (Export, 6T/12T ver 1.74A alt). - - Added Wild Witch (Export, 6B/12B ver 1.75A-E English). - - Added Wild Witch (Export, 6T/12T ver 1.76A). - - Added Wild Witch (Export, 6T/12T ver 1.77A). - - Added Wild Witch (Export, 6T/12T ver 1.79A). - - Added Wild Witch (Export, 6T/12T ver 1.83A). - - Added Wild Witch (Export, 6T/12T ver 1.84A). - - Worked each game to temporarily bypass the protection, - laying in the Dallas Timekeeper RAM. - - Reworked the parent/clones relationship. - - Added technical notes. - - - [2012-03-18] - - - Added Witch Jackpot (Export, 6T/12T ver 0.25). - - Added Witch Jack (Export, 6T/12T ver 0.40). - - Added Witch Jack (Export, 6T/12T ver 0.40T). - - Added Witch Jack (Export, 6T/12T ver 0.62). - - Added Witch Jack (Export, 6T/12T ver 0.64). - - Added Witch Jack (Export, 6T/12T ver 0.65). - - Added Witch Jack (Export, 6T/12T ver 0.70S). - - Added Witch Jack (Export, 6T/12T ver 0.70P). - - Added Witch Jack (Export, 6T/12T ver 0.87). - - Added Witch Jack (Export, 6T/12T ver 0.87-88). - - Added Witch Jack (Export, 6T/12T ver 0.87-89). - - Proper inputs and lamps. - - - [2012-03-19] - - - Added Witch Up & Down (Export, 6T/12T ver 0.99, set 2). - - Added Witch Up & Down (Export, 6T/12T ver 0.99, set 3). - - Added Witch Up & Down (Export, 6T/12T ver 0.99T). - - Added Falcons Wild - World Wide Poker (Video Klein, set 2). - - Fixed a bug in the coinage input. - - - [2013-05-04] - - - Added Bonne Chance! (Golden Poker prequel hardware). - - Inverted the bipolar PROM data to get the proper palette. - - Added technical notes. - - - Added Mundial/Mondial (Italian/French). - - Implemented the program banking, but set the Italian lang - as default till we can get some evidence. - - Added technical notes. - - - [2013-05-18] - - - Added 2 Videotron Poker sets...(cards selector and normal controls) - - Added another Potten's Poker set with Royale cards back graphics. - - Proper inputs for Videotron Poker selector. - - Figured out the Royale multiplexer system. - - Removed the unused Royale driver init. - - Both Royale sets promoted to working. - - Added technical notes. - - - [2014-02-23] - - - Added a new Videotron set with cards selector. - - Mundial/Mondial (Italian/French): Implemented the program banking - properly. Now you can choose the program through a DIP switch. - - - [2015-11-04] - - - Added new sets: - * Genie (ICP-1, set 2). - * Super 98 (ICP-1). - * Jack Potten's Poker (set 8, Australian). - - - Derived a new machine with improved memory map for this new Genie set. - - Minor fixes and clean-ups. - - Added games & technical notes. - - - [2015-11-09] - - - Renamed and rearranged the parent/clone relationship - of Witch Jack sets. - - Added partial decryption to the ICP1 daughterboard games. - (currently only pokerduc set). Since it's just partial, - commented out the code for now.... - - Added port impulse to the Golden Poker's second coin slot. - This is needed for both royale sets. - - Some fixes and clean-ups. - - TODO: - Missing PIA connections. @@ -6279,7 +5947,7 @@ ROM_END /* Witch Card (Spanish, set 1) Unknown argentine manufacturer. */ -ROM_START( witchcda ) +ROM_START( witchcrda ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "w_card.256", 0x0000, 0x8000, CRC(63a471f8) SHA1(96a2140e2da0050e7865a6662f707cf024130832) ) @@ -6299,7 +5967,7 @@ ROM_END /* Witch Card (Spanish, set 2) Unknown argentine manufacturer. */ -ROM_START( witchcdb ) +ROM_START( witchcrdb ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "w_card.128", 0x4000, 0x4000, CRC(11ecac96) SHA1(717709b31f3dfa09be321c14fbf0e95d492ad2f2) ) @@ -6319,7 +5987,7 @@ ROM_END /* Witch Card (English, no witch game) Hack? */ -ROM_START( witchcdc ) +ROM_START( witchcrdc ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "wc_sbruj.256", 0x0000, 0x8000, CRC(5689ae41) SHA1(c7a624ec881204137489b147ce66cc9a9900650a) ) @@ -6345,7 +6013,7 @@ ROM_END CASINOVERSION WC3050 ***************************************/ -ROM_START( witchcdd ) +ROM_START( witchcrdd ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "12a.bin", 0x0000, 0x8000, CRC(a5c1186a) SHA1(b6c662bf489fbcccc3063ce55c957e630ba96ccb) ) @@ -6366,7 +6034,7 @@ ROM_END Video Klein original with epoxy block module. Alt set.... */ - ROM_START( witchcde ) +ROM_START( witchcrde ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "27128_epoxy.bin", 0x4000, 0x4000, CRC(48186272) SHA1(d211bfa89404a292e6d0f0169ed11e1e74a361d9) ) // epoxy block program ROM @@ -6396,7 +6064,7 @@ ROM_END Copyright 1983/84/85 W.BECK ELEKTRONIK */ -ROM_START( witchcdf ) +ROM_START( witchcrdf ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "@25.bin", 0x5000, 0x1000, CRC(afd6cb4a) SHA1(4c769e1c724bada5875e028781086c32967953a1) ) ROM_LOAD( "@26.bin", 0x6000, 0x1000, CRC(ad11960c) SHA1(2b562cfe9401e21c9dcd90307165e2c2d1acfc5b) ) @@ -6427,7 +6095,7 @@ ROM_END AY8910 is present. *******************************************/ -ROM_START( witchcdg ) +ROM_START( witchcrdg ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "6.b9", 0x5000, 0x1000, CRC(70462a63) SHA1(9dfa18bf7d4e0803f2a68e64661ece392a7983cc) ) ROM_LOAD( "7.b11", 0x6000, 0x1000, CRC(227b3801) SHA1(aebabce01b1abdb42b3e49c38f4fe429e65c1a88) ) @@ -6458,7 +6126,7 @@ ROM_END CASINOVERSION WC3050 ***************************************/ -ROM_START( witchcdh ) +ROM_START( witchcrdh ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "prog3000.a12", 0x0000, 0x8000, CRC(a5c1186a) SHA1(b6c662bf489fbcccc3063ce55c957e630ba96ccb) ) @@ -6507,7 +6175,7 @@ ROM_END 03.a5 [3/4] ce-3-tvg.bin [1/4] 88.378906% ***************************************/ -ROM_START( witchcdi ) +ROM_START( witchcrdi ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "04.a12", 0x0000, 0x8000, CRC(0f662e02) SHA1(71d7344f63c11082beb4fb4eeb20b04780a9b14c) ) @@ -6558,7 +6226,7 @@ ROM_END Video Klein original with epoxy block module. Alt set.... */ - ROM_START( witchcdk ) + ROM_START( witchgmea ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "wc_epoxy.bin", 0x0000, 0x8000, CRC(33f1acd9) SHA1(2facb3d807b5b2a2978e567d0c1106c0a027621a) ) // epoxy block program ROM @@ -11346,7 +11014,7 @@ ROM_END Char ROM is identical to the Witch Card one. *****************************************************/ -ROM_START( witchcdj ) +ROM_START( witchcrdj ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "c", 0x2000, 0x1000, CRC(b35b4108) SHA1(6504ba55511637334c65e88ee5c60b1503b854b3) ) ROM_LOAD( "d", 0x3000, 0x1000, CRC(c48096ed) SHA1(279ba433369c7dc9cd902a19200e889eea45d115) ) @@ -12254,22 +11922,22 @@ GAMEL( 1990, falcnwlda, falcnwld, wildcard, wildcard, goldnpkr_state, empty_init GAMEL( 1990, falcnwldb, falcnwld, wildcard, wildcard, goldnpkr_state, empty_init, ROT0, "Video Klein", "Falcons Wild - World Wide Poker (Video Klein, set 2)", 0, layout_goldnpkr ) GAME( 1983, falcnwldc, falcnwld, wildcrdb, wildcard, goldnpkr_state, init_flcnw, ROT0, "Falcon", "Falcons Wild - World Wide Poker (Falcon original)", MACHINE_NOT_WORKING ) -GAME( 1987, super21p, 0, super21p, super21p, goldnpkr_state, empty_init, ROT0, "Public MNG", "Super 21", MACHINE_IMPERFECT_COLORS ) +GAME( 1987, super21p, 0, super21p, super21p, goldnpkr_state, empty_init, ROT0, "Public MNG", "Super 21", MACHINE_IMPERFECT_COLORS ) GAMEL( 1991, witchcrd, 0, witchcrd, witchcrd, goldnpkr_state, init_vkdlsc, ROT0, "Video Klein?", "Witch Card (Video Klein CPU box, set 1)", 0, layout_goldnpkr ) -GAME( 1991, witchcda, witchcrd, witchcrd, witchcda, goldnpkr_state, empty_init, ROT0, "<unknown>", "Witch Card (Spanish, witch game, set 1)", 0 ) -GAME( 1991, witchcdb, witchcrd, witchcrd, witchcda, goldnpkr_state, empty_init, ROT0, "<unknown>", "Witch Card (Spanish, witch game, set 2)", 0 ) -GAME( 1991, witchcdc, witchcrd, witchcrd, witchcdc, goldnpkr_state, empty_init, ROT0, "<unknown>", "Witch Card (English, no witch game)", 0 ) -GAMEL( 1994, witchcdd, witchcrd, witchcrd, witchcdd, goldnpkr_state, empty_init, ROT0, "Proma", "Witch Card (German, WC3050, set 1 )", 0, layout_goldnpkr ) -GAMEL( 1991, witchcde, witchcrd, witchcrd, witchcrd, goldnpkr_state, init_vkdlsc, ROT0, "Video Klein", "Witch Card (Video Klein CPU box, set 2)", 0, layout_goldnpkr ) -GAMEL( 1985, witchcdf, witchcrd, witchcrd, witchcdf, goldnpkr_state, empty_init, ROT0, "PM / Beck Elektronik", "Witch Card (English, witch game, lamps)", 0, layout_goldnpkr ) -GAMEL( 199?, witchcdg, witchcrd, wcfalcon, witchcrd, goldnpkr_state, empty_init, ROT0, "Falcon", "Witch Card (Falcon, enhanced sound)", 0, layout_goldnpkr ) -GAMEL( 1994, witchcdh, witchcrd, witchcrd, witchcdd, goldnpkr_state, empty_init, ROT0, "Proma", "Witch Card (German, WC3050, set 2 )", 0, layout_goldnpkr ) -GAMEL( 1994, witchcdi, witchcrd, witchcrd, witchcdd, goldnpkr_state, empty_init, ROT0, "Proma", "Witch Card (German, WC3050, 27-4-94)", 0, layout_goldnpkr ) -GAME( 199?, witchcdj, witchcrd, witchcdj, witchcrd, goldnpkr_state, init_icp1db, ROT0, "<unknown>", "Witch Card (ICP-1, encrypted)", 0 ) +GAME( 1991, witchcrda, witchcrd, witchcrd, witchcda, goldnpkr_state, empty_init, ROT0, "<unknown>", "Witch Card (Spanish, witch game, set 1)", 0 ) +GAME( 1991, witchcrdb, witchcrd, witchcrd, witchcda, goldnpkr_state, empty_init, ROT0, "<unknown>", "Witch Card (Spanish, witch game, set 2)", 0 ) +GAME( 1991, witchcrdc, witchcrd, witchcrd, witchcdc, goldnpkr_state, empty_init, ROT0, "<unknown>", "Witch Card (English, no witch game)", 0 ) +GAMEL( 1994, witchcrdd, witchcrd, witchcrd, witchcdd, goldnpkr_state, empty_init, ROT0, "Proma", "Witch Card (German, WC3050, set 1 )", 0, layout_goldnpkr ) +GAMEL( 1991, witchcrde, witchcrd, witchcrd, witchcrd, goldnpkr_state, init_vkdlsc, ROT0, "Video Klein", "Witch Card (Video Klein CPU box, set 2)", 0, layout_goldnpkr ) +GAMEL( 1985, witchcrdf, witchcrd, witchcrd, witchcdf, goldnpkr_state, empty_init, ROT0, "PM / Beck Elektronik", "Witch Card (English, witch game, lamps)", 0, layout_goldnpkr ) +GAMEL( 199?, witchcrdg, witchcrd, wcfalcon, witchcrd, goldnpkr_state, empty_init, ROT0, "Falcon", "Witch Card (Falcon, enhanced sound)", 0, layout_goldnpkr ) +GAMEL( 1994, witchcrdh, witchcrd, witchcrd, witchcdd, goldnpkr_state, empty_init, ROT0, "Proma", "Witch Card (German, WC3050, set 2 )", 0, layout_goldnpkr ) +GAMEL( 1994, witchcrdi, witchcrd, witchcrd, witchcdd, goldnpkr_state, empty_init, ROT0, "Proma", "Witch Card (German, WC3050, 27-4-94)", 0, layout_goldnpkr ) +GAME( 199?, witchcrdj, witchcrd, witchcdj, witchcrd, goldnpkr_state, init_icp1db, ROT0, "<unknown>", "Witch Card (ICP-1, encrypted)", 0 ) GAMEL( 1991, witchgme, 0, witchcrd, witchcrd, goldnpkr_state, empty_init, ROT0, "Video Klein", "Witch Game (Video Klein, set 1)", 0, layout_goldnpkr ) -GAMEL( 1997, witchcdk, witchgme, witchcrd, witchcrd, goldnpkr_state, empty_init, ROT0, "Video Klein", "Witch Game (Video Klein, set 2)", MACHINE_NOT_WORKING, layout_goldnpkr ) +GAMEL( 1997, witchgmea, witchgme, witchcrd, witchcrd, goldnpkr_state, empty_init, ROT0, "Video Klein", "Witch Game (Video Klein, set 2)", MACHINE_NOT_WORKING, layout_goldnpkr ) GAME( 199?, jokercar, witchcrd, witchcrd, witchcda, goldnpkr_state, empty_init, ROT0, "<unknown>", "Joker Card (witch game)", 0 ) diff --git a/src/mame/layout/upndown.lay b/src/mame/layout/upndown.lay index dd975281636..2510eb944e5 100644 --- a/src/mame/layout/upndown.lay +++ b/src/mame/layout/upndown.lay @@ -73,32 +73,32 @@ license:CC0 <bounds left="0" top="0" right="4" bottom="3" /> </screen> - <element name="lamp2" ref="HOLD"> + <element name="lamp2" ref="HOLD" inputtag="IN0-2" inputmask="0x01"> <bounds x="0.0" y="3.45" width="0.35" height="0.24" /> </element> - <element name="lamp2" ref="HOLD"> + <element name="lamp2" ref="HOLD" inputtag="IN0-2" inputmask="0x02"> <bounds x="0.4" y="3.45" width="0.35" height="0.24" /> </element> - <element name="lamp2" ref="HOLD"> + <element name="lamp2" ref="HOLD" inputtag="IN0-2" inputmask="0x04"> <bounds x="0.8" y="3.45" width="0.35" height="0.24" /> </element> - <element name="lamp2" ref="HOLD"> + <element name="lamp2" ref="HOLD" inputtag="IN0-2" inputmask="0x08"> <bounds x="1.2" y="3.45" width="0.35" height="0.24" /> </element> - <element name="lamp2" ref="HOLD"> + <element name="lamp2" ref="HOLD" inputtag="IN0-2" inputmask="0x10"> <bounds x="1.6" y="3.45" width="0.35" height="0.24" /> </element> - <element name="lamp2" ref="CANCEL"> + <element name="lamp2" ref="CANCEL" inputtag="IN0-0" inputmask="0x10"> <bounds x="2.0" y="3.45" width="0.35" height="0.24" /> </element> - <element name="lamp0" ref="BET"> + <element name="lamp0" ref="BET" inputtag="IN0-0" inputmask="0x01"> <bounds x="2.85" y="3.45" width="0.35" height="0.24" /> </element> - <element name="lamp1" ref="DEAL"> + <element name="lamp1" ref="DEAL" inputtag="IN0-0" inputmask="0x08"> <bounds x="3.25" y="3.45" width="0.35" height="0.24" /> </element> - <element name="lamp3" ref="TAKE"> + <element name="lamp3" ref="TAKE" inputtag="IN0-1" inputmask="0x04"> <bounds x="3.65" y="3.45" width="0.35" height="0.24" /> </element> </view> diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 94b69b93ac1..178c67349a7 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -15208,19 +15208,19 @@ superdbl // 198? Karateco videtrna // Unknown videtron // Unknown videtron2 // Unknown -witchcda // 1991, Unknown -witchcdb // 1991, Unknown -witchcdc // 1991, Unknown -witchcdd // (c) 1994, TV Game Elektronik - Proma -witchcde // (c) 1991, Video Klein -witchcdf // (c) 1991, PlayMan -witchcdg // (c) 199?, Falcon -witchcdh // (c) 1994, TV Game Elektronik - Proma -witchcdi // (c) 1994, TV Game Elektronik - Proma -witchcdj // 199?, Unknown -witchcdk // (c) 1991, Video Klein witchcrd // (c) 1991, Video Klein -witchgme // (c) 1991 Video Klein +witchcrda // 1991, Unknown +witchcrdb // 1991, Unknown +witchcrdc // 1991, Unknown +witchcrdd // (c) 1994, TV Game Elektronik - Proma +witchcrde // (c) 1991, Video Klein +witchcrdf // (c) 1991, PlayMan +witchcrdg // (c) 199?, Falcon +witchcrdh // (c) 1994, TV Game Elektronik - Proma +witchcrdi // (c) 1994, TV Game Elektronik - Proma +witchcrdj // 199?, Unknown +witchgme // (c) 1991, Video Klein +witchgmea // (c) 1991, Video Klein witchjol // 1994, Unknown wldwitch // (c) 1992-2001, Video Klein wldwitcha // (c) 1992-2001, Video Klein diff --git a/src/mame/tiny.lst b/src/mame/tiny.lst index 80d6de1e6b0..51014c2aff6 100644 --- a/src/mame/tiny.lst +++ b/src/mame/tiny.lst @@ -36,4 +36,38 @@ topgunnr // (c) 1986 looping // (c) 1982 Video Games GMBH supertnk // (c) 1981 VIDEO GAMES GmbH, W.-GERMANY +witchgme // (c) 1991 Video Klein +witchjol // (c) 1994 Video Klein +wldwitch // (c) 2001 Video Klein +wldwitcha // (c) 1992 Video Klein +wldwitchc // (c) 1994 Video Klein +wldwitchd // (c) 1994 Video Klein +wldwitchf // (c) 1994 Video Klein +wldwitchg // (c) 1994 Video Klein +wldwitchh // (c) 1995 Video Klein +wldwitchi // (c) 1996 Video Klein +wldwitchj // (c) 1996 Video Klein +wldwitchk // (c) 1996 Video Klein +wldwitchl // (c) 1996 Video Klein +wldwitchm // (c) 1996 Video Klein +wldwitchn // (c) 1997 Video Klein +wldwitcho // (c) 1998 Video Klein +wldwitchp // (c) 1998 Video Klein +wldwitchq // (c) 1998 Video Klein +wldwitchr // (c) 1999 Video Klein +wldwitchs // (c) 1999 Video Klein +wldwitcht // (c) 1999 Video Klein +wldwitchu // (c) 2000 Video Klein +wldwitchv // (c) 2001 Video Klein +wupndown // (c) 1998 Video Klein +wupndowna // (c) 1998 Video Klein +wupndownb // (c) 1998 Video Klein +wupndownc // (c) 1998 Video Klein +wupndownd // (c) 1998 Video Klein +wstrike // (c) 1992 Video Klein +wstrikea // (c) 1992 Video Klein +wtchjack // (c) 1996 Video Klein +wtchjacka // (c) 1996 Video Klein +wtchjackb // (c) 1996 Video Klein + wrally // (c) 1993 - Ref 930705 diff --git a/src/osd/modules/render/drawogl.cpp b/src/osd/modules/render/drawogl.cpp index 6d3eae1e8ad..6b495dae3bb 100644 --- a/src/osd/modules/render/drawogl.cpp +++ b/src/osd/modules/render/drawogl.cpp @@ -2649,8 +2649,7 @@ void renderer_ogl::texture_shader_update(ogl_texture_info *texture, render_conta if (container!=nullptr) { - render_container::user_settings settings; - container->get_user_settings(settings); + render_container::user_settings settings = container->get_user_settings(); /* FIXME: the code below is in just for illustration issue on * how to set shader variables. gamma, contrast and brightness are * handled already by the core |