mirror of
https://github.com/holub/mame
synced 2025-05-06 14:25:54 +03:00
Merge pull request #1 from johnparker007/sc4_7segments_fixed
Scorpion 4 7 Segment displays mostly fixed
This commit is contained in:
commit
5e52064421
@ -319,9 +319,33 @@ WRITE8_MEMBER(bfm_sc45_state::mux_output2_w)
|
|||||||
|
|
||||||
// others drive 7-segs with it.. so rendering it there as well in our debug layouts
|
// others drive 7-segs with it.. so rendering it there as well in our debug layouts
|
||||||
|
|
||||||
// todo: reorder properly!
|
if (m_segment_34_encoding)
|
||||||
UINT8 bf7segdata = BITSWAP8(data,7,6,5,4,3,2,1,0);
|
{
|
||||||
output().set_digit_value(offset, bf7segdata);
|
m_segment_34_cache[offset] = data;
|
||||||
|
|
||||||
|
UINT16 short_data;
|
||||||
|
UINT8 byte_data_first_segment;
|
||||||
|
UINT8 byte_data_second_segment;
|
||||||
|
for (int digit = 0; digit < 32; digit += 2)
|
||||||
|
{
|
||||||
|
short_data = (m_segment_34_cache[digit + 1] << 8) | m_segment_34_cache[digit];
|
||||||
|
byte_data_first_segment = (short_data >> 1) & 15;
|
||||||
|
byte_data_second_segment = (short_data >> 6) & 15;
|
||||||
|
output().set_digit_value(digit, SEGMENT_34_ENCODING_LOOKUP[byte_data_first_segment]);
|
||||||
|
output().set_digit_value(digit + 1, SEGMENT_34_ENCODING_LOOKUP[byte_data_second_segment]);
|
||||||
|
|
||||||
|
if (digit == 0 || digit == 2)
|
||||||
|
{
|
||||||
|
byte_data_first_segment = (short_data >> 11) & 15;
|
||||||
|
output().set_digit_value((digit / 2) + 32, SEGMENT_34_ENCODING_LOOKUP[byte_data_first_segment]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
UINT8 bf7segdata = BITSWAP8(data,0,7,6,5,4,3,2,1);
|
||||||
|
output().set_digit_value(offset, bf7segdata);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE16_MEMBER(sc4_state::sc4_mem_w)
|
WRITE16_MEMBER(sc4_state::sc4_mem_w)
|
||||||
@ -35665,6 +35689,8 @@ GAMEL( 200?, sc4dndcse ,sc4dndcs, sc4, sc4dndcs5, sc4_state, sc4dndcs, ROT0,
|
|||||||
|
|
||||||
DRIVER_INIT_MEMBER(sc4_state,sc4dndbb)
|
DRIVER_INIT_MEMBER(sc4_state,sc4dndbb)
|
||||||
{
|
{
|
||||||
|
m_segment_34_encoding = true;
|
||||||
|
|
||||||
DRIVER_INIT_CALL(sc4mbus);
|
DRIVER_INIT_CALL(sc4mbus);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -36337,6 +36363,8 @@ GAMEL( 200?, sc4dndrae ,sc4dndra, sc4_5reel_alt, sc4dndra70, sc4_state, sc4dn
|
|||||||
|
|
||||||
DRIVER_INIT_MEMBER(sc4_state,sc4dndbd)
|
DRIVER_INIT_MEMBER(sc4_state,sc4dndbd)
|
||||||
{
|
{
|
||||||
|
m_segment_34_encoding = true;
|
||||||
|
|
||||||
DRIVER_INIT_CALL(sc4mbus);
|
DRIVER_INIT_CALL(sc4mbus);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -36528,6 +36556,8 @@ GAMEL( 200?, sc4dndbrg ,sc4dndbr, sc4_5reel_alt, sc4dndbr70, sc4_state, sc4dn
|
|||||||
|
|
||||||
DRIVER_INIT_MEMBER(sc4_state,sc4dndcc)
|
DRIVER_INIT_MEMBER(sc4_state,sc4dndcc)
|
||||||
{
|
{
|
||||||
|
m_segment_34_encoding = true;
|
||||||
|
|
||||||
DRIVER_INIT_CALL(sc4mbus);
|
DRIVER_INIT_CALL(sc4mbus);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -36812,6 +36842,8 @@ GAMEL( 200?, sc4dnddfe ,sc4dnddf, sc4_200_alt, sc4dnddf70, sc4_state, sc4dndd
|
|||||||
|
|
||||||
DRIVER_INIT_MEMBER(sc4_state,sc4dndpg)
|
DRIVER_INIT_MEMBER(sc4_state,sc4dndpg)
|
||||||
{
|
{
|
||||||
|
m_segment_34_encoding = true;
|
||||||
|
|
||||||
DRIVER_INIT_CALL(sc4mbus);
|
DRIVER_INIT_CALL(sc4mbus);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -37451,6 +37483,8 @@ GAMEL( 200?, sc4dndben ,sc4dndbe, sc4_5reel_alt, sc4dndbe35, sc4_state, sc4dn
|
|||||||
|
|
||||||
DRIVER_INIT_MEMBER(sc4_state,sc4dndbc)
|
DRIVER_INIT_MEMBER(sc4_state,sc4dndbc)
|
||||||
{
|
{
|
||||||
|
m_segment_34_encoding = true;
|
||||||
|
|
||||||
DRIVER_INIT_CALL(sc4mbus);
|
DRIVER_INIT_CALL(sc4mbus);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -59,6 +59,26 @@
|
|||||||
|
|
||||||
#define SC45_BUTTON_MATRIX_20_0 IPT_SERVICE1 // green / test
|
#define SC45_BUTTON_MATRIX_20_0 IPT_SERVICE1 // green / test
|
||||||
|
|
||||||
|
static const UINT8 SEGMENT_34_ENCODING_LOOKUP[16] =
|
||||||
|
{
|
||||||
|
63, // 0
|
||||||
|
6, // 1
|
||||||
|
91, // 2
|
||||||
|
79, // 3
|
||||||
|
102,// 4
|
||||||
|
109,// 5
|
||||||
|
125,// 6
|
||||||
|
7, // 7
|
||||||
|
127,// 8
|
||||||
|
103,// 9
|
||||||
|
0, // 10
|
||||||
|
121,// 11
|
||||||
|
121,// 12
|
||||||
|
121,// 13
|
||||||
|
121,// 14
|
||||||
|
121,// 15
|
||||||
|
};
|
||||||
|
|
||||||
// common base class for things shared between sc4 and sc5
|
// common base class for things shared between sc4 and sc5
|
||||||
class bfm_sc45_state : public driver_device
|
class bfm_sc45_state : public driver_device
|
||||||
{
|
{
|
||||||
@ -86,6 +106,10 @@ public:
|
|||||||
UINT8 vfd_ser_value;
|
UINT8 vfd_ser_value;
|
||||||
int vfd_ser_count;
|
int vfd_ser_count;
|
||||||
|
|
||||||
|
// 34 segment custom encoding used by some sc4/5 machines such as Box Clever, Break The Bank, The Big Deal, The Crazy Chair, The Perfect Game
|
||||||
|
bool m_segment_34_encoding;
|
||||||
|
UINT8 m_segment_34_cache[32];
|
||||||
|
|
||||||
DECLARE_WRITE8_MEMBER(mux_output_w);
|
DECLARE_WRITE8_MEMBER(mux_output_w);
|
||||||
DECLARE_WRITE8_MEMBER(mux_output2_w);
|
DECLARE_WRITE8_MEMBER(mux_output2_w);
|
||||||
void bfm_sc4_reset_serial_vfd();
|
void bfm_sc4_reset_serial_vfd();
|
||||||
|
Loading…
Reference in New Issue
Block a user