summaryrefslogtreecommitdiffstats
path: root/src/mame/drivers/gumrally.cpp
blob: 456338209794a41257095d58d19500280d1190f1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
// license:BSD-3-Clause
// copyright-holders:

/*
    Gumball Rally (c) 1990(?) Atari

    Electromechanical redemption game
    Video: https://www.youtube.com/watch?v=Q7NljgN72qE
  _____________________________________________________________________________________________________________________________
 |                                                                                                                             |
 |..                                                                                                     _  o o o              |
 |..                                                                                               LED->(_) o o o              |
 |..                                                          __________                    __________      o o o              |
 |..                                                         |ULN_2003A|                   |_TL084CN_|      o o o              |
 |..                  __________   __________                ___________                                                       |
 |..                 SN74LS257BN  SN74LS257BN               |SN74LS273N|  ____   ____                       o o o              |
 |..                                                                    LM358AN LM358AN                     o o o              |
 |..                 ___________   SWITCH      ____________                                                 o o o              |
 |..                |SN74LS273N|  SELF TEST   |VLSI 9012AV|    __________                                   o o o              |
 |..                                          |___________|   SN74LS166AN                                                      |
 |..   ___________      __________   __________   __________   __________   __________   ______________                        |
 |    GAL16V8A-25LP    |SN74LS138N  |SN74LS138N  SN74LS163AN  SN74LS163AN  |SN74LS393N  | YM2149F     |                        |
 |                    ____________                _                                     |_____________|                        |
 |                   |KM28C16-20 |               (_)<-LED                   __________                                         |
 |..                 |___________|   __________   __________   __________  |_74LS04N_|                                         |
 |..   ____________   ____________  |_74LS08N_|  |_74LS197N|  |74LS163AN|   ______________   _____                             |
 |..  |HY6264LP-85|  |HY6264LP-85|   __________   __________   __________  | EEPROM      |  | OKI | Xtal                       |
 |..  |___________|  |___________|  |SN74LS163AN GAL16V8A-25LP SN74LS74AN  |_____________|  |M6295| 14.318                     |
 |..   ____________   ____________   __________   __________   __________   ______________  |_____|      __________            |
 |..  | EEPROM    |  | EEPROM    |  |_74LS04N_|  SN74LS374AN  |SN74LS86N|  | EEPROM      |              |_7408N___|            |
 |..  |___________|  |___________|   __________   __________   __________  |_____________|  __________   __________            |
 |..   ___________________________  |SN74LS32N|  |SN74LS273N  SN74LS163AN   ______________ |_GD74LS00|  |_7406N___|   ____     |
 |..  | Motorola MC68000P8       |   __________   __________   __________  | EEPROM      |  __________   __________  LM358AN   |
 |..  |                          |  |_74LS20N_|  SN74LS163AN  SN74LS163AN  |_____________| |SN74LS32N|  |SN74LS74AN            |
 |..  |__________________________|                __________   __________   ______________  __________                         |
 |..                                             |SN74LS273N  SN74LS163AN  | EEPROM      | |SN74LS74AN                         |
 |                                                                         |_____________|                                     |
 |_____________________________________________________________________________________________________________________________|

    Main PCB marked Atari Games @ 90 Gumball Rally Main
    Main components:
    1 x MC68000P8
    2 x M27512FI main CPU ROMs
    4 x TMS 27C512 OKI ROMs
    2 x HY6264LP RAMs
    2 x GAL16V8A
    1 x KM28C16 EEPROM
    1 x VLSI VGC7205A0672 ATARI 137304-2002
    1 x YM2149F
    1 x OKI M6295
    1 x 14.318MHz Osc (near sound chips)
    1 x selftest switch
    no dips

    The manual also lists the following PCBs:
    Bar Graph Display PCB with 16 x 7-segment displays
    Score Display PCB with 16 x 7-segment displays
    Display Blanking PCB
    APB Triac PCB
    Steering Wheel PCB

    TODO:
    - everything.
*/

#include "emu.h"

#include "cpu/m68000/m68000.h"
#include "machine/eeprompar.h"
#include "sound/ay8910.h"
#include "sound/okim6295.h"

#include "speaker.h"


namespace {

class gumrally_state : public driver_device
{
public:
	gumrally_state(const machine_config &mconfig, device_type type, const char *tag)
		: driver_device(mconfig, type, tag),
		m_maincpu(*this, "maincpu")
	{ }

	void gumrally(machine_config &config);

private:
	required_device<cpu_device> m_maincpu;

	void prg_map(address_map &map);
};


void gumrally_state::prg_map(address_map &map)
{
	map(0x000000, 0x01ffff).rom().region("maincpu", 0);
}


static INPUT_PORTS_START( gumrally )
INPUT_PORTS_END


void gumrally_state::gumrally(machine_config &config)
{
	// basic machine hardware
	M68000(config, m_maincpu, 14'318'000); // clock not verified
	m_maincpu->set_addrmap(AS_PROGRAM, &gumrally_state::prg_map);

	EEPROM_2816(config, "eeprom");

	// video hardware
	// TODO

	// sound hardware
	SPEAKER(config, "mono").front_center();

	YM2149(config, "ym", 14'318'000 / 12).add_route(ALL_OUTPUTS, "mono", 0.3); // clock not verified

	OKIM6295(config, "oki", 14'318'000 / 12, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.5); // clock and pin not verified
}


ROM_START( gumrally )
	ROM_REGION( 0x20000, "maincpu", 0 )
	ROM_LOAD16_BYTE( "gum_4002.c10", 0x00000, 0x10000, CRC(d02a6149) SHA1(80d5242f6469e406523aba07e3b8f08ec01b4275) ) // 1xxxxxxxxxxxxxxx = 0x00
	ROM_LOAD16_BYTE( "gum_4008.c8",  0x00001, 0x10000, CRC(1dd18740) SHA1(692c96e979be906d90852bd1fbe85973ddd0c74f) ) // 1xxxxxxxxxxxxxxx = 0x00

	ROM_REGION( 0x40000, "oki", 0 )
	ROM_LOAD( "061490_1990_atari_136080_1004_cs_52b2.a4", 0x00000, 0x10000, CRC(4a7b5633) SHA1(c08a5557136565317a42e718ec869e8439e117ec) )
	ROM_LOAD( "061490_1990_atari_136080_1005_cs_f7a2.b4", 0x10000, 0x10000, CRC(f0d72b71) SHA1(f92e5ad2255b97e630b3bdbc599f062c84a208f9) )
	ROM_LOAD( "061490_1990_atari_136080_1006_cs_ffda.d4", 0x20000, 0x10000, CRC(e4854f24) SHA1(f1f4ef6b11eb7f4ece8cac8af1076b97517b70de) )
	ROM_LOAD( "061490_1990_atari_136080_1007_cs_b0b4.e4", 0x30000, 0x10000, CRC(1dee18e3) SHA1(aeb1e762d2e6bece68a1135fd36ae24c5acb3a5e) )

	ROM_REGION( 0x400, "plds", 0 )
	ROM_LOAD( "36080-1000_gal16v8a.10h", 0x000, 0x117, CRC(1fcb654c) SHA1(17f2b812e8049134ebfc63d1564ccc975eec9f21) )
	ROM_LOAD( "36080-1001_gal16v8a.6e",  0x200, 0x117, CRC(46345b41) SHA1(22864ad5bf99fad514d774dd2934b9cf3249b5c7) )
ROM_END

} // Anonymous namespace


GAME( 1990, gumrally, 0, gumrally, gumrally, gumrally_state, empty_init, ROT0, "Atari Games", "Gumball Rally", MACHINE_IS_SKELETON_MECHANICAL ) // year taken from labels on OKI ROMs