1
/***************************************************************************
5
driver by Luca Elia (l.elia@tin.it)
8
CPU : M68000 or M68EC020
9
Sound Chips : OKI M6295 (AD-65) + YM3812 (K-666) or YM2151
10
Video Chips : 3 x Actel A1020B (Square 84 Pin Socketed) [Or A40MX04-F]
11
MACH211 (Square 44 Pin Socketed) [Or MACH210-15JC]
14
---------------------------------------------------------------------------
16
---------------------------------------------------------------------------
18
98 Zero Point ZPM1001A/B Has Light Guns.
19
99 Zero Point 2 UZP21001A/B Has Light Guns.
20
---------------------------------------------------------------------------
23
***************************************************************************/
26
#include "cpu/m68000/m68000.h"
27
#include "machine/eeprom.h"
28
#include "includes/unico.h"
29
#include "sound/2151intf.h"
30
#include "sound/3812intf.h"
31
#include "sound/okim6295.h"
33
/***************************************************************************
39
***************************************************************************/
42
Lines starting with an empty comment in the following MemoryReadAddress
43
arrays are there for debug (e.g. the game does not read from those ranges
47
/***************************************************************************
49
***************************************************************************/
51
static WRITE16_DEVICE_HANDLER( burglarx_sound_bank_w )
53
if (ACCESSING_BITS_8_15)
55
int bank = (data >> 8 ) & 1;
56
downcast<okim6295_device *>(device)->set_bank_base(0x40000 * bank );
60
static ADDRESS_MAP_START( burglarx_map, AS_PROGRAM, 16 )
61
AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
62
AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM
63
AM_RANGE(0x800000, 0x800001) AM_READ_PORT("INPUTS")
64
AM_RANGE(0x800018, 0x800019) AM_READ_PORT("SYSTEM")
65
AM_RANGE(0x80001a, 0x80001b) AM_READ_PORT("DSW1")
66
AM_RANGE(0x80001c, 0x80001d) AM_READ_PORT("DSW2")
67
AM_RANGE(0x800030, 0x800031) AM_WRITENOP // ? 0
68
AM_RANGE(0x80010c, 0x800121) AM_WRITEONLY AM_BASE_MEMBER(unico_state, m_scroll) // Scroll
69
AM_RANGE(0x800188, 0x800189) AM_DEVREADWRITE8_MODERN("oki", okim6295_device, read, write, 0x00ff) // Sound
70
AM_RANGE(0x80018a, 0x80018b) AM_DEVWRITE8("ymsnd", ym3812_write_port_w, 0xff00 ) //
71
AM_RANGE(0x80018c, 0x80018d) AM_DEVREADWRITE8("ymsnd", ym3812_status_port_r, ym3812_control_port_w, 0xff00 ) //
72
AM_RANGE(0x80018e, 0x80018f) AM_DEVWRITE("oki", burglarx_sound_bank_w) //
73
AM_RANGE(0x8001e0, 0x8001e1) AM_WRITENOP // IRQ Ack
74
AM_RANGE(0x904000, 0x90ffff) AM_RAM_WRITE(unico_vram_w) AM_BASE_MEMBER(unico_state, m_vram) // Layers 1, 2, 0
75
AM_RANGE(0x920000, 0x923fff) AM_RAM // ? 0
76
AM_RANGE(0x930000, 0x9307ff) AM_RAM AM_BASE_SIZE_MEMBER(unico_state, m_spriteram, m_spriteram_size) // Sprites
77
AM_RANGE(0x940000, 0x947fff) AM_RAM_WRITE(unico_palette_w) AM_BASE_GENERIC(paletteram) // Palette
82
/***************************************************************************
84
***************************************************************************/
86
static WRITE16_HANDLER( zeropnt_sound_bank_w )
88
if (ACCESSING_BITS_8_15)
90
/* Banked sound samples. The 3rd quarter of the ROM
91
contains garbage. Indeed, only banks 0&1 are used */
93
int bank = (data >> 8 ) & 1;
94
UINT8 *dst = space->machine().region("oki")->base();
95
UINT8 *src = dst + 0x80000 + 0x20000 + 0x20000 * bank;
96
memcpy(dst + 0x20000, src, 0x20000);
98
coin_counter_w(space->machine(), 0,data & 0x1000);
99
set_led_status(space->machine(), 0,data & 0x0800); // Start 1
100
set_led_status(space->machine(), 1,data & 0x0400); // Start 2
104
/* Light Gun - need to wiggle the input slightly otherwise fire doesn't work */
105
static READ16_HANDLER( unico_gunx_0_msb_r )
107
int x=input_port_read(space->machine(), "X0");
109
x=x*384/256; /* On screen pixel X */
110
if (x<0x160) x=0x30 + (x*0xd0/0x15f);
111
else x=((x-0x160) * 0x20)/0x1f;
113
return ((x&0xff) ^ (space->machine().primary_screen->frame_number()&1))<<8;
116
static READ16_HANDLER( unico_guny_0_msb_r )
118
int y=input_port_read(space->machine(), "Y0");
120
y=0x18+((y*0xe0)/0xff);
122
return ((y&0xff) ^ (space->machine().primary_screen->frame_number()&1))<<8;
125
static READ16_HANDLER( unico_gunx_1_msb_r )
127
int x=input_port_read(space->machine(), "X1");
129
x=x*384/256; /* On screen pixel X */
130
if (x<0x160) x=0x30 + (x*0xd0/0x15f);
131
else x=((x-0x160) * 0x20)/0x1f;
133
return ((x&0xff) ^ (space->machine().primary_screen->frame_number()&1))<<8;
136
static READ16_HANDLER( unico_guny_1_msb_r )
138
int y=input_port_read(space->machine(), "Y1");
140
y=0x18+((y*0xe0)/0xff);
142
return ((y&0xff) ^ (space->machine().primary_screen->frame_number()&1))<<8;
145
static ADDRESS_MAP_START( zeropnt_map, AS_PROGRAM, 16 )
146
AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
147
AM_RANGE(0xef0000, 0xefffff) AM_RAM // RAM
148
AM_RANGE(0x800030, 0x800031) AM_WRITENOP // ? 0
149
AM_RANGE(0x800018, 0x800019) AM_READ_PORT("INPUTS")
150
AM_RANGE(0x80001a, 0x80001b) AM_READ_PORT("DSW1")
151
AM_RANGE(0x80001c, 0x80001d) AM_READ_PORT("DSW2")
152
AM_RANGE(0x80010c, 0x800121) AM_WRITEONLY AM_BASE_MEMBER(unico_state, m_scroll) // Scroll
153
AM_RANGE(0x800170, 0x800171) AM_READ(unico_guny_0_msb_r ) // Light Guns
154
AM_RANGE(0x800174, 0x800175) AM_READ(unico_gunx_0_msb_r ) //
155
AM_RANGE(0x800178, 0x800179) AM_READ(unico_guny_1_msb_r ) //
156
AM_RANGE(0x80017c, 0x80017d) AM_READ(unico_gunx_1_msb_r ) //
157
AM_RANGE(0x800188, 0x800189) AM_DEVREADWRITE8_MODERN("oki", okim6295_device, read, write, 0x00ff ) // Sound
158
AM_RANGE(0x80018a, 0x80018b) AM_DEVWRITE8("ymsnd", ym3812_write_port_w, 0xff00 ) //
159
AM_RANGE(0x80018c, 0x80018d) AM_DEVREADWRITE8("ymsnd", ym3812_status_port_r, ym3812_control_port_w, 0xff00 ) //
160
AM_RANGE(0x80018e, 0x80018f) AM_WRITE(zeropnt_sound_bank_w ) //
161
AM_RANGE(0x8001e0, 0x8001e1) AM_WRITEONLY // ? IRQ Ack
162
AM_RANGE(0x904000, 0x90ffff) AM_RAM_WRITE(unico_vram_w) AM_BASE_MEMBER(unico_state, m_vram) // Layers 1, 2, 0
163
AM_RANGE(0x920000, 0x923fff) AM_RAM // ? 0
164
AM_RANGE(0x930000, 0x9307ff) AM_RAM AM_BASE_SIZE_MEMBER(unico_state, m_spriteram, m_spriteram_size) // Sprites
165
AM_RANGE(0x940000, 0x947fff) AM_RAM_WRITE(unico_palette_w) AM_BASE_GENERIC(paletteram) // Palette
169
/***************************************************************************
171
***************************************************************************/
173
static READ32_HANDLER( zeropnt2_gunx_0_msb_r ) { return (unico_gunx_0_msb_r(space,0,0xffff)-0x0800) << 16; }
174
static READ32_HANDLER( zeropnt2_guny_0_msb_r ) { return (unico_guny_0_msb_r(space,0,0xffff)+0x0800) << 16; }
175
static READ32_HANDLER( zeropnt2_gunx_1_msb_r ) { return (unico_gunx_1_msb_r(space,0,0xffff)-0x0800) << 16; }
176
static READ32_HANDLER( zeropnt2_guny_1_msb_r ) { return (unico_guny_1_msb_r(space,0,0xffff)+0x0800) << 16; }
178
static WRITE32_HANDLER( zeropnt2_sound_bank_w )
180
if (ACCESSING_BITS_24_31)
182
int bank = ((data >> 24) & 3) % 4;
183
UINT8 *dst = space->machine().region("oki1")->base();
184
UINT8 *src = dst + 0x80000 + 0x20000 + 0x20000 * bank;
185
memcpy(dst + 0x20000, src, 0x20000);
189
static WRITE32_HANDLER( zeropnt2_leds_w )
191
if (ACCESSING_BITS_16_23)
193
coin_counter_w(space->machine(), 0,data & 0x00010000);
194
set_led_status(space->machine(), 0,data & 0x00800000); // Start 1
195
set_led_status(space->machine(), 1,data & 0x00400000); // Start 2
199
static WRITE32_DEVICE_HANDLER( zeropnt2_eeprom_w )
201
if (data & ~0xfe00000)
202
logerror("%s - Unknown EEPROM bit written %04X\n",device->machine().describe_context(),data);
204
if ( ACCESSING_BITS_24_31 )
207
eeprom_device *eeprom = downcast<eeprom_device *>(device);
208
eeprom->write_bit(data & 0x04000000);
210
// reset line asserted: reset.
211
eeprom->set_cs_line((data & 0x01000000) ? CLEAR_LINE : ASSERT_LINE);
213
// clock line asserted: write latch or select next bit to read
214
eeprom->set_clock_line((data & 0x02000000) ? ASSERT_LINE : CLEAR_LINE );
218
static ADDRESS_MAP_START( zeropnt2_map, AS_PROGRAM, 32 )
219
AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM
220
AM_RANGE(0x800018, 0x80001b) AM_READ_PORT("SYSTEM")
221
AM_RANGE(0x800024, 0x800027) AM_DEVREADWRITE8_MODERN("oki1", okim6295_device, read, write, 0x00ff0000 ) // Sound
222
AM_RANGE(0x800028, 0x80002f) AM_DEVREADWRITE8("ymsnd", ym2151_r, ym2151_w, 0x00ff0000) //
223
AM_RANGE(0x800030, 0x800033) AM_DEVREADWRITE8_MODERN("oki2", okim6295_device, read, write, 0x00ff0000 ) //
224
AM_RANGE(0x800034, 0x800037) AM_WRITE(zeropnt2_sound_bank_w ) //
225
AM_RANGE(0x800038, 0x80003b) AM_WRITE(zeropnt2_leds_w ) // ?
226
AM_RANGE(0x80010c, 0x800123) AM_WRITEONLY AM_BASE_MEMBER(unico_state, m_scroll32 ) // Scroll
227
AM_RANGE(0x800140, 0x800143) AM_READ(zeropnt2_guny_0_msb_r ) // Light Guns
228
AM_RANGE(0x800144, 0x800147) AM_READ(zeropnt2_gunx_0_msb_r ) //
229
AM_RANGE(0x800148, 0x80014b) AM_READ(zeropnt2_guny_1_msb_r ) //
230
AM_RANGE(0x80014c, 0x80014f) AM_READ(zeropnt2_gunx_1_msb_r ) //
231
AM_RANGE(0x800150, 0x800153) AM_READ_PORT("DSW1")
232
AM_RANGE(0x800154, 0x800157) AM_READ_PORT("DSW2")
233
AM_RANGE(0x80015c, 0x80015f) AM_READ_PORT("BUTTONS")
234
AM_RANGE(0x8001e0, 0x8001e3) AM_WRITENOP // ? IRQ Ack
235
AM_RANGE(0x8001f0, 0x8001f3) AM_DEVWRITE("eeprom", zeropnt2_eeprom_w) // EEPROM
236
AM_RANGE(0x904000, 0x90ffff) AM_RAM_WRITE(unico_vram32_w) AM_BASE_MEMBER(unico_state, m_vram32) // Layers 1, 2, 0
237
AM_RANGE(0x920000, 0x923fff) AM_RAM // ? 0
238
AM_RANGE(0x930000, 0x9307ff) AM_RAM AM_BASE_SIZE_MEMBER(unico_state, m_spriteram, m_spriteram_size) // Sprites
239
AM_RANGE(0x940000, 0x947fff) AM_RAM_WRITE(unico_palette32_w) AM_BASE_GENERIC(paletteram ) // Palette
240
AM_RANGE(0xfe0000, 0xffffff) AM_RAM // RAM
244
/***************************************************************************
250
***************************************************************************/
252
/***************************************************************************
254
***************************************************************************/
256
static INPUT_PORTS_START( burglarx )
257
PORT_START("INPUTS") /* $800000.w */
258
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
259
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
260
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
261
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
262
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
263
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
264
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
265
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
267
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
268
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
269
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
270
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
271
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
272
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
273
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
274
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
276
PORT_START("SYSTEM") /* $800019.b */
277
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
278
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 )
279
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
280
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_SERVICE2 )
281
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_START1 )
282
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_START2 )
283
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
284
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
285
PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
287
PORT_START("DSW1") /* $80001a.b */
288
PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNKNOWN )
289
PORT_SERVICE( 0x0100, IP_ACTIVE_LOW )
290
PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Free_Play ) )
291
PORT_DIPSETTING( 0x0200, DEF_STR( Off ) )
292
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
293
PORT_DIPNAME( 0x0400, 0x0400, "Unknown 1-2" )
294
PORT_DIPSETTING( 0x0400, DEF_STR( Off ) )
295
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
296
PORT_DIPNAME( 0x0800, 0x0000, DEF_STR( Demo_Sounds ) )
297
PORT_DIPSETTING( 0x0800, DEF_STR( Off ) )
298
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
299
PORT_DIPNAME( 0x1000, 0x1000, "Unknown 1-4" )
300
PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
301
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
302
PORT_DIPNAME( 0xe000, 0xe000, DEF_STR( Coinage ) )
303
PORT_DIPSETTING( 0x0000, DEF_STR( 5C_1C ) )
304
PORT_DIPSETTING( 0x2000, DEF_STR( 4C_1C ) )
305
PORT_DIPSETTING( 0x4000, DEF_STR( 3C_1C ) )
306
PORT_DIPSETTING( 0x6000, DEF_STR( 2C_1C ) )
307
PORT_DIPSETTING( 0xe000, DEF_STR( 1C_1C ) )
308
PORT_DIPSETTING( 0xc000, DEF_STR( 1C_2C ) )
309
PORT_DIPSETTING( 0xa000, DEF_STR( 1C_3C ) )
310
PORT_DIPSETTING( 0x8000, DEF_STR( 1C_4C ) )
312
PORT_START("DSW2") /* $80001c.b */
313
PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNKNOWN )
314
PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Bonus_Life ) )
315
PORT_DIPSETTING( 0x0200, DEF_STR( None ) )
316
PORT_DIPSETTING( 0x0300, "A" )
317
PORT_DIPSETTING( 0x0100, "B" )
318
PORT_DIPSETTING( 0x0000, "C" )
319
PORT_DIPNAME( 0x0400, 0x0400, "Unknown 2-2" )
320
PORT_DIPSETTING( 0x0400, DEF_STR( Off ) )
321
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
322
PORT_DIPNAME( 0x0800, 0x0800, "Energy" )
323
PORT_DIPSETTING( 0x0000, "2" )
324
PORT_DIPSETTING( 0x0800, "3" )
325
PORT_DIPNAME( 0x3000, 0x3000, DEF_STR( Difficulty ) )
326
PORT_DIPSETTING( 0x2000, DEF_STR( Easy ) )
327
PORT_DIPSETTING( 0x3000, DEF_STR( Normal ) )
328
PORT_DIPSETTING( 0x1000, DEF_STR( Hard ) )
329
PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) )
330
PORT_DIPNAME( 0xc000, 0xc000, DEF_STR( Lives ) )
331
PORT_DIPSETTING( 0x8000, "2" )
332
PORT_DIPSETTING( 0xc000, "3" )
333
PORT_DIPSETTING( 0x4000, "4" )
334
PORT_DIPSETTING( 0x0000, "5" )
339
/***************************************************************************
341
***************************************************************************/
343
static INPUT_PORTS_START( zeropnt )
344
PORT_START("INPUTS") /* $800018.w */
345
PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_COIN1 )
346
PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_COIN2 )
347
PORT_SERVICE_NO_TOGGLE( 0x0004, IP_ACTIVE_HIGH )
348
PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_UNKNOWN )
349
PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_START1 )
350
PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_START2 )
351
PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_UNKNOWN )
352
PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SERVICE1 )
354
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
355
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
356
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
357
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
358
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
359
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
360
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
361
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
364
PORT_START("DSW1") /* $80001a.b */
365
PORT_BIT( 0x00ff, IP_ACTIVE_HIGH, IPT_UNKNOWN )
366
PORT_DIPNAME( 0x0100, 0x0000, DEF_STR( Unused ) )
367
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
368
PORT_DIPSETTING( 0x0100, DEF_STR( On ) )
369
PORT_DIPNAME( 0x0200, 0x0000, DEF_STR( Free_Play ) )
370
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
371
PORT_DIPSETTING( 0x0200, DEF_STR( On ) )
372
PORT_DIPNAME( 0x0400, 0x0000, DEF_STR( Unused ) )
373
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
374
PORT_DIPSETTING( 0x0400, DEF_STR( On ) )
375
PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Demo_Sounds ) )
376
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
377
PORT_DIPSETTING( 0x0800, DEF_STR( On ) )
378
PORT_DIPNAME( 0x1000, 0x0000, DEF_STR( Unused ) )
379
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
380
PORT_DIPSETTING( 0x1000, DEF_STR( On ) )
381
PORT_DIPNAME( 0xe000, 0x0000, DEF_STR( Coinage ) )
382
PORT_DIPSETTING( 0xe000, DEF_STR( 5C_1C ) )
383
PORT_DIPSETTING( 0xc000, DEF_STR( 4C_1C ) )
384
PORT_DIPSETTING( 0xa000, DEF_STR( 3C_1C ) )
385
PORT_DIPSETTING( 0x8000, DEF_STR( 2C_1C ) )
386
PORT_DIPSETTING( 0x0000, DEF_STR( 1C_1C ) )
387
PORT_DIPSETTING( 0x2000, DEF_STR( 1C_2C ) )
388
PORT_DIPSETTING( 0x4000, DEF_STR( 1C_3C ) )
389
PORT_DIPSETTING( 0x6000, DEF_STR( 1C_4C ) )
391
PORT_START("DSW2") /* $80001c.b */
392
PORT_BIT( 0x00ff, IP_ACTIVE_HIGH, IPT_UNKNOWN )
393
PORT_DIPNAME( 0x0100, 0x0000, DEF_STR( Unused ) )
394
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
395
PORT_DIPSETTING( 0x0100, DEF_STR( On ) )
396
PORT_DIPNAME( 0x0200, 0x0000, DEF_STR( Unused ) )
397
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
398
PORT_DIPSETTING( 0x0200, DEF_STR( On ) )
399
PORT_DIPNAME( 0x0400, 0x0000, DEF_STR( Unused ) )
400
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
401
PORT_DIPSETTING( 0x0400, DEF_STR( On ) )
402
PORT_DIPNAME( 0x0800, 0x0000, DEF_STR( Unused ) )
403
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
404
PORT_DIPSETTING( 0x0800, DEF_STR( On ) )
405
PORT_DIPNAME( 0x3000, 0x0000, DEF_STR( Difficulty ) )
406
PORT_DIPSETTING( 0x1000, DEF_STR( Easy ) )
407
PORT_DIPSETTING( 0x0000, DEF_STR( Normal ) )
408
PORT_DIPSETTING( 0x2000, DEF_STR( Hard ) )
409
PORT_DIPNAME( 0xc000, 0x0000, DEF_STR( Lives ) )
410
PORT_DIPSETTING( 0x4000, "2" )
411
PORT_DIPSETTING( 0x0000, "3" )
412
PORT_DIPSETTING( 0x8000, "4" )
413
PORT_DIPSETTING( 0xc000, "5" )
415
PORT_START("Y0") /* $800170.b */
416
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_SENSITIVITY(35) PORT_KEYDELTA(15) PORT_PLAYER(2)
418
PORT_START("X0") /* $800174.b */
419
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_SENSITIVITY(35) PORT_KEYDELTA(15) PORT_PLAYER(2)
421
PORT_START("Y1") /* $800178.b */
422
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_SENSITIVITY(35) PORT_KEYDELTA(15) PORT_PLAYER(1)
424
PORT_START("X1") /* $80017c.b */
425
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_SENSITIVITY(35) PORT_KEYDELTA(15) PORT_PLAYER(1)
430
/***************************************************************************
432
***************************************************************************/
434
static INPUT_PORTS_START( zeropnt2 )
435
PORT_START("SYSTEM") /* $800019.b */
436
PORT_BIT( 0x0000ffff, IP_ACTIVE_LOW, IPT_UNUSED )
437
PORT_BIT( 0x00010000, IP_ACTIVE_HIGH, IPT_COIN1 )
438
PORT_BIT( 0x00020000, IP_ACTIVE_HIGH, IPT_COIN2 )
439
PORT_SERVICE_NO_TOGGLE( 0x00040000, IP_ACTIVE_HIGH )
440
PORT_BIT( 0x00080000, IP_ACTIVE_HIGH, IPT_UNKNOWN )
441
PORT_BIT( 0x00100000, IP_ACTIVE_HIGH, IPT_START1 )
442
PORT_BIT( 0x00200000, IP_ACTIVE_HIGH, IPT_START2 )
443
PORT_BIT( 0x00400000, IP_ACTIVE_HIGH, IPT_UNKNOWN )
444
PORT_BIT( 0x00800000, IP_ACTIVE_HIGH, IPT_SERVICE1 )
445
PORT_BIT( 0xff000000, IP_ACTIVE_HIGH, IPT_UNKNOWN )
447
PORT_START("DSW1") /* $80001a.b */
448
PORT_BIT( 0x0000ffff, IP_ACTIVE_LOW, IPT_UNUSED )
449
PORT_BIT( 0x00ff0000, IP_ACTIVE_LOW, IPT_UNKNOWN )
450
PORT_DIPNAME( 0x01000000, 0x01000000, DEF_STR( Free_Play ) )
451
PORT_DIPSETTING( 0x01000000, DEF_STR( Off ) )
452
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
453
PORT_DIPNAME( 0x02000000, 0x02000000, "? Coins To Continue ?" )
454
PORT_DIPSETTING( 0x00000000, "1" )
455
PORT_DIPSETTING( 0x02000000, "2" )
456
PORT_DIPNAME( 0x0c000000, 0x0c000000, "Gun Reloading" )
457
PORT_DIPSETTING( 0x08000000, DEF_STR(No) )
458
PORT_DIPSETTING( 0x04000000, DEF_STR(Yes) )
459
PORT_DIPSETTING( 0x0c000000, "Factory Setting" )
460
// PORT_DIPSETTING( 0x00000000, "unused?" )
461
PORT_DIPNAME( 0x10000000, 0x10000000, DEF_STR( Language ) )
462
PORT_DIPSETTING( 0x10000000, DEF_STR( English ) )
463
PORT_DIPSETTING( 0x00000000, DEF_STR( Japanese ) )
464
PORT_DIPNAME( 0xe0000000, 0xe0000000, DEF_STR( Coinage ) )
465
PORT_DIPSETTING( 0x00000000, DEF_STR( 5C_1C ) )
466
PORT_DIPSETTING( 0x20000000, DEF_STR( 4C_1C ) )
467
PORT_DIPSETTING( 0x40000000, DEF_STR( 3C_1C ) )
468
PORT_DIPSETTING( 0x60000000, DEF_STR( 2C_1C ) )
469
PORT_DIPSETTING( 0xe0000000, DEF_STR( 1C_1C ) )
470
PORT_DIPSETTING( 0xc0000000, DEF_STR( 1C_2C ) )
471
PORT_DIPSETTING( 0xa0000000, DEF_STR( 1C_3C ) )
472
PORT_DIPSETTING( 0x80000000, DEF_STR( 1C_4C ) )
474
PORT_START("DSW2") /* $80001c.b */
475
PORT_BIT( 0x0000ffff, IP_ACTIVE_LOW, IPT_UNUSED )
476
PORT_BIT( 0x00ff0000, IP_ACTIVE_LOW, IPT_UNKNOWN )
477
PORT_DIPNAME( 0x01000000, 0x01000000, "Korean Language" )
478
PORT_DIPSETTING( 0x01000000, DEF_STR( Off ) )
479
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
480
PORT_DIPNAME( 0x02000000, 0x00000000, DEF_STR( Demo_Sounds ) )
481
PORT_DIPSETTING( 0x02000000, DEF_STR( Off ) )
482
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
483
PORT_DIPNAME( 0x1c000000, 0x1c000000, DEF_STR( Lives ) )
484
PORT_DIPSETTING( 0x10000000, "2" )
485
PORT_DIPSETTING( 0x0c000000, "3" )
486
PORT_DIPSETTING( 0x1c000000, "4" )
487
PORT_DIPSETTING( 0x18000000, "5" )
488
PORT_DIPSETTING( 0x14000000, "6" )
489
// PORT_DIPSETTING( 0x08000000, "4" )
490
// PORT_DIPSETTING( 0x04000000, "4" )
491
// PORT_DIPSETTING( 0x00000000, "4" )
492
PORT_DIPNAME( 0x20000000, 0x20000000, DEF_STR( Unknown ) )
493
PORT_DIPSETTING( 0x20000000, DEF_STR( Off ) )
494
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
495
PORT_DIPNAME( 0xc0000000, 0xc0000000, DEF_STR( Difficulty ) )
496
PORT_DIPSETTING( 0x80000000, DEF_STR( Easy ) )
497
PORT_DIPSETTING( 0xc0000000, DEF_STR( Normal ) )
498
PORT_DIPSETTING( 0x40000000, DEF_STR( Harder ) )
499
PORT_DIPSETTING( 0x00000000, DEF_STR( Hardest ) )
501
PORT_START("BUTTONS") /* $80015c.b */
502
PORT_BIT( 0x0000ffff, IP_ACTIVE_LOW, IPT_UNUSED )
503
PORT_BIT( 0x00ff0000, IP_ACTIVE_LOW, IPT_UNKNOWN )
504
PORT_BIT( 0x01000000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
505
PORT_BIT( 0x02000000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
506
PORT_BIT( 0x04000000, IP_ACTIVE_LOW, IPT_UNKNOWN )
507
PORT_BIT( 0x08000000, IP_ACTIVE_LOW, IPT_UNKNOWN )
508
PORT_BIT( 0x10000000, IP_ACTIVE_LOW, IPT_UNKNOWN )
509
PORT_BIT( 0x20000000, IP_ACTIVE_LOW, IPT_UNKNOWN )
510
PORT_BIT( 0x40000000, IP_ACTIVE_LOW, IPT_UNKNOWN )
511
PORT_BIT( 0x80000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_device, read_bit) // EEPROM
513
PORT_START("Y0") /* $800140.b */
514
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_SENSITIVITY(35) PORT_KEYDELTA(15) PORT_PLAYER(2)
516
PORT_START("X0") /* $800144.b */
517
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_SENSITIVITY(35) PORT_KEYDELTA(15) PORT_PLAYER(2)
519
PORT_START("Y1") /* $800148.b */
520
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_SENSITIVITY(35) PORT_KEYDELTA(15) PORT_PLAYER(1)
522
PORT_START("X1") /* $80014c.b */
523
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_SENSITIVITY(35) PORT_KEYDELTA(15) PORT_PLAYER(1)
528
/***************************************************************************
534
***************************************************************************/
537
static const gfx_layout layout_16x16x8 =
542
{ RGN_FRAC(3,4)+8, RGN_FRAC(3,4)+0,
543
RGN_FRAC(2,4)+8, RGN_FRAC(2,4)+0,
544
RGN_FRAC(1,4)+8, RGN_FRAC(1,4)+0,
545
RGN_FRAC(0,4)+8, RGN_FRAC(0,4)+0 },
546
{ STEP8(0,1), STEP8(16,1) },
551
static GFXDECODE_START( unico )
552
GFXDECODE_ENTRY( "gfx1", 0, layout_16x16x8, 0x0, 0x20 ) // [0] Sprites
553
GFXDECODE_ENTRY( "gfx2", 0, layout_16x16x8, 0x0, 0x20 ) // [1] Layers
558
/***************************************************************************
564
***************************************************************************/
566
static MACHINE_RESET( unico )
571
static const eeprom_interface zeropnt2_eeprom_interface =
575
"*110", // read 1 10 aaaaaaa
576
"*101", // write 1 01 aaaaaaa dddddddd
577
"*111", // erase 1 11 aaaaaaa
578
"*10000xxxx", // lock 1 00 00xxxx
579
"*10011xxxx", // unlock 1 00 11xxxx
580
// "*10001xxxx" // write all 1 00 01xxxx dddddddd
581
// "*10010xxxx" // erase all 1 00 10xxxx
585
/***************************************************************************
587
***************************************************************************/
589
static MACHINE_CONFIG_START( burglarx, unico_state )
591
/* basic machine hardware */
592
MCFG_CPU_ADD("maincpu", M68000, 16000000)
593
MCFG_CPU_PROGRAM_MAP(burglarx_map)
594
MCFG_CPU_VBLANK_INT("screen", irq2_line_hold)
596
MCFG_MACHINE_RESET(unico)
599
MCFG_SCREEN_ADD("screen", RASTER)
600
MCFG_SCREEN_REFRESH_RATE(60)
601
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
602
MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
603
MCFG_SCREEN_SIZE(0x180, 0xe0)
604
MCFG_SCREEN_VISIBLE_AREA(0, 0x180-1, 0, 0xe0-1)
605
MCFG_SCREEN_UPDATE(unico)
607
MCFG_GFXDECODE(unico)
608
MCFG_PALETTE_LENGTH(8192)
610
MCFG_VIDEO_START(unico)
613
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
615
MCFG_SOUND_ADD("ymsnd", YM3812, 3579545) /* 14.31818MHz OSC divided by 4 */
616
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.40)
617
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.40)
619
MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified
620
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80)
621
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80)
626
/***************************************************************************
628
***************************************************************************/
630
static MACHINE_RESET( zeropt )
632
MACHINE_RESET_CALL(unico);
635
static MACHINE_CONFIG_START( zeropnt, unico_state )
637
/* basic machine hardware */
638
MCFG_CPU_ADD("maincpu", M68000, 16000000)
639
MCFG_CPU_PROGRAM_MAP(zeropnt_map)
640
MCFG_CPU_VBLANK_INT("screen", irq2_line_hold)
642
MCFG_MACHINE_RESET(zeropt)
645
MCFG_SCREEN_ADD("screen", RASTER)
646
MCFG_SCREEN_REFRESH_RATE(60)
647
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
648
MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
649
MCFG_SCREEN_SIZE(0x180, 0xe0)
650
MCFG_SCREEN_VISIBLE_AREA(0, 0x180-1, 0, 0xe0-1)
651
MCFG_SCREEN_UPDATE(unico)
653
MCFG_GFXDECODE(unico)
654
MCFG_PALETTE_LENGTH(8192)
656
MCFG_VIDEO_START(unico)
659
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
661
MCFG_SOUND_ADD("ymsnd", YM3812, 3579545) /* 14.31818MHz OSC divided by 4 */
662
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.40)
663
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.40)
665
MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified
666
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80)
667
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80)
672
/***************************************************************************
674
***************************************************************************/
676
static MACHINE_CONFIG_START( zeropnt2, unico_state )
678
/* basic machine hardware */
679
MCFG_CPU_ADD("maincpu", M68EC020, 16000000)
680
MCFG_CPU_PROGRAM_MAP(zeropnt2_map)
681
MCFG_CPU_VBLANK_INT("screen", irq2_line_hold)
683
MCFG_MACHINE_RESET(zeropt)
685
MCFG_EEPROM_ADD("eeprom", zeropnt2_eeprom_interface)
688
MCFG_SCREEN_ADD("screen", RASTER)
689
MCFG_SCREEN_REFRESH_RATE(60)
690
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
691
MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
692
MCFG_SCREEN_SIZE(0x180, 0xe0)
693
MCFG_SCREEN_VISIBLE_AREA(0, 0x180-1, 0, 0xe0-1)
694
MCFG_SCREEN_UPDATE(zeropnt2)
696
MCFG_GFXDECODE(unico)
697
MCFG_PALETTE_LENGTH(8192)
699
MCFG_VIDEO_START(zeropnt2)
702
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
704
MCFG_SOUND_ADD("ymsnd", YM2151, 3579545)
705
MCFG_SOUND_ROUTE(0, "lspeaker", 0.70)
706
MCFG_SOUND_ROUTE(1, "rspeaker", 0.70)
708
MCFG_OKIM6295_ADD("oki1", 1056000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified
709
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.40)
711
MCFG_OKIM6295_ADD("oki2", 3960000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified
712
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.20)
716
/***************************************************************************
722
***************************************************************************/
726
/***************************************************************************
732
68000-16MHz , MACH210-15JC, 3 x A1020B
733
14.31818 MHz, 32.000 MHz
735
***************************************************************************/
737
ROM_START( burglarx )
739
ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 Code */
740
ROM_LOAD16_BYTE( "bx-rom2.pgm", 0x000000, 0x080000, CRC(f81120c8) SHA1(f0240cf9aceb755e3c920bc3bcae0a9de29fd8c1) )
741
ROM_LOAD16_BYTE( "bx-rom3.pgm", 0x000001, 0x080000, CRC(080b4e82) SHA1(7eb08a7ea7684297e879123ae7ddc88d7fc1b87b) )
743
/* Notice the weird ROMs order? Pretty much bit scrambling */
744
ROM_REGION( 0x400000, "gfx1", ROMREGION_INVERT ) /* 16x16x8 Sprites */
745
ROM_LOAD16_BYTE( "bx-rom4", 0x000000, 0x080000, CRC(f74ce31f) SHA1(bafe247a2fdc918318ccf7b11f0406c78909dcaa) )
746
ROM_LOAD16_BYTE( "bx-rom10", 0x000001, 0x080000, CRC(6f56ca23) SHA1(5cfedda8d9fe4b575932a6a136d7b525d96e5454) )
747
ROM_LOAD16_BYTE( "bx-rom9", 0x100000, 0x080000, CRC(33f29d79) SHA1(287d8412842887af5a5c7a0f5e5736a741c3c7db) )
748
ROM_LOAD16_BYTE( "bx-rom8", 0x100001, 0x080000, CRC(24367092) SHA1(dc21d043a793cbc9fe94085c7884d684f1f80d74) )
749
ROM_LOAD16_BYTE( "bx-rom7", 0x200000, 0x080000, CRC(aff6bdea) SHA1(3c050ec5e1bbc93b15435c7a6e66bade9a07445e) )
750
ROM_LOAD16_BYTE( "bx-rom6", 0x200001, 0x080000, CRC(246afed2) SHA1(fcf08e968f11549546c47c1a67013c2427e0aad3) )
751
ROM_LOAD16_BYTE( "bx-rom11", 0x300000, 0x080000, CRC(898d176a) SHA1(4c85948b7e639743d0f1676fdc463267f550f97c) )
752
ROM_LOAD16_BYTE( "bx-rom5", 0x300001, 0x080000, CRC(fdee1423) SHA1(319610435b3dea61276d412e2bf6a3f32809ae19) )
754
ROM_REGION( 0x400000, "gfx2", ROMREGION_INVERT ) /* 16x16x8 Layers */
755
ROM_LOAD16_BYTE( "bx-rom14", 0x000000, 0x080000, CRC(30413373) SHA1(37bbc4d2943a32ee9f6bb268c823ffe162fe92a2) )
756
ROM_LOAD16_BYTE( "bx-rom18", 0x000001, 0x080000, CRC(8e7fc99f) SHA1(81141e3c9111944aae97d27e5631b11eaf6f8734) )
757
ROM_LOAD16_BYTE( "bx-rom19", 0x100000, 0x080000, CRC(d40eabcd) SHA1(e41d5e921a1648d6d4907f18e0256dbe3a01e9d3) )
758
ROM_LOAD16_BYTE( "bx-rom15", 0x100001, 0x080000, CRC(78833c75) SHA1(93bd2e9ba98d99e36b99765ff576df4ca347daf3) )
759
ROM_LOAD16_BYTE( "bx-rom17", 0x200000, 0x080000, CRC(f169633f) SHA1(3bb707110286890a740ef607fb2addeeaadedb08) )
760
ROM_LOAD16_BYTE( "bx-rom12", 0x200001, 0x080000, CRC(71eb160f) SHA1(4fc8caabc5ee6c7771c76e704ffba675cf997dae) )
761
ROM_LOAD16_BYTE( "bx-rom13", 0x300000, 0x080000, CRC(da34bbb5) SHA1(455c2412135b89670c2ecda9fd02f4da9b891ee4) )
762
ROM_LOAD16_BYTE( "bx-rom16", 0x300001, 0x080000, CRC(55b28ef9) SHA1(48615d53ac955ba6aca86ad4f8b61f4d2675d840) )
764
ROM_REGION( 0x80000, "oki", 0 ) /* Samples */
765
ROM_LOAD( "bx-rom1.snd", 0x000000, 0x080000, CRC(8ae67138) SHA1(3ea44f805a1f978e0a1c1bb7f45507379b147bc0) ) // 2 x 40000
770
/***************************************************************************
778
SND: K-664/K-666 & AD-65 (YM3014/YM3812 & M6295)
779
OSC: 14.31818MHz, 32.000MHz
780
RAM: 62256 x 5, 6116 x 8, 84256 x 2
783
Other Chips: 3 x Actel A1020B (square 84 pin socketed, Same video chip as Power Instinct and Blomby Car)
784
MACH211 (square 44 pin socketed)
786
There is a small gun interface board (Number ZPT1001B) located near the 68000 which contains
787
another Actel A1020B chip, a 74HC14 TTL chip and a 4.9152MHz OSC.
791
zero3.BIN / Main Program 4M Mask ROMs
792
zero1.BIN -- Sound MX27C4000
797
zpscrz05.BIN - GFX,16M Mask ROMs
802
***************************************************************************/
805
ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 Code */
806
ROM_LOAD16_BYTE( "zero_2.bin", 0x000000, 0x080000, CRC(1e599509) SHA1(5a562a3c85700126b95fbdf21ef8c0ddd35d9037) )
807
ROM_LOAD16_BYTE( "zero_3.bin", 0x000001, 0x080000, CRC(588aeef7) SHA1(0dfa22c9e7b1fe493c16160b1ac76fa4d3bb2e68) )
809
ROM_REGION( 0x800000, "gfx1", ROMREGION_INVERT ) /* 16x16x8 Sprites */
810
ROM_LOAD( "zpobjz01.bin", 0x000000, 0x200000, CRC(1f2768a3) SHA1(75c83458afc527dda47bfbd86a8e9c5ded7a5444) )
811
ROM_LOAD( "zpobjz02.bin", 0x200000, 0x200000, CRC(de34f33a) SHA1(b77c7d508942176585afaeeaea2f34f60326eeb1) )
812
ROM_LOAD( "zpobjz03.bin", 0x400000, 0x200000, CRC(d7a657f7) SHA1(f1f9e6a01eef4d0c8c4b2e161136cc4438d770e2) )
813
ROM_LOAD( "zpobjz04.bin", 0x600000, 0x200000, CRC(3aec2f8d) SHA1(6fb1cfabfb0bddf688d3bfb60f7538209efbd8f1) )
815
ROM_REGION( 0x800000, "gfx2", ROMREGION_INVERT ) /* 16x16x8 Layers */
816
ROM_LOAD( "zpscrz06.bin", 0x000000, 0x200000, CRC(e1e53cf0) SHA1(b440e09f6229d486d1a8be476ac8a17adde1ff7e) )
817
ROM_LOAD( "zpscrz05.bin", 0x200000, 0x200000, CRC(0d7d4850) SHA1(43f87d0461fe022b68b4e57e6c9542bcd78e301b) )
818
ROM_LOAD( "zpscrz07.bin", 0x400000, 0x200000, CRC(bb178f32) SHA1(1354f4d90a8cec58d1f2b6809985776b309b96a8) )
819
ROM_LOAD( "zpscrz08.bin", 0x600000, 0x200000, CRC(672f02e5) SHA1(8e8b28a8b2293950764d453a3c385d7083eb5a57) )
821
ROM_REGION( 0x80000 * 2, "oki", 0 ) /* Samples */
822
ROM_LOAD( "zero_1.bin", 0x000000, 0x080000, CRC(fd2384fa) SHA1(8ae83665fe952c5d03bd62d2abb507c351cf0fb5) )
823
ROM_RELOAD( 0x080000, 0x080000 )
827
ROM_START( zeropnta )
828
ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 Code */
829
ROM_LOAD16_BYTE( "zpa2.bin", 0x000000, 0x080000, CRC(285fbca3) SHA1(61f8d48388a666ed9300c0688fbf844e316b8892) )
830
ROM_LOAD16_BYTE( "zpa3.bin", 0x000001, 0x080000, CRC(ad7b3129) SHA1(d814b5d9336d011386aa0b316b11225e5ea799fc) )
832
ROM_REGION( 0x800000, "gfx1", ROMREGION_INVERT ) /* 16x16x8 Sprites */
833
ROM_LOAD( "zpobjz01.bin", 0x000000, 0x200000, CRC(1f2768a3) SHA1(75c83458afc527dda47bfbd86a8e9c5ded7a5444) )
834
ROM_LOAD( "zpobjz02.bin", 0x200000, 0x200000, CRC(de34f33a) SHA1(b77c7d508942176585afaeeaea2f34f60326eeb1) )
835
ROM_LOAD( "zpobjz03.bin", 0x400000, 0x200000, CRC(d7a657f7) SHA1(f1f9e6a01eef4d0c8c4b2e161136cc4438d770e2) )
836
ROM_LOAD( "zpobjz04.bin", 0x600000, 0x200000, CRC(3aec2f8d) SHA1(6fb1cfabfb0bddf688d3bfb60f7538209efbd8f1) )
838
ROM_REGION( 0x800000, "gfx2", ROMREGION_INVERT ) /* 16x16x8 Layers */
839
ROM_LOAD( "zpscrz06.bin", 0x000000, 0x200000, CRC(e1e53cf0) SHA1(b440e09f6229d486d1a8be476ac8a17adde1ff7e) )
840
ROM_LOAD( "zpscrz05.bin", 0x200000, 0x200000, CRC(0d7d4850) SHA1(43f87d0461fe022b68b4e57e6c9542bcd78e301b) )
841
ROM_LOAD( "zpscrz07.bin", 0x400000, 0x200000, CRC(bb178f32) SHA1(1354f4d90a8cec58d1f2b6809985776b309b96a8) )
842
ROM_LOAD( "zpscrz08.bin", 0x600000, 0x200000, CRC(672f02e5) SHA1(8e8b28a8b2293950764d453a3c385d7083eb5a57) )
844
ROM_REGION( 0x80000 * 2, "oki", 0 ) /* Samples */
845
ROM_LOAD( "zero_1.bin", 0x000000, 0x080000, CRC(fd2384fa) SHA1(8ae83665fe952c5d03bd62d2abb507c351cf0fb5) )
846
ROM_RELOAD( 0x080000, 0x080000 )
849
/***************************************************************************
855
PCB Number: UZP21001A
857
SND: YM3012/YM2151 & AD-65 x 2 (OKI M6295)
858
OSC: 3.579545MHz (near AD-65), 32.000MHz, 40.000MHz (near 68020)
861
Other Chips: 3 x Actel A40MX04-F (square 84 pin socketed)
862
MACH211 (square 44 pin socketed)
864
There is a small gun interface board (Number UZP21001B) located above the 68020 which contains:
869
OTHER: Actel A40MX04-F chip
874
D0-D15.3 \ Main Program 8M Mask ROMs
876
uzp2-1.bin - Sound 27C040
877
uzp2-2.bin - Sound 27C020
883
DB0DB1ZP.209 - GFX,32M Mask ROMs
888
Zero Point 2 board JAMMA Pinout
891
Solder Side | Parts Side
892
------------------------------------------------------------------
899
------------ KEY ------------| H | 7 |------------ KEY -----------
900
| J | 8 | Coin Counter # 1
901
Player 2 Lamp | K | 9 | Player 1 Lamp
902
Speaker (L) | L | 10| Speaker (R)
904
Video Green | N | 12| Video Red
905
Video Sync | P | 13| Video Blue
906
Service Switch | R | 14| Video GND
907
| S | 15| Test Switch
908
Coin Switch 2 | T | 16| Coin Switch 1
909
Player 2 Start | U | 17| Player 1 Start
924
SPECIAL NOTICE - Sound wiring change:
926
For cabinets with one speaker:
927
JAMMA pin 10 goes to speaker (+)
928
Run a ground to the negative side of speaker.
929
For cabinets with two speakers:
930
JAMMA pin 10 goes to right speaker (+)
931
JAMMA pin L goes to left speaker (+)
932
Run a ground to the negative side of each speaker.
934
Using Original Unico Light Guns & connectors:
936
1PLAY: Left (Red) Gun Connector Pinout*
938
1| Gun OPTO - White Wire
939
2| +5 Volts - Red Wire
940
3| Trigger - Green Wire
941
4| Ground - Black Wire
943
2PLAY: Right (Blue) Gun Connector Pinout*
945
1| Gun OPTO - White Wire
946
2| +5 Volts - Red Wire
947
3| Trigger - Green Wire
948
4| Ground - Black Wire
950
* This is not the same as the HAPP Controls' 4-pin standard
954
------------------------------------------------------------------
955
DipSwitch Title | Function | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
956
------------------------------------------------------------------
957
Free Play | Off |off| |*
959
------------------------------------------------------------------
960
1 Coin to Continue | Off | |off| |*
962
------------------------------------------------------------------
963
| Factory | |off|off| |*
964
Gun Loading Mode |Not Reload| |on |off| |
965
| Reload | |off|on | |
966
------------------------------------------------------------------
967
Language | English | |off| |*
969
------------------------------------------------------------------
970
| 1cn/1pl | |off|off|off|*
971
| 1cn/2pl | |on |off|off|
972
| 1cn/3pl | |off|on |off|
973
Coinage | 1cn/4pl | |on |on |off|
974
| 2cn/1pl | |off|off|on |
975
| 3cn/1pl | |on |off|on |
976
| 4cn/1pl | |off|on |on |
977
| 5cn/1pl | |on |on |on |
978
------------------------------------------------------------------
981
------------------------------------------------------------------
982
DipSwitch Title | Function | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
983
------------------------------------------------------------------
984
Korean Language | Off |off| |*
986
------------------------------------------------------------------
987
Demo Sounds | Off | |off| |
989
------------------------------------------------------------------
990
| 4 | |off|off|off| |*
991
Player's Heart | 5 | |on |off|off| |
992
(Lives) | 6 | |off|on |off| |
993
| 2 | |on |on |off| |
994
| 3 | |off|off|on | |
995
------------------------------------------------------------------
996
Not Used / Always Off |off| |*
997
------------------------------------------------------------------
998
| Normal | |off|off|*
999
Difficulty | Easy | |on |off|
1000
Level | Hard | |off|on |
1001
| V.Hard | |on |on |
1002
------------------------------------------------------------------
1004
* Denotes Factory Defaults
1009
***************************************************************************/
1011
ROM_START( zeropnt2 )
1012
ROM_REGION( 0x200000, "maincpu", 0 ) /* 68020 Code */
1013
ROM_LOAD32_WORD_SWAP( "d16-d31.4", 0x000000, 0x100000, CRC(48314fdb) SHA1(a5bdb6a3f520587ff5e73438dc414cfdff34167b) )
1014
ROM_LOAD32_WORD_SWAP( "d0-d15.3", 0x000002, 0x100000, CRC(5ec4151e) SHA1(f7c857bdb6a92f76f09a089b37def7e6cf24b65a) )
1016
ROM_REGION( 0x1000000, "gfx1", ROMREGION_INVERT ) /* 16x16x8 Sprites */
1017
ROM_LOAD( "db0db1zp.209", 0x000000, 0x400000, CRC(474b460c) SHA1(72104b7a00cb6d62b3cee2cfadc928669ca948c4) )
1018
ROM_LOAD( "db2db3zp.210", 0x400000, 0x400000, CRC(0a1d0a88) SHA1(b0a6ba9eba539fff417557c9af60d408c2912491) )
1019
ROM_LOAD( "db4db5zp.211", 0x800000, 0x400000, CRC(227169dc) SHA1(b03d8d46714e5aa3631fde7d65466334dafdc341) )
1020
ROM_LOAD( "db6db7zp.212", 0xc00000, 0x400000, CRC(a6306cdb) SHA1(da48c5981b72b87df40602e03e56a40a24728262) )
1022
ROM_REGION( 0x1000000, "gfx2", ROMREGION_INVERT ) /* 16x16x8 Layers */
1023
ROM_LOAD( "a0-a1zp.205", 0x000000, 0x400000, CRC(f7ca9c0e) SHA1(541139b617ff34c378a506cf88fe97234c93ee20) )
1024
ROM_LOAD( "a2-a3zp.206", 0x400000, 0x400000, CRC(0581c8fe) SHA1(9bbffc9c758bbaba2b43a63811b725e51996268a) )
1025
ROM_LOAD( "a4-a5zp.208", 0x800000, 0x400000, CRC(ddd091ef) SHA1(c1751aef2546a35f2fdbfeca9647a88fd3e65cdd) )
1026
ROM_LOAD( "a6-a7zp.207", 0xc00000, 0x400000, CRC(3fd46113) SHA1(326684b92c258bde318693cd9b3a7660aed3cd6f) )
1028
ROM_REGION( 0x80000 * 2, "oki1", 0 ) /* Samples */
1029
ROM_LOAD( "uzp2-1.bin", 0x000000, 0x080000, CRC(ed0966ed) SHA1(a43b9c493f94d1fb11e1b189caaf37d3d792c730) )
1030
ROM_RELOAD( 0x080000, 0x080000 )
1032
ROM_REGION( 0x40000, "oki2", 0 ) /* Samples */
1033
ROM_LOAD( "uzp2-2.bin", 0x000000, 0x040000, CRC(db8cb455) SHA1(6723b4018208d554bd1bf1e0640b72d2f4f47302) )
1037
/***************************************************************************
1043
***************************************************************************/
1045
GAME( 1997, burglarx, 0, burglarx, burglarx, 0, ROT0, "Unico", "Burglar X" , 0 )
1046
GAME( 1998, zeropnt, 0, zeropnt, zeropnt, 0, ROT0, "Unico", "Zero Point (set 1)", 0 )
1047
GAME( 1998, zeropnta, zeropnt, zeropnt, zeropnt, 0, ROT0, "Unico", "Zero Point (set 2)", 0 )
1048
GAME( 1999, zeropnt2, 0, zeropnt2, zeropnt2, 0, ROT0, "Unico", "Zero Point 2", 0 )