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.196 - 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.196

- - - - -

  • Please log in to reply
12 replies to this topic

#1
Robert

Robert

    Alchemist

  • User Admin
  • 11,550 posts
  • Gender:Male
  • Location:Land of Oz
ARCADE 32/64 0.196 are released. It's earlier than usual because I have other matters to attend to tomorrow.


Changes:
-

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

#2
dany777

dany777

    Novice

  • Members+
  • 28 posts
  • Gender:Male
  • Location:Spain
  • Interests:The best MAME i know
Im glad to see this update improves the Sega Model 2 games

Edited by dany777, 28 March 2018 - 07:09 PM.


#3
witek-pl

witek-pl

    Newbie Poster

  • Members
  • 2 posts

Snapshot not working. In ofiicial MAME works.



#4
haynor666

haynor666

    Member

  • Members+
  • 89 posts
  • Gender:Male
  • Location:Tarnobrzeg, Poland

snapshot working but right now into video folder :wink:   Iron Horse driver is default instead of MameSick one. EDIT. and I can see why. Here is updated code for ironhors:

 

diff -Nru src/mame/drivers/ironhors.cpp src-fx/mame/drivers/ironhors.cpp
--- src/mame/drivers/ironhors.cpp	Tue Mar 27 17:55:05 2018
+++ src-fx/mame/drivers/ironhors.cpp	Sun Apr  1 14:02:37 2018
@@ -25,20 +25,32 @@
  *
  *************************************/
 
-TIMER_DEVICE_CALLBACK_MEMBER(ironhors_state::irq)
+TIMER_DEVICE_CALLBACK_MEMBER(ironhors_state::interrupt_tick)
 {
-	int scanline = param;
+	uint8_t ticks_mask = ~m_interrupt_ticks & (m_interrupt_ticks + 1); // 0->1
+	m_interrupt_ticks++;
 
-	if (scanline == 240)
-	{
-		if (*m_interrupt_enable & 4)
-			m_maincpu->set_input_line(M6809_FIRQ_LINE, HOLD_LINE);
-	}
-	else if (((scanline+16) % 64) == 0)
-	{
-		if (*m_interrupt_enable & 1)
-			m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
-	}
+	// NMI on d0
+	if (ticks_mask & m_interrupt_mask & 1)
+		m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
+
+	// IRQ on d4
+	if (ticks_mask & m_interrupt_mask<<2 & 16)
+		m_maincpu->set_input_line(M6809_FIRQ_LINE, ASSERT_LINE);
+}
+
+WRITE8_MEMBER(ironhors_state::irq_ctrl_w)
+{
+	/* bits 0/1/2 = interrupt enable */
+	uint8_t ack_mask = ~data & m_interrupt_mask; // 1->0
+
+	if (ack_mask & 1)
+		m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
+
+	if (ack_mask & 6)
+		m_maincpu->set_input_line(M6809_FIRQ_LINE, CLEAR_LINE);
+
+	m_interrupt_mask = data & 7;
 }
 
 WRITE8_MEMBER(ironhors_state::sh_irqtrigger_w)
@@ -63,7 +75,7 @@
 {
 	map(0x0000, 0x0002).ram();
 	map(0x0003, 0x0003).ram().w(this, FUNC(ironhors_state::charbank_w));
-	map(0x0004, 0x0004).ram().share("int_enable");
+	map(0x0004, 0x0004).ram().w(this, FUNC(ironhors_state::irq_ctrl_w));
 	map(0x0005, 0x001f).ram();
 	map(0x0020, 0x003f).ram().share("scroll");
 	map(0x0040, 0x005f).ram();
@@ -122,7 +134,7 @@
 
 
 	map(0x1800, 0x1800).w(this, FUNC(ironhors_state::sh_irqtrigger_w));
-	map(0x1a00, 0x1a00).ram().share("int_enable");
+	map(0x1a00, 0x1a00).ram().w(this, FUNC(ironhors_state::irq_enable_w));
 	map(0x1a01, 0x1a01).ram().w(this, FUNC(ironhors_state::charbank_w));
 	map(0x1a02, 0x1a02).w(this, FUNC(ironhors_state::palettebank_w));
 //  map(0x1c00, 0x1fff).ram();
@@ -355,6 +367,10 @@
 	save_item(NAME(m_palettebank));
 	save_item(NAME(m_charbank));
 	save_item(NAME(m_spriterambank));
+	save_item(NAME(m_interrupt_mask));
+	save_item(NAME(m_interrupt_ticks));
+	save_item(NAME(m_irq_enable));
+	save_item(NAME(m_nmi_enable));
 }
 
 void ironhors_state::machine_reset()
@@ -362,6 +378,10 @@
 	m_palettebank = 0;
 	m_charbank = 0;
 	m_spriterambank = 0;
+	m_interrupt_mask = 0;
+	m_interrupt_ticks = 0;
+	m_irq_enable = 0;
+	m_nmi_enable = 0;
 }
 
 /*
@@ -382,21 +402,18 @@
 MACHINE_CONFIG_START(ironhors_state::ironhors)
 
 	/* basic machine hardware */
-	MCFG_CPU_ADD("maincpu", MC6809E, 18432000/6)        /* 3.072 MHz??? mod by Shingo Suzuki 1999/10/15 */
+	MCFG_CPU_ADD("maincpu", MC6809E, MASTER_CLOCK/6)        /* 3.072 MHz??? mod by Shingo Suzuki 1999/10/15 */
 	MCFG_CPU_PROGRAM_MAP(master_map)
-	MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", ironhors_state, irq, "screen", 0, 1)
+	MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", ironhors_state, interrupt_tick, "screen", 0,16)
 
-	MCFG_CPU_ADD("soundcpu", Z80, 18432000/6)      /* 3.072 MHz */
+	MCFG_CPU_ADD("soundcpu", Z80, MASTER_CLOCK/6)      /* 3.072 MHz */
 	MCFG_CPU_PROGRAM_MAP(slave_map)
 	MCFG_CPU_IO_MAP(slave_io_map)
 
 
 	/* video hardware */
 	MCFG_SCREEN_ADD("screen", RASTER)
-	MCFG_SCREEN_REFRESH_RATE(30)
-	MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
-	MCFG_SCREEN_SIZE(32*8, 32*8)
-	MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 2*8, 30*8-1)
+	MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/3, 396, 8, 248, 256, 16, 240)
 	MCFG_SCREEN_UPDATE_DRIVER(ironhors_state, screen_update)
 	MCFG_SCREEN_PALETTE("palette")
 
@@ -410,7 +427,7 @@
 
 	MCFG_GENERIC_LATCH_8_ADD("soundlatch")
 
-	MCFG_SOUND_ADD("ym2203", YM2203, 18432000/6)
+	MCFG_SOUND_ADD("ym2203", YM2203, MASTER_CLOCK/6)
 	MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(ironhors_state, filter_w))
 
 	MCFG_SOUND_ROUTE_EX(0, "disc_ih", 1.0, 0)
@@ -424,20 +441,26 @@
 
 MACHINE_CONFIG_END
 
-TIMER_DEVICE_CALLBACK_MEMBER(ironhors_state::farwest_irq)
+WRITE8_MEMBER(ironhors_state::irq_enable_w)
 {
-	int scanline = param;
+	uint8_t mask = data & 0x07;		// check only bits 0,1,2
 
-	if ((scanline % 2) == 1)
-	{
-		if (*m_interrupt_enable & 4)
-			m_maincpu->set_input_line(M6809_FIRQ_LINE, HOLD_LINE);
-	}
-	else if ((scanline % 2) == 0)
-	{
-		if (*m_interrupt_enable & 1)
-			m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
-	}
+	m_nmi_enable = mask & 0x01;		// bit 0 NMI
+	m_irq_enable = mask & 0x05;		// bit 2 IRQ
+	
+	// bit 4 is also used....
+}
+
+INTERRUPT_GEN_MEMBER(ironhors_state::farwest_irq)
+{
+	if (m_irq_enable)
+		m_maincpu->set_input_line(M6809_FIRQ_LINE, HOLD_LINE);
+}
+
+INTERRUPT_GEN_MEMBER(ironhors_state::farwest_irq_nmi)
+{
+	if (m_nmi_enable)
+		m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
 }
 
 READ8_MEMBER(ironhors_state::farwest_soundlatch_r)
@@ -450,9 +473,9 @@
 
 	MCFG_CPU_MODIFY("maincpu")
 	MCFG_CPU_PROGRAM_MAP(farwest_master_map)
-	MCFG_DEVICE_MODIFY("scantimer")
-	MCFG_TIMER_DRIVER_CALLBACK(ironhors_state, farwest_irq)
-
+	MCFG_CPU_VBLANK_INT_DRIVER("screen", ironhors_state, farwest_irq)
+	MCFG_CPU_PERIODIC_INT_DRIVER(ironhors_state, farwest_irq_nmi, 480)		/* 8*60, seems ok */
+	MCFG_DEVICE_REMOVE("scantimer")
 	MCFG_CPU_MODIFY("soundcpu")
 	MCFG_CPU_PROGRAM_MAP(farwest_slave_map)
 	MCFG_DEVICE_REMOVE_ADDRESS_MAP(AS_IO)

 

diff -Nru src/mame/includes/ironhors.h src-fx/mame/includes/ironhors.h
--- src/mame/includes/ironhors.h	Tue Mar 27 17:55:16 2018
+++ src-fx/mame/includes/ironhors.h	Sun Apr  1 13:47:40 2018
@@ -10,6 +10,8 @@
 #include "machine/timer.h"
 #include "sound/discrete.h"
 
+#define MASTER_CLOCK        XTAL(18'432'000)
+
 class ironhors_state : public driver_device
 {
 public:
@@ -21,7 +23,6 @@
 		m_palette(*this, "palette"),
 		m_soundlatch(*this, "soundlatch"),
 		m_disc_ih(*this, "disc_ih"),
-		m_interrupt_enable(*this, "int_enable"),
 		m_scroll(*this, "scroll"),
 		m_colorram(*this, "colorram"),
 		m_videoram(*this, "videoram"),
@@ -36,12 +37,16 @@
 	DECLARE_WRITE8_MEMBER(flipscreen_w);
 	DECLARE_WRITE8_MEMBER(filter_w);
 	DECLARE_READ8_MEMBER(farwest_soundlatch_r);
+	DECLARE_WRITE8_MEMBER(irq_ctrl_w);
+	DECLARE_WRITE8_MEMBER(irq_enable_w);
 
 	uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
 	uint32_t screen_update_farwest(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
 
-	TIMER_DEVICE_CALLBACK_MEMBER(irq);
 	TIMER_DEVICE_CALLBACK_MEMBER(farwest_irq);
+	TIMER_DEVICE_CALLBACK_MEMBER(interrupt_tick);
+	INTERRUPT_GEN_MEMBER(farwest_irq);
+	INTERRUPT_GEN_MEMBER(farwest_irq_nmi);
 
 	DECLARE_PALETTE_INIT(ironhors);
 	DECLARE_VIDEO_START(farwest);
@@ -68,7 +73,7 @@
 	required_device<discrete_device> m_disc_ih;
 
 	/* memory pointers */
-	required_shared_ptr<uint8_t> m_interrupt_enable;
+	//required_shared_ptr<uint8_t> m_interrupt_enable;
 	required_shared_ptr<uint8_t> m_scroll;
 	required_shared_ptr<uint8_t> m_colorram;
 	required_shared_ptr<uint8_t> m_videoram;
@@ -80,6 +85,10 @@
 	int        m_palettebank;
 	int        m_charbank;
 	int        m_spriterambank;
+	uint8_t m_interrupt_mask;
+	uint8_t m_interrupt_ticks;
+	uint8_t m_irq_enable;
+	uint8_t m_nmi_enable;
 
 	void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
 	void farwest_draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );

 


Edited by haynor666, 01 April 2018 - 04:44 PM.


#5
Robert

Robert

    Alchemist

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

Fixed the snapshot directory for next time.

 

As for Iron Horse, what's the difference? Does it work better?



#6
mamesick

mamesick

    Member

  • Members+
  • 75 posts

My code fixes http://mametesters.o...iew.php?id=4621

 

I also received a mail with a feature request:

- Implement a sort of Most Recent Used Games List. In particular the last ten games played.

 

I know you are busy and looks like a feature request that requires surely a lot of coding. I cannot help for the moment and sincerely I have no idea in how to implement a MRU list in the GUI.



#7
haynor666

haynor666

    Member

  • Members+
  • 89 posts
  • Gender:Male
  • Location:Tarnobrzeg, Poland

MameSick code wasn't in latest arcade196s.rar. Also latest build does not have modified source implemented. I didn't know why so I fixed source to save time.



#8
Agard

Agard

    Novice

  • Members+
  • 20 posts

In Xain'd Sleena does it have black borders round the screen in the arcade as can't remember it being like that,

it starts off in full screen with no black borders but some of the game play does,



#9
Robert

Robert

    Alchemist

  • User Admin
  • 11,550 posts
  • Gender:Male
  • Location:Land of Oz
MAME does the same. I've never played the real machine, maybe someone else might know.
 
 
I received a PM (why?) about adding those tiger etc handhelds to Arcade. What do you guys think of that?


Mamesick, I think they call that thing a jumplist. But I'm not going to work on that. Whoever it is can create a favourites list on the left side.

I'll check out that Iron Horse thing later.

#10
Robert

Robert

    Alchemist

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

Well, I put Iron Horse back to what it was, and then ran mame and arcade side-by-side. I couldn't tell any difference, apart from mame running ever-so-slightly faster. There's no difference in the screen or the sound.



#11
haynor666

haynor666

    Member

  • Members+
  • 89 posts
  • Gender:Male
  • Location:Tarnobrzeg, Poland

Thanks.

 

BTW. You could at least take this part of changes:

 

diff -Nru src/mame/drivers/thunderx.cpp src-fx/mame/drivers/thunderx.cpp
--- src/mame/drivers/thunderx.cpp	Wed Jan 31 00:19:01 2018
+++ src-fx/mame/drivers/thunderx.cpp	Wed Feb  7 19:49:16 2018
@@ -719,6 +725,11 @@
 
 	MCFG_DEVICE_MODIFY("k052109")
 	MCFG_K052109_CB(thunderx_state, gbusters_tile_callback)
+
+	/* video hardware */
+	MCFG_SCREEN_MODIFY("screen")
+	MCFG_SCREEN_REFRESH_RATE(59.17)
+	MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
 MACHINE_CONFIG_END

 

diff -Nru src/mame/drivers/tmnt.cpp src-fx/mame/drivers/tmnt.cpp
--- src/mame/drivers/tmnt.cpp	Wed Jan 31 00:19:01 2018
+++ src-fx/mame/drivers/tmnt.cpp	Wed Feb  7 19:49:20 2018
@@ -2208,7 +2208,7 @@
 	MCFG_SCREEN_REFRESH_RATE(60)
 	MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
 	MCFG_SCREEN_SIZE(64*8, 32*8)
-	MCFG_SCREEN_VISIBLE_AREA(12*8, (64-12)*8-1, 2*8, 30*8-1 )
+	MCFG_SCREEN_VISIBLE_AREA(14*8, (64-15)*8-1, 2*8, 30*8-1 )
 	MCFG_SCREEN_UPDATE_DRIVER(tmnt_state, screen_update_lgtnfght)
 	MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(tmnt_state, screen_vblank_blswhstl))
 	MCFG_SCREEN_PALETTE("palette")

 

Those black bars are really ugly. I'm suprised that people didn't complained so far.






0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users