summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame
diff options
context:
space:
mode:
author Robbbert <robbbert@users.noreply.github.com>2012-09-09 07:47:20 +0000
committer Robbbert <robbbert@users.noreply.github.com>2012-09-09 07:47:20 +0000
commit00565ee26aa03689606965f1967b4252a610e0d4 (patch)
treebbb5f4e617248b8e82b25b12974e09e1e4c66119 /src/mame
parentdf7f494dbacb218c543eb11c9add8cf1c828171a (diff)
xforce: fixed display [Robbbert]
Diffstat (limited to 'src/mame')
-rw-r--r--src/mame/drivers/techno.c75
-rw-r--r--src/mame/layout/techno.lay64
2 files changed, 96 insertions, 43 deletions
diff --git a/src/mame/drivers/techno.c b/src/mame/drivers/techno.c
index b329267d65a..44c729c6ea2 100644
--- a/src/mame/drivers/techno.c
+++ b/src/mame/drivers/techno.c
@@ -10,6 +10,8 @@
#include "emu.h"
#include "cpu/m68000/m68000.h"
#include "techno.lh"
+// schematic says 8MHz but it goes too fast
+#define TECHNO_MAINCLK 4e6
class techno_state : public driver_device
{
@@ -19,8 +21,16 @@ public:
m_maincpu(*this, "maincpu")
{ }
+ DECLARE_READ16_MEMBER(key_r);
+ DECLARE_READ16_MEMBER(rtrg_r);
+ DECLARE_READ16_MEMBER(sound_r);
DECLARE_WRITE16_MEMBER(disp1_w);
DECLARE_WRITE16_MEMBER(disp2_w);
+ DECLARE_WRITE16_MEMBER(lamp1_w);
+ DECLARE_WRITE16_MEMBER(lamp2_w);
+ DECLARE_WRITE16_MEMBER(setout_w);
+ DECLARE_WRITE16_MEMBER(sol1_w);
+ DECLARE_WRITE16_MEMBER(sol2_w);
DECLARE_WRITE16_MEMBER(sound_w);
UINT16 m_digit_1;
UINT16 m_digit_2;
@@ -44,16 +54,16 @@ public:
static ADDRESS_MAP_START( techno_map, AS_PROGRAM, 16, techno_state )
ADDRESS_MAP_GLOBAL_MASK(0x1ffff)
AM_RANGE(0x00000, 0x03fff) AM_ROM
- AM_RANGE(0x04000, 0x05fff) AM_RAM // battery backed-up
+ AM_RANGE(0x04000, 0x04fff) AM_RAM // battery backed-up
AM_RANGE(0x06000, 0x0ffff) AM_ROM
- //AM_RANGE(0x14000, 0x147ff) AM_READWRITE(key_r,lamp1_w)
- //AM_RANGE(0x14800, 0x14fff) AM_READWRITE(sound_r,lamp2_w)
- //AM_RANGE(0x15000, 0x157ff) AM_READWRITE(rtrg_r,sol1_w)
- //AM_RANGE(0x15800, 0x15fff) AM_WRITE(sol2_w)
+ AM_RANGE(0x14000, 0x147ff) AM_READWRITE(key_r,lamp1_w)
+ AM_RANGE(0x14800, 0x14fff) AM_READWRITE(sound_r,lamp2_w)
+ AM_RANGE(0x15000, 0x157ff) AM_READWRITE(rtrg_r,sol1_w)
+ AM_RANGE(0x15800, 0x15fff) AM_READNOP AM_WRITE(sol2_w) // reads from 15800, but shown as not connected
AM_RANGE(0x16000, 0x167ff) AM_WRITE(sound_w)
AM_RANGE(0x16800, 0x16fff) AM_WRITE(disp1_w)
AM_RANGE(0x17000, 0x177ff) AM_WRITE(disp2_w)
- //AM_RANGE(0x17800, 0x17fff) AM_WRITE(setout_w)
+ AM_RANGE(0x17800, 0x17fff) AM_WRITE(setout_w)
ADDRESS_MAP_END
//static ADDRESS_MAP_START( techno_sub_map, AS_IO, 8, techno_state )
@@ -66,13 +76,13 @@ ADDRESS_MAP_END
WRITE16_MEMBER( techno_state::disp1_w )
{
- m_segment_1 = data;
+ m_segment_1 = BITSWAP16(data, 12, 10, 8, 14, 13, 9, 11, 15, 7, 6, 5, 4, 3, 2, 1, 0);
output_set_digit_value(m_digit_1, m_segment_1);
}
WRITE16_MEMBER( techno_state::disp2_w )
{
- m_segment_2 = data;
+ m_segment_2 = BITSWAP16(data, 12, 10, 8, 14, 13, 9, 11, 15, 7, 6, 5, 4, 3, 2, 1, 0);
output_set_digit_value(m_digit_1+30, m_segment_2);
}
@@ -88,6 +98,49 @@ WRITE16_MEMBER( techno_state::sound_w )
}
}
+// lamps & keymatrix
+WRITE16_MEMBER( techno_state::lamp1_w )
+{
+}
+
+// more lamps
+WRITE16_MEMBER( techno_state::lamp2_w )
+{
+}
+
+// solenoids
+WRITE16_MEMBER( techno_state::sol1_w )
+{
+}
+
+// more solenoids
+WRITE16_MEMBER( techno_state::sol2_w )
+{
+}
+
+// unknown
+WRITE16_MEMBER( techno_state::setout_w )
+{
+}
+
+// inputs
+READ16_MEMBER( techno_state::key_r )
+{
+ return 0;
+}
+
+// unknown
+READ16_MEMBER( techno_state::rtrg_r )
+{
+ return 0xffff;
+}
+
+// feedback from sound board, and some AUX inputs
+READ16_MEMBER( techno_state::sound_r )
+{
+ return 0xffff;
+}
+
static INPUT_PORTS_START( techno )
INPUT_PORTS_END
@@ -98,8 +151,8 @@ static INTERRUPT_GEN( techno_intgen )
if ((state->m_vector & 7) == 7)
state->m_vector = (state->m_vector ^ 0x10) & 0x97;
state->m_vector++;
+ // core doesn't support clearing of irq via hardware
generic_pulse_irq_line_and_vector(device, 1, state->m_vector, 1);
- //device_set_input_line_and_vector(device, 1, ASSERT_LINE, state->m_vector);
}
void techno_state::machine_reset()
@@ -113,9 +166,9 @@ DRIVER_INIT_MEMBER(techno_state,techno)
static MACHINE_CONFIG_START( techno, techno_state )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", M68000, 8000000)
+ MCFG_CPU_ADD("maincpu", M68000, TECHNO_MAINCLK)
MCFG_CPU_PROGRAM_MAP(techno_map)
- MCFG_CPU_PERIODIC_INT(techno_intgen, 8000000/256) // 31250Hz
+ MCFG_CPU_PERIODIC_INT(techno_intgen, TECHNO_MAINCLK/256) // 31250Hz
//MCFG_CPU_ADD("cpu2", TMS7000, 4000000)
//MCFG_CPU_PROGRAM_MAP(techno_sub_map)
diff --git a/src/mame/layout/techno.lay b/src/mame/layout/techno.lay
index 1c18626a66c..7fe25763fd2 100644
--- a/src/mame/layout/techno.lay
+++ b/src/mame/layout/techno.lay
@@ -28,103 +28,103 @@
<!-- Top Row -->
- <bezel name="digit15" element="digit">
+ <bezel name="digit0" element="digit">
<bounds left="10" top="45" right="44" bottom="84" />
</bezel>
- <bezel name="digit14" element="digit">
+ <bezel name="digit1" element="digit">
<bounds left="54" top="45" right="88" bottom="84" />
</bezel>
- <bezel name="digit13" element="digit">
+ <bezel name="digit6" element="digit">
<bounds left="98" top="45" right="132" bottom="84" />
</bezel>
- <bezel name="digit12" element="digit">
+ <bezel name="digit7" element="digit">
<bounds left="142" top="45" right="176" bottom="84" />
</bezel>
- <bezel name="digit11" element="digit">
+ <bezel name="digit12" element="digit">
<bounds left="186" top="45" right="220" bottom="84" />
</bezel>
- <bezel name="digit10" element="digit">
+ <bezel name="digit13" element="digit">
<bounds left="230" top="45" right="264" bottom="84" />
</bezel>
- <bezel name="digit9" element="digit">
+ <bezel name="digit2" element="digit">
<bounds left="274" top="45" right="308" bottom="84" />
</bezel>
- <bezel name="digit8" element="digit">
+ <bezel name="digit3" element="digit">
<bounds left="318" top="45" right="352" bottom="84" />
</bezel>
- <bezel name="digit7" element="digit">
+ <bezel name="digit8" element="digit">
<bounds left="362" top="45" right="396" bottom="84" />
</bezel>
- <bezel name="digit6" element="digit">
+ <bezel name="digit9" element="digit">
<bounds left="406" top="45" right="440" bottom="84" />
</bezel>
- <bezel name="digit5" element="digit">
+ <bezel name="digit14" element="digit">
<bounds left="450" top="45" right="484" bottom="84" />
</bezel>
- <bezel name="digit4" element="digit">
+ <bezel name="digit15" element="digit">
<bounds left="494" top="45" right="528" bottom="84" />
</bezel>
- <bezel name="digit3" element="digit">
+ <bezel name="digit4" element="digit">
<bounds left="538" top="45" right="572" bottom="84" />
</bezel>
- <bezel name="digit2" element="digit">
+ <bezel name="digit5" element="digit">
<bounds left="582" top="45" right="616" bottom="84" />
</bezel>
- <bezel name="digit1" element="digit">
+ <bezel name="digit10" element="digit">
<bounds left="626" top="45" right="660" bottom="84" />
</bezel>
- <bezel name="digit0" element="digit">
+ <bezel name="digit11" element="digit">
<bounds left="670" top="45" right="704" bottom="84" />
</bezel>
<!-- Bottom Row -->
- <bezel name="digit45" element="digit">
+ <bezel name="digit30" element="digit">
<bounds left="10" top="105" right="44" bottom="144" />
</bezel>
- <bezel name="digit44" element="digit">
+ <bezel name="digit31" element="digit">
<bounds left="54" top="105" right="88" bottom="144" />
</bezel>
- <bezel name="digit43" element="digit">
+ <bezel name="digit36" element="digit">
<bounds left="98" top="105" right="132" bottom="144" />
</bezel>
- <bezel name="digit42" element="digit">
+ <bezel name="digit37" element="digit">
<bounds left="142" top="105" right="176" bottom="144" />
</bezel>
- <bezel name="digit41" element="digit">
+ <bezel name="digit42" element="digit">
<bounds left="186" top="105" right="220" bottom="144" />
</bezel>
- <bezel name="digit40" element="digit">
+ <bezel name="digit43" element="digit">
<bounds left="230" top="105" right="264" bottom="144" />
</bezel>
- <bezel name="digit39" element="digit">
+ <bezel name="digit32" element="digit">
<bounds left="274" top="105" right="308" bottom="144" />
</bezel>
- <bezel name="digit38" element="digit">
+ <bezel name="digit33" element="digit">
<bounds left="318" top="105" right="352" bottom="144" />
</bezel>
- <bezel name="digit37" element="digit">
+ <bezel name="digit38" element="digit">
<bounds left="362" top="105" right="396" bottom="144" />
</bezel>
- <bezel name="digit36" element="digit">
+ <bezel name="digit39" element="digit">
<bounds left="406" top="105" right="440" bottom="144" />
</bezel>
- <bezel name="digit35" element="digit">
+ <bezel name="digit44" element="digit">
<bounds left="450" top="105" right="484" bottom="144" />
</bezel>
- <bezel name="digit34" element="digit">
+ <bezel name="digit45" element="digit">
<bounds left="494" top="105" right="528" bottom="144" />
</bezel>
- <bezel name="digit33" element="digit">
+ <bezel name="digit34" element="digit">
<bounds left="538" top="105" right="572" bottom="144" />
</bezel>
- <bezel name="digit32" element="digit">
+ <bezel name="digit35" element="digit">
<bounds left="582" top="105" right="616" bottom="144" />
</bezel>
- <bezel name="digit31" element="digit">
+ <bezel name="digit40" element="digit">
<bounds left="626" top="105" right="660" bottom="144" />
</bezel>
- <bezel name="digit30" element="digit">
+ <bezel name="digit41" element="digit">
<bounds left="670" top="105" right="704" bottom="144" />
</bezel>
</view>