Previous 199869 Revisions Next

r32411 Friday 26th September, 2014 at 18:07:54 UTC by hap
er, pretend you didnt see that
[src/mame/drivers]taitojc.c
[src/mame/video]taitojc.c

trunk/src/mame/video/taitojc.c
r32410r32411
364364   if (level != output_get_value("counter0"))
365365      output_set_value("counter0", level);
366366
367   btn = (ioport("ANALOG1")->read() & 0xff);
367   btn = m_analog_inp[0]->read_safe(0) & 0xff;
368368   for (level = 10; level > 0; level--)
369369      if (btn >= dendego_brake_table[level]) break;
370370
trunk/src/mame/drivers/taitojc.c
r32410r32411
22
33  Taito JC System
44
5  functions to emulate the video hardware
5  Driver by Ville Linde, based on the preliminary driver by David Haywood
66
7*************************************************************************/
7Taito custom chips on this hardware:
8- TC0640FIO      : I/O
9- TC0770CMU      : Math co-processor?
10- TC0780FPA x 2  : Polygon/Texture renderer?
11- TC0840GLU      : 2D graphics?
12- TC0870HVP      : Vertex processor?
813
14TODO:
15- games are running at wrong speed(unthrottled?) compared to pcb recordings, easily noticeable on sidebs/sidebs2,
16  for example the selection screens are too fast, and the driving is almost twice as slow
17- dendego intro object RAM usage has various gfx bugs (check video file)
18- dendego title screen builds up and it shouldn't
19- dendego attract mode train doesn't ride, demo mode doesn't set the throttle, but it does set the brake pressure
20- landgear has some weird crashes (after playing one round, after a couple of loops in attract mode) (needs testing -AS)
21- landgear has huge 3d problems on gameplay (CPU comms?)
22- dangcurv DSP program crashes very soon, so no 3d is currently shown. - due to undumped rom? maybe not?
23- add idle skips if possible
24
25BTANB:
26- incorrect perspective textures, visible when close to the camera such as sidebs rear-view mirror
27
28--------------------------------------------------------------------------
29
30PCB notes:
31
32
33Side By Side 2
34Taito, 1997
35
36This game runs on Taito JC System hardware
37
38PCB Layout
39----------
40
41Top board: MOTHER PCB-C K11X0838A  M43E0325A
42|---------------------------------------------------------------------------------|
43|                                                                 43256           |
44|54MHz                                   E23-32-1.51              43256           |
45|         424210 424210                                           43256           |
46|                      E23-29.39                                                  |
47|E23-25-1.3 TC0870HVP             E23-31.46                                       |
48|           (QFP208)   E23-30.40             E23-34.72      93C46.87              |
49|E23-26.4                                                                         |
50|                              MC68040RC25            CXD1178Q    TC0640FIO       |
51|424260     TMS320C51          (PGA TYPE)                         (QFP120)        |
52|           (QFP132)                                                              |
53|           labelled                                              TEST_SW         |
54|424260     "Taito E07-11"                                      MB3771   RESET_SW |
55|                                  E23-33.53                                      |
56|                                             CY7B991       MB8421-90             |
57|4218160    43256                    CY7B991                                      |
58|                                                                                 |
59|           43256        TC0770CMU                          E23-35.110            |
60|4218160                 (QFP208)                                                 |
61|                                    10MHz    MC68EC000     LC321664AJ-80         |
62|E23-27.13  TC0780FPA                                                             |
63|           (QFP240)                                        ENSONIC               |
64|                      D482445                TC51832       ESPR6 ES5510          |
65|                                             TC51832                             |
66|4218160               D482445                                                    |
67|                                 TC0840GLU                 MC33274   TDA1543     |
68|                      D482445    (QFP144)                                        |
69|4218160                                      16MHz         MB87078               |
70|           TC0780FPA  D482445           30.4761MHz                               |
71|           (QFP240)              ENSONIC                                         |
72|E23-28.18                        OTISR2                                          |
73|                                                                                 |
74|---------------------------------------------------------------------------------|
75
76Notes:
77      All 3K files are PALs type PALCE 16V8 and saved in Jedec format.
78
79
80Bottom board: JCG DAUGHTERL PCB-C K91E0677A
81|---------------------------------------------------------------------------------|
82|                                                                                 |
83|                                                                                 |
84|                    E38-19.30  E38-20.31                                         |
85|                                                                                 |
86|                                                                                 |
87|                                                                                 |
88|                                                                                 |
89|                                                                                 |
90|  E38-01.5   E38-09.18   E23-15.32                                               |
91|                                                                                 |
92|  E38-02.6   E38-10.19   E38-17.33                                               |
93|                                                                                 |
94|  E38-03.7   E38-11.20   E38-18.34                     E17-23.65                 |
95|                                                                                 |
96|  E38-04.8   E38-12.21   E38-21.35                     TC5563                    |
97|                                                                                 |
98|  E38-05.9   E38-13.22   SBS2_P0.36                       MC68HC11M0             |
99|                                                          (QFP80)                |
100|  E38-06.10  E38-14.23   SBS2_P1.37                                              |
101|                                                                                 |
102|  E38-07.11  E38-15.24   SBS2_P2.38                                              |
103|                                                          E23-37.69              |
104|  E38-08.12  E38-16.25   SBS2_P3.39                             SMC_COM20020I    |
105|                                                                                 |
106|                                                                                 |
107|                                                      E23-38.73                  |
108|                                                                                 |
109|                                                                                 |
110|                                                                                 |
111|                                                                                 |
112|                                                                                 |
113|---------------------------------------------------------------------------------|
114
115Notes:
116      All 3K files are PALs type PALCE 16V8 and saved in Jedec format.
117      ROMs .36-.39 are 27C4001, main program.
118      ROMs .5-.7, .9-.12, .18-.20, .22-.25 are 16M MASK, graphics.
119      ROMs .32-.35 are 16M MASK, ES5505 samples.
120      ROMs .8 and .21 are 4M MASK, graphics.
121      ROMs .30-.31 are 27C2001, 68000 sound program.
122      ROM .65 is 27C512, MC68HC11 program.
123
124----
125
126--------------------------------------------------------------------------
127SIDE BY SIDE  / 2       JC-SYSTEM TYPE-C
128--------------------------------------------------------------------------
129 SIDE BY SIDE (E23) (C)TAITO 1996 VER 2.5J 1996/6/20 18:13:14
130 E23-01 to 24 + E17-23 (BIOS ?)   E17:LANDING GEAR
131
132 SIDE BY SIDE 2 (E38)   Not dumped
133 ROMKIT : E38-01 to 21 , 23* to 26*
134
135--------------------------------------------------------------------------
136DENSHA DE GO! (E35)     JC-SYSTEM TYPE-C with TRAIN BOARD (Ext.Sound)
137--------------------------------------------------------------------------
138 DENSHA DE GO! VER 2.2J 1997/2/4
139 E35-01 to 26 + E35-28(TRAIN BOARD) + E17-23(BIOS?)
140
141 DENSHA DE GO! EX VER 2.4J 1997/4/18 13:38:34
142 ROMKIT : E35-30 to 33
143
144--------------------------------------------------------------------------
145DENSHA DE GO! 2 (E52)   JC-SYSTEM TYPE-C with TRAIN BOARD (Ext.Sound)
146--------------------------------------------------------------------------
147 DENSHA DE GO! 2 (KOUSOKUHEN RYOUSANSYA) VER 2.5 J 1998/3/2 15:30:55
148 E52-01 to 24 , 25-1 to 28-1, 29, 30 + E35-28(TRAIN BOARD) + E17-23(BIOS?)
149
150 DENSHA DE GO! 2 (3000BANDAI KOUSOKUHEN) VER 2.20 J 1998/7/15 17:42:38
151 ROMKIT :  E52-31 to 38
152
153----
154
155Landing Gear
156Taito, 1995
157
158This is a flight simulator game running on Taito JC System hardware.
159The system comprises two boards plugged together back-to-back via five high density connectors.
160The top board contains the main CPU, all RAMs, graphics and sound hardware and the bottom
161board contains the game ROMs, communication devices and a MC68HC11 MCU. Landing Gear
162is a single player game so the board does not contain any communication hardware.
163This hardware seems to be the earliest revision of the JC board. This is the only JC game that
164had a 28-way edge connector, which is actually almost JAMMA. The power/GND, video and
165most buttons (test/service/coin/start etc) work fine using any standard JAMMA cab. However the
166analog controls are wired to another connector on the bottom PCB via an interface board.
167When other JC bottom boards are swapped to this top board, they will run fine, but some of the
168graphics are messed up. This is probably due to the different PALs and their changed locations.
169This seems to mostly affect the texture mapping (tested with swapping Side By Side 2) as the title
170and most of the background graphics are ok but the car textures are just a mess of pixels.
171
172
173PCB Layout
174----------
175
176Top board: MOTHER PCB  K11X0835A  M43E0304A
177|---------------------------------------------------------------------------------|
178|                                                                 43256  43256    |
179|54MHz                                                            43256           |
180|                                                                                 |
181|TC514260                                                                         |
182|         TC0870HVP  uPD424210                                    TC0640FIO       |
183|TC514260 (QFP208)   uPD424210             E07-08.65              (QFP120)        |
184|E07-02.4                                                                         |
185|                                                                                 |
186|TMS320C51  43256                                                                 |
187|(QFP132)   43256              MC68040RC25          E07-10.116  93C46.91          |
188|labelled          TC0770CMU   (PGA TYPE)                    E07-04.115  TEST_SW  |
189|"Taito E07-11"    (QFP208)                         E07-09.82      MB3771         |
190|                                                                                 |
191|                                                            MB8421-90            |
192|TC528257   E07-06.37                                                             |
193|                                                                                 |
194|TC528257   TC514260                                                              |
195|                              E07-07.49    CY7B991                               |
196|TC528257   TC514260           E07-03.50                     TC511664             |
197|                     TC0780FPA                                                   |
198|TC528257   TC514260  (QFP240)           10MHz   MC68EC000   ENSONIC              |
199|                                 CY7B991                    ESPR6 ES5510         |
200|TC528257   TC514260                                                              |
201|                                                                                 |
202|TC528257   TC514260              TC0840GLU   TC51832       MC33274   TDA1543     |
203|                                 (QFP144)    TC51832                             |
204|TC528257   TC514260                             16MHz      MB87078               |
205|                     TC0780FPA          30.4761MHz                               |
206|TC528257   TC514260  (QFP240)                                                    |
207|                                           ENSONIC                               |
208|TC528257             E07-05.22             OTISR2                                |
209|---------------------------------------------------------------------------------|
210
211Notes:
212      All 3K files are PALs type PALCE 16V8 and saved in Jedec format.
213
214
215Bottom board: JCG DAUGHTER PCB-L K91E0603A
216|---------------------------------------------------------------------------------|
217|                                                                                 |
218|                                                                                 |
219|                    E17-21.30  E17-22.31                                         |
220|                                                                                 |
221|                                                                                 |
222|                                                                                 |
223|                                                                                 |
224|                                                                                 |
225|  E17-01.5   E17-07.18   E17-13.32                                               |
226|                                                                                 |
227|  *          E17-08.19   E17-14.33                                               |
228|                                                                                 |
229|  *          *           E17-15.34                     E17-23.65                 |
230|                                                                                 |
231|  E17-02.8   *           E17-16.35                     TC5563                    |
232|                                                                                 |
233|  E17-03.9   E17-09.22   E17-37.36                        MC68HC11M0             |
234|                                                          (QFP80)                |
235|  E17-04.10  E17-10.23   E17-38.37                                               |
236|                                                                                 |
237|  E17-05.11  E17-11.24   E17-39.38                                               |
238|                                                          E09-21.69              |
239|  E17-06.12  E17-12.25   E17-40.39                                               |
240|                                                                                 |
241|                                                                                 |
242|                                                      E09-22.73                  |
243|                                                                                 |
244|                                                                                 |
245|                                                      E17-32.96                  |
246|                                                                                 |
247|                                                                                 |
248|---------------------------------------------------------------------------------|
249
250Notes:
251      All 3K files are PALs type PALCE 16V8 and saved in Jedec format.
252      ROMs .36-.39 are 27C4001, main program.
253      ROM .65 is 27C512, 68HC11 MCU program.
254      ROMs .30-.31 are 27C2001, sound program.
255      ROMs .32-.35 are 16M MASK, sound.
256      ROMs .5-.25 are 16M MASK, graphics.
257      * Unpopulated ROM socket
258
259----
260
261Side By Side
262Taito, 1996
263
264This game runs on Taito JC System hardware and uses a 24kHz monitor.
265
266PCB Layout
267----------
268
269Top board: MOTHER PCB-C K11X0838A  M43E0325A
270|---------------------------------------------------------------------------------|
271|                                                                 43256           |
272|54MHz                                   E23-32-1.51              43256           |
273|         424210 424210                                           43256           |
274|                      E23-29.39                                                  |
275|E23-25-1.3 TC0870HVP             E23-31.46                                       |
276|           (QFP208)   E23-30.40             E23-34.72      93C46.87              |
277|E23-26.4                                                                         |
278|                              MC68040RC25            CXD1178Q    TC0640FIO       |
279|424260     TMS320C51          (PGA TYPE)                         (QFP120)        |
280|           (QFP132)                                                              |
281|           marked                                                TEST_SW         |
282|424260     "Taito E07-11"                                      MB3771   RESET_SW |
283|                                  E23-33.53                                      |
284|                                             CY7B991       MB8421-90             |
285|4218160    43256                    CY7B991                                      |
286|                                                                                 |
287|           43256        TC0770CMU                          E23-35.110            |
288|4218160                 (QFP208)                                                 |
289|                                    10MHz    MC68EC000     LC321664AJ-80         |
290|E23-27.13  TC0780FPA  D482445                                                    |
291|           (QFP240)                                        ENSONIC               |
292|                      D482445                TC51832       ESPR6 ES5510          |
293|                                             TC51832                             |
294|4218160                                                                          |
295|                                 TC0840GLU                 MC33274   TDA1543     |
296|                                 (QFP144)                                        |
297|4218160               D482445                16MHz         MB87078               |
298|           TC0780FPA                    30.4761MHz                               |
299|           (QFP240)   D482445    ENSONIC                                         |
300|E23-28.18                        OTISR2                                          |
301|                                                                                 |
302|---------------------------------------------------------------------------------|
303
304Notes:
305      All 3k files are PALs type PALCE 16V8 and saved in Jedec format.
306      CY7B991 - Programmable Skew Clock Buffer (PLCC32)
307      4218160 - 2M x8 / 1M x16 DRAM. Compatible with NEC 4218160 & Toshiba TC5118160
308      424210  - 256k x16 DRAM
309      424260  - 256k x16 DRAM
310      43256   - 32k x8 SRAM
311      D482445 - 256k x16 Video DRAM. Compatible with Toshiba TC524165/TC52V4165 (also used on Namco System 11 CPU boards)
312      LC321664- 64k x16 DRAM
313      TC51832 - 32k x8 SRAM
314      MB8421  - 16k-bit (2kbytes) Dual Port SRAM
315
316      Measurements:
317                   HSync  - 24.639kHz / 24.690kHz (alternates between the two frequencies slowly every ~2 seconds)
318                   VSync  - 55.6795Hz
319                   68040  - 20.000MHz (10MHz*2, source = CY7C991)
320                   68000  - 15.23805MHz (30.4761/2)
321                   320C51 - 40.000MHz (pin96 X2/CLKIN. 10MHz*4, source = CY7C991)
322                   OTISR2 - 3.80950MHz (pin12)
323                   ES5510 - 2.22MHz, 2.666MHz, 3.8095125MHz (30.4761/8), 8.000MHz (16/2)
324
325
326Bottom board: JCG DAUGHTERL PCB-C K9100633A J9100434A (Sticker K91J0633A)
327|---------------------------------------------------------------------------------|
328|                                                                                 |
329|                                                                                 |
330|                    E23-23.30  E23-24.31                                         |
331|                                                                                 |
332|                                                                                 |
333|                                                                                 |
334|                                                                                 |
335|                                                                                 |
336|  E23-01.5   E23-08.18   E23-15.32                                               |
337|                                                                                 |
338|  E23-02.6   E23-09.19   E23-16.33                                               |
339|                                                                                 |
340|  E23-03.7   E23-10.20   E23-17.34                     E17-23.65                 |
341|                                                                                 |
342|  E23-04.8   E23-11.21   E23-18.35                     6264                      |
343|                                                                                 |
344|  E23-05.9   E23-12.22   E23-19.36                        MC68HC11M0             |
345|                                                          (QFP80)                |
346|  E23-06.10  E23-13.23   E23-20.37                                               |
347|                                                                                 |
348|  *          *           E23-21.38                                               |
349|                                                          E23-37.69              |
350|  E23-07.12  E23-14.25   E23-22.39                              SMC_COM20020I    |
351|                                                                                 |
352|                                                                                 |
353|                                                      E23-38.73                  |
354|                                                                                 |
355|                                                                                 |
356|                                                                                 |
357|                                                                                 |
358|                                                                                 |
359|---------------------------------------------------------------------------------|
360
361Notes:
362      All 3k files are PALs type PALCE 16V8 and saved in Jedec format.
363      6264: 8k x8 SRAM
364      SMC_COM20020I: Network communmication IC
365      ROMs .36-.39 are 27C4001, main program.
366      ROMs .5-.12, .18-.25 are 16M MASK, graphics.
367      ROMs .32-.35 are 16M MASK, sound data.
368      ROMs .30-.31 are 27C2001, sound program.
369      ROM  .65 is 27C512, linked to 68HC11 MCU
370      *    Unpopulated socket.
371
372      Measurements:
373                   68HC11 - 8.000MHz (16/2 on pin74)
374
375*/
376
9377#include "emu.h"
10#include "video/poly.h"
378#include "cpu/tms32051/tms32051.h"
379#include "cpu/m68000/m68000.h"
380#include "cpu/mc68hc11/mc68hc11.h"
381#include "sound/es5506.h"
382#include "sound/okim6295.h"
383#include "machine/mb8421.h"
384#include "machine/taitoio.h"
385#include "machine/eepromser.h"
386#include "audio/taito_en.h"
11387#include "includes/taitojc.h"
12388
13static const gfx_layout taitojc_char_layout =
389#include "dendego.lh"
390
391
392// lookup tables for densha de go analog controls/meters
393static const int dendego_odometer_table[0x100] =
14394{
15   16,16,
16   0x80,
17   4,
18   { 0,1,2,3 },
19   { 24,28,16,20,8,12,0,4, 56,60,48,52,40,44,32,36 },
20   { 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64,8*64,9*64,10*64,11*64,12*64,13*64,14*64,15*64 },
21   16*64
395   0,    3,    7,    10,   14,   17,   21,   24,   28,   31,   34,   38,   41,   45,   48,   52,
396   55,   59,   62,   66,   69,   72,   76,   79,   83,   86,   90,   93,   97,   100,  105,  111,
397   116,  121,  126,  132,  137,  142,  147,  153,  158,  163,  168,  174,  179,  184,  189,  195,
398   200,  206,  211,  217,  222,  228,  233,  239,  244,  250,  256,  261,  267,  272,  278,  283,
399   289,  294,  300,  306,  311,  317,  322,  328,  333,  339,  344,  350,  356,  361,  367,  372,
400   378,  383,  389,  394,  400,  406,  412,  418,  424,  429,  435,  441,  447,  453,  459,  465,
401   471,  476,  482,  488,  494,  500,  505,  511,  516,  521,  526,  532,  537,  542,  547,  553,
402   558,  563,  568,  574,  579,  584,  589,  595,  600,  607,  613,  620,  627,  633,  640,  647,
403   653,  660,  667,  673,  680,  687,  693,  700,  705,  711,  716,  721,  726,  732,  737,  742,
404   747,  753,  758,  763,  768,  774,  779,  784,  789,  795,  800,  806,  812,  818,  824,  829,
405   835,  841,  847,  853,  859,  865,  871,  876,  882,  888,  894,  900,  906,  911,  917,  922,
406   928,  933,  939,  944,  950,  956,  961,  967,  972,  978,  983,  989,  994,  1000, 1005, 1011,
407   1016, 1021, 1026, 1032, 1037, 1042, 1047, 1053, 1058, 1063, 1068, 1074, 1079, 1084, 1089, 1095,
408   1100, 1107, 1113, 1120, 1127, 1133, 1140, 1147, 1153, 1160, 1167, 1173, 1180, 1187, 1193, 1200,
409   1203, 1206, 1209, 1212, 1216, 1219, 1222, 1225, 1228, 1231, 1234, 1238, 1241, 1244, 1247, 1250,
410   1253, 1256, 1259, 1262, 1266, 1269, 1272, 1275, 1278, 1281, 1284, 1288, 1291, 1294, 1297, 1300,
22411};
23412
24TILE_GET_INFO_MEMBER(taitojc_state::taitojc_tile_info)
413static const int dendego_pressure_table[0x100] =
25414{
26   UINT32 val = m_tile_ram[tile_index];
27   int color = (val >> 22) & 0xff;
28   int tile = (val >> 2) & 0x7f;
29   SET_TILE_INFO_MEMBER(m_gfx_index, tile, color, 0);
415   0,    0,    0,    0,    5,    10,   14,   19,   24,   29,   33,   38,   43,   48,   52,   57,
416   62,   67,   71,   76,   81,   86,   90,   95,   100,  106,  112,  119,  125,  131,  138,  144,
417   150,  156,  162,  169,  175,  181,  188,  194,  200,  206,  212,  219,  225,  231,  238,  244,
418   250,  256,  262,  269,  275,  281,  288,  294,  300,  306,  312,  318,  324,  329,  335,  341,
419   347,  353,  359,  365,  371,  376,  382,  388,  394,  400,  407,  413,  420,  427,  433,  440,
420   447,  453,  460,  467,  473,  480,  487,  493,  500,  507,  514,  521,  529,  536,  543,  550,
421   557,  564,  571,  579,  586,  593,  600,  607,  614,  621,  629,  636,  643,  650,  657,  664,
422   671,  679,  686,  693,  700,  706,  712,  719,  725,  731,  738,  744,  750,  756,  762,  769,
423   775,  781,  788,  794,  800,  807,  814,  821,  829,  836,  843,  850,  857,  864,  871,  879,
424   886,  893,  900,  907,  914,  921,  929,  936,  943,  950,  957,  964,  971,  979,  986,  993,
425   1000, 1008, 1015, 1023, 1031, 1038, 1046, 1054, 1062, 1069, 1077, 1085, 1092, 1100, 1108, 1115,
426   1123, 1131, 1138, 1146, 1154, 1162, 1169, 1177, 1185, 1192, 1200, 1207, 1214, 1221, 1229, 1236,
427   1243, 1250, 1257, 1264, 1271, 1279, 1286, 1293, 1300, 1307, 1314, 1321, 1329, 1336, 1343, 1350,
428   1357, 1364, 1371, 1379, 1386, 1393, 1400, 1407, 1414, 1421, 1429, 1436, 1443, 1450, 1457, 1464,
429   1471, 1479, 1486, 1493, 1500, 1504, 1507, 1511, 1515, 1519, 1522, 1526, 1530, 1533, 1537, 1541,
430   1544, 1548, 1552, 1556, 1559, 1563, 1567, 1570, 1574, 1578, 1581, 1585, 1589, 1593, 1596, 1600,
431};
432
433
434// hmm, what is the pixel clock? let's assume it's same as the 68040
435// 54MHz(/4) or 16MHz would make HTOTAL unrealistically short
436#define PIXEL_CLOCK         (10000000*2)
437
438// VSync - 55.6795Hz
439// HSync - 24.639kHz / 24.690kHz (may be inaccurate)
440#define HTOTAL              (768)
441#define HBEND               (0)
442#define HBSTART             (512)
443
444#define VTOTAL              (468)
445#define VBEND               (0)
446#define VBSTART             (400)
447
448
449#define DSP_IDLESKIP        1 /* dsp idle skipping speedup hack */
450
451
452/***************************************************************************
453
454  Interrupts
455
456***************************************************************************/
457
458// boob :( this is probably not the MB8421, need to change this
459WRITE_LINE_MEMBER(taitojc_state::mb8421_intl)
460{
461   // shared ram interrupt request from dsp side
462   m_maincpu->set_input_line(6, state ? ASSERT_LINE : CLEAR_LINE);
30463}
31464
32READ32_MEMBER(taitojc_state::taitojc_palette_r)
465WRITE_LINE_MEMBER(taitojc_state::mb8421_intr)
33466{
34   return m_palette_ram[offset];
467   // shared ram interrupt request from maincpu side
468   // this is hacky, acquiring the internal dsp romdump should allow it to be cleaned up
469   if (state)
470   {
471      if (m_mb8421->peek(0x7ff) & 0x08)
472      {
473         m_dsp->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
474      }
475      else
476      {
477         /*
478         regarding m_has_dsp_hack:
479         All games minus Dangerous Curves tests if the DSP is alive with this code snippet:
480
481         0008C370: 4A79 1000 1FC0                                      tst.w   $10001fc0.l
482         0008C376: 33FC 0000 0660 0000                                 move.w  #$0, $6600000.l
483         0008C37E: 66F0                                                bne     $8c370
484
485         Problem is: that move.w in the middle makes the SR to always return a zero flag result,
486         hence it never branches like it should. CPU bug?
487         */
488         if (!m_first_dsp_reset || !m_has_dsp_hack)
489         {
490            m_dsp->set_input_line(INPUT_LINE_RESET, CLEAR_LINE);
491         }
492         m_first_dsp_reset = 0;
493      }
494   }
35495}
36496
37WRITE32_MEMBER(taitojc_state::taitojc_palette_w)
497INTERRUPT_GEN_MEMBER(taitojc_state::taitojc_vblank)
38498{
39   int r, g, b;
40   UINT32 color;
499   device.execute().set_input_line_and_vector(2, HOLD_LINE, 0x82); // where does it come from?
500}
41501
42   COMBINE_DATA( m_palette_ram + offset );
502WRITE8_MEMBER(taitojc_state::jc_irq_unk_w)
503{
504   // gets written to at the end of irq6 routine
505   // writes $02 or $06, depending on a value in DSP RAM, what does it mean?
506}
43507
44   color = m_palette_ram[offset];
45   r = (color >>  8) & 0xff;
46   g = (color >> 16) & 0xff;
47   b = (color >>  0) & 0xff;
48508
49   m_palette->set_pen_color(offset, rgb_t(r, g, b));
509/***************************************************************************
510
511  maincpu I/O
512
513***************************************************************************/
514
515READ8_MEMBER(taitojc_state::dsp_shared_r)
516{
517   return m_dsp_shared_ram_hi[offset];
50518}
51519
52READ32_MEMBER(taitojc_state::taitojc_tile_r)
520WRITE8_MEMBER(taitojc_state::dsp_shared_w)
53521{
54   return m_tile_ram[offset];
522   m_dsp_shared_ram_hi[offset] = data;
55523}
56524
57READ32_MEMBER(taitojc_state::taitojc_char_r)
525
526READ8_MEMBER(taitojc_state::mcu_comm_r)
58527{
59   return m_char_ram[offset];
528   switch (offset)
529   {
530      case 0x03:
531         return m_mcu_data_main;
532
533      case 0x04:
534         return m_mcu_comm_main | 0x14;
535
536      default:
537         logerror("mcu_comm_r: %02X at %08X\n", offset, space.device().safe_pc());
538         break;
539   }
540
541   return 0;
60542}
61543
62WRITE32_MEMBER(taitojc_state::taitojc_tile_w)
544WRITE8_MEMBER(taitojc_state::mcu_comm_w)
63545{
64   COMBINE_DATA(m_tile_ram + offset);
65   m_tilemap->mark_tile_dirty(offset);
546   switch (offset)
547   {
548      case 0x00:
549         m_mcu_data_hc11 = data;
550         m_mcu_comm_hc11 &= ~0x04;
551         m_mcu_comm_main &= ~0x20;
552         break;
553
554      case 0x04:
555         break;
556
557      default:
558         logerror("mcu_comm_w: %02X, %02X at %08X\n", offset, data, space.device().safe_pc());
559         break;
560   }
66561}
67562
68WRITE32_MEMBER(taitojc_state::taitojc_char_w)
563READ32_MEMBER(taitojc_state::snd_share_r)
69564{
70   COMBINE_DATA(m_char_ram + offset);
71   m_gfxdecode->gfx(m_gfx_index)->mark_dirty(offset/32);
565   switch (offset & 3)
566   {
567      case 0: return (m_snd_shared_ram[(offset/4)] <<  0) & 0xff000000;
568      case 1: return (m_snd_shared_ram[(offset/4)] <<  8) & 0xff000000;
569      case 2: return (m_snd_shared_ram[(offset/4)] << 16) & 0xff000000;
570      case 3: return (m_snd_shared_ram[(offset/4)] << 24) & 0xff000000;
571   }
572
573   return 0;
72574}
73575
74// Object data format:
75//
76// 0x00:   xxxxxx-- -------- -------- --------   Height
77// 0x00:   ------xx xxxxxxxx -------- --------   Y
78// 0x00:   -------- -------- xxxxxx-- --------   Width
79// 0x00:   -------- -------- ------xx xxxxxxxx   X
80// 0x01:   ---xxxxx xx------ -------- --------   Palette
81// 0x01:   -------- --x----- -------- --------   Priority (0 = below 3D, 1 = above 3D)
82// 0x01:   -------- -------x -------- --------   Color depth (0) 4bpp / (1) 8bpp
83// 0x01:   -------- -------- -xxxxxxx xxxxxxxx   VRAM data address
576WRITE32_MEMBER(taitojc_state::snd_share_w)
577{
578   if (ACCESSING_BITS_24_31)
579   {
580      switch (offset & 3)
581      {
582         case 0: m_snd_shared_ram[(offset/4)] &= ~0xff000000; m_snd_shared_ram[(offset/4)] |= (data >>  0 & 0xff000000); break;
583         case 1: m_snd_shared_ram[(offset/4)] &= ~0x00ff0000; m_snd_shared_ram[(offset/4)] |= (data >>  8 & 0x00ff0000); break;
584         case 2: m_snd_shared_ram[(offset/4)] &= ~0x0000ff00; m_snd_shared_ram[(offset/4)] |= (data >> 16 & 0x0000ff00); break;
585         case 3: m_snd_shared_ram[(offset/4)] &= ~0x000000ff; m_snd_shared_ram[(offset/4)] |= (data >> 24 & 0x000000ff); break;
586      }
587   }
588}
84589
85/*
86    Object RAM is grouped in three different banks (0-0x400 / 0x400-0x800 / 0x800-0xc00),
87    Initial 6 dwords aren't surely for object stuff (setting global object flags?)
88    0xd00-0xdff seems to be a per-bank vregister. Usage of this is mostly unknown, the only
89    clue we have so far is this config change in dendego:
90    0x2000db3f 0x3f3f3f3f 0xfec00090 0x403f00ff 0xd20-0xd2f on Taito logo
91    0x2000db3f 0x3f3f3f3f 0xff600090 0x207f00ff 0xd20-0xd2f on intro FMV
92590
93    dword 0 bits 14-15 looks up to the object RAM for the given bank. (it's mostly fixed to 0,
94    1 and 2 for each bank). Then dwords 2 and 3 should presumably configure bank 1 to a bigger
95    (doubled?) height and width and a different x/y start point.
591READ8_MEMBER(taitojc_state::jc_pcbid_r)
592{
593   static const char pcb_id[0x40] =
594   { "DEV=TC0870HVP   SYS=CG  VER=1.0"};
595   // - any more data after "VER=1."?
596   // - can we assume it comes from the TC0870HVP chip?
96597
598   return pcb_id[offset];
599}
97600
98    0xfc0-0xfff is global vregs. 0xfc4 bit 13 is used to swap between bank 0 and bank 1?
99    It's unknown at current time how bank 2 should show up.
100601
101        fc0 00000000   always
102        fc4 c01f0000   boot-up, testmode, sidebs always, sidebs2 always
103            c0100000   landgear in-game, dendego2 in-game
104            c0310000   dendego in-game
105            c0312000   dendego intro 3d parts
106            c031f000   dendego disclaimer screen (only for a few frames)
602/*
107603
108        fc4 11000000 00------ ----0000 00000000   always 0/1
109            -------- --xx---- -------- --------   ?
110            -------- ----xxxx -------- --------   one of these probably disables textlayer, unknown function otherwise
111            -------- -------- xxxx---- --------   object bank related
604Some games (Dangerous Curves, Side by Side, Side by Side 2) were released as Twin cabinets,
605allowing 2 players to compete each other via a SMSC COM20020I network IC
112606
113        fc8 40000000   always
114        fcc 00000000   always
115        fd0 c0000000   always
116        ...
117        ffc c0000000   always
607Not emulated yet...
118608
119609*/
120610
121void taitojc_state::draw_object(bitmap_ind16 &bitmap, const rectangle &cliprect, UINT32 w1, UINT32 w2, UINT8 bank_type)
611READ8_MEMBER(taitojc_state::jc_lan_r)
122612{
123   int x, y, width, height, palette;
124   int i, j;
125   int x1, x2, y1, y2;
126   int ix, iy;
127   UINT32 address;
128   UINT8 *v;
129   UINT8 color_depth;
130   UINT8 mask_screen;
613   return 0xff;
614}
131615
132   color_depth = (w2 & 0x10000) >> 16;
133   mask_screen = (w2 & 0x20000) >> 17;
616WRITE8_MEMBER(taitojc_state::jc_lan_w)
617{
618}
134619
135   address     = (w2 & 0x7fff) * 0x20;
136   if (w2 & 0x4000)
137      address |= 0x40000;
138620
139   x           = ((w1 >>  0) & 0x3ff);
140   if (x & 0x200)
141      x |= ~0x1ff;        // sign-extend
621static ADDRESS_MAP_START( taitojc_map, AS_PROGRAM, 32, taitojc_state )
622   AM_RANGE(0x00000000, 0x001fffff) AM_ROM AM_MIRROR(0x200000)
623   AM_RANGE(0x00400000, 0x01bfffff) AM_ROM AM_REGION("gfx1", 0)
624   AM_RANGE(0x04000000, 0x040f7fff) AM_RAM AM_SHARE("vram")
625   AM_RANGE(0x040f8000, 0x040fbfff) AM_READWRITE(taitojc_tile_r, taitojc_tile_w)
626   AM_RANGE(0x040fc000, 0x040fefff) AM_READWRITE(taitojc_char_r, taitojc_char_w)
627   AM_RANGE(0x040ff000, 0x040fffff) AM_RAM AM_SHARE("objlist")
628   AM_RANGE(0x05800000, 0x0580003f) AM_READ8(jc_pcbid_r, 0xffffffff)
629   AM_RANGE(0x05900000, 0x05900007) AM_READWRITE8(mcu_comm_r, mcu_comm_w, 0xffffffff)
630   AM_RANGE(0x06400000, 0x0641ffff) AM_READWRITE(taitojc_palette_r, taitojc_palette_w) AM_SHARE("palette_ram")
631   AM_RANGE(0x06600000, 0x0660001f) AM_DEVREADWRITE8("tc0640fio", tc0640fio_device, read, write, 0xff000000)
632   AM_RANGE(0x0660004c, 0x0660004f) AM_WRITE_PORT("EEPROMOUT")
633   AM_RANGE(0x06800000, 0x06800003) AM_WRITE8(jc_irq_unk_w, 0x00ff0000)
634   AM_RANGE(0x06a00000, 0x06a01fff) AM_READWRITE(snd_share_r, snd_share_w) AM_SHARE("snd_shared")
635   AM_RANGE(0x06c00000, 0x06c0001f) AM_READWRITE8(jc_lan_r, jc_lan_w, 0x00ff0000)
636   AM_RANGE(0x08000000, 0x080fffff) AM_RAM AM_SHARE("main_ram")
637   AM_RANGE(0x10000000, 0x10001fff) AM_DEVREADWRITE8("mb8421", mb8421_device, left_r, left_w, 0x00ff0000)
638   AM_RANGE(0x10000000, 0x10001fff) AM_READWRITE8(dsp_shared_r, dsp_shared_w, 0xff000000) // which chip is this?
639ADDRESS_MAP_END
142640
143   y           = ((w1 >> 16) & 0x3ff);
144   if (y & 0x200)
145      y |= ~0x1ff;        // sign-extend
146641
147   width       = ((w1 >> 10) & 0x3f) * 16;
148   height      = ((w1 >> 26) & 0x3f) * 16;
149   palette     = ((w2 >> 22) & 0x7f) << 8;
642/*
150643
151   /* TODO: untangle this! */
152   if(address >= 0xff000)
153      v = (UINT8*)&m_objlist[(address-0xff000)/4];
154   if(address >= 0xfc000)
155      v = (UINT8*)&m_char_ram[(address-0xfc000)/4];
156   else if(address >= 0xf8000)
157      v = (UINT8*)&m_tile_ram[(address-0xf8000)/4];
158   else
159      v = (UINT8*)&m_vram[address/4];
644Densha de Go games have odometers for speed and brakepressure.
645There's a voltmeter too, but seems to be a dummy (always stuck on 1.5kV)
160646
161   /* guess, but it's probably doable via a vreg ... */
162   if ((width == 0 || height == 0) && bank_type == 2)
163      width = height = 16;
647The OKI is used for seat vibration effects.
164648
165   if(width == 0 || height == 0)
166      return;
649*/
167650
168   x1 = x;
169   x2 = x + width;
170   y1 = y;
171   y2 = y + height;
172
173   // trivial rejection
174   if (x1 > cliprect.max_x || x2 < cliprect.min_x || y1 > cliprect.max_y || y2 < cliprect.min_y)
651WRITE8_MEMBER(taitojc_state::dendego_speedmeter_w)
652{
653   if (m_speed_meter != dendego_odometer_table[data])
175654   {
176      return;
655      m_speed_meter = dendego_odometer_table[data];
656      output_set_value("counter2", m_speed_meter / 10);
657      output_set_value("counter3", m_speed_meter % 10);
177658   }
659}
178660
179//  osd_printf_debug("draw_object: %08X %08X, X: %d, Y: %d, W: %d, H: %d\n", w1, w2, x, y, width, height);
180
181   ix = 0;
182   iy = 0;
183
184   // clip
185   if (x1 < cliprect.min_x)
661WRITE8_MEMBER(taitojc_state::dendego_brakemeter_w)
662{
663   if (m_brake_meter != dendego_pressure_table[data])
186664   {
187      ix = abs(cliprect.min_x - x1);
188      x1 = cliprect.min_x;
665      m_brake_meter = dendego_pressure_table[data];
666      output_set_value("counter4", m_brake_meter);
189667   }
190   if (x2 > cliprect.max_x)
191   {
192      x2 = cliprect.max_x;
193   }
194   if (y1 < cliprect.min_y)
195   {
196      iy = abs(cliprect.min_y - y1);
197      y1 = cliprect.min_y;
198   }
199   if (y2 > cliprect.max_y)
200   {
201      y2 = cliprect.max_y;
202   }
668}
203669
204   /* this bit seems to set up border at left/right of screen (reads at 0xffc00) */
205   if(mask_screen)
206   {
207      if(address != 0xffc00)
208      {
209         popmessage("mask screen with %08x, contact MAMEdev",address);
210         return;
211      }
670static ADDRESS_MAP_START( dendego_map, AS_PROGRAM, 32, taitojc_state )
671   AM_RANGE(0x06e00000, 0x06e00003) AM_WRITE8(dendego_speedmeter_w, 0x00ff0000)
672   AM_RANGE(0x06e00004, 0x06e00007) AM_WRITE8(dendego_brakemeter_w, 0x00ff0000)
673   AM_RANGE(0x06e0000c, 0x06e0000f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff0000)
674   AM_IMPORT_FROM( taitojc_map )
675ADDRESS_MAP_END
212676
213      for (j=y1; j < y2; j++)
214      {
215         UINT16 *d = &bitmap.pix16(j);
216677
217         for (i=x1; i < x2; i++)
218         {
219            d[i] = 0x78; //TODO: black
220678
221            //index++;
222         }
223679
224         //iy++;
225      }
226   }
227   else if(!color_depth) // Densha de Go 2/2X "credit text", 4bpp
228   {
229      for (j=y1; j < y2; j++)
230      {
231         UINT16 *d = &bitmap.pix16(j);
232         int index = (iy * (width / 2)) + ix;
680/***************************************************************************
233681
234         for (i=x1; i < x2; i+=2)
235         {
236            UINT8 pen = (v[BYTE4_XOR_BE(index)] & 0xf0) >> 4;
237            if (pen != 0)
238               d[i] = palette + pen;
682  MCU I/O
239683
240            pen = (v[BYTE4_XOR_BE(index)] & 0x0f);
241            if (pen != 0)
242               d[i+1] = palette + pen;
684***************************************************************************/
243685
244            index++;
245         }
686READ8_MEMBER(taitojc_state::hc11_comm_r)
687{
688   return m_mcu_comm_hc11;
689}
246690
247         iy++;
248      }
249   }
250   else // 8bpp
251   {
252      {
253         for (j=y1; j < y2; j++)
254         {
255            UINT16 *d = &bitmap.pix16(j);
256            int index = (iy * width) + ix;
691WRITE8_MEMBER(taitojc_state::hc11_comm_w)
692{
693}
257694
258            for (i=x1; i < x2; i++)
259            {
260               UINT8 pen = v[BYTE4_XOR_BE(index)];
261               if (pen != 0)
262               {
263                  d[i] = palette + pen;
264               }
695READ8_MEMBER(taitojc_state::hc11_data_r)
696{
697   m_mcu_comm_hc11 |= 0x04;
698   m_mcu_comm_main |= 0x20;
699   return m_mcu_data_hc11;
700}
265701
266               index++;
267            }
702WRITE8_MEMBER(taitojc_state::hc11_data_w)
703{
704   m_mcu_data_main = data;
705}
268706
269            iy++;
270         }
271      }
272   }
707READ8_MEMBER(taitojc_state::hc11_output_r)
708{
709   return m_mcu_output;
273710}
274711
275void taitojc_state::draw_object_bank(bitmap_ind16 &bitmap, const rectangle &cliprect, UINT8 bank_type, UINT8 pri)
712WRITE8_MEMBER(taitojc_state::hc11_output_w)
276713{
277   UINT16 start_offs;
278//  UINT8 double_xy;
279   int i;
714/*
715    cabinet lamps, active high
280716
281   start_offs = ((bank_type+1)*0x400)/4;
282//  double_xy = (m_objlist[(0xd1c+bank_type*0x10)/4] & 0x20000000) >> 29;
717    dendego/dendego2:
718    d0: START
719    d1: DOOR
720    d2: JYOUYO (normal)
721    d3: HIJYOU (emergency)
722    d4: DENSEI (three-stage power)
723    d5: POP L
724    d6: POP R
725    d7: ------- (?)
283726
284   /* probably a core bug in there (otherwise objects sticks on screen in Densha de Go) */
285   if(bank_type == 1 && (!(m_objlist[0xfc4/4] & 0x2000)))
286      return;
727    landgear:
728    unused?
287729
288   for (i=start_offs-2; i >= (start_offs-0x400/4); i-=2)
289   {
290      UINT32 w1 = m_objlist[i + 0];
291      UINT32 w2 = m_objlist[i + 1];
730    sidebs/sidebs2:
731    ?
732*/
733   for (int i = 0; i < 8; i++)
734      output_set_lamp_value(i, data >> i & 1);
292735
293      if (((w2 & 0x200000) >> 21) == pri)
294      {
295         draw_object(bitmap, cliprect, w1, w2, bank_type);
296      }
297   }
736   m_mcu_output = data;
298737}
299738
300
301void taitojc_state::video_start()
739READ8_MEMBER(taitojc_state::hc11_analog_r)
302740{
303   /* find first empty slot to decode gfx */
304   for (m_gfx_index = 0; m_gfx_index < MAX_GFX_ELEMENTS; m_gfx_index++)
305      if (m_gfxdecode->gfx(m_gfx_index) == 0)
306         break;
741   return m_analog_inp[offset]->read_safe(0);
742}
307743
308   assert(m_gfx_index != MAX_GFX_ELEMENTS);
309744
310   m_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(taitojc_state::taitojc_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 64);
745static ADDRESS_MAP_START( hc11_pgm_map, AS_PROGRAM, 8, taitojc_state )
746   AM_RANGE(0x4000, 0x5fff) AM_RAM
747   AM_RANGE(0x8000, 0xffff) AM_ROM
748ADDRESS_MAP_END
311749
312   m_tilemap->set_transparent_pen(0);
750static ADDRESS_MAP_START( hc11_io_map, AS_IO, 8, taitojc_state )
751   AM_RANGE(MC68HC11_IO_PORTA,     MC68HC11_IO_PORTA    ) AM_READNOP // ?
752   AM_RANGE(MC68HC11_IO_PORTG,     MC68HC11_IO_PORTG    ) AM_READWRITE(hc11_comm_r, hc11_comm_w)
753   AM_RANGE(MC68HC11_IO_PORTH,     MC68HC11_IO_PORTH    ) AM_READWRITE(hc11_output_r, hc11_output_w)
754   AM_RANGE(MC68HC11_IO_SPI2_DATA, MC68HC11_IO_SPI2_DATA) AM_READWRITE(hc11_data_r, hc11_data_w)
755   AM_RANGE(MC68HC11_IO_AD0,       MC68HC11_IO_AD7      ) AM_READ(hc11_analog_r)
756ADDRESS_MAP_END
313757
314   m_char_ram = auto_alloc_array_clear(machine(), UINT32, 0x4000/4);
315   m_tile_ram = auto_alloc_array_clear(machine(), UINT32, 0x4000/4);
316758
317   /* create the char set (gfx will then be updated dynamically from RAM) */
318   m_gfxdecode->set_gfx(m_gfx_index, global_alloc(gfx_element(m_palette, taitojc_char_layout, (UINT8 *)m_char_ram, 0, m_palette->entries() / 16, 0)));
319759
320   m_texture = auto_alloc_array(machine(), UINT8, 0x400000);
321760
322   m_screen->register_screen_bitmap(m_framebuffer);
323   m_screen->register_screen_bitmap(m_zbuffer);
761/***************************************************************************
324762
325   /* create renderer */
326   m_renderer = auto_alloc(machine(), taitojc_renderer(machine(), &m_framebuffer, &m_zbuffer, m_texture));
763  DSP I/O
764
765***************************************************************************/
766
767/*
768    Math co-processor memory map
769
770    0x7000: Projection point Y
771    0x7001: Projection point X
772    0x7002: Projection point Z
773    0x7003: Frustum Min Z(?)
774    0x7004: Frustum Max Z(?)
775    0x7010: Line intersection, parameter length
776    0x7011: Line intersection, intersection point
777    0x7012: Line intersection, line length
778    0x7013: Viewport Width / 2
779    0x7014: Viewport Height / 2
780    0x7015: Viewport Z / 2 (?)
781    0x701b: Line intersection, parameter interpolation read
782    0x701d: Projected point Y read
783    0x701f: Projected point X read
784    0x7022: Unknown read
785    0x7030: Unknown write
786    0x703b: Unknown read/write
787*/
788
789WRITE16_MEMBER(taitojc_state::dsp_math_projection_w)
790{
791   m_projection_data[offset] = data;
327792}
328793
329UINT32 taitojc_state::screen_update_taitojc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
794WRITE16_MEMBER(taitojc_state::dsp_math_viewport_w)
330795{
331   bitmap.fill(0, cliprect);
796   m_viewport_data[offset] = data;
797}
332798
333   // low priority objects
334   draw_object_bank(bitmap, cliprect, 0, 0);
335   draw_object_bank(bitmap, cliprect, 1, 0);
336   draw_object_bank(bitmap, cliprect, 2, 0);
799READ16_MEMBER(taitojc_state::dsp_math_projection_y_r)
800{
801   return (m_projection_data[2] != 0) ? (m_projection_data[0] * m_viewport_data[0]) / m_projection_data[2] : 0;
802}
337803
338   // 3D layer
339   copybitmap_trans(bitmap, m_framebuffer, 0, 0, 0, 0, cliprect, 0);
804READ16_MEMBER(taitojc_state::dsp_math_projection_x_r)
805{
806   return (m_projection_data[2] != 0) ? (m_projection_data[1] * m_viewport_data[1]) / m_projection_data[2] : 0;
807}
340808
341   // high priority objects
342   draw_object_bank(bitmap, cliprect, 0, 1);
343   draw_object_bank(bitmap, cliprect, 1, 1);
344   draw_object_bank(bitmap, cliprect, 2, 1);
809WRITE16_MEMBER(taitojc_state::dsp_math_intersection_w)
810{
811   m_intersection_data[offset] = data;
812}
345813
346   // text layer
347   if (m_objlist[0xfc4/4] & 0x10000)
348      m_tilemap->draw(screen, bitmap, cliprect, 0, 0);
814READ16_MEMBER(taitojc_state::dsp_math_intersection_r)
815{
816   return (m_intersection_data[2] != 0) ? (m_intersection_data[0] * m_intersection_data[1]) / m_intersection_data[2] : 0;
817}
349818
350   return 0;
819READ16_MEMBER(taitojc_state::dsp_math_unk_r)
820{
821   return 0x7fff;
351822}
352823
353UINT32 taitojc_state::screen_update_dendego(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
824
825/**************************************************************************/
826
827READ16_MEMBER(taitojc_state::dsp_rom_r)
354828{
355   // update controller state in artwork
356   static const UINT8 dendego_mascon_table[6] = { 0x76, 0x67, 0x75, 0x57, 0x73, 0x37 };
357   static const UINT8 dendego_brake_table[11] = { 0x00, 0x05, 0x1d, 0x35, 0x4d, 0x65, 0x7d, 0x95, 0xad, 0xc5, 0xd4 };
829   assert (m_dsp_rom_pos < 0x800000); // never happens
830   return ((UINT16*)m_gfx2->base())[m_dsp_rom_pos++];
831}
358832
359   UINT8 btn = (ioport("BUTTONS")->read() & 0x77);
360   int level;
361   for (level = 5; level > 0; level--)
362      if (btn == dendego_mascon_table[level]) break;
833WRITE16_MEMBER(taitojc_state::dsp_rom_w)
834{
835   if (offset == 0)
836   {
837      m_dsp_rom_pos &= 0xffff;
838      m_dsp_rom_pos |= data << 16;
839   }
840   else
841   {
842      m_dsp_rom_pos &= 0xffff0000;
843      m_dsp_rom_pos |= data;
844   }
845}
363846
364   if (level != output_get_value("counter0"))
365      output_set_value("counter0", level);
847WRITE16_MEMBER(taitojc_state::dsp_texture_w)
848{
849   int index;
850   int x, y;
366851
367   btn = m_analog_inp[0]->read_safe(0) & 0xff;
368   for (level = 10; level > 0; level--)
369      if (btn >= dendego_brake_table[level]) break;
852   x = (m_dsp_tex_offset >> 0 & 0x1f) | (m_dsp_tex_offset >> 5 & 0x20);
853   y = (m_dsp_tex_offset >> 5 & 0x1f) | (m_dsp_tex_offset >> 6 & 0x20);
370854
371   if (level != output_get_value("counter1"))
372      output_set_value("counter1", level);
855   index = (((m_texture_y * 32) + y) * 2048) + ((m_texture_x * 32) + x);
856   m_texture[index] = data & 0xff;
373857
374   return screen_update_taitojc(screen, bitmap, cliprect);
858   m_dsp_tex_offset++;
375859}
376860
861READ16_MEMBER(taitojc_state::dsp_texaddr_r)
862{
863   return m_dsp_tex_address;
864}
377865
866WRITE16_MEMBER(taitojc_state::dsp_texaddr_w)
867{
868   m_dsp_tex_address = data;
378869
379void taitojc_renderer::render_solid_scan(INT32 scanline, const extent_t &extent, const taitojc_polydata &extradata, int threadid)
870   m_texture_x = (((data >> 0) & 0x1f) << 1) | ((data >> 12) & 0x1);
871   m_texture_y = (((data >> 5) & 0x1f) << 1) | ((data >> 13) & 0x1);
872
873   m_dsp_tex_offset = 0;
874}
875
876WRITE16_MEMBER(taitojc_state::dsp_polygon_fifo_w)
380877{
381   float z = extent.param[0].start;
382   int color = extent.param[1].start;
383   float dz = extent.param[0].dpdx;
384   UINT16 *fb = &m_framebuffer->pix16(scanline);
385   UINT16 *zb = &m_zbuffer->pix16(scanline);
878   assert (m_polygon_fifo_ptr < TAITOJC_POLYGON_FIFO_SIZE); // never happens
879   m_polygon_fifo[m_polygon_fifo_ptr++] = data;
880}
386881
387   for (int x = extent.startx; x < extent.stopx; x++)
882WRITE16_MEMBER(taitojc_state::dsp_unk2_w)
883{
884   if (offset == 0)
388885   {
389      int iz = (int)z & 0xffff;
886      taitojc_clear_frame();
887      m_renderer->render_polygons(machine(), m_polygon_fifo, m_polygon_fifo_ptr);
390888
391      if (iz <= zb[x])
392      {
393         fb[x] = color;
394         zb[x] = iz;
395      }
396
397      z += dz;
889      m_polygon_fifo_ptr = 0;
398890   }
399891}
400892
401void taitojc_renderer::render_shade_scan(INT32 scanline, const extent_t &extent, const taitojc_polydata &extradata, int threadid)
893static ADDRESS_MAP_START( tms_program_map, AS_PROGRAM, 16, taitojc_state )
894   AM_RANGE(0x0000, 0x1fff) AM_RAM AM_MIRROR(0x4000)
895   AM_RANGE(0x6000, 0x7fff) AM_RAM
896ADDRESS_MAP_END
897
898static ADDRESS_MAP_START( tms_data_map, AS_DATA, 16, taitojc_state )
899   AM_RANGE(0x6a01, 0x6a02) AM_WRITE(dsp_unk2_w)
900   AM_RANGE(0x6a11, 0x6a12) AM_NOP     // same as 0x6a01..02 for the second renderer chip?
901   AM_RANGE(0x6b20, 0x6b20) AM_WRITE(dsp_polygon_fifo_w)
902   AM_RANGE(0x6b22, 0x6b22) AM_WRITE(dsp_texture_w)
903   AM_RANGE(0x6b23, 0x6b23) AM_READWRITE(dsp_texaddr_r, dsp_texaddr_w)
904   AM_RANGE(0x6c00, 0x6c01) AM_READWRITE(dsp_rom_r, dsp_rom_w)
905   AM_RANGE(0x7000, 0x7002) AM_WRITE(dsp_math_projection_w)
906   AM_RANGE(0x7010, 0x7012) AM_WRITE(dsp_math_intersection_w)
907   AM_RANGE(0x7013, 0x7015) AM_WRITE(dsp_math_viewport_w)
908   AM_RANGE(0x701b, 0x701b) AM_READ(dsp_math_intersection_r)
909   AM_RANGE(0x701d, 0x701d) AM_READ(dsp_math_projection_y_r)
910   AM_RANGE(0x701f, 0x701f) AM_READ(dsp_math_projection_x_r)
911   AM_RANGE(0x7022, 0x7022) AM_READ(dsp_math_unk_r)
912   AM_RANGE(0x7800, 0x7fff) AM_DEVREADWRITE8("mb8421", mb8421_device, right_r, right_w, 0x00ff)
913   AM_RANGE(0x7800, 0x7fff) AM_READWRITE8(dsp_shared_r, dsp_shared_w, 0xff00) // which chip is this?
914   AM_RANGE(0x8000, 0xffff) AM_RAM
915ADDRESS_MAP_END
916
917
918
919
920/***************************************************************************
921
922  Inputs
923
924***************************************************************************/
925
926static INPUT_PORTS_START( common )
927   PORT_START("SERVICE")
928   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
929   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
930   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
931   PORT_SERVICE_NO_TOGGLE( 0x08, IP_ACTIVE_LOW )
932   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
933   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
934   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
935   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
936
937   PORT_START("COINS")
938   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
939   PORT_DIPNAME( 0x02, 0x02, "Dev Skip RAM Test" ) // skips mainram test on page 1 of POST
940   PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
941   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
942   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
943   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
944   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 )
945   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 )
946   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
947   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
948
949   PORT_START("START")
950   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_TILT )
951   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 )
952   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
953   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
954   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )
955   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
956   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
957   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
958
959   PORT_START("UNUSED")
960   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
961   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
962   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
963   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
964   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
965   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
966   PORT_DIPNAME( 0x40, 0x40, "Dev Debug" ) // debug related in dendego/sidebs
967   PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
968   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
969   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
970
971   PORT_START("BUTTONS")
972   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
973   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
974   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
975   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
976   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
977   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
978   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
979   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
980
981   PORT_START("EEPROMOUT")
982   PORT_BIT( 0x04000000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
983   PORT_BIT( 0x08000000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
984   PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
985INPUT_PORTS_END
986
987// Mascon must always be in a defined state, Densha de Go 2 in particular returns black screen if the Mascon input is undefined
988static const ioport_value dendego_mascon_table[6] = { 0x76, 0x67, 0x75, 0x57, 0x73, 0x37 };
989
990static INPUT_PORTS_START( dendego )
991   PORT_INCLUDE( common )
992
993   PORT_MODIFY("UNUSED")
994   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Horn Pedal")
995
996   PORT_MODIFY("BUTTONS")  // Throttle Lever at left, move down to speed up, 6 positions
997   PORT_BIT( 0x77, 0x00, IPT_POSITIONAL_V ) PORT_POSITIONS(6) PORT_REMAP_TABLE(dendego_mascon_table) PORT_SENSITIVITY(10) PORT_KEYDELTA(1) PORT_CENTERDELTA(0) PORT_NAME("Throttle Lever")
998   PORT_BIT( 0x88, IP_ACTIVE_LOW, IPT_UNUSED )
999
1000   PORT_START("AN.0")   // Brake Lever at right, rotate handle right (anti clockwise) to increase pressure, 11 positions but not at constant intervals like the throttle lever
1001   PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x00, 0xef) PORT_SENSITIVITY(35) PORT_KEYDELTA(10) PORT_CENTERDELTA(0) PORT_NAME("Brake Lever")
1002INPUT_PORTS_END
1003
1004static INPUT_PORTS_START( landgear )
1005   PORT_INCLUDE( common )
1006
1007   PORT_MODIFY("UNUSED")
1008   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("View Switch")
1009
1010   PORT_START("AN.0")       // Lever X
1011   PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_MINMAX(0x00, 0xff) PORT_SENSITIVITY(35) PORT_KEYDELTA(5) PORT_REVERSE
1012
1013   PORT_START("AN.1")       // Lever Y
1014   PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y )  PORT_MINMAX(0x00, 0xff) PORT_SENSITIVITY(35) PORT_KEYDELTA(5)
1015
1016   PORT_START("AN.2")       // Throttle
1017   PORT_BIT( 0xff, 0x00, IPT_PEDAL )  PORT_MINMAX(0x00, 0xff) PORT_SENSITIVITY(35) PORT_KEYDELTA(5) PORT_REVERSE
1018INPUT_PORTS_END
1019
1020static INPUT_PORTS_START( sidebs )
1021   PORT_INCLUDE( common )
1022
1023   PORT_MODIFY("START")
1024   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED ) // no start button
1025
1026   PORT_MODIFY("UNUSED")
1027   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("View Switch")
1028
1029   PORT_MODIFY("BUTTONS")
1030   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_NAME("Shift Up")
1031   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP   ) PORT_NAME("Shift Down")
1032
1033   PORT_START("AN.0")       // Steering
1034   PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x00, 0xff) PORT_SENSITIVITY(35) PORT_KEYDELTA(10) PORT_NAME("Steering Wheel")
1035
1036   PORT_START("AN.1")       // Acceleration
1037   PORT_BIT( 0xff, 0x00, IPT_PEDAL )  PORT_MINMAX(0x00, 0xff) PORT_SENSITIVITY(100) PORT_KEYDELTA(25) PORT_NAME("Gas Pedal")
1038
1039   PORT_START("AN.2")       // Brake
1040   PORT_BIT( 0xff, 0x00, IPT_PEDAL2 ) PORT_MINMAX(0x00, 0xff) PORT_SENSITIVITY(100) PORT_KEYDELTA(25) PORT_NAME("Brake Pedal")
1041INPUT_PORTS_END
1042
1043static INPUT_PORTS_START( dangcurv )
1044   PORT_INCLUDE( common )
1045
1046   PORT_MODIFY("START")
1047   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED ) // no start button
1048
1049   PORT_MODIFY("UNUSED")
1050   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("View Switch")
1051   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("Rear Switch")
1052
1053   PORT_MODIFY("BUTTONS")
1054   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_NAME("Shift Up")
1055   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP   ) PORT_NAME("Shift Down")
1056
1057   PORT_START("AN.0")       // Steering
1058   PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x00, 0xff) PORT_SENSITIVITY(35) PORT_KEYDELTA(10) PORT_REVERSE PORT_NAME("Steering Wheel")
1059
1060   PORT_START("AN.1")       // Acceleration
1061   PORT_BIT( 0xff, 0x00, IPT_PEDAL )  PORT_MINMAX(0x00, 0xff) PORT_SENSITIVITY(100) PORT_KEYDELTA(25) PORT_REVERSE PORT_NAME("Gas Pedal")
1062
1063   PORT_START("AN.2")       // Brake
1064   PORT_BIT( 0xff, 0x00, IPT_PEDAL2 ) PORT_MINMAX(0x00, 0xff) PORT_SENSITIVITY(100) PORT_KEYDELTA(25) PORT_REVERSE PORT_NAME("Brake Pedal")
1065INPUT_PORTS_END
1066
1067
1068
1069
1070/***************************************************************************
1071
1072  Machine Config
1073
1074***************************************************************************/
1075
1076void taitojc_state::machine_reset()
4021077{
403   float z = extent.param[0].start;
404   float color = extent.param[1].start;
405   float dz = extent.param[0].dpdx;
406   float dcolor = extent.param[1].dpdx;
407   UINT16 *fb = &m_framebuffer->pix16(scanline);
408   UINT16 *zb = &m_zbuffer->pix16(scanline);
1078   m_first_dsp_reset = 1;
4091079
410   for (int x = extent.startx; x < extent.stopx; x++)
411   {
412      int ic = (int)color & 0xffff;
413      int iz = (int)z & 0xffff;
1080   m_mcu_comm_main = 0;
1081   m_mcu_comm_hc11 = 0;
1082   m_mcu_data_main = 0;
1083   m_mcu_data_hc11 = 0;
4141084
415      if (iz <= zb[x])
416      {
417         fb[x] = ic;
418         zb[x] = iz;
419      }
1085   m_texture_x = 0;
1086   m_texture_y = 0;
4201087
421      color += dcolor;
422      z += dz;
423   }
1088   m_dsp_rom_pos = 0;
1089   m_dsp_tex_address = 0;
1090   m_dsp_tex_offset = 0;
1091   m_polygon_fifo_ptr = 0;
1092
1093   memset(m_dsp_shared_ram_hi, 0, sizeof(m_dsp_shared_ram_hi));
1094   memset(m_viewport_data, 0, sizeof(m_viewport_data));
1095   memset(m_projection_data, 0, sizeof(m_projection_data));
1096   memset(m_intersection_data, 0, sizeof(m_intersection_data));
1097
1098   // hold the TMS in reset until we have code
1099   m_dsp->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
4241100}
4251101
426void taitojc_renderer::render_texture_scan(INT32 scanline, const extent_t &extent, const taitojc_polydata &extradata, int threadid)
1102void taitojc_state::machine_start()
4271103{
428   float z = extent.param[0].start;
429   float u = extent.param[1].start;
430   float v = extent.param[2].start;
431   float color = extent.param[3].start;
432   float dz = extent.param[0].dpdx;
433   float du = extent.param[1].dpdx;
434   float dv = extent.param[2].dpdx;
435   float dcolor = extent.param[3].dpdx;
436   UINT16 *fb = &m_framebuffer->pix16(scanline);
437   UINT16 *zb = &m_zbuffer->pix16(scanline);
438   int tex_wrap_x = extradata.tex_wrap_x;
439   int tex_wrap_y = extradata.tex_wrap_y;
440   int tex_base_x = extradata.tex_base_x;
441   int tex_base_y = extradata.tex_base_y;
1104   // register for savestates
1105   save_item(NAME(m_texture_x));
1106   save_item(NAME(m_texture_y));
1107   save_item(NAME(m_dsp_rom_pos));
1108   save_item(NAME(m_dsp_tex_address));
1109   save_item(NAME(m_dsp_tex_offset));
1110   save_item(NAME(m_first_dsp_reset));
1111   save_item(NAME(m_dsp_shared_ram_hi));
1112   save_item(NAME(m_viewport_data));
1113   save_item(NAME(m_projection_data));
1114   save_item(NAME(m_intersection_data));
1115   save_item(NAME(m_gfx_index));
1116   save_item(NAME(m_polygon_fifo_ptr));
4421117
443   for (int x = extent.startx; x < extent.stopx; x++)
444   {
445      int iu, iv;
446      UINT8 texel;
447      int palette = ((int)color & 0x7f) << 8;
448      int iz = (int)z & 0xffff;
1118   save_item(NAME(m_mcu_comm_main));
1119   save_item(NAME(m_mcu_comm_hc11));
1120   save_item(NAME(m_mcu_data_main));
1121   save_item(NAME(m_mcu_data_hc11));
1122   save_item(NAME(m_mcu_output));
4491123
450      if (!tex_wrap_x)
451      {
452         iu = ((int)u >> 4) & 0x7ff;
453      }
454      else
455      {
456         iu = (tex_base_x + (((int)u >> 4) & 0x3f)) & 0x7ff;
457      }
1124   save_item(NAME(m_speed_meter));
1125   save_item(NAME(m_brake_meter));
1126}
4581127
459      if (!tex_wrap_y)
460      {
461         iv = ((int)v >> 4) & 0x7ff;
462      }
463      else
464      {
465         iv = (tex_base_y + (((int)v >> 4) & 0x3f)) & 0x7ff;
466      }
4671128
468      texel = m_texture[(iv * 2048) + iu];
1129static MACHINE_CONFIG_START( taitojc, taitojc_state )
4691130
470      if (iz <= zb[x] && texel != 0)
471      {
472         fb[x] = palette | texel;
473         zb[x] = iz;
474      }
1131   /* basic machine hardware */
1132   MCFG_CPU_ADD("maincpu", M68040, XTAL_10MHz*2) // 20MHz, clock source = CY7C991
1133   MCFG_CPU_PROGRAM_MAP(taitojc_map)
1134   MCFG_CPU_VBLANK_INT_DRIVER("screen", taitojc_state, taitojc_vblank)
4751135
476      u += du;
477      v += dv;
478      color += dcolor;
479      z += dz;
480   }
481}
1136   MCFG_CPU_ADD("sub", MC68HC11, XTAL_16MHz/2) // 8MHz, MC68HC11M0
1137   MCFG_CPU_PROGRAM_MAP(hc11_pgm_map)
1138   MCFG_CPU_IO_MAP(hc11_io_map)
1139   MCFG_MC68HC11_CONFIG( 1, 1280, 0x00 )
4821140
483void taitojc_renderer::render_polygons(running_machine &machine, UINT16 *polygon_fifo, int length)
484{
485//  taitojc_state *state = machine.driver_data<taitojc_state>();
486   const rectangle visarea = machine.first_screen()->visible_area();
487   vertex_t vert[4];
488   int i;
489   int ptr;
1141   MCFG_CPU_ADD("dsp", TMS32051, XTAL_10MHz*4) // 40MHz, clock source = CY7C991
1142   MCFG_CPU_PROGRAM_MAP(tms_program_map)
1143   MCFG_CPU_DATA_MAP(tms_data_map)
4901144
491   ptr = 0;
492   while (ptr < length)
493   {
494      UINT16 cmd = polygon_fifo[ptr++];
1145   MCFG_QUANTUM_TIME(attotime::from_hz(6000))
4951146
496      switch (cmd & 0x7)
497      {
498         // screen global clipping for 3d(?)
499         case 0x00:
500         {
501            UINT16 min_x,min_y,min_z,max_x,max_y,max_z;
1147   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
5021148
503            min_x = polygon_fifo[ptr+1];
504            min_y = polygon_fifo[ptr+0];
505            min_z = polygon_fifo[ptr+2];
506            max_x = polygon_fifo[ptr+4];
507            max_y = polygon_fifo[ptr+3];
508            max_z = polygon_fifo[ptr+5];
1149   MCFG_DEVICE_ADD("mb8421", MB8421, 0)
1150   MCFG_MB8421_INTL_HANDLER(WRITELINE(taitojc_state, mb8421_intl))
1151   MCFG_MB8421_INTR_HANDLER(WRITELINE(taitojc_state, mb8421_intr))
5091152
510            /* let's check if we need to implement this ... */
511            if(min_x != 0 || min_y != 0 || min_z != 0 || max_x != 512 || max_y != 400 || max_z != 0x7fff)
512            {
513               printf("CMD %04x\n",cmd);
514               printf("MIN Y %04x\n",polygon_fifo[ptr+0]);
515               printf("MIN X %04x\n",polygon_fifo[ptr+1]);
516               printf("MIN Z %04x\n",polygon_fifo[ptr+2]);
517               printf("MAX Y %04x\n",polygon_fifo[ptr+3]);
518               printf("MAX X %04x\n",polygon_fifo[ptr+4]);
519               printf("MAX Z %04x\n",polygon_fifo[ptr+5]);
520            }
521            ptr += 6;
522            break;
523         }
1153   MCFG_DEVICE_ADD("tc0640fio", TC0640FIO, 0)
1154   MCFG_TC0640FIO_READ_0_CB(IOPORT("SERVICE"))
1155   MCFG_TC0640FIO_READ_1_CB(IOPORT("COINS"))
1156   MCFG_TC0640FIO_READ_2_CB(IOPORT("START"))
1157   MCFG_TC0640FIO_READ_3_CB(IOPORT("UNUSED"))
1158   MCFG_TC0640FIO_READ_7_CB(IOPORT("BUTTONS"))
5241159
525         // Gouraud Shaded Triangle (Landing Gear)
526         case 0x01:
527         {
528            // 0x00: Command ID (0x0001)
529            // 0x01: Vertex 1 color
530            // 0x02: Vertex 1 Y
531            // 0x03: Vertex 1 X
532            // 0x04: Vertex 1 Z
533            // 0x05: Vertex 2 color
534            // 0x06: Vertex 2 Y
535            // 0x07: Vertex 2 X
536            // 0x08: Vertex 2 Z
537            // 0x09: Vertex 3 color
538            // 0x0a: Vertex 3 Y
539            // 0x0b: Vertex 3 X
540            // 0x0c: Vertex 3 Z
1160   MCFG_GFXDECODE_ADD("gfxdecode", "palette", empty)
5411161
542#if 0
543            printf("CMD1: ");
544            for (i=0; i < 0x0c; i++)
545            {
546               printf("%04X ", polygon_fifo[ptr+i]);
547            }
548            printf("\n");
549#endif
1162   /* video hardware */
1163   MCFG_SCREEN_ADD("screen", RASTER)
1164   MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
1165   MCFG_SCREEN_UPDATE_DRIVER(taitojc_state, screen_update_taitojc)
1166   MCFG_SCREEN_PALETTE("palette")
5501167
551            for (i=0; i < 3; i++)
552            {
553               vert[i].p[1] = polygon_fifo[ptr++];
554               vert[i].y =  (INT16)(polygon_fifo[ptr++]);
555               vert[i].x =  (INT16)(polygon_fifo[ptr++]);
556               vert[i].p[0] = (UINT16)(polygon_fifo[ptr++]);
557            }
1168   MCFG_PALETTE_ADD("palette", 32768)
5581169
559            if (vert[0].p[0] < 0x8000 && vert[1].p[0] < 0x8000 && vert[2].p[0] < 0x8000)
560            {
561               if (vert[0].p[1] == vert[1].p[1] &&
562                  vert[1].p[1] == vert[2].p[1])
563               {
564                  // optimization: all colours the same -> render solid
565                  render_triangle(visarea, render_delegate(FUNC(taitojc_renderer::render_solid_scan), this), 2, vert[0], vert[1], vert[2]);
566               }
567               else
568               {
569                  render_triangle(visarea, render_delegate(FUNC(taitojc_renderer::render_shade_scan), this), 2, vert[0], vert[1], vert[2]);
570               }
571            }
572            break;
573         }
1170   /* sound hardware */
1171   MCFG_FRAGMENT_ADD(taito_en_sound)
1172MACHINE_CONFIG_END
5741173
575         // Textured Triangle
576         case 0x03:
577         {
578            // 0x00: Command ID (0x0003)
579            // 0x01: Texture base
580            // 0x02: Vertex 1 Palette
581            // 0x03: Vertex 1 V
582            // 0x04: Vertex 1 U
583            // 0x05: Vertex 1 Y
584            // 0x06: Vertex 1 X
585            // 0x07: Vertex 1 Z
586            // 0x08: Vertex 2 Palette
587            // 0x09: Vertex 2 V
588            // 0x0a: Vertex 2 U
589            // 0x0b: Vertex 2 Y
590            // 0x0c: Vertex 2 X
591            // 0x0d: Vertex 2 Z
592            // 0x0e: Vertex 3 Palette
593            // 0x0f: Vertex 3 V
594            // 0x10: Vertex 3 U
595            // 0x11: Vertex 3 Y
596            // 0x12: Vertex 3 X
597            // 0x13: Vertex 3 Z
1174static MACHINE_CONFIG_DERIVED( dendego, taitojc )
5981175
599#if 0
600            printf("CMD3: ");
601            for (i=0; i < 0x13; i++)
602            {
603               printf("%04X ", polygon_fifo[ptr+i]);
604            }
605            printf("\n");
606#endif
1176   /* basic machine hardware */
1177   MCFG_CPU_MODIFY("maincpu")
1178   MCFG_CPU_PROGRAM_MAP(dendego_map)
6071179
608            taitojc_polydata &extra = object_data_alloc();
609            UINT16 texbase = polygon_fifo[ptr++];
1180   /* video hardware */
1181   MCFG_SCREEN_MODIFY("screen")
1182   MCFG_SCREEN_UPDATE_DRIVER(taitojc_state, screen_update_dendego)
6101183
611            extra.tex_base_x = ((texbase >> 0) & 0xff) << 4;
612            extra.tex_base_y = ((texbase >> 8) & 0xff) << 4;
1184   /* sound hardware */
1185   MCFG_SPEAKER_ADD("subwoofer", 0.0, 0.0, 1.0)
1186   MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified
1187   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "subwoofer", 0.20)
1188MACHINE_CONFIG_END
6131189
614            extra.tex_wrap_x = (cmd & 0xc0) ? 1 : 0;
615            extra.tex_wrap_y = (cmd & 0x30) ? 1 : 0;
6161190
617            for (i=0; i < 3; i++)
618            {
619               vert[i].p[3] = polygon_fifo[ptr++] + 0.5;   // palette
620               vert[i].p[2] = (UINT16)(polygon_fifo[ptr++]);
621               vert[i].p[1] = (UINT16)(polygon_fifo[ptr++]);
622               vert[i].y =  (INT16)(polygon_fifo[ptr++]);
623               vert[i].x =  (INT16)(polygon_fifo[ptr++]);
624               vert[i].p[0] = (UINT16)(polygon_fifo[ptr++]);
625            }
6261191
627            if (vert[0].p[0] < 0x8000 && vert[1].p[0] < 0x8000 && vert[2].p[0] < 0x8000)
628            {
629               render_triangle(visarea, render_delegate(FUNC(taitojc_renderer::render_texture_scan), this), 4, vert[0], vert[1], vert[2]);
630            }
631            break;
632         }
6331192
634         // Gouraud shaded Quad
635         case 0x04:
636         {
637            // 0x00: Command ID (0x0004)
638            // 0x01: Vertex 1 color
639            // 0x02: Vertex 1 Y
640            // 0x03: Vertex 1 X
641            // 0x04: Vertex 1 Z
642            // 0x05: Vertex 2 color
643            // 0x06: Vertex 2 Y
644            // 0x07: Vertex 2 X
645            // 0x08: Vertex 2 Z
646            // 0x09: Vertex 3 color
647            // 0x0a: Vertex 3 Y
648            // 0x0b: Vertex 3 X
649            // 0x0c: Vertex 3 Z
650            // 0x0d: Vertex 4 color
651            // 0x0e: Vertex 4 Y
652            // 0x0f: Vertex 4 X
653            // 0x10: Vertex 4 Z
1193/***************************************************************************
6541194
655#if 0
656            printf("CMD4: ");
657            for (i=0; i < 0x10; i++)
658            {
659               printf("%04X ", polygon_fifo[ptr+i]);
660            }
661            printf("\n");
662#endif
1195  Game Drivers
6631196
664            for (i=0; i < 4; i++)
665            {
666               vert[i].p[1] = polygon_fifo[ptr++];
667               vert[i].y =  (INT16)(polygon_fifo[ptr++]);
668               vert[i].x =  (INT16)(polygon_fifo[ptr++]);
669               vert[i].p[0] = (UINT16)(polygon_fifo[ptr++]);
670            }
1197***************************************************************************/
6711198
672            if (vert[0].p[0] < 0x8000 && vert[1].p[0] < 0x8000 && vert[2].p[0] < 0x8000 && vert[3].p[0] < 0x8000)
673            {
674               if (vert[0].p[1] == vert[1].p[1] &&
675                  vert[1].p[1] == vert[2].p[1] &&
676                  vert[2].p[1] == vert[3].p[1])
677               {
678                  // optimization: all colours the same -> render solid
679                  render_polygon<4>(visarea, render_delegate(FUNC(taitojc_renderer::render_solid_scan), this), 2, vert);
680               }
681               else
682               {
683                  render_polygon<4>(visarea, render_delegate(FUNC(taitojc_renderer::render_shade_scan), this), 2, vert);
684               }
685            }
686            break;
687         }
1199READ16_MEMBER(taitojc_state::taitojc_dsp_idle_skip_r)
1200{
1201   if (space.device().safe_pc() == 0x404c)
1202      space.device().execute().spin_until_time(attotime::from_usec(500));
6881203
689         // Textured Quad
690         case 0x06:
691         {
692            // 0x00: Command ID (0x0006)
693            // 0x01: Texture base
694            // 0x02: Vertex 1 Palette
695            // 0x03: Vertex 1 V
696            // 0x04: Vertex 1 U
697            // 0x05: Vertex 1 Y
698            // 0x06: Vertex 1 X
699            // 0x07: Vertex 1 Z
700            // 0x08: Vertex 2 Palette
701            // 0x09: Vertex 2 V
702            // 0x0a: Vertex 2 U
703            // 0x0b: Vertex 2 Y
704            // 0x0c: Vertex 2 X
705            // 0x0d: Vertex 2 Z
706            // 0x0e: Vertex 3 Palette
707            // 0x0f: Vertex 3 V
708            // 0x10: Vertex 3 U
709            // 0x11: Vertex 3 Y
710            // 0x12: Vertex 3 X
711            // 0x13: Vertex 3 Z
712            // 0x14: Vertex 4 Palette
713            // 0x15: Vertex 4 V
714            // 0x16: Vertex 4 U
715            // 0x17: Vertex 4 Y
716            // 0x18: Vertex 4 X
717            // 0x19: Vertex 4 Z
1204   return m_dsp_shared_ram_hi[0x7f0] << 8 | m_mb8421->peek(0x7f0);
1205}
7181206
719#if 0
720            printf("CMD6: ");
721            for (i=0; i < 0x19; i++)
722            {
723               printf("%04X ", polygon_fifo[ptr+i]);
724            }
725            printf("\n");
726#endif
1207READ16_MEMBER(taitojc_state::dendego2_dsp_idle_skip_r)
1208{
1209   if (space.device().safe_pc() == 0x402e)
1210      space.device().execute().spin_until_time(attotime::from_usec(500));
7271211
728            taitojc_polydata &extra = object_data_alloc();
729            UINT16 texbase = polygon_fifo[ptr++];
1212   return m_dsp_shared_ram_hi[0x7f0] << 8 | m_mb8421->peek(0x7f0);
1213}
7301214
731            extra.tex_base_x = ((texbase >> 0) & 0xff) << 4;
732            extra.tex_base_y = ((texbase >> 8) & 0xff) << 4;
7331215
734            extra.tex_wrap_x = (cmd & 0xc0) ? 1 : 0;
735            extra.tex_wrap_y = (cmd & 0x30) ? 1 : 0;
1216DRIVER_INIT_MEMBER(taitojc_state,taitojc)
1217{
1218   m_polygon_fifo = auto_alloc_array(machine(), UINT16, TAITOJC_POLYGON_FIFO_SIZE);
7361219
737            for (i=0; i < 4; i++)
738            {
739               vert[i].p[3] = polygon_fifo[ptr++] + 0.5;   // palette
740               vert[i].p[2] = (UINT16)(polygon_fifo[ptr++]);
741               vert[i].p[1] = (UINT16)(polygon_fifo[ptr++]);
742               vert[i].y =  (INT16)(polygon_fifo[ptr++]);
743               vert[i].x =  (INT16)(polygon_fifo[ptr++]);
744               vert[i].p[0] = (UINT16)(polygon_fifo[ptr++]);
745            }
1220   m_has_dsp_hack = 1;
7461221
747            if (vert[0].p[0] < 0x8000 && vert[1].p[0] < 0x8000 && vert[2].p[0] < 0x8000 && vert[3].p[0] < 0x8000)
748            {
749               render_polygon<4>(visarea, render_delegate(FUNC(taitojc_renderer::render_texture_scan), this), 4, vert);
750            }
751            break;
752         }
1222   if (DSP_IDLESKIP)
1223      m_dsp->space(AS_DATA).install_read_handler(0x7ff0, 0x7ff0, read16_delegate(FUNC(taitojc_state::taitojc_dsp_idle_skip_r),this));
1224}
7531225
754         default:
755         {
756            printf("render_polygons: unknown command %04X %d\n", cmd,ptr);
757            break;
758         }
759      }
760   }
1226DRIVER_INIT_MEMBER(taitojc_state,dendego2)
1227{
1228   DRIVER_INIT_CALL(taitojc);
7611229
762   wait("Finished render");
1230   if (DSP_IDLESKIP)
1231      m_dsp->space(AS_DATA).install_read_handler(0x7ff0, 0x7ff0, read16_delegate(FUNC(taitojc_state::dendego2_dsp_idle_skip_r),this));
7631232}
7641233
765void taitojc_state::taitojc_clear_frame()
1234DRIVER_INIT_MEMBER(taitojc_state,dangcurv)
7661235{
767   m_framebuffer.fill(0, m_screen->visible_area());
768   m_zbuffer.fill(0xffff, m_screen->visible_area());
1236   DRIVER_INIT_CALL(taitojc);
1237
1238   m_has_dsp_hack = 0;
7691239}
1240
1241
1242/**************************************************************************/
1243
1244ROM_START( sidebs ) /* Side by Side ver 2.7 J */
1245   ROM_REGION(0x200000, "maincpu", 0)      /* 68040 code */
1246   ROM_LOAD32_BYTE( "e23-47.ic36", 0x000000, 0x80000, CRC(c67dc173) SHA1(fb16f75683b42cafc28c50d6c823d0987b09cd00) )
1247   ROM_LOAD32_BYTE( "e23-48.ic37", 0x000001, 0x80000, CRC(e3da7652) SHA1(a872e8d26e3e376786762f2571f75f282e2481f1) )
1248   ROM_LOAD32_BYTE( "e23-49.ic38", 0x000002, 0x80000, CRC(b2fdded3) SHA1(8e0f2d2d967a2e6b7d1954548941bc6257799d2d) )
1249   ROM_LOAD32_BYTE( "e23-50.ic39", 0x000003, 0x80000, CRC(76510731) SHA1(b8b9836fa121d2028e0218f4d439af0d7dae295e) )
1250
1251   ROM_REGION( 0x180000, "audiocpu", 0 )       /* 68000 Code */
1252   ROM_LOAD16_BYTE( "e23-23.ic30", 0x100001, 0x40000, CRC(cffbffe5) SHA1(c01ac44390dacab4b49bb066a46d81a184b07a1e) )
1253   ROM_LOAD16_BYTE( "e23-24.ic31", 0x100000, 0x40000, CRC(64bae246) SHA1(f929f664881487615b1259db43a0721135830274) )
1254
1255   ROM_REGION( 0x010000, "sub", 0 )        /* MC68HC11M0 code */
1256   ROM_LOAD( "e17-23.ic65",  0x000000, 0x010000, CRC(80ac1428) SHA1(5a2a1e60a11ecdb8743c20ddacfb61f9fd00f01c) )
1257
1258   ROM_REGION( 0x4000, "dsp", ROMREGION_ERASE00 ) /* TMS320C51 internal rom */
1259   ROM_LOAD16_WORD( "e07-11.ic29", 0x0000, 0x4000, NO_DUMP )
1260
1261   ROM_REGION( 0x1800000, "gfx1", 0 )
1262   ROM_LOAD32_WORD( "e23-05.ic9",   0x0800002, 0x200000, CRC(6e5d11ec) SHA1(e5c39d80577bf8ae9fc6162dc54571c6c8421160) )
1263   ROM_LOAD32_WORD( "e23-12.ic22",  0x0800000, 0x200000, CRC(7365333c) SHA1(4f7b75088799ea37f714bc7e5c5b276a7e5d933f) )
1264   ROM_LOAD32_WORD( "e23-06.ic10",  0x0c00002, 0x200000, CRC(ffcfd153) SHA1(65fa486cf0156e2988bd6e7060d66f87f765a123) )
1265   ROM_LOAD32_WORD( "e23-13.ic23",  0x0c00000, 0x200000, CRC(16982d37) SHA1(134370f7dfadb1886f1e5e5dd16f8b72ad08fc68) )
1266   ROM_LOAD32_WORD( "e23-07.ic12",  0x1400002, 0x200000, CRC(90f2a87c) SHA1(770bb89fa42cb2a1d5a58525b8d72ed7df3f93ed) )
1267   ROM_LOAD32_WORD( "e23-14.ic25",  0x1400000, 0x200000, CRC(1bc5a914) SHA1(92f82a4e2fbac73dbb3293726fc09022bd11a8fe) )
1268
1269   ROM_REGION( 0x1000000, "gfx2", 0 )      /* only accessible to the TMS */
1270   ROM_LOAD( "e23-01.ic5",   0x0000000, 0x200000, CRC(2cbe4bbd) SHA1(ed6fe4344c86d50914b5ddbc720dd15544f4d07f) )
1271   ROM_LOAD( "e23-02.ic6",   0x0200000, 0x200000, CRC(7ebada03) SHA1(d75c992aa33dd7f71de6a6d09aac471012b0daa3) )
1272   ROM_LOAD( "e23-03.ic7",   0x0400000, 0x200000, CRC(5bf1f30b) SHA1(6e0c07b9f92962eec55ee444732a10ac78f8b050) )
1273   ROM_LOAD( "e23-04.ic8",   0x0600000, 0x200000, CRC(0f860fb5) SHA1(47c0db4ec6d02e10d8abfacd1fa332f7af3976dd) )
1274   ROM_LOAD( "e23-08.ic18",  0x0800000, 0x200000, CRC(bceea63e) SHA1(eeec1e2306aa37431c5ba69bdb9c5524ab7b7ba4) )
1275   ROM_LOAD( "e23-09.ic19",  0x0a00000, 0x200000, CRC(3917c12f) SHA1(e3a568f638bb6b0cd6237c9fee5fc350983ea1e7) )
1276   ROM_LOAD( "e23-10.ic20",  0x0c00000, 0x200000, CRC(038370d9) SHA1(c02f68a25121d2d5aae62c419522b25cd6ec32b6) )
1277   ROM_LOAD( "e23-11.ic21",  0x0e00000, 0x200000, CRC(91fab03d) SHA1(1865d8b679faa6f2b3c14db2c6c461c00afd547c) )
1278
1279   ROM_REGION16_BE( 0x1000000, "ensoniq.0", ROMREGION_ERASE00  )
1280   ROM_LOAD16_BYTE( "e23-15.ic32",  0x000000, 0x200000, CRC(8955b7c7) SHA1(767626bd5cf6810b0368ee85e487c12ef7e8a23d) )
1281   ROM_LOAD16_BYTE( "e23-16.ic33",  0x400000, 0x200000, CRC(1d63d785) SHA1(0cf74bb433e9c453e35f7a552fdf9e22084b2f49) )
1282   ROM_LOAD16_BYTE( "e23-17.ic34",  0x800000, 0x200000, CRC(1c54021a) SHA1(a1efbdb02d23a5d32ebd25cb8e99dface3178ebd) )
1283   ROM_LOAD16_BYTE( "e23-18.ic35",  0xc00000, 0x200000, CRC(1816f38a) SHA1(6451bdb4b4297aaf4987451bc0ddd97b0072e113) )
1284ROM_END
1285
1286ROM_START( sidebsja ) /* Side by Side ver 2.5 J */
1287   ROM_REGION(0x200000, "maincpu", 0)      /* 68040 code */
1288   ROM_LOAD32_BYTE( "e23-19.ic36", 0x000000, 0x80000, CRC(7b75481b) SHA1(47332e045f92b31e4f35c38e6880a7287b9a5c2c) )
1289   ROM_LOAD32_BYTE( "e23-20.ic37", 0x000001, 0x80000, CRC(cbd857dd) SHA1(ae33ad8b0c3559a3a9096351e9aa07782d3cb841) )
1290   ROM_LOAD32_BYTE( "e23-21.ic38", 0x000002, 0x80000, CRC(357f2e10) SHA1(226922f2649d9ac78d253200f5bbff4fb3ac74c8) )
1291   ROM_LOAD32_BYTE( "e23-22.ic39", 0x000003, 0x80000, CRC(c793ba43) SHA1(0ddbf625320968b4e18309d8e732ce4a2b9f4bce) )
1292
1293   ROM_REGION( 0x180000, "audiocpu", 0 )       /* 68000 Code */
1294   ROM_LOAD16_BYTE( "e23-23.ic30", 0x100001, 0x40000, CRC(cffbffe5) SHA1(c01ac44390dacab4b49bb066a46d81a184b07a1e) )
1295   ROM_LOAD16_BYTE( "e23-24.ic31", 0x100000, 0x40000, CRC(64bae246) SHA1(f929f664881487615b1259db43a0721135830274) )
1296
1297   ROM_REGION( 0x010000, "sub", 0 )        /* MC68HC11M0 code */
1298   ROM_LOAD( "e17-23.ic65",  0x000000, 0x010000, CRC(80ac1428) SHA1(5a2a1e60a11ecdb8743c20ddacfb61f9fd00f01c) )
1299
1300   ROM_REGION( 0x4000, "dsp", ROMREGION_ERASE00 ) /* TMS320C51 internal rom */
1301   ROM_LOAD16_WORD( "e07-11.ic29", 0x0000, 0x4000, NO_DUMP )
1302
1303   ROM_REGION( 0x1800000, "gfx1", 0 )
1304   ROM_LOAD32_WORD( "e23-05.ic9",   0x0800002, 0x200000, CRC(6e5d11ec) SHA1(e5c39d80577bf8ae9fc6162dc54571c6c8421160) )
1305   ROM_LOAD32_WORD( "e23-12.ic22",  0x0800000, 0x200000, CRC(7365333c) SHA1(4f7b75088799ea37f714bc7e5c5b276a7e5d933f) )
1306   ROM_LOAD32_WORD( "e23-06.ic10",  0x0c00002, 0x200000, CRC(ffcfd153) SHA1(65fa486cf0156e2988bd6e7060d66f87f765a123) )
1307   ROM_LOAD32_WORD( "e23-13.ic23",  0x0c00000, 0x200000, CRC(16982d37) SHA1(134370f7dfadb1886f1e5e5dd16f8b72ad08fc68) )
1308   ROM_LOAD32_WORD( "e23-07.ic12",  0x1400002, 0x200000, CRC(90f2a87c) SHA1(770bb89fa42cb2a1d5a58525b8d72ed7df3f93ed) )
1309   ROM_LOAD32_WORD( "e23-14.ic25",  0x1400000, 0x200000, CRC(1bc5a914) SHA1(92f82a4e2fbac73dbb3293726fc09022bd11a8fe) )
1310
1311   ROM_REGION( 0x1000000, "gfx2", 0 )      /* only accessible to the TMS */
1312   ROM_LOAD( "e23-01.ic5",   0x0000000, 0x200000, CRC(2cbe4bbd) SHA1(ed6fe4344c86d50914b5ddbc720dd15544f4d07f) )
1313   ROM_LOAD( "e23-02.ic6",   0x0200000, 0x200000, CRC(7ebada03) SHA1(d75c992aa33dd7f71de6a6d09aac471012b0daa3) )
1314   ROM_LOAD( "e23-03.ic7",   0x0400000, 0x200000, CRC(5bf1f30b) SHA1(6e0c07b9f92962eec55ee444732a10ac78f8b050) )
1315   ROM_LOAD( "e23-04.ic8",   0x0600000, 0x200000, CRC(0f860fb5) SHA1(47c0db4ec6d02e10d8abfacd1fa332f7af3976dd) )
1316   ROM_LOAD( "e23-08.ic18",  0x0800000, 0x200000, CRC(bceea63e) SHA1(eeec1e2306aa37431c5ba69bdb9c5524ab7b7ba4) )
1317   ROM_LOAD( "e23-09.ic19",  0x0a00000, 0x200000, CRC(3917c12f) SHA1(e3a568f638bb6b0cd6237c9fee5fc350983ea1e7) )
1318   ROM_LOAD( "e23-10.ic20",  0x0c00000, 0x200000, CRC(038370d9) SHA1(c02f68a25121d2d5aae62c419522b25cd6ec32b6) )
1319   ROM_LOAD( "e23-11.ic21",  0x0e00000, 0x200000, CRC(91fab03d) SHA1(1865d8b679faa6f2b3c14db2c6c461c00afd547c) )
1320
1321   ROM_REGION16_BE( 0x1000000, "ensoniq.0", ROMREGION_ERASE00  )
1322   ROM_LOAD16_BYTE( "e23-15.ic32",  0x000000, 0x200000, CRC(8955b7c7) SHA1(767626bd5cf6810b0368ee85e487c12ef7e8a23d) )
1323   ROM_LOAD16_BYTE( "e23-16.ic33",  0x400000, 0x200000, CRC(1d63d785) SHA1(0cf74bb433e9c453e35f7a552fdf9e22084b2f49) )
1324   ROM_LOAD16_BYTE( "e23-17.ic34",  0x800000, 0x200000, CRC(1c54021a) SHA1(a1efbdb02d23a5d32ebd25cb8e99dface3178ebd) )
1325   ROM_LOAD16_BYTE( "e23-18.ic35",  0xc00000, 0x200000, CRC(1816f38a) SHA1(6451bdb4b4297aaf4987451bc0ddd97b0072e113) )
1326ROM_END
1327
1328ROM_START( sidebs2 )
1329   ROM_REGION(0x200000, "maincpu", 0)      /* 68040 code */
1330   ROM_LOAD32_BYTE( "sbs2_p0.ic36", 0x000000, 0x80000, CRC(2dd78d09) SHA1(f0a0105c3f2827c8b55d1bc58ebeea0f71150fed) )
1331   ROM_LOAD32_BYTE( "sbs2_p1.ic37", 0x000001, 0x80000, CRC(befeda1d) SHA1(3171c87b0872f3206653900e3dbd210ea9beba61) )
1332   ROM_LOAD32_BYTE( "sbs2_p2.ic38", 0x000002, 0x80000, CRC(ade07d7e) SHA1(a5200ea3ddbfef37d302e7cb27015b6f6aa8a7c1) )
1333   ROM_LOAD32_BYTE( "sbs2_p3.ic39", 0x000003, 0x80000, CRC(94e943d6) SHA1(2bc7332526b969e5084b9d73063f1c0d18ec5181) )
1334
1335   ROM_REGION( 0x180000, "audiocpu", 0 )       /* 68000 Code */
1336   ROM_LOAD16_BYTE( "e38-19.ic30",  0x100001, 0x40000, CRC(3f50cb7b) SHA1(76af65c9b74ede843a3182f79cecda8c3e3febe6) )
1337   ROM_LOAD16_BYTE( "e38-20.ic31",  0x100000, 0x40000, CRC(d01340e7) SHA1(76ee48d644dc1ec415d47e0df4864c64ac928b9d) )
1338
1339   ROM_REGION( 0x4000, "dsp", ROMREGION_ERASE00 ) /* TMS320C51 internal rom */
1340   ROM_LOAD16_WORD( "e07-11.ic29", 0x0000, 0x4000, NO_DUMP )
1341
1342   ROM_REGION( 0x010000, "sub", 0 )        /* MC68HC11M0 code */
1343   ROM_LOAD( "e17-23.ic65",  0x000000, 0x010000, CRC(80ac1428) SHA1(5a2a1e60a11ecdb8743c20ddacfb61f9fd00f01c) )
1344
1345   ROM_REGION( 0x1800000, "gfx1", 0 )
1346   ROM_LOAD32_WORD( "e38-05.ic9",  0x0800002, 0x200000, CRC(bda366bf) SHA1(a7558e6d5e4583a2d8e3d2bfa8cabcc459d3ee83) )
1347   ROM_LOAD32_WORD( "e38-13.ic22", 0x0800000, 0x200000, CRC(1bd7582b) SHA1(35763b9489f995433f66ef72d4f6b6ac67df5480) )
1348   ROM_LOAD32_WORD( "e38-06.ic10", 0x0c00002, 0x200000, CRC(308d2783) SHA1(22c309273444bc6c1df78069850958a739664998) )
1349   ROM_LOAD32_WORD( "e38-14.ic23", 0x0c00000, 0x200000, CRC(f1699f27) SHA1(3c9a9cefe6f215fd9f0a9746da97147d14df1da4) )
1350   ROM_LOAD32_WORD( "e38-07.ic11", 0x1000002, 0x200000, CRC(226ba93d) SHA1(98e6342d070ddd988c1e9bff21afcfb28df86844) )
1351   ROM_LOAD32_WORD( "e38-15.ic24", 0x1000000, 0x200000, CRC(2853c2e3) SHA1(046dbbd4bcb3b07cddab19a284fee9fe736f8def) )
1352   ROM_LOAD32_WORD( "e38-08.ic12", 0x1400002, 0x200000, CRC(9c513b32) SHA1(fe26e39d3d65073d23d525bc17771f0c244a38c2) )
1353   ROM_LOAD32_WORD( "e38-16.ic25", 0x1400000, 0x200000, CRC(fceafae2) SHA1(540ecd5d1aa64c0428a08ea1e4e634e00f7e6bd6) )
1354
1355   ROM_REGION( 0x1000000, "gfx2", 0 )      /* only accessible to the TMS */
1356   ROM_LOAD( "e38-01.ic5",  0x0000000, 0x200000, CRC(a3c2e2c7) SHA1(538208534f996782167e4cf0d157ad93ce2937bd) )
1357   ROM_LOAD( "e38-02.ic6",  0x0200000, 0x200000, CRC(ecdfb75a) SHA1(85e7afa321846816fa3bd9074ad9dec95abe23fe) )
1358   ROM_LOAD( "e38-03.ic7",  0x0400000, 0x200000, CRC(28e9cb59) SHA1(a2651fd81a1263573f868864ee049f8fc4177ffa) )
1359   ROM_LOAD( "e38-04.ic8",  0x0600000, 0x080000, CRC(26cab05b) SHA1(d5bcf021646dade834840051e0ce083319c53985) )
1360   ROM_RELOAD(              0x0680000, 0x080000 )
1361   ROM_RELOAD(              0x0700000, 0x080000 )
1362   ROM_RELOAD(              0x0780000, 0x080000 )
1363   ROM_LOAD( "e38-09.ic18", 0x0800000, 0x200000, CRC(03c95a7f) SHA1(fc046cf5fcfcf5648f68af4bed78576f6d67b32f) )
1364   ROM_LOAD( "e38-10.ic19", 0x0a00000, 0x200000, CRC(0fb06794) SHA1(2d0e3b07ded698235572fe9e907a84d5779ac2c5) )
1365   ROM_LOAD( "e38-11.ic20", 0x0c00000, 0x200000, CRC(6a312351) SHA1(8037e377f8eef4cc6dd84aec9c829106f0bb130c) )
1366   ROM_LOAD( "e38-12.ic21", 0x0e00000, 0x080000, CRC(193a5774) SHA1(aa017ae4fec92bb87c0eb94f59d093853ddbabc9) )
1367   ROM_RELOAD(              0x0e80000, 0x080000 )
1368   ROM_RELOAD(              0x0f00000, 0x080000 )
1369   ROM_RELOAD(              0x0f80000, 0x080000 )
1370
1371   ROM_REGION16_BE( 0x1000000, "ensoniq.0", ROMREGION_ERASE00  )
1372   ROM_LOAD16_BYTE( "e23-15.ic32", 0x000000, 0x200000, CRC(8955b7c7) SHA1(767626bd5cf6810b0368ee85e487c12ef7e8a23d) ) // from sidebs (redump)
1373   ROM_LOAD16_BYTE( "e38-17.ic33", 0x400000, 0x200000, CRC(61e81c7f) SHA1(aa650bc139685ad456c233b79aa60005a8fd6d79) )
1374   ROM_LOAD16_BYTE( "e38-18.ic34", 0x800000, 0x200000, CRC(43e2f149) SHA1(32ea9156948a886dda5bd071e9f493ddc2b06212) )
1375   ROM_LOAD16_BYTE( "e38-21.ic35", 0xc00000, 0x200000, CRC(25373c5f) SHA1(ab9f917dbde7c808be2cd836ce2d3fc558e290f1) )
1376
1377   /* PALS
1378   e23-28.ic18    NOT A ROM
1379   e23-27.ic13    NOT A ROM
1380   e23-26.ic4     NOT A ROM
1381   e23-25-1.ic3   NOT A ROM
1382   e23-30.ic40    NOT A ROM
1383   e23-29.ic39    NOT A ROM
1384   e23-31.ic46    NOT A ROM
1385   e23-32-1.ic51  NOT A ROM
1386   e23-34.ic72    NOT A ROM
1387   e23-33.ic53    NOT A ROM
1388   e23-35.ic110   NOT A ROM
1389   e23-38.ic73    NOT A ROM
1390   e23-37.ic69    NOT A ROM
1391   */
1392ROM_END
1393
1394ROM_START( sidebs2j ) /* This version has the sub-title of "Evoluzione" */
1395   ROM_REGION(0x200000, "maincpu", 0)      /* 68040 code */
1396   ROM_LOAD32_BYTE( "e38-23+.ic36", 0x000000, 0x80000, CRC(b3d8e2d9) SHA1(6de6a51c3d9ace532fa03517bab93101b5a3eaae) ) /* Actual label E38-23* */
1397   ROM_LOAD32_BYTE( "e38-24+.ic37", 0x000001, 0x80000, CRC(2a47d80d) SHA1(41b889e4a1397c7f0d4f6ef136ed8abfd7e1ed86) ) /* Actual label E38-24* */
1398   ROM_LOAD32_BYTE( "e38-25+.ic38", 0x000002, 0x80000, CRC(f1a8a4df) SHA1(e4cf75969fb0503df2290522194b097f5cb983a3) ) /* Actual label E38-25* */
1399   ROM_LOAD32_BYTE( "e38-26+.ic39", 0x000003, 0x80000, CRC(b550fbf2) SHA1(a0a461af7e71c6ad6468cfdee2bc7161ae31bbfb) ) /* Actual label E38-26* */
1400
1401   ROM_REGION( 0x180000, "audiocpu", 0 )       /* 68000 Code */
1402   ROM_LOAD16_BYTE( "e38-19.ic30", 0x100001, 0x040000, CRC(3f50cb7b) SHA1(76af65c9b74ede843a3182f79cecda8c3e3febe6) )
1403   ROM_LOAD16_BYTE( "e38-20.ic31", 0x100000, 0x040000, CRC(d01340e7) SHA1(76ee48d644dc1ec415d47e0df4864c64ac928b9d) )
1404
1405   ROM_REGION( 0x4000, "dsp", ROMREGION_ERASE00 ) /* TMS320C51 internal rom */
1406   ROM_LOAD16_WORD( "e07-11.ic29", 0x0000, 0x4000, NO_DUMP )
1407
1408   ROM_REGION( 0x010000, "sub", 0 )        /* MC68HC11M0 code */
1409   ROM_LOAD( "e17-23.ic65",  0x000000, 0x010000, CRC(80ac1428) SHA1(5a2a1e60a11ecdb8743c20ddacfb61f9fd00f01c) )
1410
1411   ROM_REGION( 0x1800000, "gfx1", 0 )
1412   ROM_LOAD32_WORD( "e38-05.ic9",  0x0800002, 0x200000, CRC(bda366bf) SHA1(a7558e6d5e4583a2d8e3d2bfa8cabcc459d3ee83) )
1413   ROM_LOAD32_WORD( "e38-13.ic22", 0x0800000, 0x200000, CRC(1bd7582b) SHA1(35763b9489f995433f66ef72d4f6b6ac67df5480) )
1414   ROM_LOAD32_WORD( "e38-06.ic10", 0x0c00002, 0x200000, CRC(308d2783) SHA1(22c309273444bc6c1df78069850958a739664998) )
1415   ROM_LOAD32_WORD( "e38-14.ic23", 0x0c00000, 0x200000, CRC(f1699f27) SHA1(3c9a9cefe6f215fd9f0a9746da97147d14df1da4) )
1416   ROM_LOAD32_WORD( "e38-07.ic11", 0x1000002, 0x200000, CRC(226ba93d) SHA1(98e6342d070ddd988c1e9bff21afcfb28df86844) )
1417   ROM_LOAD32_WORD( "e38-15.ic24", 0x1000000, 0x200000, CRC(2853c2e3) SHA1(046dbbd4bcb3b07cddab19a284fee9fe736f8def) )
1418   ROM_LOAD32_WORD( "e38-08.ic12", 0x1400002, 0x200000, CRC(9c513b32) SHA1(fe26e39d3d65073d23d525bc17771f0c244a38c2) )
1419   ROM_LOAD32_WORD( "e38-16.ic25", 0x1400000, 0x200000, CRC(fceafae2) SHA1(540ecd5d1aa64c0428a08ea1e4e634e00f7e6bd6) )
1420
1421   ROM_REGION( 0x1000000, "gfx2", 0 )      /* only accessible to the TMS */
1422   ROM_LOAD( "e38-01.ic5",  0x0000000, 0x200000, CRC(a3c2e2c7) SHA1(538208534f996782167e4cf0d157ad93ce2937bd) )
1423   ROM_LOAD( "e38-02.ic6",  0x0200000, 0x200000, CRC(ecdfb75a) SHA1(85e7afa321846816fa3bd9074ad9dec95abe23fe) )
1424   ROM_LOAD( "e38-03.ic7",  0x0400000, 0x200000, CRC(28e9cb59) SHA1(a2651fd81a1263573f868864ee049f8fc4177ffa) )
1425   ROM_LOAD( "e38-04.ic8",  0x0600000, 0x080000, CRC(26cab05b) SHA1(d5bcf021646dade834840051e0ce083319c53985) )
1426   ROM_RELOAD(              0x0680000, 0x080000 )
1427   ROM_RELOAD(              0x0700000, 0x080000 )
1428   ROM_RELOAD(              0x0780000, 0x080000 )
1429   ROM_LOAD( "e38-09.ic18", 0x0800000, 0x200000, CRC(03c95a7f) SHA1(fc046cf5fcfcf5648f68af4bed78576f6d67b32f) )
1430   ROM_LOAD( "e38-10.ic19", 0x0a00000, 0x200000, CRC(0fb06794) SHA1(2d0e3b07ded698235572fe9e907a84d5779ac2c5) )
1431   ROM_LOAD( "e38-11.ic20", 0x0c00000, 0x200000, CRC(6a312351) SHA1(8037e377f8eef4cc6dd84aec9c829106f0bb130c) )
1432   ROM_LOAD( "e38-12.ic21", 0x0e00000, 0x080000, CRC(193a5774) SHA1(aa017ae4fec92bb87c0eb94f59d093853ddbabc9) )
1433   ROM_RELOAD(              0x0e80000, 0x080000 )
1434   ROM_RELOAD(              0x0f00000, 0x080000 )
1435   ROM_RELOAD(              0x0f80000, 0x080000 )
1436
1437   ROM_REGION16_BE( 0x1000000, "ensoniq.0", ROMREGION_ERASE00  )
1438   ROM_LOAD16_BYTE( "e23-15.ic32", 0x000000, 0x200000, CRC(8955b7c7) SHA1(767626bd5cf6810b0368ee85e487c12ef7e8a23d) ) // from sidebs (redump)
1439   ROM_LOAD16_BYTE( "e38-17.ic33", 0x400000, 0x200000, CRC(61e81c7f) SHA1(aa650bc139685ad456c233b79aa60005a8fd6d79) )
1440   ROM_LOAD16_BYTE( "e38-18.ic34", 0x800000, 0x200000, CRC(43e2f149) SHA1(32ea9156948a886dda5bd071e9f493ddc2b06212) )
1441   ROM_LOAD16_BYTE( "e38-21.ic35", 0xc00000, 0x200000, CRC(25373c5f) SHA1(ab9f917dbde7c808be2cd836ce2d3fc558e290f1) )
1442
1443   /* PALS
1444   e23-28.ic18    NOT A ROM
1445   e23-27.ic13    NOT A ROM
1446   e23-26.ic4     NOT A ROM
1447   e23-25-1.ic3   NOT A ROM
1448   e23-30.ic40    NOT A ROM
1449   e23-29.ic39    NOT A ROM
1450   e23-31.ic46    NOT A ROM
1451   e23-32-1.ic51  NOT A ROM
1452   e23-34.ic72    NOT A ROM
1453   e23-33.ic53    NOT A ROM
1454   e23-35.ic110   NOT A ROM
1455   e23-38.ic73    NOT A ROM
1456   e23-37.ic69    NOT A ROM
1457   */
1458ROM_END
1459
1460ROM_START( dendego )
1461   ROM_REGION( 0x200000, "maincpu", 0 )        /* 68040 code */
1462   ROM_LOAD32_BYTE( "e35-21.ic36", 0x000000, 0x80000, CRC(bc70ca97) SHA1(724a24da9d6f163c26e7528ee2c15bd06f2c4382) )
1463   ROM_LOAD32_BYTE( "e35-22.ic37", 0x000001, 0x80000, CRC(83b17de8) SHA1(538ddc16727e08e9a2a8ff6b4f030dc044993aa0) )
1464   ROM_LOAD32_BYTE( "e35-23.ic38", 0x000002, 0x80000, CRC(1da4acd6) SHA1(2ce11c5f37287526bb1d39185f793d79fc73d5b5) )
1465   ROM_LOAD32_BYTE( "e35-24.ic39", 0x000003, 0x80000, CRC(0318afb0) SHA1(9c86330c85536fb1a093ed40610b1c3ddb7813c3) )
1466
1467   ROM_REGION( 0x180000, "audiocpu", 0 )       /* 68000 Code */
1468   ROM_LOAD16_BYTE( "e35-25.ic30", 0x100001, 0x40000, CRC(8104de13) SHA1(e518fbaf91704cf5cb8ffbb4833e3adba8c18658) )
1469   ROM_LOAD16_BYTE( "e35-26.ic31", 0x100000, 0x40000, CRC(61821cc9) SHA1(87cd5bd3bb22c9f4ca4b6d96f75434d48418321b) )
1470
1471   ROM_REGION( 0x4000, "dsp", ROMREGION_ERASE00 ) /* TMS320C51 internal rom */
1472   ROM_LOAD16_WORD( "e07-11.ic29", 0x0000, 0x4000, NO_DUMP )
1473
1474   ROM_REGION( 0x010000, "sub", 0 )    /* MC68HC11M0 code */
1475   ROM_LOAD( "e17-23.ic65",  0x000000, 0x010000, CRC(80ac1428) SHA1(5a2a1e60a11ecdb8743c20ddacfb61f9fd00f01c) )
1476
1477   ROM_REGION( 0x1800000, "gfx1", 0 )
1478   ROM_LOAD32_WORD( "e35-05.ic9",   0x0800002, 0x200000, CRC(a94486c5) SHA1(c3f869aa0557411f747038a1e0ed6eedcf91fda5) )
1479   ROM_LOAD32_WORD( "e35-13.ic22",  0x0800000, 0x200000, CRC(2dc9dff1) SHA1(bc7ad64bc359f18a065e36749cc29c75e52202e2) )
1480   ROM_LOAD32_WORD( "e35-06.ic10",  0x0c00002, 0x200000, CRC(cf328021) SHA1(709ce80f9338637172dbf4e9adcacdb3e5b4ccdb) )
1481   ROM_LOAD32_WORD( "e35-14.ic23",  0x0c00000, 0x200000, CRC(cab50364) SHA1(e3272f844ecadfd63a1e3c965526a851f8cde94d) )
1482   ROM_LOAD32_WORD( "e35-07.ic11",  0x1000002, 0x200000, CRC(a88a5a86) SHA1(a4a393fe9df3654e41d32e015ca3977d13206dfe) )
1483   ROM_LOAD32_WORD( "e35-15.ic24",  0x1000000, 0x200000, CRC(aea86b35) SHA1(092f34f844fc6a779a6f18c03d44a9d39a101373) )
1484   ROM_LOAD32_WORD( "e35-08.ic12",  0x1400002, 0x200000, CRC(99425ff6) SHA1(3bd6fe7204dece55459392170b42d4c6a9d3ef5b) )
1485   ROM_LOAD32_WORD( "e35-16.ic25",  0x1400000, 0x200000, CRC(161481b6) SHA1(cc3c2939ac8911c197e9930580d316066f345772) )
1486
1487   ROM_REGION( 0x1000000, "gfx2", 0 )      /* only accessible to the TMS */
1488   ROM_LOAD( "e35-01.ic5",   0x0000000, 0x200000, CRC(bd1975cb) SHA1(a08c6f4a84f9d4c2a5aa67cc2045aedd4580b8dc) )
1489   ROM_LOAD( "e35-02.ic6",   0x0200000, 0x200000, CRC(e5caa459) SHA1(c38d795b96fff193223cd3df9f51ebdc2971b719) )
1490   ROM_LOAD( "e35-03.ic7",   0x0400000, 0x200000, CRC(86ea5bcf) SHA1(1cee7f677b786b2fa9f50e723decd08cd69fbdef) )
1491   ROM_LOAD( "e35-04.ic8",   0x0600000, 0x200000, CRC(afc07c36) SHA1(f3f7b04766a9a2c8b298e1692aea24abc7001432) )
1492   ROM_LOAD( "e35-09.ic18",  0x0800000, 0x200000, CRC(be18ddf1) SHA1(d4fe26e427244c5b421b6421ff3bf9af303673d5) )
1493   ROM_LOAD( "e35-10.ic19",  0x0a00000, 0x200000, CRC(44ea9474) SHA1(161ff94b31c3dc2fa4b1e556ed62624147687443) )
1494   ROM_LOAD( "e35-11.ic20",  0x0c00000, 0x200000, CRC(dc8f5e88) SHA1(e311252db8a7232a5325a3eff5c1890d20bd3f8f) )
1495   ROM_LOAD( "e35-12.ic21",  0x0e00000, 0x200000, CRC(039b604c) SHA1(7e394e7cddc6bf42f3834d5331203e8496597a90) )
1496
1497   ROM_REGION( 0x40000, "oki", 0 )     /* train board, OKI6295 sound samples */
1498   ROM_LOAD( "e35-28.trn",  0x000000, 0x040000, CRC(d1b571c1) SHA1(cac7d3f0285544fe36b8b744edfbac0190cdecab) )
1499
1500   ROM_REGION16_BE( 0x1000000, "ensoniq.0", ROMREGION_ERASE00  )
1501   ROM_LOAD16_BYTE( "e35-17.ic32",  0x000000, 0x200000, CRC(3bc23aa1) SHA1(621e0f2f5f3dbd7d7ce05c9cd317958c361c1c26) )
1502   ROM_LOAD16_BYTE( "e35-18.ic33",  0x400000, 0x200000, CRC(a084d3aa) SHA1(18ea39366006e362e16d6732ce3e79cd3bfa041e) )
1503   ROM_LOAD16_BYTE( "e35-19.ic34",  0x800000, 0x200000, CRC(ebe2dcef) SHA1(16ae41e0f3bb242cbc2922f53cacbd99961a3f97) )
1504   ROM_LOAD16_BYTE( "e35-20.ic35",  0xc00000, 0x200000, CRC(a1d4b30d) SHA1(e02f613b93d3b3ee1eb23f5b7f62c5448ed3966d) )
1505ROM_END
1506
1507ROM_START( dendegox )
1508   ROM_REGION( 0x200000, "maincpu", 0 )        /* 68040 code */
1509   ROM_LOAD32_BYTE( "e35-30.ic36", 0x000000, 0x80000, CRC(57ee0975) SHA1(c7741a7e0e9c1fdebc6b942587d7ac5a6f26f66d) ) //ex
1510   ROM_LOAD32_BYTE( "e35-31.ic37", 0x000001, 0x80000, CRC(bd5f2651) SHA1(73b760df351170ace019e4b61c82d8c6296a3632) ) //ex
1511   ROM_LOAD32_BYTE( "e35-32.ic38", 0x000002, 0x80000, CRC(66be29d5) SHA1(e73937f5bda709a606d5cdf7316b26051317c22f) ) //ex
1512   ROM_LOAD32_BYTE( "e35-33.ic39", 0x000003, 0x80000, CRC(76a6bde2) SHA1(ca456ec3f0410777362e3eb977ae156866271bd5) ) //ex
1513
1514   ROM_REGION( 0x180000, "audiocpu", 0 )       /* 68000 Code */
1515   ROM_LOAD16_BYTE( "e35-25.ic30", 0x100001, 0x40000, CRC(8104de13) SHA1(e518fbaf91704cf5cb8ffbb4833e3adba8c18658) )
1516   ROM_LOAD16_BYTE( "e35-26.ic31", 0x100000, 0x40000, CRC(61821cc9) SHA1(87cd5bd3bb22c9f4ca4b6d96f75434d48418321b) )
1517
1518   ROM_REGION( 0x4000, "dsp", ROMREGION_ERASE00 ) /* TMS320C51 internal rom */
1519   ROM_LOAD16_WORD( "e07-11.ic29", 0x0000, 0x4000, NO_DUMP )
1520
1521   ROM_REGION( 0x010000, "sub", 0 )        /* MC68HC11M0 code */
1522   ROM_LOAD( "e17-23.ic65",  0x000000, 0x010000, CRC(80ac1428) SHA1(5a2a1e60a11ecdb8743c20ddacfb61f9fd00f01c) )
1523
1524   ROM_REGION( 0x1800000, "gfx1", 0 )
1525   ROM_LOAD32_WORD( "e35-05.ic9",   0x0800002, 0x200000, CRC(a94486c5) SHA1(c3f869aa0557411f747038a1e0ed6eedcf91fda5) )
1526   ROM_LOAD32_WORD( "e35-13.ic22",  0x0800000, 0x200000, CRC(2dc9dff1) SHA1(bc7ad64bc359f18a065e36749cc29c75e52202e2) )
1527   ROM_LOAD32_WORD( "e35-06.ic10",  0x0c00002, 0x200000, CRC(cf328021) SHA1(709ce80f9338637172dbf4e9adcacdb3e5b4ccdb) )
1528   ROM_LOAD32_WORD( "e35-14.ic23",  0x0c00000, 0x200000, CRC(cab50364) SHA1(e3272f844ecadfd63a1e3c965526a851f8cde94d) )
1529   ROM_LOAD32_WORD( "e35-07.ic11",  0x1000002, 0x200000, CRC(a88a5a86) SHA1(a4a393fe9df3654e41d32e015ca3977d13206dfe) )
1530   ROM_LOAD32_WORD( "e35-15.ic24",  0x1000000, 0x200000, CRC(aea86b35) SHA1(092f34f844fc6a779a6f18c03d44a9d39a101373) )
1531   ROM_LOAD32_WORD( "e35-08.ic12",  0x1400002, 0x200000, CRC(99425ff6) SHA1(3bd6fe7204dece55459392170b42d4c6a9d3ef5b) )
1532   ROM_LOAD32_WORD( "e35-16.ic25",  0x1400000, 0x200000, CRC(161481b6) SHA1(cc3c2939ac8911c197e9930580d316066f345772) )
1533
1534   ROM_REGION( 0x1000000, "gfx2", 0 )      /* only accessible to the TMS */
1535   ROM_LOAD( "e35-01.ic5",   0x0000000, 0x200000, CRC(bd1975cb) SHA1(a08c6f4a84f9d4c2a5aa67cc2045aedd4580b8dc) )
1536   ROM_LOAD( "e35-02.ic6",   0x0200000, 0x200000, CRC(e5caa459) SHA1(c38d795b96fff193223cd3df9f51ebdc2971b719) )
1537   ROM_LOAD( "e35-03.ic7",   0x0400000, 0x200000, CRC(86ea5bcf) SHA1(1cee7f677b786b2fa9f50e723decd08cd69fbdef) )
1538   ROM_LOAD( "e35-04.ic8",   0x0600000, 0x200000, CRC(afc07c36) SHA1(f3f7b04766a9a2c8b298e1692aea24abc7001432) )
1539   ROM_LOAD( "e35-09.ic18",  0x0800000, 0x200000, CRC(be18ddf1) SHA1(d4fe26e427244c5b421b6421ff3bf9af303673d5) )
1540   ROM_LOAD( "e35-10.ic19",  0x0a00000, 0x200000, CRC(44ea9474) SHA1(161ff94b31c3dc2fa4b1e556ed62624147687443) )
1541   ROM_LOAD( "e35-11.ic20",  0x0c00000, 0x200000, CRC(dc8f5e88) SHA1(e311252db8a7232a5325a3eff5c1890d20bd3f8f) )
1542   ROM_LOAD( "e35-12.ic21",  0x0e00000, 0x200000, CRC(039b604c) SHA1(7e394e7cddc6bf42f3834d5331203e8496597a90) )
1543
1544   ROM_REGION( 0x40000, "oki", 0 )     /* train board, OKI6295 sound samples */
1545   ROM_LOAD( "e35-28.trn",  0x000000, 0x040000, CRC(d1b571c1) SHA1(cac7d3f0285544fe36b8b744edfbac0190cdecab) )
1546
1547   ROM_REGION16_BE( 0x1000000, "ensoniq.0", ROMREGION_ERASE00  )
1548   ROM_LOAD16_BYTE( "e35-17.ic32",  0x000000, 0x200000, CRC(3bc23aa1) SHA1(621e0f2f5f3dbd7d7ce05c9cd317958c361c1c26) )
1549   ROM_LOAD16_BYTE( "e35-18.ic33",  0x400000, 0x200000, CRC(a084d3aa) SHA1(18ea39366006e362e16d6732ce3e79cd3bfa041e) )
1550   ROM_LOAD16_BYTE( "e35-19.ic34",  0x800000, 0x200000, CRC(ebe2dcef) SHA1(16ae41e0f3bb242cbc2922f53cacbd99961a3f97) )
1551   ROM_LOAD16_BYTE( "e35-20.ic35",  0xc00000, 0x200000, CRC(a1d4b30d) SHA1(e02f613b93d3b3ee1eb23f5b7f62c5448ed3966d) )
1552ROM_END
1553
1554ROM_START( dendego2 )
1555   ROM_REGION( 0x200000, "maincpu", 0 )        /* 68040 code */
1556   ROM_LOAD32_BYTE( "e52-25-1.ic36", 0x000000, 0x80000, CRC(fadf5b4c) SHA1(48f3e1425bb9552d472a2720e1c9a752db2b43ed) )
1557   ROM_LOAD32_BYTE( "e52-26-1.ic37", 0x000001, 0x80000, CRC(7cf5230d) SHA1(b3416886d7cfc88520f6bf378529086bf0095db5) )
1558   ROM_LOAD32_BYTE( "e52-27-1.ic38", 0x000002, 0x80000, CRC(25f0d81d) SHA1(c33c3e6b1ad49b63b31a2f1227d43141faef4eab) )
1559   ROM_LOAD32_BYTE( "e52-28-1.ic39", 0x000003, 0x80000, CRC(e76ff6a1) SHA1(674c00f19df034de8134d48a8c2d2e42f7eb1be7) )
1560
1561   ROM_REGION( 0x180000, "audiocpu", 0 )       /* 68000 Code */
1562   ROM_LOAD16_BYTE( "e52-29.ic30",   0x100001, 0x40000, CRC(6010162a) SHA1(f14920b26887f5387b3e261b63573d850195982a) )
1563   ROM_LOAD16_BYTE( "e52-30.ic31",   0x100000, 0x40000, CRC(2881af4a) SHA1(5918f6508b3cd3bef3751e3bda2a48152569c1cd) )
1564
1565   ROM_REGION( 0x4000, "dsp", ROMREGION_ERASE00 ) /* TMS320C51 internal rom */
1566   ROM_LOAD16_WORD( "e07-11.ic29", 0x0000, 0x4000, NO_DUMP )
1567
1568   ROM_REGION( 0x010000, "sub", 0 )        /* MC68HC11M0 code */
1569   ROM_LOAD( "e17-23.ic65",  0x000000, 0x010000, CRC(80ac1428) SHA1(5a2a1e60a11ecdb8743c20ddacfb61f9fd00f01c) )
1570
1571   ROM_REGION( 0x1800000, "gfx1", 0 )
1572   ROM_LOAD32_WORD( "e52-17.ic52",  0x0000002, 0x200000, CRC(4ac11921) SHA1(c4816e1d68bb52ee59e7a2e6de617c1093020944) )
1573   ROM_LOAD32_WORD( "e52-18.ic53",  0x0000000, 0x200000, CRC(7f3e4af7) SHA1(ab35744014175a802e73c8b70de4e7508f0a1cd1) )
1574   ROM_LOAD32_WORD( "e52-19.ic54",  0x0400002, 0x200000, CRC(2e5ff408) SHA1(91f95721b98198082e950c50f33324820719e9ed) )
1575   ROM_LOAD32_WORD( "e52-20.ic55",  0x0400000, 0x200000, CRC(e90eb71e) SHA1(f07518c718f773e20412393c0ebb3243f9b1d96c) )
1576   ROM_LOAD32_WORD( "e52-05.ic9",   0x0800002, 0x200000, CRC(1ad0c612) SHA1(4ffc373fca8c1e1a5edbad3305b08f0867e9809c) )
1577   ROM_LOAD32_WORD( "e52-13.ic22",  0x0800000, 0x200000, CRC(943af3f4) SHA1(bfc81aa5e5c22e44601428b9e980f09d0c65e38e) )
1578   ROM_LOAD32_WORD( "e52-06.ic10",  0x0c00002, 0x200000, CRC(aa35e536) SHA1(2c1b2ee0d2587db6d6dd60b081bfcef3bb0dd9fa) )
1579   ROM_LOAD32_WORD( "e52-14.ic23",  0x0c00000, 0x200000, CRC(f311a9b4) SHA1(1f25571ac9468d453e92886e003400fffdc149f2) )
1580   ROM_LOAD32_WORD( "e52-07.ic11",  0x1000002, 0x200000, CRC(80a27984) SHA1(57b8c41809de09582600b8ff30c135d5abd044b8) )
1581   ROM_LOAD32_WORD( "e52-15.ic24",  0x1000000, 0x200000, CRC(b45a6199) SHA1(9339a1520b38d1f6538171a0b01df87de3e9c2d1) )
1582   ROM_LOAD32_WORD( "e52-08.ic12",  0x1400002, 0x200000, CRC(d52e6b9c) SHA1(382a5fd4533ab641a09321208464d83f72e161e3) )
1583   ROM_LOAD32_WORD( "e52-16.ic25",  0x1400000, 0x200000, CRC(db6dd6e2) SHA1(d345dbd745514d4777d52c4360787ea8c462ffb1) )
1584
1585   ROM_REGION( 0x1000000, "gfx2", 0 )      /* only accessible to the TMS */
1586   ROM_LOAD( "e52-01.ic5",   0x0000000, 0x200000, CRC(8db39c3c) SHA1(74b3305ebdf679ae274c73b7b32d2adea602bedc) )
1587   ROM_LOAD( "e52-02.ic6",   0x0200000, 0x200000, CRC(b8d6f066) SHA1(99553ad66643ebf7fc71a9aee526d8f206b41dcc) )
1588   ROM_LOAD( "e52-03.ic7",   0x0400000, 0x200000, CRC(a37d164b) SHA1(767a7d2de8b91a00c5fe74710937457e8568a422) )
1589   ROM_LOAD( "e52-04.ic8",   0x0600000, 0x200000, CRC(403a4142) SHA1(aa5fea79a7a838642152586689d0f9b33311252c) )
1590   ROM_LOAD( "e52-09.ic18",  0x0800000, 0x200000, CRC(830e0a3c) SHA1(ab96f380e53f72945f73a6cfcc80d12e1b1afce8) )
1591   ROM_LOAD( "e52-10.ic19",  0x0a00000, 0x200000, CRC(671e41c6) SHA1(281899d83dba104daf7d7c2bd0834cab4c022472) )
1592   ROM_LOAD( "e52-11.ic20",  0x0c00000, 0x200000, CRC(1bc22680) SHA1(1f71db88d6df3b4bdf090b77bc83a67906bb31da) )
1593   ROM_LOAD( "e52-12.ic21",  0x0e00000, 0x200000, CRC(a8bb91c5) SHA1(959a9fedb7839e1e4e7658d920bd5da4fd8cae48) )
1594
1595   ROM_REGION( 0x40000, "oki", 0 )     /* train board, OKI6295 sound samples */
1596   ROM_LOAD( "e35-28.trn",  0x000000, 0x040000, CRC(d1b571c1) SHA1(cac7d3f0285544fe36b8b744edfbac0190cdecab) )
1597
1598   ROM_REGION16_BE( 0x1000000, "ensoniq.0", ROMREGION_ERASE00  )
1599   ROM_LOAD16_BYTE( "e52-21.ic32",  0x000000, 0x200000, CRC(ba58081d) SHA1(bcb6c8781191d48f906ed404a3e7388097a64781) )
1600   ROM_LOAD16_BYTE( "e52-22.ic33",  0x400000, 0x200000, CRC(dda281b1) SHA1(4851a6bf7902548c5033090a0e5c15f74c00ef58) )
1601   ROM_LOAD16_BYTE( "e52-23.ic34",  0x800000, 0x200000, CRC(ebe2dcef) SHA1(16ae41e0f3bb242cbc2922f53cacbd99961a3f97) ) // same as e35-19.ic34 from dendego
1602   ROM_LOAD16_BYTE( "e52-24.ic35",  0xc00000, 0x200000, CRC(a9a678da) SHA1(b980ae644ef0312acd63b017028af9bf2b084c29) )
1603ROM_END
1604
1605ROM_START( dendego23k )
1606   ROM_REGION( 0x200000, "maincpu", 0 )        /* 68040 code */
1607   ROM_LOAD32_BYTE( "e52-35.ic36", 0x000000, 0x80000, CRC(d5b33eb8) SHA1(e05ad73986741827b7bbeac72af0a8324384bf6b) ) //2ex
1608   ROM_LOAD32_BYTE( "e52-36.ic37", 0x000001, 0x80000, CRC(f3f3fabd) SHA1(4f88080091af2208d671c491284d992b5036908c) ) //2ex
1609   ROM_LOAD32_BYTE( "e52-37.ic38", 0x000002, 0x80000, CRC(65b8ef31) SHA1(b61b391b160e81715ff355aeef65026d7e4dd9af) ) //2ex
1610   ROM_LOAD32_BYTE( "e52-38.ic39", 0x000003, 0x80000, CRC(cf61f321) SHA1(c8493d2499afba673174b26044aca537e384916c) ) //2ex
1611
1612   ROM_REGION( 0x180000, "audiocpu", 0 )       /* 68000 Code */
1613   ROM_LOAD16_BYTE( "e52-29.ic30", 0x100001, 0x40000, CRC(6010162a) SHA1(f14920b26887f5387b3e261b63573d850195982a) )
1614   ROM_LOAD16_BYTE( "e52-30.ic31", 0x100000, 0x40000, CRC(2881af4a) SHA1(5918f6508b3cd3bef3751e3bda2a48152569c1cd) )
1615
1616   ROM_REGION( 0x4000, "dsp", ROMREGION_ERASE00 ) /* TMS320C51 internal rom */
1617   ROM_LOAD16_WORD( "e07-11.ic29", 0x0000, 0x4000, NO_DUMP )
1618
1619   ROM_REGION( 0x010000, "sub", 0 )        /* MC68HC11M0 code */
1620   ROM_LOAD( "e17-23.ic65",  0x000000, 0x010000, CRC(80ac1428) SHA1(5a2a1e60a11ecdb8743c20ddacfb61f9fd00f01c) )
1621
1622   ROM_REGION( 0x1800000, "gfx1", 0 )
1623   ROM_LOAD32_WORD( "e52-17.ic52",  0x0000002, 0x200000, CRC(4ac11921) SHA1(c4816e1d68bb52ee59e7a2e6de617c1093020944) )
1624   ROM_LOAD32_WORD( "e52-18.ic53",  0x0000000, 0x200000, CRC(7f3e4af7) SHA1(ab35744014175a802e73c8b70de4e7508f0a1cd1) )
1625   ROM_LOAD32_WORD( "e52-19.ic54",  0x0400002, 0x200000, CRC(2e5ff408) SHA1(91f95721b98198082e950c50f33324820719e9ed) )
1626   ROM_LOAD32_WORD( "e52-20.ic55",  0x0400000, 0x200000, CRC(e90eb71e) SHA1(f07518c718f773e20412393c0ebb3243f9b1d96c) )
1627   ROM_LOAD32_WORD( "e52-05.ic9",   0x0800002, 0x200000, CRC(1ad0c612) SHA1(4ffc373fca8c1e1a5edbad3305b08f0867e9809c) )
1628   ROM_LOAD32_WORD( "e52-13.ic22",  0x0800000, 0x200000, CRC(943af3f4) SHA1(bfc81aa5e5c22e44601428b9e980f09d0c65e38e) )
1629   ROM_LOAD32_WORD( "e52-31.ic10",  0x0c00002, 0x200000, CRC(e9e2eb3d) SHA1(97e2dc907faa512d3fb140dafe3250f04991ff07) ) //2ex
1630   ROM_LOAD32_WORD( "e52-33.ic23",  0x0c00000, 0x200000, CRC(6906f41f) SHA1(0d3f6fc4772417190d123ad38b0b8a8a532159c6) ) //2ex
1631   ROM_LOAD32_WORD( "e52-32.ic11",  0x1000002, 0x200000, CRC(43d452fd) SHA1(20a4064904cf2f21d5f03236c99c9e21a49a1206) ) //2ex
1632   ROM_LOAD32_WORD( "e52-34.ic24",  0x1000000, 0x200000, CRC(4ae1064b) SHA1(a5f1ad3262f8ffd09e9063a6dbe98d883b11a156) ) //2ex
1633   ROM_LOAD32_WORD( "e52-08.ic12",  0x1400002, 0x200000, CRC(d52e6b9c) SHA1(382a5fd4533ab641a09321208464d83f72e161e3) )
1634   ROM_LOAD32_WORD( "e52-16.ic25",  0x1400000, 0x200000, CRC(db6dd6e2) SHA1(d345dbd745514d4777d52c4360787ea8c462ffb1) )
1635
1636   ROM_REGION( 0x1000000, "gfx2", 0 )      /* only accessible to the TMS */
1637   ROM_LOAD( "e52-01.ic5",   0x0000000, 0x200000, CRC(8db39c3c) SHA1(74b3305ebdf679ae274c73b7b32d2adea602bedc) )
1638   ROM_LOAD( "e52-02.ic6",   0x0200000, 0x200000, CRC(b8d6f066) SHA1(99553ad66643ebf7fc71a9aee526d8f206b41dcc) )
1639   ROM_LOAD( "e52-03.ic7",   0x0400000, 0x200000, CRC(a37d164b) SHA1(767a7d2de8b91a00c5fe74710937457e8568a422) )
1640   ROM_LOAD( "e52-04.ic8",   0x0600000, 0x200000, CRC(403a4142) SHA1(aa5fea79a7a838642152586689d0f9b33311252c) )
1641   ROM_LOAD( "e52-09.ic18",  0x0800000, 0x200000, CRC(830e0a3c) SHA1(ab96f380e53f72945f73a6cfcc80d12e1b1afce8) )
1642   ROM_LOAD( "e52-10.ic19",  0x0a00000, 0x200000, CRC(671e41c6) SHA1(281899d83dba104daf7d7c2bd0834cab4c022472) )
1643   ROM_LOAD( "e52-11.ic20",  0x0c00000, 0x200000, CRC(1bc22680) SHA1(1f71db88d6df3b4bdf090b77bc83a67906bb31da) )
1644   ROM_LOAD( "e52-12.ic21",  0x0e00000, 0x200000, CRC(a8bb91c5) SHA1(959a9fedb7839e1e4e7658d920bd5da4fd8cae48) )
1645
1646   ROM_REGION( 0x40000, "oki", 0 )     /* train board, OKI6295 sound samples */
1647   ROM_LOAD( "e35-28.trn",  0x000000, 0x040000, CRC(d1b571c1) SHA1(cac7d3f0285544fe36b8b744edfbac0190cdecab) )
1648
1649   ROM_REGION16_BE( 0x1000000, "ensoniq.0", ROMREGION_ERASE00  )
1650   ROM_LOAD16_BYTE( "e52-21.ic32",  0x000000, 0x200000, CRC(ba58081d) SHA1(bcb6c8781191d48f906ed404a3e7388097a64781) )
1651   ROM_LOAD16_BYTE( "e52-22.ic33",  0x400000, 0x200000, CRC(dda281b1) SHA1(4851a6bf7902548c5033090a0e5c15f74c00ef58) )
1652   ROM_LOAD16_BYTE( "e52-23.ic34",  0x800000, 0x200000, CRC(ebe2dcef) SHA1(16ae41e0f3bb242cbc2922f53cacbd99961a3f97) ) // same as e35-19.ic34 from dendego
1653   ROM_LOAD16_BYTE( "e52-24.ic35",  0xc00000, 0x200000, CRC(a9a678da) SHA1(b980ae644ef0312acd63b017028af9bf2b084c29) )
1654ROM_END
1655
1656/* Landing Gear known program rom sets not dumped:
1657
1658E17-28 through E17-31 (E17-32 is a PAL)
1659
1660*/
1661
1662ROM_START( landgear ) /* Landing Gear Ver 4.2 O */
1663   ROM_REGION( 0x200000, "maincpu", 0 )        /* 68040 code */
1664   ROM_LOAD32_BYTE( "e17-37.ic36", 0x000000, 0x80000, CRC(e6dda113) SHA1(786cbfae420b6ee820a93731e59da3442245b6b8) )
1665   ROM_LOAD32_BYTE( "e17-38.ic37", 0x000001, 0x80000, CRC(86fa29bd) SHA1(f711528143c042cdc4a26d9e6965a882a73f397c) )
1666   ROM_LOAD32_BYTE( "e17-39.ic38", 0x000002, 0x80000, CRC(ccbbcc7b) SHA1(52d91fcaa1683d2679ed4f14ebc11dc487527898) )
1667   ROM_LOAD32_BYTE( "e17-40.ic39", 0x000003, 0x80000, CRC(ce9231d2) SHA1(d2c3955d910dbd0cac95862047c58791af626722) ) /* 0x7ffff == 03 - One byte difference from E17-36.ic39 */
1668
1669   ROM_REGION( 0x180000, "audiocpu", 0 )       /* 68000 Code */
1670   ROM_LOAD16_BYTE( "e17-21.ic30", 0x100001, 0x40000, CRC(8b54f46c) SHA1(c6d16197ab7768945becf9b49b6d286113b4d1cc) )
1671   ROM_LOAD16_BYTE( "e17-22.ic31", 0x100000, 0x40000, CRC(b96f6cd7) SHA1(0bf086e5dc6d524cd00e33df3e3d2a8b9231eb72) )
1672
1673   ROM_REGION( 0x4000, "dsp", ROMREGION_ERASE00 ) /* TMS320C51 internal rom */
1674   ROM_LOAD16_WORD( "e07-11.ic29", 0x0000, 0x4000, NO_DUMP )
1675
1676   ROM_REGION( 0x010000, "sub", 0 )        /* MC68HC11M0 code */
1677   ROM_LOAD( "e17-23.ic65",  0x000000, 0x010000, CRC(80ac1428) SHA1(5a2a1e60a11ecdb8743c20ddacfb61f9fd00f01c) )
1678
1679   ROM_REGION( 0x1800000, "gfx1", 0 )
1680   ROM_LOAD32_WORD( "e17-03.ic9",   0x0800002, 0x200000, CRC(64820c4f) SHA1(ee18e4e2b01ec21c33ec1f0eb43f6d0cd48d7225) )
1681   ROM_LOAD32_WORD( "e17-09.ic22",  0x0800000, 0x200000, CRC(19e9a1d1) SHA1(26f1a91e3757da510d685a11add08e3e00317796) )
1682   ROM_LOAD32_WORD( "e17-04.ic10",  0x0c00002, 0x200000, CRC(7dc2cae3) SHA1(90638a1efc353428ce4155ca29f67accaf0499cd) )
1683   ROM_LOAD32_WORD( "e17-10.ic23",  0x0c00000, 0x200000, CRC(a6bdf6b8) SHA1(e8d76d38f2c7e428a3c2f555571e314351d74a69) )
1684   ROM_LOAD32_WORD( "e17-05.ic11",  0x1000002, 0x200000, CRC(3f70acd4) SHA1(e8c1c6214631e3e39d1fc9df13d1862442a47e5d) )
1685   ROM_LOAD32_WORD( "e17-11.ic24",  0x1000000, 0x200000, CRC(4e986d93) SHA1(b218a0360c1d0eca5a907f2b402f352e0329fe41) )
1686   ROM_LOAD32_WORD( "e17-06.ic12",  0x1400002, 0x200000, CRC(107ff481) SHA1(2a48cedec9641ff08776e5d8b1bf1f5b250d4179) )
1687   ROM_LOAD32_WORD( "e17-12.ic25",  0x1400000, 0x200000, CRC(0727ddfa) SHA1(68bf83a3c46cd042a7ad27a530c8bed6360d8492) )
1688
1689   ROM_REGION( 0x1000000, "gfx2", ROMREGION_ERASE00 )      /* only accessible to the TMS */
1690   ROM_LOAD( "e17-01.ic5",   0x0000000, 0x200000, CRC(42aa56a6) SHA1(945c338515ceb946c01480919546869bb8c3d323) )
1691   ROM_LOAD( "e17-02.ic8",   0x0600000, 0x200000, CRC(df7e2405) SHA1(684d6fc398791c48101e6cb63acbf0d691ed863c) )
1692   ROM_LOAD( "e17-07.ic18",  0x0800000, 0x200000, CRC(0f180eb0) SHA1(5e1dd920f110a62a029bace6f4cb80fee0fdaf03) )
1693   ROM_LOAD( "e17-08.ic19",  0x0a00000, 0x200000, CRC(3107e154) SHA1(59a99770c2aa535cac6569f41b03be1554e0e800) )
1694
1695   ROM_REGION16_BE( 0x1000000, "ensoniq.0", ROMREGION_ERASE00  )
1696   ROM_LOAD16_BYTE( "e17-13.ic32",  0x000000, 0x200000, CRC(6cf238e7) SHA1(0745d2dcfea26178adde3ad08650156e8e30651f) )
1697   ROM_LOAD16_BYTE( "e17-14.ic33",  0x400000, 0x200000, CRC(5efec311) SHA1(f253bc40f2567f59ddfb617fddb8b9a389bfac89) )
1698   ROM_LOAD16_BYTE( "e17-15.ic34",  0x800000, 0x200000, CRC(41d7a7d0) SHA1(f5a8b79c1d47611e93d46aaf921107b52090bb5f) )
1699   ROM_LOAD16_BYTE( "e17-16.ic35",  0xc00000, 0x200000, CRC(6cf9f277) SHA1(03ca51fadc6b0b6502804346f18eeb55ab87b0e7) )
1700
1701   ROM_REGION( 0x1000, "pals", 0 ) /* PALCE 16V8, saved in Jedec format (unused now) */
1702   ROM_LOAD( "e07-02.ic4",    0x0000, 0x0bac, CRC(b10110e0) SHA1(574dfa70cbdc910973f4b47a9534f22839baf76d) )
1703   ROM_LOAD( "e07-03.ic50",   0x0000, 0x0bac, CRC(3fe03710) SHA1(bbccddea0cccb50ea361721e51a0489f6686312c) )
1704   ROM_LOAD( "e07-04.ic115",  0x0000, 0x0bac, CRC(6c83e648) SHA1(7ed4001d8f27933b31c09d98421dac5bdc265ff4) )
1705   ROM_LOAD( "e07-05.ic22",   0x0000, 0x0bac, CRC(d2530a9d) SHA1(2f5cafe9ac4e5b3121981dc7498a82b54b2aee08) )
1706   ROM_LOAD( "e07-06.ic37",   0x0000, 0x0bac, CRC(ade68194) SHA1(95322d49b1f6edac03a7a00bf8876e556ccc2581) )
1707   ROM_LOAD( "e07-07.ic49",   0x0000, 0x0bac, CRC(76136aac) SHA1(5f28de747e32a4e2622603a7d35e6c979e56977d) )
1708   ROM_LOAD( "e07-08.ic65",   0x0000, 0x0bac, CRC(33aa1678) SHA1(e0d941c048bec25994dea30fed989d9f9e1af6a6) )
1709   ROM_LOAD( "e07-09.ic82",   0x0000, 0x0bac, CRC(62e2bf9e) SHA1(fe7055f5f6292f4c613cc3a47245340722299b45) )
1710   ROM_LOAD( "e07-10.ic116",  0x0000, 0x0bac, CRC(97e36b54) SHA1(2181097bfd7d09a537cbcc4e7ead11532f0ddb20) )
1711   ROM_LOAD( "e09-21.ic69",   0x0000, 0x0bac, CRC(74b06310) SHA1(0e1f559247a43fbb3852b1b0b92753ed993b876d) )
1712   ROM_LOAD( "e09-22.ic73",   0x0000, 0x0bac, CRC(58aa9c49) SHA1(7c9b463ea1adc701f326773cc556ab11f290f87e) )
1713   ROM_LOAD( "e17-32.ic96",   0x0000, 0x0bac, CRC(1d590ca3) SHA1(733e9e34642c1e03fd880fda198b98927c1bb81d) )
1714ROM_END
1715
1716ROM_START( landgearj ) /* Landing Gear Ver 4.2 J */
1717   ROM_REGION( 0x200000, "maincpu", 0 )        /* 68040 code */
1718   ROM_LOAD32_BYTE( "e17-33.ic36", 0x000000, 0x80000, CRC(e6dda113) SHA1(786cbfae420b6ee820a93731e59da3442245b6b8) ) /* matches E17-37.ic36, verified correct */
1719   ROM_LOAD32_BYTE( "e17-34.ic37", 0x000001, 0x80000, CRC(86fa29bd) SHA1(f711528143c042cdc4a26d9e6965a882a73f397c) ) /* matches E17-38.ic37, verified correct */
1720   ROM_LOAD32_BYTE( "e17-35.ic38", 0x000002, 0x80000, CRC(ccbbcc7b) SHA1(52d91fcaa1683d2679ed4f14ebc11dc487527898) ) /* matches E17-39.ic38, verified correct */
1721   ROM_LOAD32_BYTE( "e17-36.ic39", 0x000003, 0x80000, CRC(209c50fe) SHA1(42e0eaa182730e260ee4361d936b133ed85f8221) ) /* 0x7ffff == 01 - One byte difference from E17-40.ic39 */
1722
1723   ROM_REGION( 0x180000, "audiocpu", 0 )       /* 68000 Code */
1724   ROM_LOAD16_BYTE( "e17-21.ic30", 0x100001, 0x40000, CRC(8b54f46c) SHA1(c6d16197ab7768945becf9b49b6d286113b4d1cc) )
1725   ROM_LOAD16_BYTE( "e17-22.ic31", 0x100000, 0x40000, CRC(b96f6cd7) SHA1(0bf086e5dc6d524cd00e33df3e3d2a8b9231eb72) )
1726
1727   ROM_REGION( 0x4000, "dsp", ROMREGION_ERASE00 ) /* TMS320C51 internal rom */
1728   ROM_LOAD16_WORD( "e07-11.ic29", 0x0000, 0x4000, NO_DUMP )
1729
1730   ROM_REGION( 0x010000, "sub", 0 )        /* MC68HC11M0 code */
1731   ROM_LOAD( "e17-23.ic65",  0x000000, 0x010000, CRC(80ac1428) SHA1(5a2a1e60a11ecdb8743c20ddacfb61f9fd00f01c) )
1732
1733   ROM_REGION( 0x1800000, "gfx1", 0 )
1734   ROM_LOAD32_WORD( "e17-03.ic9",   0x0800002, 0x200000, CRC(64820c4f) SHA1(ee18e4e2b01ec21c33ec1f0eb43f6d0cd48d7225) )
1735   ROM_LOAD32_WORD( "e17-09.ic22",  0x0800000, 0x200000, CRC(19e9a1d1) SHA1(26f1a91e3757da510d685a11add08e3e00317796) )
1736   ROM_LOAD32_WORD( "e17-04.ic10",  0x0c00002, 0x200000, CRC(7dc2cae3) SHA1(90638a1efc353428ce4155ca29f67accaf0499cd) )
1737   ROM_LOAD32_WORD( "e17-10.ic23",  0x0c00000, 0x200000, CRC(a6bdf6b8) SHA1(e8d76d38f2c7e428a3c2f555571e314351d74a69) )
1738   ROM_LOAD32_WORD( "e17-05.ic11",  0x1000002, 0x200000, CRC(3f70acd4) SHA1(e8c1c6214631e3e39d1fc9df13d1862442a47e5d) )
1739   ROM_LOAD32_WORD( "e17-11.ic24",  0x1000000, 0x200000, CRC(4e986d93) SHA1(b218a0360c1d0eca5a907f2b402f352e0329fe41) )
1740   ROM_LOAD32_WORD( "e17-06.ic12",  0x1400002, 0x200000, CRC(107ff481) SHA1(2a48cedec9641ff08776e5d8b1bf1f5b250d4179) )
1741   ROM_LOAD32_WORD( "e17-12.ic25",  0x1400000, 0x200000, CRC(0727ddfa) SHA1(68bf83a3c46cd042a7ad27a530c8bed6360d8492) )
1742
1743   ROM_REGION( 0x1000000, "gfx2", ROMREGION_ERASE00 )      /* only accessible to the TMS */
1744   ROM_LOAD( "e17-01.ic5",   0x0000000, 0x200000, CRC(42aa56a6) SHA1(945c338515ceb946c01480919546869bb8c3d323) )
1745   ROM_LOAD( "e17-02.ic8",   0x0600000, 0x200000, CRC(df7e2405) SHA1(684d6fc398791c48101e6cb63acbf0d691ed863c) )
1746   ROM_LOAD( "e17-07.ic18",  0x0800000, 0x200000, CRC(0f180eb0) SHA1(5e1dd920f110a62a029bace6f4cb80fee0fdaf03) )
1747   ROM_LOAD( "e17-08.ic19",  0x0a00000, 0x200000, CRC(3107e154) SHA1(59a99770c2aa535cac6569f41b03be1554e0e800) )
1748
1749   ROM_REGION16_BE( 0x1000000, "ensoniq.0", ROMREGION_ERASE00  )
1750   ROM_LOAD16_BYTE( "e17-13.ic32",  0x000000, 0x200000, CRC(6cf238e7) SHA1(0745d2dcfea26178adde3ad08650156e8e30651f) )
1751   ROM_LOAD16_BYTE( "e17-14.ic33",  0x400000, 0x200000, CRC(5efec311) SHA1(f253bc40f2567f59ddfb617fddb8b9a389bfac89) )
1752   ROM_LOAD16_BYTE( "e17-15.ic34",  0x800000, 0x200000, CRC(41d7a7d0) SHA1(f5a8b79c1d47611e93d46aaf921107b52090bb5f) )
1753   ROM_LOAD16_BYTE( "e17-16.ic35",  0xc00000, 0x200000, CRC(6cf9f277) SHA1(03ca51fadc6b0b6502804346f18eeb55ab87b0e7) )
1754
1755   ROM_REGION( 0x1000, "pals", 0 ) /* PALCE 16V8, saved in Jedec format (unused now) */
1756   ROM_LOAD( "e07-02.ic4",    0x0000, 0x0bac, CRC(b10110e0) SHA1(574dfa70cbdc910973f4b47a9534f22839baf76d) )
1757   ROM_LOAD( "e07-03.ic50",   0x0000, 0x0bac, CRC(3fe03710) SHA1(bbccddea0cccb50ea361721e51a0489f6686312c) )
1758   ROM_LOAD( "e07-04.ic115",  0x0000, 0x0bac, CRC(6c83e648) SHA1(7ed4001d8f27933b31c09d98421dac5bdc265ff4) )
1759   ROM_LOAD( "e07-05.ic22",   0x0000, 0x0bac, CRC(d2530a9d) SHA1(2f5cafe9ac4e5b3121981dc7498a82b54b2aee08) )
1760   ROM_LOAD( "e07-06.ic37",   0x0000, 0x0bac, CRC(ade68194) SHA1(95322d49b1f6edac03a7a00bf8876e556ccc2581) )
1761   ROM_LOAD( "e07-07.ic49",   0x0000, 0x0bac, CRC(76136aac) SHA1(5f28de747e32a4e2622603a7d35e6c979e56977d) )
1762   ROM_LOAD( "e07-08.ic65",   0x0000, 0x0bac, CRC(33aa1678) SHA1(e0d941c048bec25994dea30fed989d9f9e1af6a6) )
1763   ROM_LOAD( "e07-09.ic82",   0x0000, 0x0bac, CRC(62e2bf9e) SHA1(fe7055f5f6292f4c613cc3a47245340722299b45) )
1764   ROM_LOAD( "e07-10.ic116",  0x0000, 0x0bac, CRC(97e36b54) SHA1(2181097bfd7d09a537cbcc4e7ead11532f0ddb20) )
1765   ROM_LOAD( "e09-21.ic69",   0x0000, 0x0bac, CRC(74b06310) SHA1(0e1f559247a43fbb3852b1b0b92753ed993b876d) )
1766   ROM_LOAD( "e09-22.ic73",   0x0000, 0x0bac, CRC(58aa9c49) SHA1(7c9b463ea1adc701f326773cc556ab11f290f87e) )
1767   ROM_LOAD( "e17-32.ic96",   0x0000, 0x0bac, CRC(1d590ca3) SHA1(733e9e34642c1e03fd880fda198b98927c1bb81d) )
1768ROM_END
1769
1770ROM_START( landgeara ) /* Landing Gear Ver 3.1 O, is there an alternate set without the "*" on the labels? */
1771   ROM_REGION( 0x200000, "maincpu", 0 )        /* 68040 code */
1772   ROM_LOAD32_BYTE( "e17-24+.ic36", 0x000000, 0x80000, CRC(6907e451) SHA1(330eecb5898942514b40e67cf3c9dcb82d4cafab) ) /* Actually labeled E17-24* */
1773   ROM_LOAD32_BYTE( "e17-25+.ic37", 0x000001, 0x80000, CRC(ecbc8875) SHA1(5f5e4850cbdbdfff4a7f0b781edb2e983c166962) ) /* Actually labeled E17-25* */
1774   ROM_LOAD32_BYTE( "e17-26+.ic38", 0x000002, 0x80000, CRC(3032bbe7) SHA1(201c61f236c81928f50815d8ad12e312a3c7427b) ) /* Actually labeled E17-26* */
1775   ROM_LOAD32_BYTE( "e17-27+.ic39", 0x000003, 0x80000, CRC(e936224c) SHA1(8699cbb756844d12b7585e66198b7faed2af8e24) ) /* Actually labeled E17-27* */
1776
1777   ROM_REGION( 0x180000, "audiocpu", 0 )       /* 68000 Code */
1778   ROM_LOAD16_BYTE( "e17-21.ic30",  0x100001, 0x40000, CRC(8b54f46c) SHA1(c6d16197ab7768945becf9b49b6d286113b4d1cc) )
1779   ROM_LOAD16_BYTE( "e17-22.ic31",  0x100000, 0x40000, CRC(b96f6cd7) SHA1(0bf086e5dc6d524cd00e33df3e3d2a8b9231eb72) )
1780
1781   ROM_REGION( 0x4000, "dsp", ROMREGION_ERASE00 ) /* TMS320C51 internal rom */
1782   ROM_LOAD16_WORD( "e07-11.ic29", 0x0000, 0x4000, NO_DUMP )
1783
1784   ROM_REGION( 0x010000, "sub", 0 )        /* MC68HC11M0 code */
1785   ROM_LOAD( "e17-23.ic65",  0x000000, 0x010000, CRC(80ac1428) SHA1(5a2a1e60a11ecdb8743c20ddacfb61f9fd00f01c) )
1786
1787   ROM_REGION( 0x1800000, "gfx1", 0 )
1788   ROM_LOAD32_WORD( "e17-03.ic9",   0x0800002, 0x200000, CRC(64820c4f) SHA1(ee18e4e2b01ec21c33ec1f0eb43f6d0cd48d7225) )
1789   ROM_LOAD32_WORD( "e17-09.ic22",  0x0800000, 0x200000, CRC(19e9a1d1) SHA1(26f1a91e3757da510d685a11add08e3e00317796) )
1790   ROM_LOAD32_WORD( "e17-04.ic10",  0x0c00002, 0x200000, CRC(7dc2cae3) SHA1(90638a1efc353428ce4155ca29f67accaf0499cd) )
1791   ROM_LOAD32_WORD( "e17-10.ic23",  0x0c00000, 0x200000, CRC(a6bdf6b8) SHA1(e8d76d38f2c7e428a3c2f555571e314351d74a69) )
1792   ROM_LOAD32_WORD( "e17-05.ic11",  0x1000002, 0x200000, CRC(3f70acd4) SHA1(e8c1c6214631e3e39d1fc9df13d1862442a47e5d) )
1793   ROM_LOAD32_WORD( "e17-11.ic24",  0x1000000, 0x200000, CRC(4e986d93) SHA1(b218a0360c1d0eca5a907f2b402f352e0329fe41) )
1794   ROM_LOAD32_WORD( "e17-06.ic12",  0x1400002, 0x200000, CRC(107ff481) SHA1(2a48cedec9641ff08776e5d8b1bf1f5b250d4179) )
1795   ROM_LOAD32_WORD( "e17-12.ic25",  0x1400000, 0x200000, CRC(0727ddfa) SHA1(68bf83a3c46cd042a7ad27a530c8bed6360d8492) )
1796
1797   ROM_REGION( 0x1000000, "gfx2", ROMREGION_ERASE00 )      /* only accessible to the TMS */
1798   ROM_LOAD( "e17-01.ic5",   0x0000000, 0x200000, CRC(42aa56a6) SHA1(945c338515ceb946c01480919546869bb8c3d323) )
1799   ROM_LOAD( "e17-02.ic8",   0x0600000, 0x200000, CRC(df7e2405) SHA1(684d6fc398791c48101e6cb63acbf0d691ed863c) )
1800   ROM_LOAD( "e17-07.ic18",  0x0800000, 0x200000, CRC(0f180eb0) SHA1(5e1dd920f110a62a029bace6f4cb80fee0fdaf03) )
1801   ROM_LOAD( "e17-08.ic19",  0x0a00000, 0x200000, CRC(3107e154) SHA1(59a99770c2aa535cac6569f41b03be1554e0e800) )
1802
1803   ROM_REGION16_BE( 0x1000000, "ensoniq.0", ROMREGION_ERASE00  )
1804   ROM_LOAD16_BYTE( "e17-13.ic32",  0x000000, 0x200000, CRC(6cf238e7) SHA1(0745d2dcfea26178adde3ad08650156e8e30651f) )
1805   ROM_LOAD16_BYTE( "e17-14.ic33",  0x400000, 0x200000, CRC(5efec311) SHA1(f253bc40f2567f59ddfb617fddb8b9a389bfac89) )
1806   ROM_LOAD16_BYTE( "e17-15.ic34",  0x800000, 0x200000, CRC(41d7a7d0) SHA1(f5a8b79c1d47611e93d46aaf921107b52090bb5f) )
1807   ROM_LOAD16_BYTE( "e17-16.ic35",  0xc00000, 0x200000, CRC(6cf9f277) SHA1(03ca51fadc6b0b6502804346f18eeb55ab87b0e7) )
1808
1809   ROM_REGION( 0x1000, "pals", 0 ) /* PALCE 16V8, saved in Jedec format (unused now) */
1810   ROM_LOAD( "e07-02.ic4",    0x0000, 0x0bac, CRC(b10110e0) SHA1(574dfa70cbdc910973f4b47a9534f22839baf76d) )
1811   ROM_LOAD( "e07-03.ic50",   0x0000, 0x0bac, CRC(3fe03710) SHA1(bbccddea0cccb50ea361721e51a0489f6686312c) )
1812   ROM_LOAD( "e07-04.ic115",  0x0000, 0x0bac, CRC(6c83e648) SHA1(7ed4001d8f27933b31c09d98421dac5bdc265ff4) )
1813   ROM_LOAD( "e07-05.ic22",   0x0000, 0x0bac, CRC(d2530a9d) SHA1(2f5cafe9ac4e5b3121981dc7498a82b54b2aee08) )
1814   ROM_LOAD( "e07-06.ic37",   0x0000, 0x0bac, CRC(ade68194) SHA1(95322d49b1f6edac03a7a00bf8876e556ccc2581) )
1815   ROM_LOAD( "e07-07.ic49",   0x0000, 0x0bac, CRC(76136aac) SHA1(5f28de747e32a4e2622603a7d35e6c979e56977d) )
1816   ROM_LOAD( "e07-08.ic65",   0x0000, 0x0bac, CRC(33aa1678) SHA1(e0d941c048bec25994dea30fed989d9f9e1af6a6) )
1817   ROM_LOAD( "e07-09.ic82",   0x0000, 0x0bac, CRC(62e2bf9e) SHA1(fe7055f5f6292f4c613cc3a47245340722299b45) )
1818   ROM_LOAD( "e07-10.ic116",  0x0000, 0x0bac, CRC(97e36b54) SHA1(2181097bfd7d09a537cbcc4e7ead11532f0ddb20) )
1819   ROM_LOAD( "e09-21.ic69",   0x0000, 0x0bac, CRC(74b06310) SHA1(0e1f559247a43fbb3852b1b0b92753ed993b876d) )
1820   ROM_LOAD( "e09-22.ic73",   0x0000, 0x0bac, CRC(58aa9c49) SHA1(7c9b463ea1adc701f326773cc556ab11f290f87e) )
1821   ROM_LOAD( "e17-32.ic96",   0x0000, 0x0bac, CRC(1d590ca3) SHA1(733e9e34642c1e03fd880fda198b98927c1bb81d) )
1822ROM_END
1823
1824ROM_START( landgearja ) /* Landing Gear Ver 3.0 J, is there an alternate set without the "*" on the labels? */
1825   ROM_REGION( 0x200000, "maincpu", 0 )        /* 68040 code */
1826   ROM_LOAD32_BYTE( "e17-17+.ic36", 0x000000, 0x80000, CRC(653e9c43) SHA1(b43c4baf1b3114977faa310c0815ea0940d548b3) ) /* Actually labeled E17-17* */
1827   ROM_LOAD32_BYTE( "e17-18+.ic37", 0x000001, 0x80000, CRC(4d90b321) SHA1(a919f15dcc105eaa12d7c9816aff4f0daffbb7a1) ) /* Actually labeled E17-18* */
1828   ROM_LOAD32_BYTE( "e17-19+.ic38", 0x000002, 0x80000, CRC(1c487204) SHA1(f6c8ddd80c57ed63b0785b240c4b00416a1a87f3) ) /* Actually labeled E17-19* */
1829   ROM_LOAD32_BYTE( "e17-20+.ic39", 0x000003, 0x80000, CRC(1311234f) SHA1(5211cae0d6dc1710bc669bcf81a247b01f8aebff) ) /* Actually labeled E17-20* */
1830
1831   ROM_REGION( 0x180000, "audiocpu", 0 )       /* 68000 Code */
1832   ROM_LOAD16_BYTE( "e17-21.ic30",  0x100001, 0x40000, CRC(8b54f46c) SHA1(c6d16197ab7768945becf9b49b6d286113b4d1cc) )
1833   ROM_LOAD16_BYTE( "e17-22.ic31",  0x100000, 0x40000, CRC(b96f6cd7) SHA1(0bf086e5dc6d524cd00e33df3e3d2a8b9231eb72) )
1834
1835   ROM_REGION( 0x4000, "dsp", ROMREGION_ERASE00 ) /* TMS320C51 internal rom */
1836   ROM_LOAD16_WORD( "e07-11.ic29", 0x0000, 0x4000, NO_DUMP )
1837
1838   ROM_REGION( 0x010000, "sub", 0 )        /* MC68HC11M0 code */
1839   ROM_LOAD( "e17-23.ic65",  0x000000, 0x010000, CRC(80ac1428) SHA1(5a2a1e60a11ecdb8743c20ddacfb61f9fd00f01c) )
1840
1841   ROM_REGION( 0x1800000, "gfx1", 0 )
1842   ROM_LOAD32_WORD( "e17-03.ic9",   0x0800002, 0x200000, CRC(64820c4f) SHA1(ee18e4e2b01ec21c33ec1f0eb43f6d0cd48d7225) )
1843   ROM_LOAD32_WORD( "e17-09.ic22",  0x0800000, 0x200000, CRC(19e9a1d1) SHA1(26f1a91e3757da510d685a11add08e3e00317796) )
1844   ROM_LOAD32_WORD( "e17-04.ic10",  0x0c00002, 0x200000, CRC(7dc2cae3) SHA1(90638a1efc353428ce4155ca29f67accaf0499cd) )
1845   ROM_LOAD32_WORD( "e17-10.ic23",  0x0c00000, 0x200000, CRC(a6bdf6b8) SHA1(e8d76d38f2c7e428a3c2f555571e314351d74a69) )
1846   ROM_LOAD32_WORD( "e17-05.ic11",  0x1000002, 0x200000, CRC(3f70acd4) SHA1(e8c1c6214631e3e39d1fc9df13d1862442a47e5d) )
1847   ROM_LOAD32_WORD( "e17-11.ic24",  0x1000000, 0x200000, CRC(4e986d93) SHA1(b218a0360c1d0eca5a907f2b402f352e0329fe41) )
1848   ROM_LOAD32_WORD( "e17-06.ic12",  0x1400002, 0x200000, CRC(107ff481) SHA1(2a48cedec9641ff08776e5d8b1bf1f5b250d4179) )
1849   ROM_LOAD32_WORD( "e17-12.ic25",  0x1400000, 0x200000, CRC(0727ddfa) SHA1(68bf83a3c46cd042a7ad27a530c8bed6360d8492) )
1850
1851   ROM_REGION( 0x1000000, "gfx2", ROMREGION_ERASE00 )      /* only accessible to the TMS */
1852   ROM_LOAD( "e17-01.ic5",   0x0000000, 0x200000, CRC(42aa56a6) SHA1(945c338515ceb946c01480919546869bb8c3d323) )
1853   ROM_LOAD( "e17-02.ic8",   0x0600000, 0x200000, CRC(df7e2405) SHA1(684d6fc398791c48101e6cb63acbf0d691ed863c) )
1854   ROM_LOAD( "e17-07.ic18",  0x0800000, 0x200000, CRC(0f180eb0) SHA1(5e1dd920f110a62a029bace6f4cb80fee0fdaf03) )
1855   ROM_LOAD( "e17-08.ic19",  0x0a00000, 0x200000, CRC(3107e154) SHA1(59a99770c2aa535cac6569f41b03be1554e0e800) )
1856
1857   ROM_REGION16_BE( 0x1000000, "ensoniq.0", ROMREGION_ERASE00  )
1858   ROM_LOAD16_BYTE( "e17-13.ic32",  0x000000, 0x200000, CRC(6cf238e7) SHA1(0745d2dcfea26178adde3ad08650156e8e30651f) )
1859   ROM_LOAD16_BYTE( "e17-14.ic33",  0x400000, 0x200000, CRC(5efec311) SHA1(f253bc40f2567f59ddfb617fddb8b9a389bfac89) )
1860   ROM_LOAD16_BYTE( "e17-15.ic34",  0x800000, 0x200000, CRC(41d7a7d0) SHA1(f5a8b79c1d47611e93d46aaf921107b52090bb5f) )
1861   ROM_LOAD16_BYTE( "e17-16.ic35",  0xc00000, 0x200000, CRC(6cf9f277) SHA1(03ca51fadc6b0b6502804346f18eeb55ab87b0e7) )
1862
1863   ROM_REGION( 0x1000, "pals", 0 ) /* PALCE 16V8, saved in Jedec format (unused now) */
1864   ROM_LOAD( "e07-02.ic4",    0x0000, 0x0bac, CRC(b10110e0) SHA1(574dfa70cbdc910973f4b47a9534f22839baf76d) )
1865   ROM_LOAD( "e07-03.ic50",   0x0000, 0x0bac, CRC(3fe03710) SHA1(bbccddea0cccb50ea361721e51a0489f6686312c) )
1866   ROM_LOAD( "e07-04.ic115",  0x0000, 0x0bac, CRC(6c83e648) SHA1(7ed4001d8f27933b31c09d98421dac5bdc265ff4) )
1867   ROM_LOAD( "e07-05.ic22",   0x0000, 0x0bac, CRC(d2530a9d) SHA1(2f5cafe9ac4e5b3121981dc7498a82b54b2aee08) )
1868   ROM_LOAD( "e07-06.ic37",   0x0000, 0x0bac, CRC(ade68194) SHA1(95322d49b1f6edac03a7a00bf8876e556ccc2581) )
1869   ROM_LOAD( "e07-07.ic49",   0x0000, 0x0bac, CRC(76136aac) SHA1(5f28de747e32a4e2622603a7d35e6c979e56977d) )
1870   ROM_LOAD( "e07-08.ic65",   0x0000, 0x0bac, CRC(33aa1678) SHA1(e0d941c048bec25994dea30fed989d9f9e1af6a6) )
1871   ROM_LOAD( "e07-09.ic82",   0x0000, 0x0bac, CRC(62e2bf9e) SHA1(fe7055f5f6292f4c613cc3a47245340722299b45) )
1872   ROM_LOAD( "e07-10.ic116",  0x0000, 0x0bac, CRC(97e36b54) SHA1(2181097bfd7d09a537cbcc4e7ead11532f0ddb20) )
1873   ROM_LOAD( "e09-21.ic69",   0x0000, 0x0bac, CRC(74b06310) SHA1(0e1f559247a43fbb3852b1b0b92753ed993b876d) )
1874   ROM_LOAD( "e09-22.ic73",   0x0000, 0x0bac, CRC(58aa9c49) SHA1(7c9b463ea1adc701f326773cc556ab11f290f87e) )
1875   ROM_LOAD( "e17-32.ic96",   0x0000, 0x0bac, CRC(1d590ca3) SHA1(733e9e34642c1e03fd880fda198b98927c1bb81d) )
1876ROM_END
1877
1878ROM_START( dangcurv )
1879   ROM_REGION( 0x200000, "maincpu", 0 )        /* 68040 code */
1880   ROM_LOAD32_BYTE( "e09-23.ic36", 0x000000, 0x80000, CRC(b4cdadd6) SHA1(84bd1d055ff15afb5438cd5151abf78b0000cebc) )
1881   ROM_LOAD32_BYTE( "e09-24.ic37", 0x000001, 0x80000, CRC(fb2fc795) SHA1(2f58d043ab9fc0269a5b6827009777cd7ab832fc) )
1882   ROM_LOAD32_BYTE( "e09-25.ic38", 0x000002, 0x80000, CRC(aa233404) SHA1(a2b14e54eb1b5f6d4ed9f289b30ecfa654f21c87) )
1883   ROM_LOAD32_BYTE( "e09-26.ic39", 0x000003, 0x80000, CRC(78337271) SHA1(bd29de6a5b6db3baddecf82c3b6c8b366c64289e) )
1884
1885   ROM_REGION( 0x180000, "audiocpu", 0 )       /* 68000 Code */
1886   ROM_LOAD16_BYTE( "e09-27.ic30", 0x100001, 0x40000, CRC(6d54839c) SHA1(a28c9b0727128b82bb0fa71dc951e3f03ee45e1b) )
1887   ROM_LOAD16_BYTE( "e09-28.ic31", 0x100000, 0x40000, CRC(566d7d83) SHA1(92661ccb631f843bf704c50d54fae28f6b5b272b) )
1888
1889   ROM_REGION( 0x4000, "dsp", ROMREGION_ERASE00 ) /* TMS320C51 internal rom */
1890   ROM_LOAD16_WORD( "e07-11.ic29", 0x0000, 0x4000, NO_DUMP )
1891
1892   ROM_REGION( 0x010000, "sub", 0 )        /* MC68HC11M0 code */
1893   ROM_LOAD( "e09-29.ic65",  0x000000, 0x010000, CRC(80ac1428) SHA1(5a2a1e60a11ecdb8743c20ddacfb61f9fd00f01c) )
1894
1895   ROM_REGION( 0x1800000, "gfx1", 0 )
1896   ROM_LOAD32_WORD( "e09-05.ic9",   0x0800002, 0x200000, CRC(a948782f) SHA1(2a2b0d2955e036ddf424c54131435a20dbba3dd4) )
1897   ROM_LOAD32_WORD( "e09-13.ic22",  0x0800000, 0x200000, CRC(985859e2) SHA1(8af9a73eba2151a5ef60799682fe667663a42743) )
1898   ROM_LOAD32_WORD( "e09-06.ic10",  0x0c00002, 0x200000, CRC(218dcb5b) SHA1(72aedd2890e076540195d738c76ba446769c8e89) )
1899   ROM_LOAD32_WORD( "e09-14.ic23",  0x0c00000, 0x200000, CRC(6d123616) SHA1(01ac1e920f7c4a03adf365c8a7831b8385f0b78b) )
1900   ROM_LOAD32_WORD( "e09-07.ic11",  0x1000002, 0x200000, CRC(37fd7efc) SHA1(24a275d302ec8940479d15f1aeb96a288868bd41) )
1901   ROM_LOAD32_WORD( "e09-15.ic24",  0x1000000, 0x200000, CRC(0d773f3b) SHA1(f867a4d5956c2ebfa9858499d9716b4dc723d76b) )
1902   ROM_LOAD32_WORD( "e09-08.ic12",  0x1400002, 0x200000, CRC(5c080485) SHA1(c950cd00df5b6d2d0a119ba318fa8b0a3f471b29) )
1903   ROM_LOAD32_WORD( "e09-16.ic25",  0x1400000, 0x200000, CRC(35cb8346) SHA1(c2ecedd3c2a28213ef83e776f3007c974128189b) )
1904
1905   ROM_REGION( 0x1000000, "gfx2", 0 )      /* only accessible to the TMS */
1906   ROM_LOAD( "e09-01.ic5",   0x0000000, 0x200000, CRC(22a6a53d) SHA1(6efa89151cd5ec43ab9bfa9b92694eb0018dd227) )
1907   ROM_LOAD( "e09-02.ic6",   0x0200000, 0x200000, CRC(405e2969) SHA1(376b9dd548d876af6798553a6da5deed4de00b76) )
1908   ROM_LOAD( "e09-03.ic7",   0x0400000, 0x200000, CRC(15327754) SHA1(bf08ab80875b400700241a66715e229dae6752d1) )
1909   ROM_LOAD( "e09-04.ic8",   0x0600000, 0x200000, CRC(fd598d6e) SHA1(679d9d64a0cd031a6c8cb5e170b77fc5811b6d73) )
1910   ROM_LOAD( "e09-09.ic18",  0x0800000, 0x200000, CRC(a527b387) SHA1(790240b4dfcdf2bf70edb943ec7aeb2f0d8cdfa9) )
1911   ROM_LOAD( "e09-10.ic19",  0x0a00000, 0x200000, CRC(4de6253c) SHA1(33517c0895b7ee04f4a84074d0b7bf42b53d5816) )
1912   ROM_LOAD( "e09-11.ic20",  0x0c00000, 0x200000, CRC(18cc0ba7) SHA1(626929a501def6f1b8bd6a468786efb0b0dda9fa) )
1913   ROM_LOAD( "e09-12.ic21",  0x0e00000, 0x200000, CRC(3273e438) SHA1(e9581d52f5db1c1924a860464579332a2f23e713) )
1914
1915   ROM_REGION16_BE( 0x1000000, "ensoniq.0", ROMREGION_ERASE00  )
1916   ROM_LOAD16_BYTE( "e09-17.ic32",  0x000000, 0x200000, CRC(a8a6512e) SHA1(71bd3ccd65b731270b92da334b9fb99c28e267fe) )
1917   ROM_LOAD16_BYTE( "e09-18.ic33",  0x400000, 0x200000, CRC(bdf1f5eb) SHA1(a568a99a90e0afbcd26ddd320f515ed62cf0db1a) )
1918   ROM_LOAD16_BYTE( "e09-19.ic34",  0x800000, 0x200000, CRC(3626c7ed) SHA1(7535f0457b3d9fe1d54712a26322d6144b9e7de6) )
1919   ROM_LOAD16_BYTE( "e09-20.ic35",  0xc00000, 0x200000, CRC(9652a5c4) SHA1(2933e4e8e57ff618ce21721036d96347471c5539) )
1920ROM_END
1921
1922
1923GAME( 1995, dangcurv,  0,        taitojc, dangcurv, taitojc_state, dangcurv, ROT0, "Taito", "Dangerous Curves (Ver 2.2 J)",                         GAME_NOT_WORKING )                        // DANGEROUS CURVES       VER 2.2 J   1995.07.20   17:45
1924GAME( 1995, landgear,  0,        taitojc, landgear, taitojc_state, taitojc,  ROT0, "Taito", "Landing Gear (Ver 4.2 O)",                             GAME_IMPERFECT_GRAPHICS )                 // LANDING GEAR           VER 4.2 O   Feb  8 1996  09:46:22
1925GAME( 1995, landgearj, landgear, taitojc, landgear, taitojc_state, taitojc,  ROT0, "Taito", "Landing Gear (Ver 4.2 J)",                             GAME_IMPERFECT_GRAPHICS )                 // LANDING GEAR           VER 4.2 J   Feb  8 1996  09:46:22
1926GAME( 1995, landgeara, landgear, taitojc, landgear, taitojc_state, taitojc,  ROT0, "Taito", "Landing Gear (Ver 3.1 O)",                             GAME_IMPERFECT_GRAPHICS )                 // LANDING GEAR           VER 3.1 O   Feb  8 1996  09:46:22
1927GAME( 1995, landgearja,landgear, taitojc, landgear, taitojc_state, taitojc,  ROT0, "Taito", "Landing Gear (Ver 3.0 J)",                             GAME_IMPERFECT_GRAPHICS )                 // LANDING GEAR           VER 3.0 J   Feb  8 1996  09:46:22
1928GAME( 1996, sidebs,    0,        taitojc, sidebs,   taitojc_state, taitojc,  ROT0, "Taito", "Side by Side (Ver 2.7 J)",                             GAME_IMPERFECT_GRAPHICS )                 // SIDE BY SIDE           VER 2.7 J   1996/10/11   14:54:10
1929GAME( 1996, sidebsja,  sidebs,   taitojc, sidebs,   taitojc_state, taitojc,  ROT0, "Taito", "Side by Side (Ver 2.5 J)",                             GAME_IMPERFECT_GRAPHICS )                 // SIDE BY SIDE           VER 2.5 J   1996/ 6/20   18:13:14
1930GAMEL(1996, dendego,   0,        dendego, dendego,  taitojc_state, taitojc,  ROT0, "Taito", "Densha de GO! (Ver 2.2 J)",                            GAME_IMPERFECT_GRAPHICS, layout_dendego ) // DENSYA DE GO           VER 2.2 J   1997/ 2/ 4   12:00:28
1931GAMEL(1996, dendegox,  dendego,  dendego, dendego,  taitojc_state, taitojc,  ROT0, "Taito", "Densha de GO! EX (Ver 2.4 J)",                         GAME_IMPERFECT_GRAPHICS, layout_dendego ) // DENSYA DE GO           VER 2.4 J   1997/ 4/18   13:38:34
1932GAME( 1997, sidebs2,   0,        taitojc, sidebs,   taitojc_state, taitojc,  ROT0, "Taito", "Side by Side 2 (Ver 2.6 A)",                           GAME_IMPERFECT_GRAPHICS )                 // SIDE BY SIDE2          VER 2.6 A   1997/ 6/19   09:39:22
1933GAME( 1997, sidebs2j,  sidebs2,  taitojc, sidebs,   taitojc_state, taitojc,  ROT0, "Taito", "Side by Side 2 Evoluzione (Ver 2.4 J)",                GAME_IMPERFECT_GRAPHICS )                 // SIDE BY SIDE2          VER 2.4 J   1997/ 5/26   13:06:37
1934GAMEL(1998, dendego2,  0,        dendego, dendego,  taitojc_state, dendego2, ROT0, "Taito", "Densha de GO! 2 Kousoku-hen (Ver 2.5 J)",              GAME_IMPERFECT_GRAPHICS, layout_dendego ) // DENSYA DE GO2          VER 2.5 J   1998/ 3/ 2   15:30:55
1935GAMEL(1998, dendego23k,dendego2, dendego, dendego,  taitojc_state, dendego2, ROT0, "Taito", "Densha de GO! 2 Kousoku-hen 3000-bandai (Ver 2.20 J)", GAME_IMPERFECT_GRAPHICS, layout_dendego ) // DENSYA DE GO! 2 3000   VER 2.20 J  1998/ 7/15   17:42:38

Previous 199869 Revisions Next


© 1997-2024 The MAME Team