~ubuntu-branches/ubuntu/karmic/xmame/karmic

« back to all changes in this revision

Viewing changes to src/drivers/jcross.c

  • Committer: Bazaar Package Importer
  • Author(s): Bruno Barrera C.
  • Date: 2007-02-16 10:06:54 UTC
  • mfrom: (2.1.5 edgy)
  • Revision ID: james.westby@ubuntu.com-20070216100654-iztas2cl47k5j039
Tags: 0.106-2
* Added Italian debconf templates translation. (closes: #382672)
* Added German debconf templates translation. (closes: #396610)
* Added Japanese debconf templates translation. (closes: #400011)
* Added Portuguese debconf templates translation. (closes: #409960)

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
*/
18
18
 
19
19
#include "driver.h"
20
 
#include "vidhrdw/generic.h"
21
20
#include "cpu/z80/z80.h"
22
21
#include "snk.h"
 
22
#include "sound/ay8910.h"
 
23
#include "sound/namco.h"
23
24
 
24
 
data8_t *jcr_textram;
 
25
UINT8 *jcr_textram;
25
26
 
26
27
WRITE8_HANDLER( snkwave_w );
27
28
 
38
39
 
39
40
static int sound_cpu_busy=0;
40
41
 
41
 
data8_t *jcr_sharedram;
 
42
UINT8 *jcr_sharedram;
42
43
static READ8_HANDLER(sharedram_r){      return jcr_sharedram[offset];}
43
44
static WRITE8_HANDLER(sharedram_w){     jcr_sharedram[offset]=data;}
44
45
 
45
46
static struct namco_interface snkwave_interface =
46
47
{
47
 
        24000,
48
48
        1,
49
 
        8,
50
49
        -1
51
50
};
52
51
 
53
 
static struct AY8910interface ay8910_interface =
54
 
{
55
 
        2,
56
 
        2000000,
57
 
        { 35,35 },
58
 
        { 0 },
59
 
        { 0 },
60
 
        { 0 },
61
 
        { 0 }
62
 
};
63
 
 
64
52
static WRITE8_HANDLER( sound_command_w )
65
53
{
66
54
        sound_cpu_busy = 0x20;
92
80
static WRITE8_HANDLER(jcross_vregs4_w){jcross_vregs[4]=data;}
93
81
 
94
82
 
95
 
static ADDRESS_MAP_START( readmem_sound, ADDRESS_SPACE_PROGRAM, 8 )
96
 
        AM_RANGE(0x0000, 0x3fff) AM_READ(MRA8_ROM)
97
 
        AM_RANGE(0x8000, 0x87ff) AM_READ(MRA8_RAM)
 
83
static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
 
84
        AM_RANGE(0x0000, 0x3fff) AM_ROM AM_BASE(&namco_wavedata)
 
85
        AM_RANGE(0x8000, 0x87ff) AM_RAM
98
86
        AM_RANGE(0xa000, 0xa000) AM_READ(sound_command_r)
99
87
        AM_RANGE(0xc000, 0xc000) AM_READ(sound_nmi_ack_r)
100
 
        ADDRESS_MAP_END
101
 
 
102
 
static ADDRESS_MAP_START( writemem_sound, ADDRESS_SPACE_PROGRAM, 8 )
103
 
        AM_RANGE(0x0000, 0x3fff) AM_WRITE(MWA8_ROM) AM_BASE(&namco_wavedata)
104
 
        AM_RANGE(0x8000, 0x87ff) AM_WRITE(MWA8_RAM)
105
88
        AM_RANGE(0xe000, 0xe000) AM_WRITE(AY8910_control_port_0_w)
106
89
        AM_RANGE(0xe001, 0xe001) AM_WRITE(AY8910_write_port_0_w)
107
90
        AM_RANGE(0xe002, 0xe007) AM_WRITE(snkwave_w)
108
91
        AM_RANGE(0xe008, 0xe008) AM_WRITE(AY8910_control_port_1_w)
109
92
        AM_RANGE(0xe009, 0xe009) AM_WRITE(AY8910_write_port_1_w)
110
 
 
111
 
ADDRESS_MAP_END
112
 
 
113
 
static ADDRESS_MAP_START( readmem_CPUA, ADDRESS_SPACE_PROGRAM, 8 )
114
 
        AM_RANGE(0x0000, 0x9fff) AM_READ(MRA8_ROM)
 
93
ADDRESS_MAP_END
 
94
 
 
95
static ADDRESS_MAP_START( sound_portmap, ADDRESS_SPACE_IO, 8 )
 
96
        ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
 
97
        AM_RANGE(0x00, 0x00) AM_READNOP
 
98
ADDRESS_MAP_END
 
99
 
 
100
static ADDRESS_MAP_START( cpuA_map, ADDRESS_SPACE_PROGRAM, 8 )
 
101
        AM_RANGE(0x0000, 0x9fff) AM_ROM
115
102
        AM_RANGE(0xa000, 0xa000) AM_READ(jcross_port_0_r)
116
103
        AM_RANGE(0xa100, 0xa100) AM_READ(input_port_1_r)
117
104
        AM_RANGE(0xa200, 0xa200) AM_READ(input_port_2_r)
 
105
        AM_RANGE(0xa300, 0xa300) AM_WRITE(sound_command_w)
118
106
        AM_RANGE(0xa400, 0xa400) AM_READ(input_port_3_r)
119
107
        AM_RANGE(0xa500, 0xa500) AM_READ(input_port_4_r)
120
 
        AM_RANGE(0xa700, 0xa700) AM_READ(snk_cpuB_nmi_trigger_r)
121
 
        AM_RANGE(0xd800, 0xdfff) AM_READ(sharedram_r)
122
 
        AM_RANGE(0xf000, 0xf3ff) AM_READ(jcross_text_ram_r)
123
 
        AM_RANGE(0xe000, 0xefff) AM_READ(jcross_background_ram_r)
124
 
        AM_RANGE(0xf400, 0xffff) AM_READ(MRA8_RAM)
125
 
ADDRESS_MAP_END
126
 
 
127
 
static ADDRESS_MAP_START( writemem_CPUA, ADDRESS_SPACE_PROGRAM, 8 )
128
 
        AM_RANGE(0x0000, 0x9fff) AM_WRITE(MWA8_ROM)
129
 
        AM_RANGE(0xa300, 0xa300) AM_WRITE(sound_command_w)
130
108
        AM_RANGE(0xa600, 0xa600) AM_WRITE(jcross_palettebank_w)
131
 
        AM_RANGE(0xa700, 0xa700) AM_WRITE(snk_cpuA_nmi_ack_w)
 
109
        AM_RANGE(0xa700, 0xa700) AM_READWRITE(snk_cpuB_nmi_trigger_r, snk_cpuA_nmi_ack_w)
132
110
        AM_RANGE(0xd300, 0xd300) AM_WRITE(jcross_vregs0_w)
133
111
        AM_RANGE(0xd400, 0xd400) AM_WRITE(jcross_vregs1_w)
134
112
        AM_RANGE(0xd500, 0xd500) AM_WRITE(jcross_vregs2_w)
135
113
        AM_RANGE(0xd600, 0xd600) AM_WRITE(jcross_vregs3_w)
136
114
        AM_RANGE(0xd700, 0xd700) AM_WRITE(jcross_vregs4_w)
137
 
        AM_RANGE(0xd800, 0xdfff) AM_WRITE(sharedram_w) AM_BASE(&jcr_sharedram)
138
 
        AM_RANGE(0xe000, 0xefff) AM_WRITE(jcross_background_ram_w) AM_BASE(&videoram)
139
 
        AM_RANGE(0xf000, 0xf3ff) AM_WRITE(jcross_text_ram_w) AM_BASE(&jcr_textram)
140
 
        AM_RANGE(0xf400, 0xffff) AM_WRITE(MWA8_RAM)
141
 
 
142
 
ADDRESS_MAP_END
143
 
 
144
 
static ADDRESS_MAP_START( readmem_CPUB, ADDRESS_SPACE_PROGRAM, 8 )
145
 
        AM_RANGE(0x0000, 0x7fff) AM_READ(MRA8_ROM)
146
 
        AM_RANGE(0xa700, 0xa700) AM_READ(snk_cpuA_nmi_trigger_r)
147
 
        AM_RANGE(0xc000, 0xc7ff) AM_READ(sharedram_r)
148
 
        AM_RANGE(0xc800, 0xd7ff) AM_READ(jcross_background_ram_r) /* unknown ??? */
149
 
ADDRESS_MAP_END
150
 
 
151
 
static ADDRESS_MAP_START( writemem_CPUB, ADDRESS_SPACE_PROGRAM, 8 )
152
 
        AM_RANGE(0x0000, 0x7fff) AM_WRITE(MWA8_ROM)
153
 
        AM_RANGE(0xa700, 0xa700) AM_WRITE(snk_cpuB_nmi_ack_w)
154
 
        AM_RANGE(0xc000, 0xc7ff) AM_WRITE(sharedram_w)
155
 
ADDRESS_MAP_END
156
 
 
157
 
static ADDRESS_MAP_START( readport_sound, ADDRESS_SPACE_IO, 8 )
158
 
        AM_RANGE(0x0000, 0x0000) AM_READ(MRA8_NOP)
 
115
        AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE(1) AM_BASE(&spriteram)
 
116
        AM_RANGE(0xe000, 0xefff) AM_READWRITE(MRA8_RAM, jcross_background_ram_w) AM_SHARE(2) AM_BASE(&videoram)
 
117
        AM_RANGE(0xf000, 0xf3ff) AM_READWRITE(MRA8_RAM, jcross_text_ram_w) AM_BASE(&jcr_textram)
 
118
        AM_RANGE(0xf400, 0xffff) AM_RAM
 
119
ADDRESS_MAP_END
 
120
 
 
121
static ADDRESS_MAP_START( cpuB_map, ADDRESS_SPACE_PROGRAM, 8 )
 
122
        AM_RANGE(0x0000, 0x7fff) AM_ROM
 
123
        AM_RANGE(0xa700, 0xa700) AM_READWRITE(snk_cpuA_nmi_trigger_r, snk_cpuB_nmi_ack_w)
 
124
        AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE(1)
 
125
        AM_RANGE(0xc800, 0xd7ff) AM_RAM AM_SHARE(2) /* unknown ??? */
159
126
ADDRESS_MAP_END
160
127
 
161
128
 
243
210
 
244
211
/***************************************************************************
245
212
**
246
 
**      Graphics Layout
 
213
**  Graphics Layout
247
214
**
248
215
***************************************************************************/
249
216
 
250
 
static struct GfxLayout sprite_layout =
 
217
static const gfx_layout sprite_layout =
251
218
{
252
219
        16,16,
253
220
        RGN_FRAC(1,3),
263
230
        256
264
231
};
265
232
 
266
 
static struct GfxLayout tile_layout =
 
233
static const gfx_layout tile_layout =
267
234
{
268
235
        8,8,
269
236
        RGN_FRAC(1,1),
274
241
        256
275
242
};
276
243
 
277
 
static struct GfxDecodeInfo jcross_gfxdecodeinfo[] =
 
244
static const gfx_decode jcross_gfxdecodeinfo[] =
278
245
{
279
246
        { REGION_GFX1, 0, &tile_layout, 0x080, 8  },
280
247
        { REGION_GFX2, 0, &tile_layout, 0x110, 1  },
286
253
 
287
254
/***************************************************************************
288
255
**
289
 
**      Machine Driver
 
256
**  Machine Driver
290
257
**
291
258
***************************************************************************/
292
259
 
293
260
static MACHINE_DRIVER_START( jcross )
294
261
 
295
262
        MDRV_CPU_ADD(Z80, 3360000)
296
 
        MDRV_CPU_PROGRAM_MAP(readmem_CPUA,writemem_CPUA)
 
263
        MDRV_CPU_PROGRAM_MAP(cpuA_map,0)
297
264
        MDRV_CPU_VBLANK_INT(irq0_line_hold,1)
298
265
 
299
266
        MDRV_CPU_ADD(Z80, 3360000)
300
 
        MDRV_CPU_PROGRAM_MAP(readmem_CPUB,writemem_CPUB)
 
267
        MDRV_CPU_PROGRAM_MAP(cpuB_map,0)
301
268
        MDRV_CPU_VBLANK_INT(irq0_line_hold,1)
302
269
 
303
270
        MDRV_CPU_ADD(Z80, 4000000)
304
 
        MDRV_CPU_FLAGS(CPU_AUDIO_CPU)
305
 
        MDRV_CPU_PROGRAM_MAP(readmem_sound,writemem_sound)
306
 
        MDRV_CPU_IO_MAP(readport_sound,0)
307
 
        MDRV_CPU_PERIODIC_INT(irq0_line_hold, 244)
 
271
        /* audio CPU */
 
272
        MDRV_CPU_PROGRAM_MAP(sound_map,0)
 
273
        MDRV_CPU_IO_MAP(sound_portmap,0)
 
274
        MDRV_CPU_PERIODIC_INT(irq0_line_hold, TIME_IN_HZ(244))
308
275
 
309
276
        MDRV_FRAMES_PER_SECOND(61)
310
277
        MDRV_VBLANK_DURATION(DEFAULT_REAL_60HZ_VBLANK_DURATION)
320
287
        MDRV_VIDEO_UPDATE(jcross)
321
288
 
322
289
        /* sound hardware */
323
 
        MDRV_SOUND_ADD(AY8910, ay8910_interface)
324
 
        MDRV_SOUND_ADD(NAMCO, snkwave_interface)
 
290
        MDRV_SPEAKER_STANDARD_MONO("mono")
 
291
 
 
292
        MDRV_SOUND_ADD(AY8910, 2000000)
 
293
        MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.35)
 
294
 
 
295
        MDRV_SOUND_ADD(AY8910, 2000000)
 
296
        MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.35)
 
297
 
 
298
        MDRV_SOUND_ADD(NAMCO, 24000)
 
299
        MDRV_SOUND_CONFIG(snkwave_interface)
 
300
        MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.08)
325
301
MACHINE_DRIVER_END
326
302
 
327
303
 
363
339
        ROM_LOAD( "jcrossp0.j9",  0x800, 0x400, CRC(99f54d48) SHA1(9bd20eaa9706d28eaca9f5e195204d89e302272f) )
364
340
ROM_END
365
341
 
366
 
GAMEX(1984, jcross, 0, jcross, jcross, 0, ROT270,   "SNK", "Jumping Cross",GAME_NO_COCKTAIL|GAME_IMPERFECT_GRAPHICS)
 
342
GAME( 1984, jcross, 0, jcross, jcross, 0, ROT270,   "SNK", "Jumping Cross",GAME_NO_COCKTAIL|GAME_IMPERFECT_GRAPHICS)
367
343
 
368
344