FIREBIRD - more wip

This commit is contained in:
Robbbert 2012-10-03 16:29:31 +00:00
parent b98028ac50
commit 7cfa4f95bf
4 changed files with 242 additions and 6 deletions

1
.gitattributes vendored
View File

@ -4363,6 +4363,7 @@ src/mame/layout/neogeo.lay svneol=native#text/plain
src/mame/layout/noraut11.lay svneol=native#text/plain
src/mame/layout/noraut12.lay svneol=native#text/plain
src/mame/layout/novoplay.lay svneol=native#text/plain
src/mame/layout/nsm.lay svneol=native#text/plain
src/mame/layout/outrun.lay svneol=native#text/plain
src/mame/layout/overdriv.lay svneol=native#text/plain
src/mame/layout/paradice.lay svneol=native#text/plain

View File

@ -3,12 +3,20 @@
Pinball
NSM (Lowen) : Hot Fire Birds
Schematic and PinMAME used as references
Everything in this machine is controlled by a serial bus based on the
processor's CRU pins (serial i/o). It needs a T.I. specialist to get this
working.
*********************************************************************************/
#include "emu.h"
#include "cpu/tms9900/tms9900l.h"
#include "sound/ay8910.h"
#include "machine/nvram.h"
#include "nsm.lh"
class nsm_state : public driver_device
{
@ -19,6 +27,8 @@ public:
{ }
DECLARE_READ8_MEMBER(ff_r);
DECLARE_WRITE8_MEMBER(cru_w);
DECLARE_WRITE8_MEMBER(oe_w);
protected:
// devices
@ -26,6 +36,9 @@ protected:
// driver_device overrides
virtual void machine_reset();
private:
UINT8 m_cru_data[9];
UINT8 m_cru_count;
public:
DECLARE_DRIVER_INIT(nsm);
};
@ -41,18 +54,62 @@ static ADDRESS_MAP_START( nsm_map, AS_PROGRAM, 8, nsm_state )
ADDRESS_MAP_END
static ADDRESS_MAP_START( nsm_io_map, AS_IO, 8, nsm_state )
AM_RANGE(0x0000, 0x0001) AM_READ(ff_r)
AM_RANGE(0x0010, 0x0011) AM_READNOP
AM_RANGE(0x0060, 0x0061) AM_READNOP
// 00-71 selected by IC600 (74LS151)
AM_RANGE(0x0000, 0x0001) AM_READ(ff_r) // 5v supply
AM_RANGE(0x0010, 0x0011) AM_READNOP // antenna
AM_RANGE(0x0020, 0x0021) AM_READNOP // reset circuit
AM_RANGE(0x0030, 0x0031) AM_READ(ff_r) // service plug
AM_RANGE(0x0040, 0x0041) AM_READ(ff_r) // service plug
AM_RANGE(0x0050, 0x0051) AM_READ(ff_r) // test of internal battery
AM_RANGE(0x0060, 0x0061) AM_READ(ff_r) // sum of analog outputs of ay2
AM_RANGE(0x0070, 0x0071) AM_READNOP // serial data in
AM_RANGE(0x0f70, 0x0f7d) AM_WRITENOP
AM_RANGE(0x0fe4, 0x0fff) AM_READNOP
AM_RANGE(0x7f80, 0x7fd1) AM_WRITENOP
AM_RANGE(0x7fb0, 0x7fbf) AM_WRITE(cru_w)
AM_RANGE(0x7fd0, 0x7fd1) AM_WRITE(oe_w)
ADDRESS_MAP_END
static INPUT_PORTS_START( nsm )
INPUT_PORTS_END
READ8_MEMBER( nsm_state::ff_r ) { return 0xff; }
READ8_MEMBER( nsm_state::ff_r ) { return 1; }
WRITE8_MEMBER( nsm_state::oe_w )
{
m_cru_count = 0;
}
WRITE8_MEMBER( nsm_state::cru_w )
{
UINT8 i,j;
int segments;
for (i = 1; i < 9;i++)
m_cru_data[i] = (m_cru_data[i] >> 1) | (BIT(m_cru_data[i-1], 0) ? 0x80 : 0);
m_cru_data[0] = (m_cru_data[0] >> 1) | (BIT(data, 0) ? 0x80 : 0);
m_cru_count++;
if (m_cru_count == 72)
{
m_cru_count = 0;
//for (i = 0; i < 8; i++) printf("%02X ",m_cru_data[i]);printf("\n");
for (i = 0; i < 8; i++)
{
if (BIT(m_cru_data[0], i))
{
for (j = 0; j < 5; j++)
{
segments = m_cru_data[8-j]^0xff;
output_set_digit_value(j * 10 + i, BITSWAP16(segments, 8, 8, 8, 8, 8, 8, 7, 7, 6, 6, 5, 4, 3, 2, 1, 0));
}
}
}
}
}
void nsm_state::machine_reset()
{
@ -68,6 +125,9 @@ static MACHINE_CONFIG_START( nsm, nsm_state )
MCFG_CPU_PROGRAM_MAP(nsm_map)
MCFG_CPU_IO_MAP(nsm_io_map)
/* Video */
MCFG_DEFAULT_LAYOUT(layout_nsm)
/* Sound */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_SOUND_ADD("ay1", AY8912, 11052000/8)
@ -98,4 +158,4 @@ ROM_END
/ The Games (1985)
/-------------------------------------------------------------------*/
GAME(1985, firebird, 0, nsm, nsm, nsm_state, nsm, ROT0, "NSM", "Hot Fire Birds", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_MECHANICAL)
GAME(1985, firebird, 0, nsm, nsm, nsm_state, nsm, ROT0, "NSM", "Hot Fire Birds", GAME_NOT_WORKING | GAME_MECHANICAL)

173
src/mame/layout/nsm.lay Normal file
View File

@ -0,0 +1,173 @@
<!-- nsm.lay -->
<!-- 2012-10-04: Initial version. [Robbbert] -->
<mamelayout version="2">
<element name="digit" defstate="0">
<led14seg>
<color red="0.0" green="0.75" blue="0.0" />
</led14seg>
</element>
<element name="background">
<rect>
<bounds left="0" top="0" right="1" bottom="1" />
<color red="0.0" green="0.0" blue="0.0" />
</rect>
</element>
<element name="P0"><text string="Ball / Match"><color red="1.0" green="1.0" blue="1.0" /></text></element>
<element name="P1"><text string="Credits"><color red="1.0" green="1.0" blue="1.0" /></text></element>
<element name="P3"><text string="Player 1"><color red="1.0" green="1.0" blue="1.0" /></text></element>
<element name="P4"><text string="Player 2"><color red="1.0" green="1.0" blue="1.0" /></text></element>
<element name="P5"><text string="Player 3"><color red="1.0" green="1.0" blue="1.0" /></text></element>
<element name="P6"><text string="Player 4"><color red="1.0" green="1.0" blue="1.0" /></text></element>
<view name="Default Layout">
<!-- Background -->
<backdrop element="background">
<bounds left="0" top="20" right="318" bottom="394" />
</backdrop>
<!-- Flourescent Displays -->
<!-- Player 1 Score -->
<bezel name="digit10" element="digit">
<bounds left="10" top="45" right="44" bottom="84" />
</bezel>
<bezel name="digit11" element="digit">
<bounds left="54" top="45" right="88" bottom="84" />
</bezel>
<bezel name="digit12" element="digit">
<bounds left="98" top="45" right="132" bottom="84" />
</bezel>
<bezel name="digit13" element="digit">
<bounds left="142" top="45" right="176" bottom="84" />
</bezel>
<bezel name="digit14" element="digit">
<bounds left="186" top="45" right="220" bottom="84" />
</bezel>
<bezel name="digit15" element="digit">
<bounds left="230" top="45" right="264" bottom="84" />
</bezel>
<bezel name="digit16" element="digit">
<bounds left="274" top="45" right="308" bottom="84" />
</bezel>
<bezel name="digit17" element="digit">
<bounds left="318" top="45" right="352" bottom="84" />
</bezel>
<!-- Player 2 Score -->
<bezel name="digit30" element="digit">
<bounds left="10" top="105" right="44" bottom="144" />
</bezel>
<bezel name="digit31" element="digit">
<bounds left="54" top="105" right="88" bottom="144" />
</bezel>
<bezel name="digit32" element="digit">
<bounds left="98" top="105" right="132" bottom="144" />
</bezel>
<bezel name="digit33" element="digit">
<bounds left="142" top="105" right="176" bottom="144" />
</bezel>
<bezel name="digit34" element="digit">
<bounds left="186" top="105" right="220" bottom="144" />
</bezel>
<bezel name="digit35" element="digit">
<bounds left="230" top="105" right="264" bottom="144" />
</bezel>
<bezel name="digit36" element="digit">
<bounds left="274" top="105" right="308" bottom="144" />
</bezel>
<bezel name="digit37" element="digit">
<bounds left="318" top="105" right="352" bottom="144" />
</bezel>
<!-- Player 3 Score -->
<bezel name="digit20" element="digit">
<bounds left="10" top="165" right="44" bottom="204" />
</bezel>
<bezel name="digit21" element="digit">
<bounds left="54" top="165" right="88" bottom="204" />
</bezel>
<bezel name="digit22" element="digit">
<bounds left="98" top="165" right="132" bottom="204" />
</bezel>
<bezel name="digit23" element="digit">
<bounds left="142" top="165" right="176" bottom="204" />
</bezel>
<bezel name="digit24" element="digit">
<bounds left="186" top="165" right="220" bottom="204" />
</bezel>
<bezel name="digit25" element="digit">
<bounds left="230" top="165" right="264" bottom="204" />
</bezel>
<bezel name="digit26" element="digit">
<bounds left="274" top="165" right="308" bottom="204" />
</bezel>
<bezel name="digit27" element="digit">
<bounds left="318" top="165" right="352" bottom="204" />
</bezel>
<!-- Player 4 Score -->
<bezel name="digit40" element="digit">
<bounds left="10" top="225" right="44" bottom="264" />
</bezel>
<bezel name="digit41" element="digit">
<bounds left="54" top="225" right="88" bottom="264" />
</bezel>
<bezel name="digit42" element="digit">
<bounds left="98" top="225" right="132" bottom="264" />
</bezel>
<bezel name="digit43" element="digit">
<bounds left="142" top="225" right="176" bottom="264" />
</bezel>
<bezel name="digit44" element="digit">
<bounds left="186" top="225" right="220" bottom="264" />
</bezel>
<bezel name="digit45" element="digit">
<bounds left="230" top="225" right="264" bottom="264" />
</bezel>
<bezel name="digit46" element="digit">
<bounds left="274" top="225" right="308" bottom="264" />
</bezel>
<bezel name="digit47" element="digit">
<bounds left="318" top="225" right="352" bottom="264" />
</bezel>
<!-- Credits and Balls -->
<bezel name="digit0" element="digit">
<bounds left="10" top="345" right="44" bottom="384" />
</bezel>
<bezel name="digit1" element="digit">
<bounds left="54" top="345" right="88" bottom="384" />
</bezel>
<bezel name="digit2" element="digit">
<bounds left="98" top="345" right="132" bottom="384" />
</bezel>
<bezel name="digit3" element="digit">
<bounds left="142" top="345" right="176" bottom="384" />
</bezel>
<bezel name="digit4" element="digit">
<bounds left="186" top="345" right="220" bottom="384" />
</bezel>
<bezel name="digit5" element="digit">
<bounds left="230" top="345" right="264" bottom="384" />
</bezel>
<bezel name="digit6" element="digit">
<bounds left="274" top="345" right="308" bottom="384" />
</bezel>
<bezel name="digit7" element="digit">
<bounds left="318" top="345" right="352" bottom="384" />
</bezel>
<bezel element="P0"><bounds left="100" right="180" top="330" bottom="342" /></bezel>
<bezel element="P1"><bounds left="30" right="88" top="330" bottom="342" /></bezel>
<bezel element="P3"><bounds left="120" right="200" top="30" bottom="42" /></bezel>
<bezel element="P4"><bounds left="120" right="200" top="90" bottom="102" /></bezel>
<bezel element="P5"><bounds left="120" right="200" top="150" bottom="162" /></bezel>
<bezel element="P6"><bounds left="120" right="200" top="210" bottom="222" /></bezel>
</view>
</mamelayout>

View File

@ -2158,6 +2158,8 @@ $(DRIVERS)/neogeo.o: $(LAYOUT)/neogeo.lh
$(DRIVERS)/norautp.o: $(LAYOUT)/noraut11.lh \
$(LAYOUT)/noraut12.lh
$(DRIVERS)/nsm.o: $(LAYOUT)/nsm.lh
$(DRIVERS)/overdriv.o: $(LAYOUT)/overdriv.lh
$(DRIVERS)/peplus.o: $(LAYOUT)/peplus.lh \