Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

haynor666

Premium Members
  • Content Count

    140
  • Joined

  • Last visited

  • Days Won

    4

Everything posted by haynor666

  1. Read this - https://www.1emulation.com/forums/topic/36177-arcade-0212/ And use translator
  2. haynor666

    ARCADE 0.212

    Sengoku 2 title screen still has one bad line so maybe check that was in source is still needed. @@ -520,12 +521,9 @@ { int scanline = param; - /* we are at the beginning of a scanline - - we need to draw the previous scanline and parse the sprites on the current one */ - if (scanline != 0) - screen().update_partial(scanline - 1); - - parse_sprites(scanline); + /* we are at the beginning of a scanline */ + if (m_neogeo_raster_hack & 0x10) /* raster interrupt enabled */ + { + if (strcmp(machine().system().name, "sengoku2") == 0) + m_screen->update_partial(scanline - 1); + else + m_screen->update_partial(scanline + 1); + } /* let's come back at the beginning of the next line */ scanline = (scanline + 1) % NEOGEO_VTOTAL;
  3. haynor666

    MAME4RAGE2

    Are cpu/psx/ir.cpp and machine/idehd.cpp mods responsible for this fix? What about changes in vegas.cpp ?
  4. haynor666

    ARCADE 0.212

    Here is also new code for saving volume/overclocking. It has also frame_delay code but I'm sure it's easy to cut only interesting part. diff -Nru src/frontend/mame/ui/ui.cpp src/frontend/mame/ui/ui.cpp --- src/frontend/mame/ui/ui.cpp 2019-08-03 12:28:56.000000000 +0200 +++ src/frontend/mame/ui/ui.cpp 2019-08-05 11:16:09.000000000 +0200 @@ -31,6 +31,7 @@ #include "ui/viewgfx.h" #include "imagedev/cassette.h" #include "../osd/modules/lib/osdobj_common.h" +#include "config.h" /*************************************************************************** @@ -193,6 +194,9 @@ // request a callback upon exiting machine().add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(&mame_ui_manager::exit, this)); + // register callbacks + machine().configuration().config_register("sliders", config_load_delegate(&mame_ui_manager::config_load, this), config_save_delegate(&mame_ui_manager::config_save, this)); + // create mouse bitmap uint32_t *dst = &m_mouse_bitmap.pix32(0); memcpy(dst,mouse_bitmap,32*32*sizeof(uint32_t)); @@ -1348,6 +1352,9 @@ // add overall volume m_sliders.push_back(slider_alloc(SLIDER_ID_VOLUME, _("Master Volume"), -32, 0, 0, 1, nullptr)); + // add frame delay + m_sliders.push_back(slider_alloc(SLIDER_ID_FRAMEDELAY, _("Frame Delay"), 0, machine.options().frame_delay(), 9, 1, nullptr)); + // add per-channel volume mixer_input info; for (int item = 0; machine.sound().indexed_mixer_input(item, info); item++) @@ -1492,6 +1499,8 @@ } #endif + config_apply(); + std::vector<ui::menu_item> items; for (auto &slider : m_sliders) { @@ -1515,6 +1524,8 @@ { if (id == SLIDER_ID_VOLUME) return slider_volume(machine, arg, id, str, newval); + else if (id == SLIDER_ID_FRAMEDELAY) + return slider_framedelay(machine, arg, id, str, newval); else if (id >= SLIDER_ID_MIXERVOL && id <= SLIDER_ID_MIXERVOL_LAST) return slider_mixervol(machine, arg, id, str, newval); else if (id >= SLIDER_ID_ADJUSTER && id <= SLIDER_ID_ADJUSTER_LAST) @@ -1579,6 +1590,21 @@ //------------------------------------------------- +// slider_framedelay - global frame delay slider +// callback +//------------------------------------------------- + +int32_t mame_ui_manager::slider_framedelay(running_machine &machine, void *arg, int id, std::string *str, int32_t newval) +{ + if (newval != SLIDER_NOCHANGE) + machine.video().set_framedelay(newval); + if (str) + *str = string_format(_("%1$3d"), machine.video().framedelay()); + return machine.video().framedelay(); +} + + +//------------------------------------------------- // slider_mixervol - single channel volume // slider callback //------------------------------------------------- @@ -2195,3 +2221,83 @@ m_dipsw_color = options.dipsw_color(); m_slider_color = options.slider_color(); } + +//------------------------------------------------- +// config_load - read data from the +// configuration file +//------------------------------------------------- + +void mame_ui_manager::config_load(config_type cfg_type, util::xml::data_node const *parentnode) +{ + // we only care about game files + if (cfg_type != config_type::GAME) + return; + + // might not have any data + if (parentnode == nullptr) + return; + + // iterate over slider nodes + for (util::xml::data_node const *slider_node = parentnode->get_child("slider"); slider_node; slider_node = slider_node->get_next_sibling("slider")) + { + const char *desc = slider_node->get_attribute_string("desc", ""); + int32_t saved_val = slider_node->get_attribute_int("value", 0); + + // create a dummy slider to store the saved value + m_sliders_saved.push_back(slider_alloc(0, desc, 0, saved_val, 0, 0, 0)); + } +} + + +//------------------------------------------------- +// config_appy - apply data from the conf. file +// This currently needs to be done on a separate +// step because sliders are not created yet when +// configuration file is loaded +//------------------------------------------------- + +void mame_ui_manager::config_apply(void) +{ + // iterate over sliders and restore saved values + for (auto &slider : m_sliders) + { + for (auto &slider_saved : m_sliders_saved) + { + if (!strcmp(slider->description.c_str(), slider_saved->description.c_str())) + { + std::string tempstring; + slider->update(machine(), slider->arg, slider->id, &tempstring, slider_saved->defval); + break; + + } + } + } +} + + +//------------------------------------------------- +// config_save - save data to the configuration +// file +//------------------------------------------------- + +void mame_ui_manager::config_save(config_type cfg_type, util::xml::data_node *parentnode) +{ + // we only care about game files + if (cfg_type != config_type::GAME) + return; + + std::string tempstring; + util::xml::data_node *slider_node; + + // save UI sliders + for (auto &slider : m_sliders) + { + int32_t curval = slider->update(machine(), slider->arg, slider->id, &tempstring, SLIDER_NOCHANGE); + if (curval != slider->defval) + { + slider_node = parentnode->add_child("slider", nullptr); + slider_node->set_attribute("desc", slider->description.c_str()); + slider_node->set_attribute_int("value", curval); + } + } +} \ No newline at end of file diff -Nru src/frontend/mame/ui/ui.h src/frontend/mame/ui/ui.h --- src/frontend/mame/ui/ui.h 2019-08-03 12:28:56.000000000 +0200 +++ src/frontend/mame/ui/ui.h 2019-08-05 11:07:28.000000000 +0200 @@ -53,6 +53,7 @@ enum { SLIDER_ID_VOLUME = 0, + SLIDER_ID_FRAMEDELAY, SLIDER_ID_MIXERVOL, SLIDER_ID_MIXERVOL_LAST = SLIDER_ID_MIXERVOL + SLIDER_DEVICE_SPACING, SLIDER_ID_ADJUSTER, @@ -234,6 +235,11 @@ void start_save_state(); void start_load_state(); + // config callbacks + void config_load(config_type cfg_type, util::xml::data_node const *parentnode); + void config_save(config_type cfg_type, util::xml::data_node *parentnode); + void config_apply(void); + // slider controls std::vector<ui::menu_item>& get_slider_list(void); @@ -300,6 +306,7 @@ virtual int32_t slider_changed(running_machine &machine, void *arg, int id, std::string *str, int32_t newval) override; int32_t slider_volume(running_machine &machine, void *arg, int id, std::string *str, int32_t newval); + int32_t slider_framedelay(running_machine &machine, void *arg, int id, std::string *str, int32_t newval); int32_t slider_mixervol(running_machine &machine, void *arg, int id, std::string *str, int32_t newval); int32_t slider_adjuster(running_machine &machine, void *arg, int id, std::string *str, int32_t newval); int32_t slider_overclock(running_machine &machine, void *arg, int id, std::string *str, int32_t newval); @@ -326,6 +333,7 @@ #endif std::vector<std::unique_ptr<slider_state>> m_sliders; + std::vector<std::unique_ptr<slider_state>> m_sliders_saved; };
  5. haynor666

    ARCADE 0.212

    video/cidelsa.cpp appears to be incorrect
  6. haynor666

    ARCADE 0.212

    Truxton 2 stereo sound enabled is gone and it's probably gone from some long time. It's even gone in my source. For overclocks, sound volume save please wait for groovymame new patch.
  7. haynor666

    ARCADE 0.211

    Thanks for spotting this
  8. haynor666

    ARCADE 0.211

    What exactly I'm missing?
  9. haynor666

    ARCADE 0.211

    I don't know how much Your patches differ from mine but in case something might be usefull I'll post here my diff that I'm using with my custom groovymame build. Besides hacks/mods that are already in ARCADE32/64 there some modifications for other drivers. patches_211.7z
  10. haynor666

    ARCADE 0.211

    There is nothing wrong that You don't have time, I understand this. Just inform us about problems. I'm not programmer but if I can I will help.
  11. haynor666

    ARCADE 0.211

    Neo-geo raster hacks needs investigation for sure.
  12. haynor666

    ARCADE 0.211

    gseeker and arabianm were tested. Both games works as expected but I didn't tested all taito F3 games. m_f3_game is gone but it was replaced by m_game. Robbert, I ask You some time to post problems with hacks. If I can I will help You maintain ARCADE code. Right now You posted only Which is not true.
  13. haynor666

    ARCADE 0.211

    Well, looks like taito_f3 changes are gone this time. diff -Nru src/mame/video/taito_f3.cpp src-fx/mame/video/taito_f3.cpp --- src/mame/video/taito_f3.cpp Thu Jun 27 02:46:55 2019 +++ src-fx/mame/video/taito_f3.cpp Tue Jul 2 16:31:20 2019 @@ -1830,8 +1830,17 @@ _y_zoom[y] = (line_zoom & 0xff) << 9; /* Evaluate clipping */ - if (pri & 0x0800) - line_enable = 0; + + /* Notes: + kludge: line-disable breaks quizhuhu text & landmakr "you win / you lose" text. [april 23, 2017 -dink] + somehow I think 0x0800 has nothing to do with line-disable. + although tcobra2 uses this to clip the sides of the playfield + */ + + if (pri & 0x0800 && m_game != LANDMAKR) + { + line_enable = 0; + } else if (pri & 0x0330) { //fast path todo - remove line enable @@ -1974,6 +1983,10 @@ else line_enable = 1; + if (m_game == ARABIANM && line_enable) + line_enable = 1; // kludge: arabianm missing cutscene text april.21.2017_dink + + line_t->pri[y] = pri; /* Evaluate clipping */ @@ -2235,10 +2248,17 @@ { if (alpha_type == 1) { - /* if (m_alpha_level_2as == 0 && m_alpha_level_2ad == 255) - * alpha_mode[i]=3; alpha_mode_flag[i] |= 0x80; } - * will display continue screen in gseeker (mt 00026) */ - if (m_alpha_level_2as == 0 && m_alpha_level_2ad == 255) alpha_mode[i] = 0; + if (m_alpha_level_2as == 0 && m_alpha_level_2ad == 255) + { + if (m_game == GSEEKER) /* will display continue screen in gseeker (mt 00026) */ + { + alpha_mode[i]=3; + alpha_mode_flag[i] |= 0x80; + } + else + alpha_mode[i]=0; + } + else if (m_alpha_level_2as == 255 && m_alpha_level_2ad == 0) alpha_mode[i] = 1; } else if (alpha_type == 2) Tested gseeker, arabianm.
  14. All extra games has been removed from Arcade and moved to HBMAME.
  15. haynor666

    ARCADE 0.210

    Couple times I've found old NVRAM to cause game not functioning for example old NVRAM didn't work for seibu SPI games. As for cfg everything should be fine. I never seen old cfg to make problems with games.
  16. haynor666

    ARCADE 0.210

    We have now autofire plugin with button mapping and save configuration
  17. haynor666

    ARCADE 0.209

    Sliders corrections are ugly because there are made using integer rather floating point scaling and that are clearly visible on screen especially on scrolling. Gang Busters looks really bad with those black borders not too mention it's wrong aspect ratio this way. You may also re-consider https://www.1emulation.com/forums/topic/36118-arcade-0206/?do=findComment&comment=362107 as it fixes some graphical glitches in neo-geo games.
  18. haynor666

    ARCADE 0.209

    For some time (probably long) mame despite lack of support from microsoft will support windows 7. I'm still going to use windows 7 even without patches. As for 32 builds it's a matter of time. All new computers from couple years back are supplied with x64 systems so almost nobody (some owners of old cabs will probably forced to upgrade OS and hardware) will cry when support ends.
  19. haynor666

    ARCADE 0.209

    I'm not suprised that nobody is interested in fixing x32 build problems. What exact problems are with 32 build right now with latest tools?
  20. haynor666

    ARCADE 0.206

    What this sengoku2 check should do? Right now I can see that title is zooming incorrectly.
  21. haynor666

    ARCADE 0.206

    Because some MameSick hacks are intended to improve games not matter it's real behaviour or not.
  22. haynor666

    ARCADE 0.206

    Please ask MameSick, I don't know but entire sprite hack should fix this - https://mametesters.org/view.php?id=2659 Some part of code changes sengoku2 code. As for cidelsa driver I've re-uploaded in my previous post new one - looks like some parameters cannot be commented.
  23. haynor666

    ARCADE 0.206

    diff -Nru src/mame/video/neogeo_spr.cpp src-fx/mame/video/neogeo_spr.cpp --- src/mame/video/neogeo_spr.cpp Tue Dec 25 18:33:36 2018 +++ src-fx/mame/video/neogeo_spr.cpp Sat Dec 29 18:25:03 2018 @@ -41,6 +41,7 @@ m_auto_animation_disabled = 0; m_auto_animation_counter = 0; m_auto_animation_frame_counter = 0; + m_neogeo_raster_hack = 0; /* register for state saving */ save_pointer(NAME(m_videoram), 0x8000 + 0x800); @@ -53,6 +54,7 @@ save_item(NAME(m_auto_animation_disabled)); save_item(NAME(m_auto_animation_counter)); save_item(NAME(m_auto_animation_frame_counter)); + save_item(NAME(m_neogeo_raster_hack)); m_region_zoomy = memregion(":zoomy")->base(); @@ -270,7 +272,7 @@ *************************************/ #define MAX_SPRITES_PER_SCREEN (381) -#define MAX_SPRITES_PER_LINE (96) +#define MAX_SPRITES_PER_LINE (192) /* horizontal zoom table - verified on real hardware */ @@ -549,12 +551,14 @@ { int scanline = param; - /* we are at the beginning of a scanline - - we need to draw the previous scanline and parse the sprites on the current one */ - if (scanline != 0) - m_screen->update_partial(scanline - 1); - - parse_sprites(scanline); + /* we are at the beginning of a scanline */ + if (m_neogeo_raster_hack & 0x10) /* raster interrupt enabled */ + { + if (strcmp(machine().system().name, "sengoku2") == 0) + m_screen->update_partial(scanline - 1); + else + m_screen->update_partial(scanline + 1); + } /* let's come back at the beginning of the next line */ scanline = (scanline + 1) % NEOGEO_VTOTAL; Is missing ?
  24. haynor666

    ARCADE 0.206

    Fixed cidelsa video driver cidelsa.cpp.txt
  25. haynor666

    ARCADE 0.205

    <p>Bad news - entire neo-geo patch including raster hack needs fixing :/</p> <p>cidelsa driver also needs manual fixing but this will be fast and easy.</p>
×
×
  • Create New...