registry = ipsRegistry::instance(); $this->settings =& $this->registry->fetchSettings(); } public function getOutput() { return; } public function replaceOutput($output, $key) { require_once( IPSLib::getAppDir('ibprobattle') . '/sources/battleHooks.php' ); $this->battleHook = new battleHooks( $this->registry ); return $this->battleHook->statsTopicView($output, $key); } } ?>registry = ipsRegistry::instance(); $this->settings =& $this->registry->fetchSettings(); } public function getOutput() { require_once( IPSLib::getAppDir('ibprobattle') . '/sources/battleHooks.php' ); $this->battleHook = new battleHooks( $this->registry ); return $this->battleHook->statsTopicViewJS(); } } ?> ARCADE 0.205 - ARCADE - 1Emulation.com

Jump to content

Welcome to 1Emulation.com
Register now to gain access to all of our features. Once registered and logged in, you will be able to create topics, post replies to existing threads, give reputation to your fellow members, get your own private messenger, post status updates, manage your profile and so much more. This message will be removed once you have signed in.
Login to Account Create an Account
Photo

ARCADE 0.205

- - - - -

  • Please log in to reply
15 replies to this topic

#1
Robert

Robert

    Alchemist

  • User Admin
  • 11,643 posts
  • Gender:Male
  • Location:Land of Oz

ARCADE 32/64 0.205 are released.



Download location: http://arcade.mameworld.info/

 

 

 

As discussed in the 0.204 thread, the h6280 has been hacked to fix sound in all the games that use it.

 



#2
Agard

Agard

    Novice

  • Members+
  • 42 posts

Nice 1 & The best Xmas present goes to ARCADE. Wa Hoo !

 

Thanks



#3
haynor666

haynor666

    Proud Fan

  • Premium Members
  • 116 posts
  • Gender:Male
  • Location:Tarnobrzeg, Poland

There is new functionality written by Calamity originally for groovymame. It basically saves sliders states for audio levels cpus overclock and picture adjustments. Would be great to have this also in ARCADE32/64.

 

I ask about long time ago - http://www.1emulatio...oost-with-save/ and now this functionality is ready
 


diff -Nru src/frontend/mame/ui/ui.cpp src/frontend/mame/ui/ui.cpp
--- src/frontend/mame/ui/ui.cpp 2018-11-28 07:07:25.000000000 +0100
+++ src/frontend/mame/ui/ui.cpp 2018-12-22 11:37:18.000000000 +0100
@@ -30,6 +30,7 @@
 #include "ui/state.h"
 #include "ui/viewgfx.h"
 #include "imagedev/cassette.h"
+#include "config.h"
 
 
 /***************************************************************************
@@ -208,6 +209,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));
@@ -1517,6 +1521,8 @@
  }
 #endif
 
+ config_apply();
+
  std::vector<ui::menu_item> items;
  for (auto &slider : m_sliders)
  {
@@ -2234,3 +2240,80 @@
 {
  ui::menu::stack_reset(machine());
 }
+
+//-------------------------------------------------
+//  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);
+ slider_node = parentnode->add_child("slider", nullptr);
+ slider_node->set_attribute("desc", slider->description.c_str());
+ slider_node->set_attribute_int("value", curval);
+ }
+}
diff -Nru src/frontend/mame/ui/ui.h src/frontend/mame/ui/ui.h
--- src/frontend/mame/ui/ui.h 2018-11-28 07:07:25.000000000 +0100
+++ src/frontend/mame/ui/ui.h 2018-12-22 10:56:04.000000000 +0100
@@ -215,6 +215,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);
 
@@ -299,6 +304,7 @@
  #endif
 
  std::vector<std::unique_ptr<slider_state>> m_sliders;
+ std::vector<std::unique_ptr<slider_state>> m_sliders_saved;
 };

Edited by haynor666, 26 December 2018 - 02:26 PM.


#4
Hyperscorpio

Hyperscorpio

    Novice

  • Members+
  • 24 posts
You guys need to release arcade version before mame release, because people is complain i had to check crlmamepro backup folder to get roms from the older version of mame, and there is no roms in there. So i need to force my self to check everytime mame old versions to get the roms. If you guys can´t just let it stay as it is. I really don´t care. Those people who complain, just don´t want to waste their time to help. Thank you. :msnwink:

Edited by Hyperscorpio, 27 December 2018 - 01:25 PM.


#5
haynor666

haynor666

    Proud Fan

  • Premium Members
  • 116 posts
  • Gender:Male
  • Location:Tarnobrzeg, Poland
ssv driver is probably not modified
Gradius/Nemesis audio is also not fixed

Edited by haynor666, 29 December 2018 - 06:41 PM.


#6
haynor666

haynor666

    Proud Fan

  • Premium Members
  • 116 posts
  • Gender:Male
  • Location:Tarnobrzeg, Poland

Restored patch for nemesis.cpp

 

void nemesis_state::nemesis(machine_config &config)
{
	/* basic machine hardware */
	M68000(config, m_maincpu, 18432000/2); /* 9.216 MHz? */
//  14318180/2, /* From schematics, should be accurate */
	m_maincpu->set_addrmap(AS_PROGRAM, &nemesis_state::nemesis_map);

	Z80(config, m_audiocpu, 14318180/4); /* From schematics, should be accurate */
	m_audiocpu->set_addrmap(AS_PROGRAM, &nemesis_state::sound_map); /* fixed */

	ls259_device &outlatch(LS259(config, "outlatch")); // 13J
	outlatch.q_out_cb<0>().set(FUNC(nemesis_state::coin1_lockout_w));
	outlatch.q_out_cb<0>().append(FUNC(nemesis_state::coin2_lockout_w));
	outlatch.q_out_cb<2>().set(FUNC(nemesis_state::sound_irq_w));

	ls259_device &intlatch(LS259(config, "intlatch")); // 11K
	intlatch.q_out_cb<0>().set(FUNC(nemesis_state::irq_enable_w));
	intlatch.q_out_cb<2>().set(FUNC(nemesis_state::gfx_flipx_w));
	intlatch.q_out_cb<3>().set(FUNC(nemesis_state::gfx_flipy_w));

	WATCHDOG_TIMER(config, "watchdog", 0);

	/* video hardware */
	SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
	m_screen->set_refresh_hz((18432000.0/4)/(288*264));      /* ??? */
	m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
	m_screen->set_size(32*8, 32*8);
	m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
	m_screen->set_screen_update(FUNC(nemesis_state::screen_update_nemesis));
	m_screen->set_palette(m_palette);
	m_screen->screen_vblank().set(FUNC(nemesis_state::nemesis_vblank_irq));

	GFXDECODE(config, m_gfxdecode, m_palette, gfx_nemesis);
	PALETTE(config, m_palette, 2048);

	/* sound hardware */
	SPEAKER(config, "mono").front_center();

	GENERIC_LATCH_8(config, "soundlatch");

	ay8910_device &ay1(AY8910(config, "ay1", 14318180/8));
	ay1.set_flags(AY8910_LEGACY_OUTPUT);
	ay1.port_a_read_callback().set(FUNC(nemesis_state::nemesis_portA_r));
	ay1.add_route(ALL_OUTPUTS, "mono", 0.20);

	ay8910_device &ay2(AY8910(config, "ay2", 14318180/8));
	ay2.port_a_write_callback().set(m_k005289, FUNC(k005289_device::k005289_control_A_w));
	ay2.port_b_write_callback().set(m_k005289, FUNC(k005289_device::k005289_control_B_w));
	ay2.add_route(ALL_OUTPUTS, "mono", 1.00);

	FILTER_RC(config, m_filter1);
	m_filter1->add_route(ALL_OUTPUTS, "mono", 1.0);
	FILTER_RC(config, m_filter2);
	m_filter2->add_route(ALL_OUTPUTS, "mono", 1.0);
	FILTER_RC(config, m_filter3);
	m_filter3->add_route(ALL_OUTPUTS, "mono", 1.0);
	FILTER_RC(config, m_filter4);
	m_filter4->add_route(ALL_OUTPUTS, "mono", 1.0);

	K005289(config, m_k005289, 3579545);
	m_k005289->add_route(ALL_OUTPUTS, "mono", 0.35);
}

void nemesis_state::gx400(machine_config &config)
{
	/* basic machine hardware */
	M68000(config, m_maincpu, 18432000/2); /* 9.216MHz */
	m_maincpu->set_addrmap(AS_PROGRAM, &nemesis_state::gx400_map);
	TIMER(config, "scantimer").configure_scanline(FUNC(nemesis_state::gx400_interrupt), "screen", 0, 1);

	Z80(config, m_audiocpu, 14318180/4);        /* 3.579545 MHz */
	m_audiocpu->set_addrmap(AS_PROGRAM, &nemesis_state::gx400_sound_map);

	ls259_device &outlatch(LS259(config, "outlatch"));
	outlatch.q_out_cb<0>().set(FUNC(nemesis_state::coin1_lockout_w));;
	outlatch.q_out_cb<1>().set(FUNC(nemesis_state::coin2_lockout_w));
	outlatch.q_out_cb<2>().set(FUNC(nemesis_state::sound_irq_w));
	outlatch.q_out_cb<7>().set(FUNC(nemesis_state::irq4_enable_w)); // ??

	ls259_device &intlatch(LS259(config, "intlatch"));
	intlatch.q_out_cb<0>().set(FUNC(nemesis_state::irq2_enable_w));
	intlatch.q_out_cb<1>().set(FUNC(nemesis_state::irq1_enable_w));
	intlatch.q_out_cb<2>().set(FUNC(nemesis_state::gfx_flipx_w));
	intlatch.q_out_cb<3>().set(FUNC(nemesis_state::gfx_flipy_w));

	WATCHDOG_TIMER(config, "watchdog");

	/* video hardware */
	SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
	m_screen->set_refresh_hz((18432000.0/4)/(288*264)); /* 60.606060 Hz */
	m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
	m_screen->set_size(32*8, 32*8);
	m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
	m_screen->set_screen_update(FUNC(nemesis_state::screen_update_nemesis));
	m_screen->set_palette(m_palette);
	m_screen->screen_vblank().set_inputline("audiocpu", INPUT_LINE_NMI);

	GFXDECODE(config, m_gfxdecode, m_palette, gfx_nemesis);
	PALETTE(config, m_palette, 2048);

	/* sound hardware */
	SPEAKER(config, "mono").front_center();

	GENERIC_LATCH_8(config, "soundlatch");

	ay8910_device &ay1(AY8910(config, "ay1", 14318180/8));
	ay1.set_flags(AY8910_LEGACY_OUTPUT);
	ay1.port_a_read_callback().set(FUNC(nemesis_state::nemesis_portA_r));
	ay1.add_route(ALL_OUTPUTS, "mono", 0.20);

	ay8910_device &ay2(AY8910(config, "ay2", 14318180/8));
	ay2.port_a_write_callback().set(m_k005289, FUNC(k005289_device::k005289_control_A_w));
	ay2.port_b_write_callback().set(m_k005289, FUNC(k005289_device::k005289_control_B_w));
	ay2.add_route(ALL_OUTPUTS, "mono", 1.00);

	FILTER_RC(config, m_filter1);
	m_filter1->add_route(ALL_OUTPUTS, "mono", 1.0);
	FILTER_RC(config, m_filter2);
	m_filter2->add_route(ALL_OUTPUTS, "mono", 1.0);
	FILTER_RC(config, m_filter3);
	m_filter3->add_route(ALL_OUTPUTS, "mono", 1.0);
	FILTER_RC(config, m_filter4);
	m_filter4->add_route(ALL_OUTPUTS, "mono", 1.0);

	K005289(config, m_k005289, 3579545);
	m_k005289->add_route(ALL_OUTPUTS, "mono", 0.35);

	VLM5030(config, m_vlm, 3579545);
	m_vlm->set_addrmap(0, &nemesis_state::gx400_vlm_map);
	m_vlm->add_route(ALL_OUTPUTS, "mono", 0.70);
}

Still sound in gwarrior is not too good. Nemesis/Gradius seems to be ok.


Edited by haynor666, 01 January 2019 - 08:05 PM.


#7
Robert

Robert

    Alchemist

  • User Admin
  • 11,643 posts
  • Gender:Male
  • Location:Land of Oz

The slider stuff has been added. I tested it by starting ozmawars, changing the volume to -7db, quit, start the game again, still says -7db. With standard MAME it goes back to 0db.

 

I'm assuming that's what you're after.



#8
Robert

Robert

    Alchemist

  • User Admin
  • 11,643 posts
  • Gender:Male
  • Location:Land of Oz

Made the changes to nemesis.cpp - it would have been nice if you'd highlighted the changed lines, as it is I'm not sure if I found everything.

 

One thing to remember, when mamedev do changes to a modified driver and a conflict occurs, I'm not going to spend time trying to figure out what the changes were doing and how to keep them there, I will simply revert it back to MAME standard. If it's important to you, you will show me what to change back.



#9
haynor666

haynor666

    Proud Fan

  • Premium Members
  • 116 posts
  • Gender:Male
  • Location:Tarnobrzeg, Poland

Diff for nemesis:

 

diff -Nru src/mame/drivers/nemesis.cpp src-fx/mame/drivers/nemesis.cpp
--- src/mame/drivers/nemesis.cpp	Tue Dec 25 18:33:07 2018
+++ src-fx/mame/drivers/nemesis.cpp	Tue Jan  1 19:45:43 2019
@@ -1499,16 +1499,14 @@
 	GENERIC_LATCH_8(config, "soundlatch");
 
 	ay8910_device &ay1(AY8910(config, "ay1", 14318180/8));
-	ay1.set_flags(AY8910_LEGACY_OUTPUT | AY8910_SINGLE_OUTPUT);
+	ay1.set_flags(AY8910_LEGACY_OUTPUT);
 	ay1.port_a_read_callback().set(FUNC(nemesis_state::nemesis_portA_r));
-	ay1.add_route(ALL_OUTPUTS, "filter1", 0.20);
+	ay1.add_route(ALL_OUTPUTS, "mono", 0.20);
 
 	ay8910_device &ay2(AY8910(config, "ay2", 14318180/8));
 	ay2.port_a_write_callback().set(m_k005289, FUNC(k005289_device::k005289_control_A_w));
 	ay2.port_b_write_callback().set(m_k005289, FUNC(k005289_device::k005289_control_B_w));
-	ay2.add_route(0, "filter2", 1.00);
-	ay2.add_route(1, "filter3", 1.00);
-	ay2.add_route(2, "filter4", 1.00);
+	ay2.add_route(ALL_OUTPUTS, "mono", 1.00);
 
 	FILTER_RC(config, m_filter1);
 	m_filter1->add_route(ALL_OUTPUTS, "mono", 1.0);
@@ -1566,16 +1564,14 @@
 	GENERIC_LATCH_8(config, "soundlatch");
 
 	ay8910_device &ay1(AY8910(config, "ay1", 14318180/8));
-	ay1.set_flags(AY8910_LEGACY_OUTPUT | AY8910_SINGLE_OUTPUT);
+	ay1.set_flags(AY8910_LEGACY_OUTPUT);
 	ay1.port_a_read_callback().set(FUNC(nemesis_state::nemesis_portA_r));
-	ay1.add_route(ALL_OUTPUTS, "filter1", 0.20);
+	ay1.add_route(ALL_OUTPUTS, "mono", 0.20);
 
 	ay8910_device &ay2(AY8910(config, "ay2", 14318180/8));
 	ay2.port_a_write_callback().set(m_k005289, FUNC(k005289_device::k005289_control_A_w));
 	ay2.port_b_write_callback().set(m_k005289, FUNC(k005289_device::k005289_control_B_w));
-	ay2.add_route(0, "filter2", 1.00);
-	ay2.add_route(1, "filter3", 1.00);
-	ay2.add_route(2, "filter4", 1.00);
+	ay2.add_route(ALL_OUTPUTS, "mono", 1.00);
 
 	FILTER_RC(config, m_filter1);
 	m_filter1->add_route(ALL_OUTPUTS, "mono", 1.0);

 

 

As for sliders - yes, mame should remember audio volume for each game, stored in cfg files.

 



#10
haynor666

haynor666

    Proud Fan

  • Premium Members
  • 116 posts
  • Gender:Male
  • Location:Tarnobrzeg, Poland

Small diff for ssv (Only two games I fixed - Chanded Air Blade and Dyna Gear):

 

diff -Nru src/mame/drivers/ssv.cpp src-fx/mame/drivers/ssv.cpp
--- src/mame/drivers/ssv.cpp	Tue Dec 25 18:33:11 2018
+++ src-fx/mame/drivers/ssv.cpp	Tue Jan  1 20:15:19 2019
@@ -2825,7 +2825,7 @@
 	survarts(config);
 
 	/* video hardware */
-	m_screen->set_visarea(0, (0xd4-0x2c)*2-1, 0, (0x102 - 0x12)-1);
+	m_screen->set_visarea(8, (336-8)-1, 0, 240-1);
 }
 
 void ssv_state::eaglshot(machine_config &config)
@@ -2894,7 +2894,7 @@
 	WATCHDOG_TIMER(config, "watchdog");
 
 	/* video hardware */
-	m_screen->set_visarea(0, (0xcb - 0x22)*2-1, 0, (0xfe - 0x0e)-1);
+	m_screen->set_visarea(0, 336-1, 0, 240-1);
 }
 
 void ssv_state::twineag2(machine_config &config)



#11
mamesick

mamesick

    Member

  • Members+
  • 91 posts

Revert modified drivers to original state is actually not a good practice, the update to new standards can be easily done with programs like WinMerge or others side-by-side diff tools. Though I don't want to criticize, I perfectly know how much time-consuming is keep alive ARCADE.

 

Another change that seems gone away is the correct refresh rate for CAVE.CPP games, it's reverted back to the 271.5 divisor, instead of 272.0.

SSV.CPP resolutions as already pointed out by haynor666 are reverted too. IIRC there are 23 resolution changes for that file, maybe I'll do the job by myself and upload the updated file on my mediafire account.






0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users