~ubuntu-branches/debian/sid/mame/sid

« back to all changes in this revision

Viewing changes to mess/src/mame/drivers/crgolf.c

  • Committer: Package Import Robot
  • Author(s): Jordi Mallach, Jordi Mallach, Emmanuel Kasper
  • Date: 2011-12-19 22:56:27 UTC
  • mfrom: (0.1.2)
  • Revision ID: package-import@ubuntu.com-20111219225627-ub5oga1oys4ogqzm
Tags: 0.144-1
[ Jordi Mallach ]
* Fix syntax errors in DEP5 copyright file (lintian).
* Use a versioned copyright Format specification field.
* Update Vcs-* URLs.
* Move transitional packages to the new metapackages section, and make
  them priority extra.
* Remove references to GNU/Linux and MESS sources from copyright.
* Add build variables for s390x.
* Use .xz tarballs as it cuts 4MB for the upstream sources.
* Add nplayers.ini as a patch. Update copyright file to add CC-BY-SA-3.0.

[ Emmanuel Kasper ]
* New upstream release. Closes: #651538.
* Add Free Desktop compliant png icons of various sizes taken from
  the hydroxygen iconset
* Mess is now built from a new source package, to avoid possible source
  incompatibilities between mame and the mess overlay.
* Mame-tools are not built from the mame source package anymore, but
  from the mess source package

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/***************************************************************************
2
 
 
3
 
    Kitco Crowns Golf hardware
4
 
 
5
 
    driver by Aaron Giles
6
 
 
7
 
    Games supported:
8
 
        * Crowns Golf (4 sets)
9
 
        * Crowns Golf in Hawaii
10
 
 
11
 
    Known bugs:
12
 
        * not sure if the analog inputs are handled correctly
13
 
 
14
 
    Text Strings in sound CPU ROM read:
15
 
    ARIES ELECA
16
 
    1984JAN15 V-0
17
 
 
18
 
    Text Strings in the bootleg sound CPU ROM read:
19
 
    WHO AM I?      (In place of "ARIES ELECA")
20
 
    1984JULY1 V-1  (In place of "1984JAN15 V-0")
21
 
    1984 COPYRIGHT BY WHO
22
 
 
23
 
    2008-08
24
 
    Dip locations and factory settings verified with manual
25
 
 
26
 
****************************************************************************
27
 
 
28
 
    Memory map (TBA)
29
 
 
30
 
***************************************************************************/
31
 
 
32
 
#include "emu.h"
33
 
#include "cpu/z80/z80.h"
34
 
#include "includes/crgolf.h"
35
 
#include "sound/ay8910.h"
36
 
#include "sound/msm5205.h"
37
 
 
38
 
 
39
 
/*************************************
40
 
 *
41
 
 *  ROM banking
42
 
 *
43
 
 *************************************/
44
 
 
45
 
static WRITE8_HANDLER( rom_bank_select_w )
46
 
{
47
 
        memory_set_bank(space->machine(), "bank1", data & 15);
48
 
}
49
 
 
50
 
 
51
 
static MACHINE_START( crgolf )
52
 
{
53
 
        crgolf_state *state = machine.driver_data<crgolf_state>();
54
 
 
55
 
        state->m_maincpu = machine.device("maincpu");
56
 
        state->m_audiocpu = machine.device("audiocpu");
57
 
 
58
 
        /* configure the banking */
59
 
        memory_configure_bank(machine, "bank1", 0, 16, machine.region("maincpu")->base() + 0x10000, 0x2000);
60
 
        memory_set_bank(machine, "bank1", 0);
61
 
 
62
 
        /* register for save states */
63
 
        state->save_item(NAME(state->m_port_select));
64
 
        state->save_item(NAME(state->m_main_to_sound_data));
65
 
        state->save_item(NAME(state->m_sound_to_main_data));
66
 
        state->save_item(NAME(state->m_sample_offset));
67
 
        state->save_item(NAME(state->m_sample_count));
68
 
}
69
 
 
70
 
 
71
 
static MACHINE_RESET( crgolf )
72
 
{
73
 
        crgolf_state *state = machine.driver_data<crgolf_state>();
74
 
 
75
 
        state->m_port_select = 0;
76
 
        state->m_main_to_sound_data = 0;
77
 
        state->m_sound_to_main_data = 0;
78
 
        state->m_sample_offset = 0;
79
 
        state->m_sample_count = 0;
80
 
}
81
 
 
82
 
 
83
 
/*************************************
84
 
 *
85
 
 *  Input ports
86
 
 *
87
 
 *************************************/
88
 
 
89
 
static READ8_HANDLER( switch_input_r )
90
 
{
91
 
        static const char *const portnames[] = { "IN0", "IN1", "P1", "P2", "DSW", "UNUSED0", "UNUSED1" };
92
 
        crgolf_state *state = space->machine().driver_data<crgolf_state>();
93
 
 
94
 
        return input_port_read(space->machine(), portnames[state->m_port_select]);
95
 
}
96
 
 
97
 
 
98
 
static READ8_HANDLER( analog_input_r )
99
 
{
100
 
        return ((input_port_read(space->machine(), "STICK0") >> 4) | (input_port_read(space->machine(), "STICK1") & 0xf0)) ^ 0x88;
101
 
}
102
 
 
103
 
 
104
 
static WRITE8_HANDLER( switch_input_select_w )
105
 
{
106
 
        crgolf_state *state = space->machine().driver_data<crgolf_state>();
107
 
 
108
 
        if (!(data & 0x40)) state->m_port_select = 6;
109
 
        if (!(data & 0x20)) state->m_port_select = 5;
110
 
        if (!(data & 0x10)) state->m_port_select = 4;
111
 
        if (!(data & 0x08)) state->m_port_select = 3;
112
 
        if (!(data & 0x04)) state->m_port_select = 2;
113
 
        if (!(data & 0x02)) state->m_port_select = 1;
114
 
        if (!(data & 0x01)) state->m_port_select = 0;
115
 
}
116
 
 
117
 
 
118
 
static WRITE8_HANDLER( unknown_w )
119
 
{
120
 
        logerror("%04X:unknown_w = %02X\n", cpu_get_pc(&space->device()), data);
121
 
}
122
 
 
123
 
 
124
 
 
125
 
/*************************************
126
 
 *
127
 
 *  Main->Sound CPU communications
128
 
 *
129
 
 *************************************/
130
 
 
131
 
static TIMER_CALLBACK( main_to_sound_callback )
132
 
{
133
 
        crgolf_state *state = machine.driver_data<crgolf_state>();
134
 
 
135
 
        device_set_input_line(state->m_audiocpu, INPUT_LINE_NMI, ASSERT_LINE);
136
 
        state->m_main_to_sound_data = param;
137
 
}
138
 
 
139
 
 
140
 
static WRITE8_HANDLER( main_to_sound_w )
141
 
{
142
 
        space->machine().scheduler().synchronize(FUNC(main_to_sound_callback), data);
143
 
}
144
 
 
145
 
 
146
 
static READ8_HANDLER( main_to_sound_r )
147
 
{
148
 
        crgolf_state *state = space->machine().driver_data<crgolf_state>();
149
 
 
150
 
        device_set_input_line(state->m_audiocpu, INPUT_LINE_NMI, CLEAR_LINE);
151
 
        return state->m_main_to_sound_data;
152
 
}
153
 
 
154
 
 
155
 
 
156
 
/*************************************
157
 
 *
158
 
 *  Sound->Main CPU communications
159
 
 *
160
 
 *************************************/
161
 
 
162
 
static TIMER_CALLBACK( sound_to_main_callback )
163
 
{
164
 
        crgolf_state *state = machine.driver_data<crgolf_state>();
165
 
 
166
 
        device_set_input_line(state->m_maincpu, INPUT_LINE_NMI, ASSERT_LINE);
167
 
        state->m_sound_to_main_data = param;
168
 
}
169
 
 
170
 
 
171
 
static WRITE8_HANDLER( sound_to_main_w )
172
 
{
173
 
        space->machine().scheduler().synchronize(FUNC(sound_to_main_callback), data);
174
 
}
175
 
 
176
 
 
177
 
static READ8_HANDLER( sound_to_main_r )
178
 
{
179
 
        crgolf_state *state = space->machine().driver_data<crgolf_state>();
180
 
 
181
 
        device_set_input_line(state->m_maincpu, INPUT_LINE_NMI, CLEAR_LINE);
182
 
        return state->m_sound_to_main_data;
183
 
}
184
 
 
185
 
 
186
 
 
187
 
/*************************************
188
 
 *
189
 
 *  Hawaii auto-sample player
190
 
 *
191
 
 *************************************/
192
 
 
193
 
static void vck_callback( device_t *device )
194
 
{
195
 
        crgolf_state *state = device->machine().driver_data<crgolf_state>();
196
 
 
197
 
        /* only play back if we have data remaining */
198
 
        if (state->m_sample_count != 0xff)
199
 
        {
200
 
                UINT8 data = device->machine().region("adpcm")->base()[state->m_sample_offset >> 1];
201
 
 
202
 
                /* write the next nibble and advance */
203
 
                msm5205_data_w(device, (data >> (4 * (~state->m_sample_offset & 1))) & 0x0f);
204
 
                state->m_sample_offset++;
205
 
 
206
 
                /* every 256 clocks, we decrement the length */
207
 
                if (!(state->m_sample_offset & 0xff))
208
 
                {
209
 
                        state->m_sample_count--;
210
 
 
211
 
                        /* if we hit 0xff, automatically turn off playback */
212
 
                        if (state->m_sample_count == 0xff)
213
 
                                msm5205_reset_w(device, 1);
214
 
                }
215
 
        }
216
 
}
217
 
 
218
 
 
219
 
static WRITE8_DEVICE_HANDLER( crgolfhi_sample_w )
220
 
{
221
 
        crgolf_state *state = device->machine().driver_data<crgolf_state>();
222
 
 
223
 
        switch (offset)
224
 
        {
225
 
                /* offset 0 holds the MSM5205 in reset */
226
 
                case 0:
227
 
                        msm5205_reset_w(device, 1);
228
 
                        break;
229
 
 
230
 
                /* offset 1 is the length/256 nibbles */
231
 
                case 1:
232
 
                        state->m_sample_count = data;
233
 
                        break;
234
 
 
235
 
                /* offset 2 is the offset/256 nibbles */
236
 
                case 2:
237
 
                        state->m_sample_offset = data << 8;
238
 
                        break;
239
 
 
240
 
                /* offset 3 turns on playback */
241
 
                case 3:
242
 
                        msm5205_reset_w(device, 0);
243
 
                        break;
244
 
        }
245
 
}
246
 
 
247
 
 
248
 
 
249
 
/*************************************
250
 
 *
251
 
 *  Main CPU memory handlers
252
 
 *
253
 
 *************************************/
254
 
 
255
 
static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8 )
256
 
        AM_RANGE(0x0000, 0x3fff) AM_ROM
257
 
        AM_RANGE(0x4000, 0x5fff) AM_RAM
258
 
        AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("bank1")
259
 
        AM_RANGE(0x8003, 0x8003) AM_WRITEONLY AM_BASE_MEMBER(crgolf_state, m_color_select)
260
 
        AM_RANGE(0x8004, 0x8004) AM_WRITEONLY AM_BASE_MEMBER(crgolf_state, m_screen_flip)
261
 
        AM_RANGE(0x8005, 0x8005) AM_WRITEONLY AM_BASE_MEMBER(crgolf_state, m_screen_select)
262
 
        AM_RANGE(0x8006, 0x8006) AM_WRITEONLY AM_BASE_MEMBER(crgolf_state, m_screenb_enable)
263
 
        AM_RANGE(0x8007, 0x8007) AM_WRITEONLY AM_BASE_MEMBER(crgolf_state, m_screena_enable)
264
 
        AM_RANGE(0x8800, 0x8800) AM_READWRITE(sound_to_main_r, main_to_sound_w)
265
 
        AM_RANGE(0x9000, 0x9000) AM_WRITE(rom_bank_select_w)
266
 
        AM_RANGE(0xa000, 0xffff) AM_READWRITE(crgolf_videoram_r, crgolf_videoram_w)
267
 
ADDRESS_MAP_END
268
 
 
269
 
 
270
 
 
271
 
/*************************************
272
 
 *
273
 
 *  Sound CPU memory handlers
274
 
 *
275
 
 *************************************/
276
 
 
277
 
static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8 )
278
 
        AM_RANGE(0x0000, 0x7fff) AM_ROM
279
 
        AM_RANGE(0x8000, 0x87ff) AM_RAM
280
 
        AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("aysnd", ay8910_address_data_w)
281
 
        AM_RANGE(0xc002, 0xc002) AM_WRITENOP
282
 
        AM_RANGE(0xe000, 0xe000) AM_READWRITE(switch_input_r, switch_input_select_w)
283
 
        AM_RANGE(0xe001, 0xe001) AM_READWRITE(analog_input_r, unknown_w)
284
 
        AM_RANGE(0xe003, 0xe003) AM_READWRITE(main_to_sound_r, sound_to_main_w)
285
 
ADDRESS_MAP_END
286
 
 
287
 
 
288
 
 
289
 
/*************************************
290
 
 *
291
 
 *  Port definitions
292
 
 *
293
 
 *************************************/
294
 
 
295
 
static INPUT_PORTS_START( crgolf )
296
 
        PORT_START("IN0")       /* CREDIT */
297
 
        PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
298
 
        PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SERVICE1 )
299
 
        PORT_BIT( 0xfc, IP_ACTIVE_HIGH, IPT_UNUSED )
300
 
 
301
 
        PORT_START("IN1")       /* SELECT */
302
 
        PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
303
 
        PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START1 )
304
 
        PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START2 )
305
 
        PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START3 )
306
 
        PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_START4 )
307
 
        PORT_BIT( 0xe0, IP_ACTIVE_HIGH, IPT_UNUSED )
308
 
 
309
 
        PORT_START("P1")
310
 
        PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_PLAYER(1)                    /* club select */
311
 
        PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1)                    /* backward address */
312
 
        PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(1)                    /* forward address */
313
 
        PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(1)                    /* open stance */
314
 
        PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_PLAYER(1)                    /* closed stance */
315
 
        PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)      /* direction left */
316
 
        PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)     /* direction right */
317
 
        PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1)                    /* shot switch */
318
 
 
319
 
        PORT_START("P2")
320
 
        PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_COCKTAIL             /* club select */
321
 
        PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_COCKTAIL             /* backward address */
322
 
        PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_COCKTAIL             /* forward address */
323
 
        PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_COCKTAIL             /* open stance */
324
 
        PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_COCKTAIL             /* closed stance */
325
 
        PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_COCKTAIL       /* direction left */
326
 
        PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_COCKTAIL      /* direction right */
327
 
        PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL             /* shot switch */
328
 
 
329
 
        PORT_START("DSW")
330
 
        PORT_DIPNAME( 0x01, 0x00, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW:2")
331
 
        PORT_DIPSETTING(    0x00, DEF_STR( Easy ) )
332
 
        PORT_DIPSETTING(    0x01, DEF_STR( Hard ) )
333
 
        PORT_DIPNAME( 0x06, 0x04, "Half-Round Play" ) PORT_DIPLOCATION("SW:1,4")
334
 
        PORT_DIPSETTING(    0x00, "4 Coins" )
335
 
        PORT_DIPSETTING(    0x02, "5 Coins" )
336
 
        PORT_DIPSETTING(    0x04, "6 Coins" )
337
 
        PORT_DIPSETTING(    0x06, "10 Coins" )
338
 
        PORT_DIPNAME( 0x08, 0x08, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW:3")
339
 
        PORT_DIPSETTING(    0x08, DEF_STR( Upright ) )
340
 
        PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
341
 
        PORT_DIPNAME( 0x10, 0x00, "Clear High Scores" ) PORT_DIPLOCATION("SW:6")
342
 
        PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
343
 
        PORT_DIPSETTING(    0x10, DEF_STR( On ) )
344
 
        PORT_DIPNAME( 0x20, 0x20, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW:5")
345
 
        PORT_DIPSETTING(    0x20, DEF_STR( 2C_1C ) )
346
 
        PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
347
 
        PORT_DIPUNUSED_DIPLOC( 0x40, 0x00, "SW:8" )
348
 
        PORT_SERVICE_DIPLOC( 0x80, IP_ACTIVE_HIGH, "SW:7" )
349
 
 
350
 
        PORT_START("UNUSED0")
351
 
        PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
352
 
 
353
 
        PORT_START("UNUSED1")
354
 
        PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
355
 
 
356
 
        PORT_START("STICK0")
357
 
        PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_SENSITIVITY(70) PORT_KEYDELTA(16) PORT_REVERSE
358
 
 
359
 
        PORT_START("STICK1")
360
 
        PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_SENSITIVITY(70) PORT_KEYDELTA(16) PORT_REVERSE PORT_COCKTAIL
361
 
INPUT_PORTS_END
362
 
 
363
 
 
364
 
 
365
 
/*************************************
366
 
 *
367
 
 *  Sound definitions
368
 
 *
369
 
 *************************************/
370
 
 
371
 
static const msm5205_interface msm5205_intf =
372
 
{
373
 
        vck_callback,
374
 
        MSM5205_S64_4B
375
 
};
376
 
 
377
 
 
378
 
 
379
 
/*************************************
380
 
 *
381
 
 *  Machine driver
382
 
 *
383
 
 *************************************/
384
 
 
385
 
static MACHINE_CONFIG_START( crgolf, crgolf_state )
386
 
 
387
 
        /* basic machine hardware */
388
 
        MCFG_CPU_ADD("maincpu", Z80,MASTER_CLOCK/3/2)
389
 
        MCFG_CPU_PROGRAM_MAP(main_map)
390
 
        MCFG_CPU_VBLANK_INT("screen", irq0_line_hold)
391
 
 
392
 
        MCFG_CPU_ADD("audiocpu", Z80,MASTER_CLOCK/3/2)
393
 
        MCFG_CPU_PROGRAM_MAP(sound_map)
394
 
        MCFG_CPU_VBLANK_INT("screen", irq0_line_hold)
395
 
 
396
 
        MCFG_MACHINE_START(crgolf)
397
 
        MCFG_MACHINE_RESET(crgolf)
398
 
        MCFG_QUANTUM_TIME(attotime::from_hz(6000))
399
 
 
400
 
        /* video hardware */
401
 
        MCFG_FRAGMENT_ADD(crgolf_video)
402
 
 
403
 
        /* sound hardware */
404
 
        MCFG_SPEAKER_STANDARD_MONO("mono")
405
 
        MCFG_SOUND_ADD("aysnd", AY8910, MASTER_CLOCK/3/2/2)
406
 
        MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
407
 
MACHINE_CONFIG_END
408
 
 
409
 
 
410
 
static MACHINE_CONFIG_DERIVED( crgolfhi, crgolf )
411
 
 
412
 
        MCFG_SOUND_ADD("msm", MSM5205, 384000)
413
 
        MCFG_SOUND_CONFIG(msm5205_intf)
414
 
        MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
415
 
MACHINE_CONFIG_END
416
 
 
417
 
 
418
 
 
419
 
/*************************************
420
 
 *
421
 
 *  ROM definition(s)
422
 
 *
423
 
 *************************************/
424
 
 
425
 
ROM_START( crgolf ) // 834-5419-04
426
 
        ROM_REGION( 0x30000, "maincpu", 0 )
427
 
        ROM_LOAD( "crwnc1.1c",  0x00000, 0x2000, CRC(3246e405) SHA1(f6018029317ac96df5866ca6a2bb2135edbd7e77) )
428
 
        ROM_LOAD( "crwna1.1a",  0x02000, 0x2000, CRC(b9a936e2) SHA1(cebf67d9c42627fbb39648674012a6cf8cb287b5) )
429
 
        ROM_LOAD( "epr5880.6b", 0x10000, 0x2000, CRC(4d6d8dad) SHA1(1530f81ad0097eadc75884ff8690b60b85ae451b) )
430
 
        ROM_LOAD( "epr5885.5e", 0x1e000, 0x2000, CRC(fac6d56c) SHA1(67dc1918d5ab2443e967359e51d49dd134cdf25d) )
431
 
        ROM_LOAD( "epr5881.6f", 0x20000, 0x2000, CRC(dd48dc1f) SHA1(d4560a88d872bd5f401344e3adb25f8486caca11) )
432
 
        ROM_LOAD( "epr5886.5f", 0x22000, 0x2000, CRC(a09b27b8) SHA1(8b2d8322b633f6c7174bdb1fff0f6cef2d5a86de) )
433
 
        ROM_LOAD( "epr5882.6h", 0x24000, 0x2000, CRC(fb86a168) SHA1(a679c9f50ac952da6c65f6593dce805023b8fc45) )
434
 
        ROM_LOAD( "epr5887.5h", 0x26000, 0x2000, CRC(981f03ef) SHA1(42f686b970902bc42ac0f81bd2fc93dbdf766b1a) )
435
 
        ROM_LOAD( "epr5883.6j", 0x28000, 0x2000, CRC(e64125ff) SHA1(ae2014d1039f4ed02c55053519bdeddd2f60a77a) )
436
 
        ROM_LOAD( "epr5888.5j", 0x2a000, 0x2000, CRC(efc0e15a) SHA1(ba5772830f921004a2d9c90f557c04c799c755b9) )
437
 
        ROM_LOAD( "epr5884.6k", 0x2c000, 0x2000, CRC(eb455966) SHA1(14278b598ac1d4007d5357cb40899c92a052417f) )
438
 
        ROM_LOAD( "epr5889.5k", 0x2e000, 0x2000, CRC(88357391) SHA1(afdb5ed6555adf60bd64808413fc72fa5c67b6ec) )
439
 
 
440
 
        ROM_REGION( 0x10000, "audiocpu", 0 )
441
 
        ROM_LOAD( "epr6198.1f",  0x0000, 0x1000, CRC(388c33d6) SHA1(42fd19c4b4ec7538d6c437552efb258bf2dcebc0) )
442
 
        ROM_LOAD( "epr5892.1e",  0x2000, 0x2000, CRC(608dc2e2) SHA1(d906537cffd3e055f52f37a0490b3bb63107b2f9) )
443
 
        ROM_LOAD( "epr5891a.1d", 0x4000, 0x2000, CRC(f353b585) SHA1(f09dcd0240131f872ceef5ddc9c89ab2fc92d117) )
444
 
        ROM_LOAD( "epr5890a.1c", 0x6000, 0x2000, CRC(b737c2e8) SHA1(8596abbdff74300230b5ec5bf8acfe222eb3414f) )
445
 
 
446
 
        ROM_REGION( 0x0020,  "proms", 0 )
447
 
        ROM_LOAD( "pr5877.1s", 0x0000, 0x0020, CRC(f880b95d) SHA1(5ad0ee39e2b9befaf3895ec635d5865b7b1e562b) )
448
 
 
449
 
        ROM_REGION( 0x0200, "plds", 0 )
450
 
        ROM_LOAD( "pal16l8.3e",  0x0000, 0x0104, NO_DUMP ) /* PAL is read protected */
451
 
ROM_END
452
 
 
453
 
ROM_START( crgolfa ) // 834-5419-03
454
 
        ROM_REGION( 0x30000, "maincpu", 0 )
455
 
        ROM_LOAD( "epr6143.1c", 0x00000, 0x2000, CRC(4b301360) SHA1(2a7dd4876f4448b4b59b6dd02e55eb2d0126b777) )
456
 
        ROM_LOAD( "epr6142.1a", 0x02000, 0x2000, CRC(8fc5e67f) SHA1(6563db94c55cfc7d2270daccaab57fc7b422b9f9) )
457
 
        ROM_LOAD( "epr5880.6b", 0x10000, 0x2000, CRC(4d6d8dad) SHA1(1530f81ad0097eadc75884ff8690b60b85ae451b) )
458
 
        ROM_LOAD( "epr5885.5e", 0x1e000, 0x2000, CRC(fac6d56c) SHA1(67dc1918d5ab2443e967359e51d49dd134cdf25d) )
459
 
        ROM_LOAD( "epr5881.6f", 0x20000, 0x2000, CRC(dd48dc1f) SHA1(d4560a88d872bd5f401344e3adb25f8486caca11) )
460
 
        ROM_LOAD( "epr5886.5f", 0x22000, 0x2000, CRC(a09b27b8) SHA1(8b2d8322b633f6c7174bdb1fff0f6cef2d5a86de) )
461
 
        ROM_LOAD( "epr5882.6h", 0x24000, 0x2000, CRC(fb86a168) SHA1(a679c9f50ac952da6c65f6593dce805023b8fc45) )
462
 
        ROM_LOAD( "epr5887.5h", 0x26000, 0x2000, CRC(981f03ef) SHA1(42f686b970902bc42ac0f81bd2fc93dbdf766b1a) )
463
 
        ROM_LOAD( "epr5883.6j", 0x28000, 0x2000, CRC(e64125ff) SHA1(ae2014d1039f4ed02c55053519bdeddd2f60a77a) )
464
 
        ROM_LOAD( "epr5888.5j", 0x2a000, 0x2000, CRC(efc0e15a) SHA1(ba5772830f921004a2d9c90f557c04c799c755b9) )
465
 
        ROM_LOAD( "epr5884.6k", 0x2c000, 0x2000, CRC(eb455966) SHA1(14278b598ac1d4007d5357cb40899c92a052417f) )
466
 
        ROM_LOAD( "epr5889.5k", 0x2e000, 0x2000, CRC(88357391) SHA1(afdb5ed6555adf60bd64808413fc72fa5c67b6ec) )
467
 
 
468
 
        ROM_REGION( 0x10000, "audiocpu", 0 )
469
 
        ROM_LOAD( "epr6144.1f",  0x0000, 0x1000, CRC(3fdc8cd6) SHA1(01d118d56a0e363af66a36ba583c4cbce86ee1d1) )
470
 
        ROM_LOAD( "epr5892.1e",  0x2000, 0x2000, CRC(608dc2e2) SHA1(d906537cffd3e055f52f37a0490b3bb63107b2f9) )
471
 
        ROM_LOAD( "epr5891a.1d", 0x4000, 0x2000, CRC(f353b585) SHA1(f09dcd0240131f872ceef5ddc9c89ab2fc92d117) )
472
 
        ROM_LOAD( "epr5890a.1c", 0x6000, 0x2000, CRC(b737c2e8) SHA1(8596abbdff74300230b5ec5bf8acfe222eb3414f) )
473
 
 
474
 
        ROM_REGION( 0x0020,  "proms", 0 )
475
 
        ROM_LOAD( "pr5877.1s", 0x0000, 0x0020, CRC(f880b95d) SHA1(5ad0ee39e2b9befaf3895ec635d5865b7b1e562b) )
476
 
 
477
 
        ROM_REGION( 0x0200, "plds", 0 )
478
 
        ROM_LOAD( "pal16l8.3e",  0x0000, 0x0104, NO_DUMP ) /* PAL is read protected */
479
 
ROM_END
480
 
 
481
 
 
482
 
ROM_START( crgolfb )
483
 
        ROM_REGION( 0x30000, "maincpu", 0 )
484
 
        ROM_LOAD( "epr5879b.1c", 0x00000, 0x2000, CRC(927be359) SHA1(d534f7e3ef4ced8eea882ae2b8425df4c5842833) )
485
 
        ROM_LOAD( "epr5878.1a",  0x02000, 0x2000, CRC(65fd0fa0) SHA1(de95ff95c9f981cd9eadf8b028ee5373bc69007b) )
486
 
        ROM_LOAD( "epr5880.6b",  0x10000, 0x2000, CRC(4d6d8dad) SHA1(1530f81ad0097eadc75884ff8690b60b85ae451b) )
487
 
        ROM_LOAD( "epr5885.5e",  0x1e000, 0x2000, CRC(fac6d56c) SHA1(67dc1918d5ab2443e967359e51d49dd134cdf25d) )
488
 
        ROM_LOAD( "epr5881.6f",  0x20000, 0x2000, CRC(dd48dc1f) SHA1(d4560a88d872bd5f401344e3adb25f8486caca11) )
489
 
        ROM_LOAD( "epr5886.5f",  0x22000, 0x2000, CRC(a09b27b8) SHA1(8b2d8322b633f6c7174bdb1fff0f6cef2d5a86de) )
490
 
        ROM_LOAD( "epr5882.6h",  0x24000, 0x2000, CRC(fb86a168) SHA1(a679c9f50ac952da6c65f6593dce805023b8fc45) )
491
 
        ROM_LOAD( "epr5887.5h",  0x26000, 0x2000, CRC(981f03ef) SHA1(42f686b970902bc42ac0f81bd2fc93dbdf766b1a) )
492
 
        ROM_LOAD( "epr5883.6j",  0x28000, 0x2000, CRC(e64125ff) SHA1(ae2014d1039f4ed02c55053519bdeddd2f60a77a) )
493
 
        ROM_LOAD( "epr5888.5j",  0x2a000, 0x2000, CRC(efc0e15a) SHA1(ba5772830f921004a2d9c90f557c04c799c755b9) )
494
 
        ROM_LOAD( "epr5884.6k",  0x2c000, 0x2000, CRC(eb455966) SHA1(14278b598ac1d4007d5357cb40899c92a052417f) )
495
 
        ROM_LOAD( "epr5889.5k",  0x2e000, 0x2000, CRC(88357391) SHA1(afdb5ed6555adf60bd64808413fc72fa5c67b6ec) )
496
 
 
497
 
        ROM_REGION( 0x10000, "audiocpu", 0 )
498
 
        ROM_LOAD( "epr5893c.1f", 0x0000, 0x1000, CRC(5011646d) SHA1(1bbf83107396d69c17580d4b1b38d93f741a608f) )
499
 
        ROM_LOAD( "epr5892.1e",  0x2000, 0x2000, CRC(608dc2e2) SHA1(d906537cffd3e055f52f37a0490b3bb63107b2f9) )
500
 
        ROM_LOAD( "epr5891a.1d", 0x4000, 0x2000, CRC(f353b585) SHA1(f09dcd0240131f872ceef5ddc9c89ab2fc92d117) )
501
 
        ROM_LOAD( "epr5890a.1c", 0x6000, 0x2000, CRC(b737c2e8) SHA1(8596abbdff74300230b5ec5bf8acfe222eb3414f) )
502
 
 
503
 
        ROM_REGION( 0x0020,  "proms", 0 )
504
 
        ROM_LOAD( "pr5877.1s",   0x0000, 0x0020, CRC(f880b95d) SHA1(5ad0ee39e2b9befaf3895ec635d5865b7b1e562b) )
505
 
ROM_END
506
 
 
507
 
 
508
 
ROM_START( crgolfc )
509
 
        ROM_REGION( 0x30000, "maincpu", 0 )
510
 
        ROM_LOAD( "15.1a",      0x00000, 0x2000, CRC(e6194356) SHA1(78eec53a0658b552e6a8af109d9c9754e4ddadcb) )
511
 
        ROM_LOAD( "16.1c",      0x02000, 0x2000, CRC(f50412e2) SHA1(5a50fb1edfc26072e921447bd157fe996f707e05) )
512
 
        ROM_LOAD( "cg.1",       0x10000, 0x2000, CRC(ad7d537a) SHA1(deff74074a8b16ea91a0fa72d97ec36336c87b97) ) //  1.6a
513
 
        ROM_LOAD( "epr5885.5e", 0x1e000, 0x2000, CRC(fac6d56c) SHA1(67dc1918d5ab2443e967359e51d49dd134cdf25d) ) //  6.5a
514
 
        ROM_LOAD( "epr5881.6f", 0x20000, 0x2000, CRC(dd48dc1f) SHA1(d4560a88d872bd5f401344e3adb25f8486caca11) ) //  2.6b
515
 
        ROM_LOAD( "epr5886.5f", 0x22000, 0x2000, CRC(a09b27b8) SHA1(8b2d8322b633f6c7174bdb1fff0f6cef2d5a86de) ) //  7.5b
516
 
        ROM_LOAD( "3.6c",       0x24000, 0x2000, CRC(b7fcee1a) SHA1(47e9a2cee945c5f59490b73c475ec2512ea0f559) )
517
 
        ROM_LOAD( "epr5887.5h", 0x26000, 0x2000, CRC(981f03ef) SHA1(42f686b970902bc42ac0f81bd2fc93dbdf766b1a) ) //  8.5c
518
 
        ROM_LOAD( "epr5883.6j", 0x28000, 0x2000, CRC(e64125ff) SHA1(ae2014d1039f4ed02c55053519bdeddd2f60a77a) ) //  4.6d
519
 
        ROM_LOAD( "epr5888.5j", 0x2a000, 0x2000, CRC(efc0e15a) SHA1(ba5772830f921004a2d9c90f557c04c799c755b9) ) //  9.5d
520
 
        ROM_LOAD( "epr5884.6k", 0x2c000, 0x2000, CRC(eb455966) SHA1(14278b598ac1d4007d5357cb40899c92a052417f) ) //  5.6e
521
 
        ROM_LOAD( "epr5889.5k", 0x2e000, 0x2000, CRC(88357391) SHA1(afdb5ed6555adf60bd64808413fc72fa5c67b6ec) ) // 10.5e
522
 
 
523
 
        ROM_REGION( 0x10000, "audiocpu", 0 )
524
 
        ROM_LOAD( "11.1e",       0x0000, 0x1000, CRC(53295a1a) SHA1(ec6c4df9f32e4b3ffe48e823d90a9e6a671e6027) )
525
 
        ROM_LOAD( "epr5892.1e",  0x2000, 0x2000, CRC(608dc2e2) SHA1(d906537cffd3e055f52f37a0490b3bb63107b2f9) ) // 12.1d
526
 
        ROM_LOAD( "epr5891a.1d", 0x4000, 0x2000, CRC(f353b585) SHA1(f09dcd0240131f872ceef5ddc9c89ab2fc92d117) ) // 13.1c
527
 
        ROM_LOAD( "epr5890a.1c", 0x6000, 0x2000, CRC(b737c2e8) SHA1(8596abbdff74300230b5ec5bf8acfe222eb3414f) ) // 14.1b
528
 
 
529
 
        ROM_REGION( 0x0020,  "proms", 0 )
530
 
        ROM_LOAD( "pr5877.1s", 0x0000, 0x0020, CRC(f880b95d) SHA1(5ad0ee39e2b9befaf3895ec635d5865b7b1e562b) )
531
 
ROM_END
532
 
 
533
 
 
534
 
ROM_START( crgolfbt )
535
 
        ROM_REGION( 0x30000, "maincpu", 0 )
536
 
        ROM_LOAD( "epr5879b.1c", 0x00000, 0x2000, CRC(927be359) SHA1(d534f7e3ef4ced8eea882ae2b8425df4c5842833) )
537
 
        ROM_LOAD( "epr5878.1a",  0x02000, 0x2000, CRC(65fd0fa0) SHA1(de95ff95c9f981cd9eadf8b028ee5373bc69007b) )
538
 
        ROM_LOAD( "cg.1",        0x10000, 0x2000, CRC(ad7d537a) SHA1(deff74074a8b16ea91a0fa72d97ec36336c87b97) )
539
 
        ROM_LOAD( "epr5885.5e",  0x1e000, 0x2000, CRC(fac6d56c) SHA1(67dc1918d5ab2443e967359e51d49dd134cdf25d) ) // cg.6
540
 
        ROM_LOAD( "epr5881.6f",  0x20000, 0x2000, CRC(dd48dc1f) SHA1(d4560a88d872bd5f401344e3adb25f8486caca11) ) // cg.2
541
 
        ROM_LOAD( "epr5886.5f",  0x22000, 0x2000, CRC(a09b27b8) SHA1(8b2d8322b633f6c7174bdb1fff0f6cef2d5a86de) ) // cg.7
542
 
        ROM_LOAD( "epr5882.6h",  0x24000, 0x2000, CRC(fb86a168) SHA1(a679c9f50ac952da6c65f6593dce805023b8fc45) ) // cg.3
543
 
        ROM_LOAD( "epr5887.5h",  0x26000, 0x2000, CRC(981f03ef) SHA1(42f686b970902bc42ac0f81bd2fc93dbdf766b1a) ) // cg.8
544
 
        ROM_LOAD( "epr5883.6j",  0x28000, 0x2000, CRC(e64125ff) SHA1(ae2014d1039f4ed02c55053519bdeddd2f60a77a) ) // cg.4
545
 
        ROM_LOAD( "epr5888.5j",  0x2a000, 0x2000, CRC(efc0e15a) SHA1(ba5772830f921004a2d9c90f557c04c799c755b9) ) // cg.9
546
 
        ROM_LOAD( "epr5884.6k",  0x2c000, 0x2000, CRC(eb455966) SHA1(14278b598ac1d4007d5357cb40899c92a052417f) ) // cg.5
547
 
        ROM_LOAD( "epr5889.5k",  0x2e000, 0x2000, CRC(88357391) SHA1(afdb5ed6555adf60bd64808413fc72fa5c67b6ec) ) // cg.10
548
 
 
549
 
        ROM_REGION( 0x10000, "audiocpu", 0 )
550
 
        ROM_LOAD( "cg.14",       0x0000, 0x1000, CRC(07156cd9) SHA1(8907cf9228d6de117b24969d4e039cee330f9b1e) )
551
 
        ROM_LOAD( "epr5892.1e",  0x2000, 0x2000, CRC(608dc2e2) SHA1(d906537cffd3e055f52f37a0490b3bb63107b2f9) ) // cg.13
552
 
        ROM_LOAD( "epr5891a.1d", 0x4000, 0x2000, CRC(f353b585) SHA1(f09dcd0240131f872ceef5ddc9c89ab2fc92d117) ) // cg.12
553
 
        ROM_LOAD( "epr5890a.1c", 0x6000, 0x2000, CRC(b737c2e8) SHA1(8596abbdff74300230b5ec5bf8acfe222eb3414f) ) // cg.11
554
 
 
555
 
        ROM_REGION( 0x0020,  "proms", 0 )
556
 
        ROM_LOAD( "pr5877.1s",   0x0000, 0x0020, CRC(f880b95d) SHA1(5ad0ee39e2b9befaf3895ec635d5865b7b1e562b) )
557
 
ROM_END
558
 
 
559
 
 
560
 
ROM_START( crgolfhi )
561
 
        ROM_REGION( 0x30000, "maincpu", 0 )
562
 
        ROM_LOAD( "cpu.c1",  0x00000, 0x2000, CRC(8b101085) SHA1(a59c369be3e7e645d8b20032998a778a2056b7d7) )
563
 
        ROM_LOAD( "cpu.a1",  0x02000, 0x2000, CRC(f48a8ee8) SHA1(cc07c7258caf251e9cb52f12be779cb02fca0b0a) )
564
 
        ROM_LOAD( "main.b6", 0x10000, 0x2000, CRC(5b0336c6) SHA1(86e2c197f23a2f2f7666448b74611150ca15a2af) )
565
 
        ROM_LOAD( "main.b5", 0x12000, 0x2000, CRC(7b80149a) SHA1(c802a79b1430b15d166f5fca11d2ed4e65bc65a9) )
566
 
        ROM_LOAD( "main.c6", 0x14000, 0x2000, CRC(7804cb1c) SHA1(487f979f47a0f40fa35331c71a66dc8428387a26) )
567
 
        ROM_LOAD( "main.c5", 0x16000, 0x2000, CRC(7721efc5) SHA1(9f3fb6845e5815ada1535da7800e175769fd46b1) )
568
 
        ROM_LOAD( "main.d6", 0x18000, 0x2000, CRC(f3ccdfaa) SHA1(c266737caf7222a971d0297b944c5710d3ec12be) )
569
 
        ROM_LOAD( "main.d5", 0x1a000, 0x2000, CRC(bef85c95) SHA1(516615975207209a4c649df7ffd451167fc40c45) )
570
 
        ROM_LOAD( "main.e6", 0x1c000, 0x2000, CRC(aa75e849) SHA1(226e7712e65f86422a1caebf3b95abcf39af2277) )
571
 
        ROM_LOAD( "main.e5", 0x1e000, 0x2000, CRC(e8eefbc4) SHA1(02393d3c0a1234ec51348d755725562cc7861285) )
572
 
        ROM_LOAD( "main.f6", 0x20000, 0x2000, CRC(e1130eec) SHA1(26a68f8af543983fcae73db59d075b11ee101ca8) )
573
 
        ROM_LOAD( "main.f5", 0x22000, 0x2000, CRC(090c21e3) SHA1(e5e0fc1e4ffd2a9c344cfc70a9e8e7cebb0821cc) )
574
 
        ROM_LOAD( "main.h6", 0x24000, 0x2000, CRC(33b8ada4) SHA1(73192108daa0724c30c1deea7d52538a49bfdf8f) )
575
 
        ROM_LOAD( "main.h5", 0x26000, 0x2000, CRC(16e5a26c) SHA1(7bb6e5d852f352331953058c17e753fee04d1cf9) )
576
 
        ROM_LOAD( "main.j6", 0x28000, 0x2000, CRC(22db8cce) SHA1(cd646830129bfdd2f5f10c8f6732e76f8a15b74f) )
577
 
        ROM_LOAD( "main.j5", 0x2a000, 0x2000, CRC(f757de30) SHA1(38330f10051735683f41ed425900b9f0f9ee01be) )
578
 
 
579
 
        ROM_REGION( 0x10000, "audiocpu", 0 )
580
 
        ROM_LOAD( "main.f1",  0x0000, 0x2000, CRC(e7c471de) SHA1(b953807bc714496363ca33ad0fc11a2d30aa7b7e) )
581
 
 
582
 
        ROM_REGION( 0x8000, "adpcm", 0 )
583
 
        ROM_LOAD( "sub.r1", 0x0000, 0x2000, CRC(9be85e38) SHA1(a108fe812d0518e7bef32fd76998c0c70b70723e) )
584
 
        ROM_LOAD( "sub.r2", 0x2000, 0x2000, CRC(d65b8e3a) SHA1(de6acffbe2d7078f0598857a6a3b2179e5c82a34) )
585
 
        ROM_LOAD( "sub.r3", 0x4000, 0x2000, CRC(65967250) SHA1(7620560ea57b8e5d259ea8881fb8d8ca46228014) )
586
 
        ROM_LOAD( "sub.r4", 0x6000, 0x2000, CRC(d3716776) SHA1(7e38437d255c5f28aac24f0943c10fc1ce998b60) )
587
 
 
588
 
        ROM_REGION( 0x0020,  "proms", 0 )
589
 
        ROM_LOAD( "prom.s1", 0x0000, 0x0020, CRC(014427df) SHA1(85a5e660f9667e032b80152bbde351007e5c88df) )
590
 
ROM_END
591
 
 
592
 
 
593
 
 
594
 
/*************************************
595
 
 *
596
 
 *  Game-specific init
597
 
 *
598
 
 *************************************/
599
 
 
600
 
static DRIVER_INIT( crgolfhi )
601
 
{
602
 
        device_t *msm = machine.device("msm");
603
 
        machine.device("audiocpu")->memory().space(AS_PROGRAM)->install_legacy_write_handler(*msm, 0xa000, 0xa003, FUNC(crgolfhi_sample_w));
604
 
}
605
 
 
606
 
 
607
 
 
608
 
/*************************************
609
 
 *
610
 
 *  Game driver(s)
611
 
 *
612
 
 *************************************/
613
 
 
614
 
GAME( 1984, crgolf,   0,      crgolf,   crgolf,  0,        ROT0, "Nasco Japan", "Crowns Golf (834-5419-04)", GAME_SUPPORTS_SAVE )
615
 
GAME( 1984, crgolfa,  crgolf, crgolf,   crgolf,  0,        ROT0, "Nasco Japan", "Crowns Golf (834-5419-03)", GAME_SUPPORTS_SAVE )
616
 
GAME( 1984, crgolfb,  crgolf, crgolf,   crgolf,  0,        ROT0, "Nasco Japan", "Crowns Golf (set 3)", GAME_SUPPORTS_SAVE )
617
 
GAME( 1984, crgolfc,  crgolf, crgolf,   crgolf,  0,        ROT0, "Nasco Japan", "Champion Golf", GAME_SUPPORTS_SAVE )
618
 
GAME( 1984, crgolfbt, crgolf, crgolf,   crgolf,  0,        ROT0, "bootleg", "Champion Golf (bootleg)", GAME_SUPPORTS_SAVE )
619
 
GAME( 1985, crgolfhi, 0,      crgolfhi, crgolf,  crgolfhi, ROT0, "Nasco Japan", "Crowns Golf in Hawaii" , GAME_SUPPORTS_SAVE )