1 /***************************************************************************
2
3 Mario Bros memory map (preliminary):
4
5 driver by Mirko Buffoni
6
7
8 0000-5fff ROM
9 6000-6fff RAM
10 7000-73ff ?
11 7400-77ff Video RAM
12 f000-ffff ROM
13
14 read:
15 7c00 IN0
16 7c80 IN1
17 7f80 DSW
18
19 *
20 * IN0 (bits NOT inverted)
21 * bit 7 : TEST
22 * bit 6 : START 2
23 * bit 5 : START 1
24 * bit 4 : JUMP player 1
25 * bit 3 : ? DOWN player 1 ?
26 * bit 2 : ? UP player 1 ?
27 * bit 1 : LEFT player 1
28 * bit 0 : RIGHT player 1
29 *
30 *
31 * IN1 (bits NOT inverted)
32 * bit 7 : ?
33 * bit 6 : COIN 2
34 * bit 5 : COIN 1
35 * bit 4 : JUMP player 2
36 * bit 3 : ? DOWN player 2 ?
37 * bit 2 : ? UP player 2 ?
38 * bit 1 : LEFT player 2
39 * bit 0 : RIGHT player 2
40 *
41 *
42 * DSW (bits NOT inverted)
43 * bit 7 : \ difficulty
44 * bit 6 : / 00 = easy 01 = medium 10 = hard 11 = hardest
45 * bit 5 : \ bonus
46 * bit 4 : / 00 = 20000 01 = 30000 10 = 40000 11 = none
47 * bit 3 : \ coins per play
48 * bit 2 : /
49 * bit 1 : \ 00 = 3 lives 01 = 4 lives
50 * bit 0 : / 10 = 5 lives 11 = 6 lives
51 *
52
53 write:
54 7d00 vertical scroll (pow)
55 7d80 ?
56 7e00 sound
57 7e80-7e82 ?
58 7e83 sprite palette bank select
59 7e84 interrupt enable
60 7e85 ?
61 7f00-7f07 sound triggers
62
63
64 I/O ports
65
66 write:
67 00 ?
68
69 ***************************************************************************/
70
71 #include "driver.h"
72 #include "vidhrdw/generic.h"
73 #include "cpu/i8039/i8039.h"
74
75 static int p[8] = { 0,0xf0,0,0,0,0,0,0 };
76 static int t[2] = { 0,0 };
77
78 extern WRITE_HANDLER( mario_videoram_w );
79 extern WRITE_HANDLER( mario_gfxbank_w );
80 extern WRITE_HANDLER( mario_palettebank_w );
81 extern WRITE_HANDLER( mario_scroll_w );
82
83 extern PALETTE_INIT( mario );
84 extern VIDEO_START( mario );
85 extern VIDEO_UPDATE( mario );
86
87 /*
88 * from sndhrdw/mario.c
89 */
90 extern WRITE_HANDLER( mario_sh_w );
91 extern WRITE_HANDLER( mario_sh1_w );
92 extern WRITE_HANDLER( mario_sh2_w );
93 extern WRITE_HANDLER( mario_sh3_w );
94
95
96 #define ACTIVELOW_PORT_BIT(P,A,D) ((P & (~(1 << A))) | ((D ^ 1) << A))
97 #define ACTIVEHIGH_PORT_BIT(P,A,D) ((P & (~(1 << A))) | (D << A))
98
99
WRITE_HANDLER(mario_sh_getcoin_w)100 WRITE_HANDLER( mario_sh_getcoin_w ) { t[0] = data; }
WRITE_HANDLER(mario_sh_crab_w)101 WRITE_HANDLER( mario_sh_crab_w ) { p[1] = ACTIVEHIGH_PORT_BIT(p[1],0,data); }
WRITE_HANDLER(mario_sh_turtle_w)102 WRITE_HANDLER( mario_sh_turtle_w ) { p[1] = ACTIVEHIGH_PORT_BIT(p[1],1,data); }
WRITE_HANDLER(mario_sh_fly_w)103 WRITE_HANDLER( mario_sh_fly_w ) { p[1] = ACTIVEHIGH_PORT_BIT(p[1],2,data); }
WRITE_HANDLER(mario_sh_tuneselect_w)104 static WRITE_HANDLER( mario_sh_tuneselect_w ) { soundlatch_w(offset,data); }
105
READ_HANDLER(mario_sh_p1_r)106 static READ_HANDLER( mario_sh_p1_r ) { return p[1]; }
READ_HANDLER(mario_sh_p2_r)107 static READ_HANDLER( mario_sh_p2_r ) { return p[2]; }
READ_HANDLER(mario_sh_t0_r)108 static READ_HANDLER( mario_sh_t0_r ) { return t[0]; }
READ_HANDLER(mario_sh_t1_r)109 static READ_HANDLER( mario_sh_t1_r ) { return t[1]; }
READ_HANDLER(mario_sh_tune_r)110 static READ_HANDLER( mario_sh_tune_r ) { return soundlatch_r(offset); }
111
WRITE_HANDLER(mario_sh_sound_w)112 static WRITE_HANDLER( mario_sh_sound_w )
113 {
114 DAC_data_w(0,data);
115 }
WRITE_HANDLER(mario_sh_p1_w)116 static WRITE_HANDLER( mario_sh_p1_w )
117 {
118 p[1] = data;
119 }
WRITE_HANDLER(mario_sh_p2_w)120 static WRITE_HANDLER( mario_sh_p2_w )
121 {
122 p[2] = data;
123 }
WRITE_HANDLER(masao_sh_irqtrigger_w)124 WRITE_HANDLER( masao_sh_irqtrigger_w )
125 {
126 static int last;
127
128
129 if (last == 1 && data == 0)
130 {
131 /* setting bit 0 high then low triggers IRQ on the sound CPU */
132 cpu_set_irq_line_and_vector(1,0,HOLD_LINE,0xff);
133 }
134
135 last = data;
136 }
137
MEMORY_READ_START(readmem)138 static MEMORY_READ_START( readmem )
139 { 0x0000, 0x5fff, MRA_ROM },
140 { 0x6000, 0x6fff, MRA_RAM },
141 { 0x7400, 0x77ff, MRA_RAM }, /* video RAM */
142 { 0x7c00, 0x7c00, input_port_0_r }, /* IN0 */
143 { 0x7c80, 0x7c80, input_port_1_r }, /* IN1 */
144 { 0x7f80, 0x7f80, input_port_2_r }, /* DSW */
145 { 0xf000, 0xffff, MRA_ROM },
146 MEMORY_END
147
148
149 static MEMORY_WRITE_START( writemem )
150 { 0x0000, 0x5fff, MWA_ROM },
151 { 0x6000, 0x68ff, MWA_RAM },
152 { 0x6a80, 0x6fff, MWA_RAM },
153 { 0x6900, 0x6a7f, MWA_RAM, &spriteram, &spriteram_size },
154 { 0x7400, 0x77ff, mario_videoram_w, &videoram },
155 { 0x7c00, 0x7c00, mario_sh1_w }, /* Mario run sample */
156 { 0x7c80, 0x7c80, mario_sh2_w }, /* Luigi run sample */
157 { 0x7d00, 0x7d00, mario_scroll_w },
158 { 0x7e80, 0x7e80, mario_gfxbank_w },
159 { 0x7e83, 0x7e83, mario_palettebank_w },
160 { 0x7e84, 0x7e84, interrupt_enable_w },
161 { 0x7f00, 0x7f00, mario_sh_w }, /* death */
162 { 0x7f01, 0x7f01, mario_sh_getcoin_w },
163 { 0x7f03, 0x7f03, mario_sh_crab_w },
164 { 0x7f04, 0x7f04, mario_sh_turtle_w },
165 { 0x7f05, 0x7f05, mario_sh_fly_w },
166 { 0x7f00, 0x7f07, mario_sh3_w }, /* Misc discrete samples */
167 { 0x7e00, 0x7e00, mario_sh_tuneselect_w },
168 { 0x7000, 0x73ff, MWA_NOP }, /* ??? */
169 /* { 0x7e85, 0x7e85, MWA_RAM }, // Sets alternative 1 and 0 /*/
170 { 0xf000, 0xffff, MWA_ROM },
171 MEMORY_END
172
173 static MEMORY_WRITE_START( masao_writemem )
174 { 0x0000, 0x5fff, MWA_ROM },
175 { 0x6000, 0x68ff, MWA_RAM },
176 { 0x6a80, 0x6fff, MWA_RAM },
177 { 0x6900, 0x6a7f, MWA_RAM, &spriteram, &spriteram_size },
178 { 0x7400, 0x77ff, mario_videoram_w, &videoram },
179 { 0x7d00, 0x7d00, mario_scroll_w },
180 { 0x7e00, 0x7e00, soundlatch_w },
181 { 0x7e80, 0x7e80, mario_gfxbank_w },
182 { 0x7e83, 0x7e83, mario_palettebank_w },
183 { 0x7e84, 0x7e84, interrupt_enable_w },
184 { 0x7000, 0x73ff, MWA_NOP }, /* ??? */
185 { 0x7f00, 0x7f00, masao_sh_irqtrigger_w },
186 { 0xf000, 0xffff, MWA_ROM },
187 MEMORY_END
188
189 static PORT_WRITE_START( mario_writeport )
190 { 0x00, 0x00, IOWP_NOP }, /* unknown... is this a trigger? */
191 PORT_END
192
193 static MEMORY_READ_START( readmem_sound )
194 { 0x0000, 0x0fff, MRA_ROM },
195 MEMORY_END
196 static MEMORY_WRITE_START( writemem_sound )
197 { 0x0000, 0x0fff, MWA_ROM },
198 MEMORY_END
199 static PORT_READ_START( readport_sound )
200 { 0x00, 0xff, mario_sh_tune_r },
201 { I8039_p1, I8039_p1, mario_sh_p1_r },
202 { I8039_p2, I8039_p2, mario_sh_p2_r },
203 { I8039_t0, I8039_t0, mario_sh_t0_r },
204 { I8039_t1, I8039_t1, mario_sh_t1_r },
205 PORT_END
206 static PORT_WRITE_START( writeport_sound )
207 { 0x00, 0xff, mario_sh_sound_w },
208 { I8039_p1, I8039_p1, mario_sh_p1_w },
209 { I8039_p2, I8039_p2, mario_sh_p2_w },
210 PORT_END
211
212
213
214 INPUT_PORTS_START( mario )
215 PORT_START /* IN0 */
216 PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY )
217 PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT | IPF_2WAY )
218 PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
219 PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
220 PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
221 PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START1 )
222 PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START2 )
223 PORT_BITX(0x80, IP_ACTIVE_HIGH, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
224
225 PORT_START /* IN1 */
226 PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_PLAYER2 )
227 PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT | IPF_2WAY | IPF_PLAYER2 )
228 PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
229 PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
230 PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER2 )
231 PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN2 )
232 PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_COIN1 )
233 PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
234
235 PORT_START /* DSW0 */
236 PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
237 PORT_DIPSETTING( 0x00, "3" )
238 PORT_DIPSETTING( 0x01, "4" )
239 PORT_DIPSETTING( 0x02, "5" )
240 PORT_DIPSETTING( 0x03, "6" )
241 PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Coinage ) )
242 PORT_DIPSETTING( 0x04, DEF_STR( 2C_1C ) )
243 PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
244 PORT_DIPSETTING( 0x08, DEF_STR( 1C_2C ) )
245 PORT_DIPSETTING( 0x0c, DEF_STR( 1C_3C ) )
246 PORT_DIPNAME( 0x30, 0x00, DEF_STR( Bonus_Life ) )
247 PORT_DIPSETTING( 0x00, "20000" )
248 PORT_DIPSETTING( 0x10, "30000" )
249 PORT_DIPSETTING( 0x20, "40000" )
250 PORT_DIPSETTING( 0x30, "None" )
251 PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Difficulty ) )
252 PORT_DIPSETTING( 0x00, "Easy" )
253 PORT_DIPSETTING( 0x40, "Medium" )
254 PORT_DIPSETTING( 0x80, "Hard" )
255 PORT_DIPSETTING( 0xc0, "Hardest" )
256 INPUT_PORTS_END
257
258 INPUT_PORTS_START( mariojp )
259 PORT_START /* IN0 */
260 PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY )
261 PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT | IPF_2WAY )
262 PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
263 PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
264 PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
265 PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START1 )
266 PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START2 )
267 PORT_BITX(0x80, IP_ACTIVE_HIGH, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
268
269 PORT_START /* IN1 */
270 PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_PLAYER2 )
271 PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT | IPF_2WAY | IPF_PLAYER2 )
272 PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
273 PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
274 PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER2 )
275 PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN1 )
276 PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_COIN2 ) /* doesn't work in game, but does in service mode */
277 PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
278
279 PORT_START /* DSW0 */
280 PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
281 PORT_DIPSETTING( 0x00, "3" )
282 PORT_DIPSETTING( 0x01, "4" )
283 PORT_DIPSETTING( 0x02, "5" )
284 PORT_DIPSETTING( 0x03, "6" )
285 PORT_DIPNAME( 0x1c, 0x00, DEF_STR( Coinage ) )
286 PORT_DIPSETTING( 0x08, DEF_STR( 3C_1C ) )
287 PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) )
288 PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
289 PORT_DIPSETTING( 0x18, DEF_STR( 1C_2C ) )
290 PORT_DIPSETTING( 0x04, DEF_STR( 1C_3C ) )
291 PORT_DIPSETTING( 0x0c, DEF_STR( 1C_4C ) )
292 PORT_DIPSETTING( 0x14, DEF_STR( 1C_5C ) )
293 PORT_DIPSETTING( 0x1c, DEF_STR( 1C_6C ) )
294 PORT_DIPNAME( 0x20, 0x20, "2 Players Game" )
295 PORT_DIPSETTING( 0x00, "1 Credit" )
296 PORT_DIPSETTING( 0x20, "2 Credits" )
297 PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Bonus_Life ) )
298 PORT_DIPSETTING( 0x00, "20000" )
299 PORT_DIPSETTING( 0x40, "30000" )
300 PORT_DIPSETTING( 0x80, "40000" )
301 PORT_DIPSETTING( 0xc0, "None" )
302 INPUT_PORTS_END
303
304
305
306 static struct GfxLayout charlayout =
307 {
308 8,8, /* 8*8 characters */
309 512, /* 512 characters */
310 2, /* 2 bits per pixel */
311 { 512*8*8, 0 }, /* the bitplanes are separated */
312 { 0, 1, 2, 3, 4, 5, 6, 7 }, /* pretty straightforward layout */
313 { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
314 8*8 /* every char takes 8 consecutive bytes */
315 };
316
317
318 static struct GfxLayout spritelayout =
319 {
320 16,16, /* 16*16 sprites */
321 256, /* 256 sprites */
322 3, /* 3 bits per pixel */
323 { 2*256*16*16, 256*16*16, 0 }, /* the bitplanes are separated */
324 { 0, 1, 2, 3, 4, 5, 6, 7, /* the two halves of the sprite are separated */
325 256*16*8+0, 256*16*8+1, 256*16*8+2, 256*16*8+3, 256*16*8+4, 256*16*8+5, 256*16*8+6, 256*16*8+7 },
326 { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
327 8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
328 16*8 /* every sprite takes 16 consecutive bytes */
329 };
330
331
332
333 static struct GfxDecodeInfo gfxdecodeinfo[] =
334 {
335 { REGION_GFX1, 0, &charlayout, 0, 16 },
336 { REGION_GFX2, 0, &spritelayout, 16*4, 32 },
337 { -1 } /* end of array */
338 };
339
340
341
342 static struct DACinterface dac_interface =
343 {
344 1,
345 { 100 }
346 };
347
348 static const char *mario_sample_names[] =
349 {
350 "*mario",
351
352 /* 7f01 - 7f07 sounds */
353 "ice.wav", /* 0x02 ice appears (formerly effect0.wav) */
354 "coin.wav", /* 0x06 coin appears (formerly effect1.wav) */
355 "skid.wav", /* 0x07 skid */
356
357 /* 7c00 */
358 "run.wav", /* 03, 02, 01 - 0x1b */
359
360 /* 7c80 */
361 "luigirun.wav", /* 03, 02, 01 - 0x1c */
362
363 0 /* end of array */
364 };
365
366 static struct Samplesinterface samples_interface =
367 {
368 3, /* 3 channels */
369 25, /* volume */
370 mario_sample_names
371 };
372
373 static struct AY8910interface ay8910_interface =
374 {
375 1, /* 1 chip */
376 14318000/6, /* ? */
377 { 50 },
378 { soundlatch_r },
379 { 0 },
380 { 0 },
381 { 0 }
382 };
383
MEMORY_READ_START(masao_sound_readmem)384 static MEMORY_READ_START( masao_sound_readmem )
385 { 0x0000, 0x0fff, MRA_ROM },
386 { 0x2000, 0x23ff, MRA_RAM },
387 { 0x4000, 0x4000, AY8910_read_port_0_r },
388 MEMORY_END
389
390 static MEMORY_WRITE_START( masao_sound_writemem )
391 { 0x0000, 0x0fff, MWA_ROM },
392 { 0x2000, 0x23ff, MWA_RAM },
393 { 0x6000, 0x6000, AY8910_control_port_0_w },
394 { 0x4000, 0x4000, AY8910_write_port_0_w },
395 MEMORY_END
396
397
398 static MACHINE_DRIVER_START( mario )
399
400 /* basic machine hardware */
401 MDRV_CPU_ADD(Z80, 3072000) /* 3.072 MHz (?) */
402 MDRV_CPU_MEMORY(readmem,writemem)
403 MDRV_CPU_PORTS(0,mario_writeport)
404 MDRV_CPU_VBLANK_INT(nmi_line_pulse,1)
405
406 MDRV_CPU_ADD(I8039, 730000)
407 MDRV_CPU_FLAGS(CPU_AUDIO_CPU) /* 730 kHz */
408 MDRV_CPU_MEMORY(readmem_sound,writemem_sound)
409 MDRV_CPU_PORTS(readport_sound,writeport_sound)
410
411 MDRV_FRAMES_PER_SECOND(60)
412 MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
413
414 /* video hardware */
415 MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
416 MDRV_SCREEN_SIZE(32*8, 32*8)
417 MDRV_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
418 MDRV_GFXDECODE(gfxdecodeinfo)
419 MDRV_PALETTE_LENGTH(256)
420 MDRV_COLORTABLE_LENGTH(16*4+32*8)
421
422 MDRV_PALETTE_INIT(mario)
423 MDRV_VIDEO_START(mario)
424 MDRV_VIDEO_UPDATE(mario)
425
426 /* sound hardware */
427 MDRV_SOUND_ADD(DAC, dac_interface)
428 MDRV_SOUND_ADD(SAMPLES, samples_interface)
429 MACHINE_DRIVER_END
430
431
432 static MACHINE_DRIVER_START( masao )
433
434 /* basic machine hardware */
435 MDRV_CPU_ADD(Z80, 4000000) /* 4.000 MHz (?) */
436 MDRV_CPU_MEMORY(readmem,masao_writemem)
437 MDRV_CPU_VBLANK_INT(nmi_line_pulse,1)
438
439 MDRV_CPU_ADD(Z80,24576000/16)
440 MDRV_CPU_FLAGS(CPU_AUDIO_CPU) /* ???? */
441 MDRV_CPU_MEMORY(masao_sound_readmem,masao_sound_writemem)
442
443 MDRV_FRAMES_PER_SECOND(60)
444 MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
445
446 /* video hardware */
447 MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
448 MDRV_SCREEN_SIZE(32*8, 32*8)
449 MDRV_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
450 MDRV_GFXDECODE(gfxdecodeinfo)
451 MDRV_PALETTE_LENGTH(256)
452 MDRV_COLORTABLE_LENGTH(16*4+32*8)
453
454 MDRV_PALETTE_INIT(mario)
455 MDRV_VIDEO_START(mario)
456 MDRV_VIDEO_UPDATE(mario)
457
458 /* sound hardware */
459 MDRV_SOUND_ADD(AY8910, ay8910_interface)
460 MACHINE_DRIVER_END
461
462
463
464 /***************************************************************************
465
466 Game driver(s)
467
468 ***************************************************************************/
469
470 ROM_START( mario )
471 ROM_REGION( 0x10000, REGION_CPU1, 0 ) /* 64k for code */
472 ROM_LOAD( "mario.7f", 0x0000, 0x2000, CRC(c0c6e014) SHA1(36a04f9ca1c2a583477cb8a6f2ef94e044e08296) )
473 ROM_LOAD( "mario.7e", 0x2000, 0x2000, CRC(116b3856) SHA1(e372f846d0e5a2b9b47ebd0330293fcc8a12363f) )
474 ROM_LOAD( "mario.7d", 0x4000, 0x2000, CRC(dcceb6c1) SHA1(b19804e69ce2c98cf276c6055c3a250316b96b45) )
475 ROM_LOAD( "mario.7c", 0xf000, 0x1000, CRC(4a63d96b) SHA1(b09060b2c84ab77cc540a27b8f932cb60ec8d442) )
476
477 ROM_REGION( 0x1000, REGION_CPU2, 0 ) /* sound */
478 ROM_LOAD( "tma1c-a.6k", 0x0000, 0x1000, CRC(06b9ff85) SHA1(111a29bcb9cda0d935675fa26eca6b099a88427f) )
479
480 ROM_REGION( 0x2000, REGION_GFX1, ROMREGION_DISPOSE )
481 ROM_LOAD( "mario.3f", 0x0000, 0x1000, CRC(28b0c42c) SHA1(46749568aff88a28c3b6a1ac423abd1b90742a4d) )
482 ROM_LOAD( "mario.3j", 0x1000, 0x1000, CRC(0c8cc04d) SHA1(15fae47d701dc1ef15c943cee6aa991776ecffdf) )
483
484 ROM_REGION( 0x6000, REGION_GFX2, ROMREGION_DISPOSE )
485 ROM_LOAD( "mario.7m", 0x0000, 0x1000, CRC(22b7372e) SHA1(4a1c1e239cb6d483e76f50d7a3b941025963c6a3) )
486 ROM_LOAD( "mario.7n", 0x1000, 0x1000, CRC(4f3a1f47) SHA1(0747d693b9482f6dd28b0bc484fd1d3e29d35654) )
487 ROM_LOAD( "mario.7p", 0x2000, 0x1000, CRC(56be6ccd) SHA1(15a6e16c189d45f72761ebcbe9db5001bdecd659) )
488 ROM_LOAD( "mario.7s", 0x3000, 0x1000, CRC(56f1d613) SHA1(9af6844dbaa3615433d0595e9e85e72493e31a54) )
489 ROM_LOAD( "mario.7t", 0x4000, 0x1000, CRC(641f0008) SHA1(589fe108c7c11278fd897f2ded8f0498bc149cfd) )
490 ROM_LOAD( "mario.7u", 0x5000, 0x1000, CRC(7baf5309) SHA1(d9194ff7b89a18273d37b47228fc7fb7e2a0ed1f) )
491
492 ROM_REGION( 0x0200, REGION_PROMS, 0 )
493 ROM_LOAD( "mario.4p", 0x0000, 0x0200, CRC(afc9bd41) SHA1(90b739c4c7f24a88b6ac5ca29b06c032906a2801) )
494 ROM_END
495
496 ROM_START( mariojp )
497 ROM_REGION( 0x10000, REGION_CPU1, 0 ) /* 64k for code */
498 ROM_LOAD( "tma1c-a1.7f", 0x0000, 0x2000, CRC(b64b6330) SHA1(f7084251ac325bbfa3fb804da16a50622e1fd213) )
499 ROM_LOAD( "tma1c-a2.7e", 0x2000, 0x2000, CRC(290c4977) SHA1(5af266be0ddc883c6548c90e4a9084024a1e91a0) )
500 ROM_LOAD( "tma1c-a1.7d", 0x4000, 0x2000, CRC(f8575f31) SHA1(710d0e72fcfce700ed2a22fb9c7c392cc76b250b) )
501 ROM_LOAD( "tma1c-a2.7c", 0xf000, 0x1000, CRC(a3c11e9e) SHA1(d0612b0f8c2ea4e798f551922a04a324f4ed5f3d) )
502
503 ROM_REGION( 0x1000, REGION_CPU2, 0 ) /* sound */
504 ROM_LOAD( "tma1c-a.6k", 0x0000, 0x1000, CRC(06b9ff85) SHA1(111a29bcb9cda0d935675fa26eca6b099a88427f) )
505
506 ROM_REGION( 0x2000, REGION_GFX1, ROMREGION_DISPOSE )
507 ROM_LOAD( "tma1v-a.3f", 0x0000, 0x1000, CRC(adf49ee0) SHA1(11fc2cd197bfe3ecb6af55c3c7a326c94988d2bd) )
508 ROM_LOAD( "tma1v-a.3j", 0x1000, 0x1000, CRC(a5318f2d) SHA1(e42f5e51804195c64a56addb18b7ad12c57bb09a) )
509
510 ROM_REGION( 0x6000, REGION_GFX2, ROMREGION_DISPOSE )
511 ROM_LOAD( "tma1v-a.7m", 0x0000, 0x1000, CRC(186762f8) SHA1(711fdd37392656bdd5027e020d51d083ccd7c407) )
512 ROM_LOAD( "tma1v-a.7n", 0x1000, 0x1000, CRC(e0e08bba) SHA1(315eba2c10d426c9c0bb4e36987bf8ebed7df9a0) )
513 ROM_LOAD( "tma1v-a.7p", 0x2000, 0x1000, CRC(7b27c8c1) SHA1(3fb2613ce19e353fbcc77b6817927794fb35810f) )
514 ROM_LOAD( "tma1v-a.7s", 0x3000, 0x1000, CRC(912ba80a) SHA1(351fb5b160216eb10e281815d05a7165ca0e5909) )
515 ROM_LOAD( "tma1v-a.7t", 0x4000, 0x1000, CRC(5cbb92a5) SHA1(a78a378e6d3060143dc456e9c33a5068da648331) )
516 ROM_LOAD( "tma1v-a.7u", 0x5000, 0x1000, CRC(13afb9ed) SHA1(b29dcd91cf5e639ee50b734afc7a3afce79634df) )
517
518 ROM_REGION( 0x0200, REGION_PROMS, 0 )
519 ROM_LOAD( "mario.4p", 0x0000, 0x0200, CRC(afc9bd41) SHA1(90b739c4c7f24a88b6ac5ca29b06c032906a2801) )
520 ROM_END
521
522 ROM_START( masao )
523 ROM_REGION( 0x10000, REGION_CPU1, 0 ) /* 64k for code */
524 ROM_LOAD( "masao-4.rom", 0x0000, 0x2000, CRC(07a75745) SHA1(acc760242a8862d177e3cff90aa32c4f3dac4e65) )
525 ROM_LOAD( "masao-3.rom", 0x2000, 0x2000, CRC(55c629b6) SHA1(1f5b5699821871aadacc511663cb4bd4e357e215) )
526 ROM_LOAD( "masao-2.rom", 0x4000, 0x2000, CRC(42e85240) SHA1(bc8cdf867b743c5ee58fcacb63a44f826c8f8c1a) )
527 ROM_LOAD( "masao-1.rom", 0xf000, 0x1000, CRC(b2817af9) SHA1(95e83752e544671a68df2107fae1010b187f04a6) )
528
529 ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 64k for sound */
530 ROM_LOAD( "masao-5.rom", 0x0000, 0x1000, CRC(bd437198) SHA1(ebae88461984afc97bbc103fc6d95bc3c1865eec) )
531
532 ROM_REGION( 0x2000, REGION_GFX1, ROMREGION_DISPOSE )
533 ROM_LOAD( "masao-6.rom", 0x0000, 0x1000, CRC(1c9e0be2) SHA1(b4a650412dad90c6f6d79e93cde49055703b7f3e) )
534 ROM_LOAD( "masao-7.rom", 0x1000, 0x1000, CRC(747c1349) SHA1(54674f78edf86953b7d500b66393483d1a5ce8ab) )
535
536 ROM_REGION( 0x6000, REGION_GFX2, ROMREGION_DISPOSE )
537 ROM_LOAD( "tma1v-a.7m", 0x0000, 0x1000, CRC(186762f8) SHA1(711fdd37392656bdd5027e020d51d083ccd7c407) )
538 ROM_LOAD( "masao-9.rom", 0x1000, 0x1000, CRC(50be3918) SHA1(73e22eee67a03732ff57e523f900f20c6aee0491) )
539 ROM_LOAD( "mario.7p", 0x2000, 0x1000, CRC(56be6ccd) SHA1(15a6e16c189d45f72761ebcbe9db5001bdecd659) )
540 ROM_LOAD( "tma1v-a.7s", 0x3000, 0x1000, CRC(912ba80a) SHA1(351fb5b160216eb10e281815d05a7165ca0e5909) )
541 ROM_LOAD( "tma1v-a.7t", 0x4000, 0x1000, CRC(5cbb92a5) SHA1(a78a378e6d3060143dc456e9c33a5068da648331) )
542 ROM_LOAD( "tma1v-a.7u", 0x5000, 0x1000, CRC(13afb9ed) SHA1(b29dcd91cf5e639ee50b734afc7a3afce79634df) )
543
544 ROM_REGION( 0x0200, REGION_PROMS, 0 )
545 ROM_LOAD( "mario.4p", 0x0000, 0x0200, CRC(afc9bd41) SHA1(90b739c4c7f24a88b6ac5ca29b06c032906a2801) )
546 ROM_END
547
548
549
550 GAME( 1983, mario, 0, mario, mario, 0, ROT180, "Nintendo of America", "Mario Bros. (US)" )
551 GAME( 1983, mariojp, mario, mario, mariojp, 0, ROT180, "Nintendo", "Mario Bros. (Japan)" )
552 GAME( 1983, masao, mario, masao, mario, 0, ROT180, "bootleg", "Masao" )
553