Viewing Issue Advanced Details
ID Category [?] Severity [?] Reproducibility Date Submitted Last Update
00592 DIP/Input Minor Always Jan 31, 2008, 05:08 Apr 9, 2008, 21:02
Tester Thenasty View Status Public Platform
Assigned To Resolution Open OS
Status [?] Confirmed Driver
Version 0.37b13 Fixed in Version Build
Fixed in Git Commit Github Pull Request #
Summary 00592: othldrby: [possible] When you insert a credit using 5, then you insert another credit using 6, it won't accept it.
Description When you insert a credit using 5, then you insert another credit using 6, it won't accept it. If you keep inserting it with 5, it gives you credits. Same goes if you start inserting coins in 6 first, then 5 won't give you credit. You can insert more credits using 6. So bottom line is that whatever you use first to insert the credit, thats the only credit button you can use. The other one won't work.
Steps To Reproduce
Additional Information This strange behaviour exists since the game is emulated.

Stephh observations:
From MAME othldrby.c driver :

static WRITE16_HANDLER( coinctrl_w )
{
	if (ACCESSING_BITS_0_7)
	{
		coin_counter_w(0,data & 1);
		coin_counter_w(1,data & 2);
		coin_lockout_w(0,~data & 4);
		coin_lockout_w(1,~data & 8);
	}
}

static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 16 )
	...
	AM_RANGE(0x700034, 0x700035) AM_WRITE(coinctrl_w)
ADDRESS_MAP_END


The only place where there's a write to 0x700035 is here :

0001E8: 13F9 0010 2F7A 0070 0035   move.b  2f7a.l, 0035.l

So you need to find when contents of 0x102f7a changes ...


During initialisation, 0x102f7a is set to 0x00, so both coin slots are locked.


After initialisation :

0002F6: 0039 000C 0010 2F7A        ori.b   #$c, 2f7a.l

So both coin slots are now unlocked.


When you press COIN1 (A0 = 0x102f70) :

000660: 08E8 0000 000A             bset    #
From MAME othldrby.c driver :

static WRITE16_HANDLER( coinctrl_w )
{
if (ACCESSING_BITS_0_7)
{
coin_counter_w(0,data & 1);
coin_counter_w(1,data & 2);
coin_lockout_w(0,~data & 4);
coin_lockout_w(1,~data & 8);
}
}

static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 16 )
...
AM_RANGE(0x700034, 0x700035) AM_WRITE(coinctrl_w)
ADDRESS_MAP_END


The only place where there's a write to 0x700035 is here :

0001E8: 13F9 0010 2F7A 0070 0035 move.b $102f7a.l, $700035.l

So you need to find when contents of 0x102f7a changes ...


During initialisation, 0x102f7a is set to 0x00, so both coin slots are locked.


After initialisation :

0002F6: 0039 000C 0010 2F7A ori.b #$c, $102f7a.l

So both coin slots are now unlocked.


When you press COIN1 (A0 = 0x102f70) :

000660: 08E8 0000 000A bset #$0, ($a,A0) Trigger coin counter 1
000666: 0239 00F3 0010 2F7A andi.b #$f3, $102f7a.l Lock both slots
...
000676: 08A8 0000 000A bclr #$0, ($a,A0) Untrigger coin counter 1
00067C: 0028 0004 000A ori.b #$4, ($a,A0) Unlock slot 1 (but slot 2 remains locked)


When you press COIN2 (A0 = 0x102f72) :

0006A0: 08E8 0001 0008 bset #$1, ($8,A0) Trigger coin counter 2
0006A6: 0239 00F3 0010 2F7A andi.b #$f3, $102f7a.l Lock both slots
...
0006B8: 08A8 0001 0008 bclr #$1, ($8,A0) Untrigger coin counter 2
0006BE: 0028 0008 0008 ori.b #$8, ($8,A0) Unlock slot 2 (but slot 1 remains locked)
, ($a,A0) Trigger coin counter 1 000666: 0239 00F3 0010 2F7A andi.b #$f3, 2f7a.l Lock both slots ... 000676: 08A8 0000 000A bclr #
From MAME othldrby.c driver :

static WRITE16_HANDLER( coinctrl_w )
{
if (ACCESSING_BITS_0_7)
{
coin_counter_w(0,data & 1);
coin_counter_w(1,data & 2);
coin_lockout_w(0,~data & 4);
coin_lockout_w(1,~data & 8);
}
}

static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 16 )
...
AM_RANGE(0x700034, 0x700035) AM_WRITE(coinctrl_w)
ADDRESS_MAP_END


The only place where there's a write to 0x700035 is here :

0001E8: 13F9 0010 2F7A 0070 0035 move.b $102f7a.l, $700035.l

So you need to find when contents of 0x102f7a changes ...


During initialisation, 0x102f7a is set to 0x00, so both coin slots are locked.


After initialisation :

0002F6: 0039 000C 0010 2F7A ori.b #$c, $102f7a.l

So both coin slots are now unlocked.


When you press COIN1 (A0 = 0x102f70) :

000660: 08E8 0000 000A bset #$0, ($a,A0) Trigger coin counter 1
000666: 0239 00F3 0010 2F7A andi.b #$f3, $102f7a.l Lock both slots
...
000676: 08A8 0000 000A bclr #$0, ($a,A0) Untrigger coin counter 1
00067C: 0028 0004 000A ori.b #$4, ($a,A0) Unlock slot 1 (but slot 2 remains locked)


When you press COIN2 (A0 = 0x102f72) :

0006A0: 08E8 0001 0008 bset #$1, ($8,A0) Trigger coin counter 2
0006A6: 0239 00F3 0010 2F7A andi.b #$f3, $102f7a.l Lock both slots
...
0006B8: 08A8 0001 0008 bclr #$1, ($8,A0) Untrigger coin counter 2
0006BE: 0028 0008 0008 ori.b #$8, ($8,A0) Unlock slot 2 (but slot 1 remains locked)
, ($a,A0) Untrigger coin counter 1 00067C: 0028 0004 000A ori.b #, ($a,A0) Unlock slot 1 (but slot 2 remains locked) When you press COIN2 (A0 = 0x102f72) : 0006A0: 08E8 0001 0008 bset #, (,A0) Trigger coin counter 2 0006A6: 0239 00F3 0010 2F7A andi.b #$f3, 2f7a.l Lock both slots ... 0006B8: 08A8 0001 0008 bclr #, (,A0) Untrigger coin counter 2 0006BE: 0028 0008 0008 ori.b #, (,A0) Unlock slot 2 (but slot 1 remains locked)
Github Commit
Flags Possible
Regression Version
Affected Sets / Systems othldrby
Attached Files
 
Relationships
There are no relationship linked to this issue.
Notes
4
User avatar
No.00616
Tafoid
Administrator
Apr 8, 2008, 15:07
Fixed a driver issue (Was othldrby.c and old bug ID showed othldrby062gra). This still needs testing to see if other sets in this driver are effected.
User avatar
No.00618
Tafoid
Administrator
Apr 8, 2008, 16:16
Stephh informs me this is not oneshot, but indeed othldrby this bug effects - so, I changed the bug back to original driver but changed set to othldrby. Fun, fun!
User avatar
No.00625
stephh
Developer
Apr 9, 2008, 20:43
By looking at the game M68000 code (look at the ID_00592.txt attached file), I can't tell that this is really a bug. A test with the real game shall be needed.
User avatar
No.00626
Tafoid
Administrator
Apr 9, 2008, 21:02
edited on: Apr 9, 2008, 21:03
Marked as possible bug, pending further investigation. Converted attached text file into bug report with < PRE > tagging.