summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/machine/smartboard.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/machine/smartboard.cpp')
-rw-r--r--src/mame/machine/smartboard.cpp158
1 files changed, 92 insertions, 66 deletions
diff --git a/src/mame/machine/smartboard.cpp b/src/mame/machine/smartboard.cpp
index 4288f28044e..18e19087451 100644
--- a/src/mame/machine/smartboard.cpp
+++ b/src/mame/machine/smartboard.cpp
@@ -66,7 +66,7 @@ DEFINE_DEVICE_TYPE(TASC_SB30, tasc_sb30_device, "tasc_sb30", "Tasc SmartBoard SB
// tasc_sb30_device - constructor
//-------------------------------------------------
-tasc_sb30_device::tasc_sb30_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+tasc_sb30_device::tasc_sb30_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
: device_t(mconfig, TASC_SB30, tag, owner, clock)
, m_board(*this, "board")
, m_out_leds(*this, "led_%u%u", 0U, 0U)
@@ -141,10 +141,10 @@ void tasc_sb30_device::init_cb(int state)
}
}
-bool tasc_sb30_device::piece_available(uint8_t id)
+bool tasc_sb30_device::piece_available(u8 id)
{
- for (int y=0; y<8; y++)
- for (int x=0; x<8; x++)
+ for (int y = 0; y < 8; y++)
+ for (int x = 0; x < 8; x++)
{
if (m_board->read_piece(x, y) == id)
return false;
@@ -153,77 +153,103 @@ bool tasc_sb30_device::piece_available(uint8_t id)
return true;
}
-uint8_t tasc_sb30_device::spawn_cb(offs_t offset)
+u8 tasc_sb30_device::spawn_cb(offs_t offset)
{
int piece_id = -1;
- if (offset == 1)
- {
- for (int p = 0; p < 8; p++)
- if (piece_available(1 + SB30_WHITE_PAWN1 + p))
- {
- piece_id = SB30_WHITE_PAWN1 + p;
- break;
- }
- }
- else if (offset == 7)
- {
- for (int p = 0; p < 8; p++)
- if (piece_available(1 + SB30_BLACK_PAWN1 + p))
- {
- piece_id = SB30_BLACK_PAWN1 + p;
- break;
- }
- }
- else if (offset == 2)
- {
- if (piece_available(1 + SB30_WHITE_KNIGHT1)) piece_id = SB30_WHITE_KNIGHT1;
- else if (piece_available(1 + SB30_WHITE_KNIGHT2)) piece_id = SB30_WHITE_KNIGHT2;
- }
- else if (offset == 3)
- {
- if (piece_available(1 + SB30_WHITE_BISHOP1)) piece_id = SB30_WHITE_BISHOP1;
- else if (piece_available(1 + SB30_WHITE_BISHOP2)) piece_id = SB30_WHITE_BISHOP2;
- }
- else if (offset == 4)
- {
- if (piece_available(1 + SB30_WHITE_ROOK1)) piece_id = SB30_WHITE_ROOK1;
- else if (piece_available(1 + SB30_WHITE_ROOK2)) piece_id = SB30_WHITE_ROOK2;
- }
- else if (offset == 5 && piece_available(1 + SB30_WHITE_QUEEN))
- piece_id = SB30_WHITE_QUEEN;
-
- else if (offset == 6 && piece_available(1 + SB30_WHITE_KING))
- piece_id = SB30_WHITE_KING;
-
- else if (offset == 8)
- {
- if (piece_available(1 + SB30_BLACK_KNIGHT1)) piece_id = SB30_BLACK_KNIGHT1;
- else if (piece_available(1 + SB30_BLACK_KNIGHT2)) piece_id = SB30_BLACK_KNIGHT2;
- }
- else if (offset == 9)
- {
- if (piece_available(1 + SB30_BLACK_BISHOP1)) piece_id = SB30_BLACK_BISHOP1;
- else if (piece_available(1 + SB30_BLACK_BISHOP2)) piece_id = SB30_BLACK_BISHOP2;
- }
- else if (offset == 10)
+ switch (offset)
{
- if (piece_available(1 + SB30_BLACK_ROOK1)) piece_id = SB30_BLACK_ROOK1;
- else if (piece_available(1 + SB30_BLACK_ROOK2)) piece_id = SB30_BLACK_ROOK2;
+ case 1+0:
+ for (int p = 0; p < 8; p++)
+ if (piece_available(1 + SB30_WHITE_PAWN1 + p))
+ {
+ piece_id = SB30_WHITE_PAWN1 + p;
+ break;
+ }
+ break;
+
+ case 1+6:
+ for (int p = 0; p < 8; p++)
+ if (piece_available(1 + SB30_BLACK_PAWN1 + p))
+ {
+ piece_id = SB30_BLACK_PAWN1 + p;
+ break;
+ }
+ break;
+
+ case 2+0:
+ if (piece_available(1 + SB30_WHITE_KNIGHT1))
+ piece_id = SB30_WHITE_KNIGHT1;
+ else if (piece_available(1 + SB30_WHITE_KNIGHT2))
+ piece_id = SB30_WHITE_KNIGHT2;
+ break;
+
+ case 2+6:
+ if (piece_available(1 + SB30_BLACK_KNIGHT1))
+ piece_id = SB30_BLACK_KNIGHT1;
+ else if (piece_available(1 + SB30_BLACK_KNIGHT2))
+ piece_id = SB30_BLACK_KNIGHT2;
+ break;
+
+ case 3+0:
+ if (piece_available(1 + SB30_WHITE_BISHOP1))
+ piece_id = SB30_WHITE_BISHOP1;
+ else if (piece_available(1 + SB30_WHITE_BISHOP2))
+ piece_id = SB30_WHITE_BISHOP2;
+ break;
+
+ case 3+6:
+ if (piece_available(1 + SB30_BLACK_BISHOP1))
+ piece_id = SB30_BLACK_BISHOP1;
+ else if (piece_available(1 + SB30_BLACK_BISHOP2))
+ piece_id = SB30_BLACK_BISHOP2;
+ break;
+
+ case 4+0:
+ if (piece_available(1 + SB30_WHITE_ROOK1))
+ piece_id = SB30_WHITE_ROOK1;
+ else if (piece_available(1 + SB30_WHITE_ROOK2))
+ piece_id = SB30_WHITE_ROOK2;
+ break;
+
+ case 4+6:
+ if (piece_available(1 + SB30_BLACK_ROOK1))
+ piece_id = SB30_BLACK_ROOK1;
+ else if (piece_available(1 + SB30_BLACK_ROOK2))
+ piece_id = SB30_BLACK_ROOK2;
+ break;
+
+ case 5+0:
+ if (piece_available(1 + SB30_WHITE_QUEEN))
+ piece_id = SB30_WHITE_QUEEN;
+ break;
+
+ case 5+6:
+ if (piece_available(1 + SB30_BLACK_QUEEN))
+ piece_id = SB30_BLACK_QUEEN;
+ break;
+
+ case 6+0:
+ if (piece_available(1 + SB30_WHITE_KING))
+ piece_id = SB30_WHITE_KING;
+ break;
+
+ case 6+6:
+ if (piece_available(1 + SB30_BLACK_KING))
+ piece_id = SB30_BLACK_KING;
+ break;
+
+ default:
+ break;
}
- else if (offset == 11 && piece_available(1 + SB30_BLACK_QUEEN))
- piece_id = SB30_BLACK_QUEEN;
-
- else if (offset == 12 && piece_available(1 + SB30_BLACK_KING))
- piece_id = SB30_BLACK_KING;
if (piece_id >= 0)
return piece_id + 1;
else
- return 0; // not available
+ return 0; // not available
}
-uint8_t tasc_sb30_device::read()
+u8 tasc_sb30_device::read()
{
if (m_position < 0x40)
{
@@ -232,7 +258,7 @@ uint8_t tasc_sb30_device::read()
int piece_id = m_board->read_sensor(x, y);
// each piece is identified by a single bit in a 32-bit sequence, if multiple bits are active the MSB is used
- uint32_t sb30_id = 0;
+ u32 sb30_id = 0;
if (piece_id > 0)
sb30_id = 1UL << (piece_id - 1);
@@ -242,7 +268,7 @@ uint8_t tasc_sb30_device::read()
return 0;
}
-void tasc_sb30_device::write(uint8_t data)
+void tasc_sb30_device::write(u8 data)
{
if (BIT(data, 3) && !BIT(m_data, 3))
m_position = 0;