diff options
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 |
commit | 00565ee26aa03689606965f1967b4252a610e0d4 (patch) | |
tree | bbb5f4e617248b8e82b25b12974e09e1e4c66119 /src/mame | |
parent | df7f494dbacb218c543eb11c9add8cf1c828171a (diff) |
xforce: fixed display [Robbbert]
Diffstat (limited to 'src/mame')
-rw-r--r-- | src/mame/drivers/techno.c | 75 | ||||
-rw-r--r-- | src/mame/layout/techno.lay | 64 |
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> |