Previous 199869 Revisions Next

r36150 Saturday 28th February, 2015 at 22:48:01 UTC by David Haywood
new clones
Brick Zone (v6.0, Joystick) [system11]
[src/mame]mame.lst
[src/mame/drivers]suna8.c
[src/mame/includes]suna8.h
[src/mess/drivers]hh_tms1k.c hh_ucom4.c

trunk/src/mame/drivers/suna8.c
r244661r244662
128128   return decrypt;
129129}
130130
131DRIVER_INIT_MEMBER(suna8_state,brickzn)
131DRIVER_INIT_MEMBER(suna8_state, brickzn_common)
132132{
133133   m_decrypt = brickzn_decrypt();
134134
135   // Non-banked opcodes
136   address_space &space = m_maincpu->space(AS_PROGRAM);
137   space.set_decrypted_region(0x0000, 0x7fff, m_decrypt);
138
139   // Data banks: 00-0f normal data decryption, 10-1f alternate data decryption:
140   membank("bank1")->configure_entries(0, 16*2, memregion("maincpu")->base() + 0x10000, 0x4000);
141   // Opcode banks: 00-1f normal opcode decryption:
142   membank("bank1")->configure_decrypted_entries(0, 16, m_decrypt + 0x10000, 0x4000);
143   membank("bank1")->configure_decrypted_entries(16, 16, m_decrypt + 0x10000, 0x4000);
144}
145
146DRIVER_INIT_MEMBER(suna8_state,brickzn)
147{
148   DRIVER_INIT_CALL(brickzn_common);
135149   // !!!!!! PATCHES !!!!!!
150   // To do: ROM banking should be disabled here
151   m_decrypt[0x11cc] = 0x00; // LD ($C040),A -> NOP
152   m_decrypt[0x11cd] = 0x00; // LD ($C040),A -> NOP
153   m_decrypt[0x11ce] = 0x00; // LD ($C040),A -> NOP
136154
155   m_decrypt[0x335b] = 0xc9; // RET Z -> RET (to avoid: jp $C800)
156
157   // NMI enable / source??
158   m_decrypt[0x1442] = 0xc9; // HALT -> RET
159   m_decrypt[0x24C6] = 0x00; // HALT -> NOP
160   m_decrypt[0x25A4] = 0x00; // HALT -> NOP
161}
162
163DRIVER_INIT_MEMBER(suna8_state,brickznv5)
164{
165   DRIVER_INIT_CALL(brickzn_common);
166
167   // !!!!!! PATCHES !!!!!!
137168   // To do: ROM banking should be disabled here
138169   m_decrypt[0x11bb] = 0x00; // LD ($C040),A -> NOP
139170   m_decrypt[0x11bc] = 0x00; // LD ($C040),A -> NOP
r244661r244662
145176   m_decrypt[0x1431] = 0xc9; // HALT -> RET
146177   m_decrypt[0x24b5] = 0x00; // HALT -> NOP
147178   m_decrypt[0x2593] = 0x00; // HALT -> NOP
148
149   // Non-banked opcodes
150   address_space &space = m_maincpu->space(AS_PROGRAM);
151   space.set_decrypted_region(0x0000, 0x7fff, m_decrypt);
152
153   // Data banks: 00-0f normal data decryption, 10-1f alternate data decryption:
154   membank("bank1")->configure_entries(0, 16*2, memregion("maincpu")->base() + 0x10000, 0x4000);
155   // Opcode banks: 00-1f normal opcode decryption:
156   membank("bank1")->configure_decrypted_entries(0, 16, m_decrypt + 0x10000, 0x4000);
157   membank("bank1")->configure_decrypted_entries(16, 16, m_decrypt + 0x10000, 0x4000);
158179}
159180
160181DRIVER_INIT_MEMBER(suna8_state,brickznv4)
161182{
162   m_decrypt = brickzn_decrypt();
183   DRIVER_INIT_CALL(brickzn_common);
184
163185   // !!!!!! PATCHES !!!!!!
164
165186   // To do: ROM banking should be disabled here
166187   m_decrypt[0x1190] = 0x00; // LD ($C040),A -> NOP
167188   m_decrypt[0x1191] = 0x00; // LD ($C040),A -> NOP
r244661r244662
173194   m_decrypt[0x1406] = 0xc9; // HALT -> RET
174195   m_decrypt[0x2487] = 0x00; // HALT -> NOP
175196   m_decrypt[0x256c] = 0x00; // HALT -> NOP
176
177   // Non-banked opcodes
178   address_space &space = m_maincpu->space(AS_PROGRAM);
179   space.set_decrypted_region(0x0000, 0x7fff, m_decrypt);
180
181   // Data banks: 00-0f normal data decryption, 10-1f alternate data decryption:
182   membank("bank1")->configure_entries(0, 16*2, memregion("maincpu")->base() + 0x10000, 0x4000);
183   // Opcode banks: 00-1f normal opcode decryption:
184   membank("bank1")->configure_decrypted_entries(0, 16, m_decrypt + 0x10000, 0x4000);
185   membank("bank1")->configure_decrypted_entries(16, 16, m_decrypt + 0x10000, 0x4000);
186197}
187198
188199
r244661r244662
25262537
25272538ROM_START( brickzn )
25282539   ROM_REGION( 0x50000 + 0x40000, "maincpu", 0 )       /* Main Z80 Code */
2540   ROM_LOAD( "P9.M7", 0x00000, 0x08000, CRC(bd7a3c01) SHA1(05fb2836f1c8d8818847ccb76e7b477f13a9929b) )
2541   ROM_LOAD( "P8.K7", 0x10000, 0x20000, CRC(ec3e266d) SHA1(4441a5ae88e51353f6d1eb22c00becb0a7ecea6e) )
2542   ROM_LOAD( "P7.I7", 0x30000, 0x20000, CRC(4dd88631) SHA1(0dbcaf3420dad82c3ed94d231948fe69b044b786) )
2543
2544   ROM_REGION( 0x10000, "audiocpu", 0 )        /* Music Z80 Code */
2545   ROM_LOAD( "10.O8", 0x00000, 0x10000, CRC(4eba8178) SHA1(9a214a1acacdc124529bc9dde73a8e884fc70293) )  // BRICK MUSIC XILINX PROGRAM 3020 1991,11,14 MUSIC PROGRAM V 2,0 1990.12.14
2546
2547   ROM_REGION( 0x10000, "pcm", 0 )     /* PCM Z80 Code */
2548   ROM_LOAD( "11.N10", 0x00000, 0x10000, CRC(6c54161a) SHA1(ea216d9f45b441acd56b9fed81a83e3bfe299fbd) )
2549
2550   ROM_REGION( 0xc0000, "gfx1", ROMREGION_INVERT ) /* Sprites */
2551   ROM_LOAD( "P5.M5", 0x00000, 0x20000, CRC(ca59e2f7) SHA1(dbb9f2b316a44f760768f0430798e0c4e9e8f3ff) )
2552   ROM_LOAD( "P4.L5", 0x20000, 0x20000, CRC(cc8fb330) SHA1(fd263f65b81acbfc00fe339c461068ab160c04af) )
2553   ROM_LOAD( "P3.K5", 0x40000, 0x20000, CRC(2e4f194b) SHA1(86da1a582ea274f2af96d3e3e2ac72bcaf3638cb) )
2554   ROM_LOAD( "P2.I5", 0x60000, 0x20000, CRC(592d45ce) SHA1(8ce9236b7deba6cf00999680314ac04eff624a6d) )
2555   ROM_LOAD( "P1.H5", 0x80000, 0x20000, CRC(7a6bb583) SHA1(ff7018c07182fce0ff6954bbe3b08fa5105f6be0) )
2556   ROM_LOAD( "P6.H7", 0xa0000, 0x20000, CRC(bbf31081) SHA1(1fdbd0e0853082345225e18df340184a7a604b78) )
2557ROM_END
2558
2559
2560ROM_START( brickznv5 )
2561   ROM_REGION( 0x50000 + 0x40000, "maincpu", 0 )       /* Main Z80 Code */
25292562   ROM_LOAD( "brickzon.009", 0x00000, 0x08000, CRC(1ea68dea) SHA1(427152a26b062c5e77089de49c1da69369d4d557) )  // V5.0 1992,3,3
25302563   ROM_LOAD( "brickzon.008", 0x10000, 0x20000, CRC(c61540ba) SHA1(08c0ede591b229427b910ca6bb904a6146110be8) )
25312564   ROM_LOAD( "brickzon.007", 0x30000, 0x20000, CRC(ceed12f1) SHA1(9006726b75a65455afb1194298bade8fa2207b4a) )
r244661r244662
25452578   ROM_LOAD( "brickzon.006", 0xa0000, 0x20000, CRC(bbf31081) SHA1(1fdbd0e0853082345225e18df340184a7a604b78) )
25462579ROM_END
25472580
2581
25482582ROM_START( brickznv4 )
25492583   ROM_REGION( 0x50000 + 0x40000, "maincpu", 0 )       /* Main Z80 Code */
25502584   ROM_LOAD( "39",           0x00000, 0x08000, CRC(043380bd) SHA1(7eea7cc7d754815df233879b4a9d3d88eac5b28d) )  // V3.0 1992,1,23
r244661r244662
28462880
28472881GAME( 1991, hardhea2,  0,        hardhea2, hardhea2, suna8_state, hardhea2,  ROT0,  "SunA",                       "Hard Head 2 (v2.0)",          0 )
28482882
2849GAME( 1992, brickzn,   0,        brickzn,  brickzn,  suna8_state, brickzn,   ROT90, "SunA",                       "Brick Zone (v5.0, Joystick)", 0 )
2883GAME( 1992, brickzn,   0,        brickzn,  brickzn,  suna8_state, brickzn,   ROT90, "SunA",                       "Brick Zone (v6.0, Joystick)", 0 ) // 'V 60'
2884GAME( 1992, brickznv5, brickzn,  brickzn,  brickzn,  suna8_state, brickznv5, ROT90, "SunA",                       "Brick Zone (v5.0, Joystick)",  0 )
28502885GAME( 1992, brickznv4, brickzn,  brickzn,  brickzn,  suna8_state, brickznv4, ROT90, "SunA",                       "Brick Zone (v4.0, Spinner)",  0 )
28512886GAME( 1992, brickzn11, brickzn,  brickzn,  brickzn,  suna8_state, brickzn11, ROT90, "SunA",                       "Brick Zone (v1.1)",  GAME_NOT_WORKING )
trunk/src/mame/includes/suna8.h
r244661r244662
124124   DECLARE_READ8_MEMBER(suna8_banked_spriteram_r);
125125   DECLARE_WRITE8_MEMBER(suna8_spriteram_w);
126126   DECLARE_WRITE8_MEMBER(suna8_banked_spriteram_w);
127   DECLARE_DRIVER_INIT(brickzn_common);
128   DECLARE_DRIVER_INIT(brickznv5);
127129   DECLARE_DRIVER_INIT(brickznv4);
128130   DECLARE_DRIVER_INIT(starfigh);
129131   DECLARE_DRIVER_INIT(hardhea2);
trunk/src/mame/mame.lst
r244661r244662
92559255starfigh        // (c) 1990 SunA
92569256hardhea2        // (c) 1991 SunA
92579257brickzn         // (c) 1992 SunA
9258brickznv5       // (c) 1992 SunA
92589259brickznv4       // (c) 1992 SunA
92599260brickzn11       // (c) 1992 SunA
92609261bestbest        // (c) 1994 SunA
trunk/src/mess/drivers/hh_tms1k.c
r244661r244662
1111
1212  serial   device   etc.
1313--------------------------------------------------------------------
14 @CP0904A  TMS0970  1977, Milton Bradley Comp IV
14 @MP0904A  TMS0970  1977, Milton Bradley Comp IV
1515 @MP0905B  TMS0970  1977, Parker Brothers Codename Sector
16 @MP0914   TMS1000  1978, Entex Baseball 1
16 @MP0914   TMS1000  1979, Entex Baseball
1717 @MP1030   TMS1100  1980, APF Mathemagician
1818 @MP3226   TMS1000  1978, Milton Bradley Simon
1919 @MP3403   TMS1100  1978, unknown
r244661r244662
371371
372372void hh_tms1k_state::mathmagi_display()
373373{
374   m_display_maxy = 11;
374375   m_display_maxx = 8;
375   m_display_maxy = 11;
376376
377377   // R0-R7: 7seg leds
378378   for (int y = 0; y < 8; y++)
r244661r244662
535535
536536void hh_tms1k_state::amaztron_display()
537537{
538   m_display_maxy = 3;
538539   m_display_maxx = 8;
539   m_display_maxy = 3;
540540
541541   // R8,R9: select digit
542542   for (int y = 0; y < 2; y++)
r244661r244662
13471347
13481348WRITE16_MEMBER(hh_tms1k_state::cnsector_write_r)
13491349{
1350   m_display_maxy = 7;
13501351   m_display_maxx = 8;
1351   m_display_maxy = 7;
13521352
13531353   // R0-R5: select digit (right-to-left)
13541354   for (int y = 0; y < 6; y++)
r244661r244662
15551555
15561556WRITE16_MEMBER(hh_tms1k_state::stopthief_write_r)
15571557{
1558   m_display_maxy = 3;
15581559   m_display_maxx = 7;
1559   m_display_maxy = 3;
15601560
15611561   // R0-R2: select digit
15621562   UINT8 o = BITSWAP8(m_o,3,5,2,1,4,0,6,7) & 0x7f;
r244661r244662
22942294CONS( 1979, amaztron, 0, 0, amaztron, amaztron, driver_device, 0, "Coleco", "Amaze-A-Tron", GAME_SUPPORTS_SAVE )
22952295CONS( 1981, tc4, 0, 0, tc4, tc4, driver_device, 0, "Coleco", "Total Control 4", GAME_SUPPORTS_SAVE )
22962296
2297CONS( 1978, ebball, 0, 0, ebball, ebball, driver_device, 0, "Entex", "Electronic Baseball (Entex)", GAME_SUPPORTS_SAVE )
2297CONS( 1979, ebball, 0, 0, ebball, ebball, driver_device, 0, "Entex", "Baseball (Entex)", GAME_SUPPORTS_SAVE )
22982298
22992299CONS( 1979, elecdet, 0, 0, elecdet, elecdet, driver_device, 0, "Ideal", "Electronic Detective", GAME_SUPPORTS_SAVE )
23002300
trunk/src/mess/drivers/hh_ucom4.c
r244661r244662
8686   void tmtennis_set_clock();
8787   DECLARE_INPUT_CHANGED_MEMBER(tmtennis_difficulty_switch);
8888   DECLARE_MACHINE_RESET(tmtennis);
89
90   DECLARE_WRITE8_MEMBER(tmpacman_grid_w);
91   DECLARE_WRITE8_MEMBER(tmpacman_plate_w);
92   DECLARE_WRITE8_MEMBER(tmpacman_port_e_w);
9389   
9490   DECLARE_READ8_MEMBER(alnchase_input_r);
9591   DECLARE_WRITE8_MEMBER(alnchase_display_w);
r244661r244662
236232
237233WRITE8_MEMBER(hh_ucom4_state::edracula_grid_w)
238234{
239   // ports C,D: vfd matrix grid
235   // port C/D: vfd matrix grid
240236   int shift = (offset - NEC_UCOM4_PORTC) * 4;
241237   m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
242238
r244661r244662
245241
246242WRITE8_MEMBER(hh_ucom4_state::edracula_plate_w)
247243{
248   // ports E-H,I01: vfd matrix plate
244   // port E/F/G/H/I01: vfd matrix plate
249245   int shift = (offset - NEC_UCOM4_PORTE) * 4;
250246   m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
251247
r244661r244662
262258
263259
264260static INPUT_PORTS_START( edracula )
265   PORT_START("IN.0") // port A
261   PORT_START("IN.0")
266262   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT )
267263   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START )
268264   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 )
269265   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
270266
271   PORT_START("IN.1") // port B
267   PORT_START("IN.1")
272268   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP )
273269   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN )
274270   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT )
r244661r244662
325321
326322READ8_MEMBER(hh_ucom4_state::tmtennis_input_r)
327323{
328   // ports A,B: buttons
324   // port A/B: buttons
329325   return ~read_inputs(2) >> (offset*4);
330326}
331327
332WRITE8_MEMBER(hh_ucom4_state::tmtennis_grid_w)
328WRITE8_MEMBER(hh_ucom4_state::tmtennis_port_e_w)
333329{
334   // ports G-I: vfd matrix grid
335   int shift = (offset - NEC_UCOM4_PORTG) * 4;
336   m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
337
338   display_matrix(12, 12, m_plate, m_grid);
330   // E0/E1: input mux
331   // E2: speaker out
332   // E3: N/C
333   m_inp_mux = data & 3;
334   m_speaker->level_w(data >> 2 & 1);
339335}
340336
341337WRITE8_MEMBER(hh_ucom4_state::tmtennis_plate_w)
342338{
343   // ports C-F: vfd matrix plate
339   // port C/D/F: vfd matrix plate
344340   if (offset == NEC_UCOM4_PORTF) offset--;
345341   int shift = (offset - NEC_UCOM4_PORTC) * 4;
346342   m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
r244661r244662
348344   display_matrix(12, 12, m_plate, m_grid);
349345}
350346
351WRITE8_MEMBER(hh_ucom4_state::tmtennis_port_e_w)
347WRITE8_MEMBER(hh_ucom4_state::tmtennis_grid_w)
352348{
353   // E0,E1: input mux
354   // E2: speaker out
355   // E3: N/C
356   m_inp_mux = data & 3;
357   m_speaker->level_w(data >> 2 & 1);
349   // port G/H/I: vfd matrix grid
350   int shift = (offset - NEC_UCOM4_PORTG) * 4;
351   m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
352
353   display_matrix(12, 12, m_plate, m_grid);
358354}
359355
360356
357
361358/* Pro-Tennis physical button layout and labels is like this:
362359
363360    [SERVE] [1] [2] [3]       [3] [2] [1] [SERVE]
r244661r244662
459456
460457***************************************************************************/
461458
462WRITE8_MEMBER(hh_ucom4_state::tmpacman_grid_w)
463{
464   // ports C,D: vfd matrix grid
465   int shift = (offset - NEC_UCOM4_PORTC) * 4;
466   m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
467
468   display_matrix(19, 8, m_plate, m_grid);
469}
470
471WRITE8_MEMBER(hh_ucom4_state::tmpacman_plate_w)
472{
473   // ports E-I: vfd matrix plate
474   int shift = (offset - NEC_UCOM4_PORTE) * 4;
475   m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
476
477   display_matrix(19, 8, m_plate, m_grid);
478}
479
480WRITE8_MEMBER(hh_ucom4_state::tmpacman_port_e_w)
481{
482   // E1: speaker out
483   m_speaker->level_w(data >> 1 & 1);
484
485   tmpacman_plate_w(space, offset, data);
486}
487
488
489459static INPUT_PORTS_START( tmpacman )
490   PORT_START("IN.0") // port A
491   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY // 4 separate directional buttons, hence 16way
492   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_16WAY
493   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_16WAY
494   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_16WAY
495
496   PORT_START("IN.1") // port B
497   PORT_CONFNAME( 0x00, 0x00, DEF_STR( Difficulty ) )
498   PORT_CONFSETTING(    0x00, "Amateur" )
499   PORT_CONFSETTING(    0x01, "Professional" )
500   PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED )
501460INPUT_PORTS_END
502461
503462
r244661r244662
505464
506465   /* basic machine hardware */
507466   MCFG_CPU_ADD("maincpu", NEC_D553, XTAL_430kHz)
508   MCFG_UCOM4_READ_A_CB(IOPORT("IN.0"))
509   MCFG_UCOM4_READ_B_CB(IOPORT("IN.1"))
510   MCFG_UCOM4_WRITE_C_CB(WRITE8(hh_ucom4_state, tmpacman_grid_w))
511   MCFG_UCOM4_WRITE_D_CB(WRITE8(hh_ucom4_state, tmpacman_grid_w))
512   MCFG_UCOM4_WRITE_E_CB(WRITE8(hh_ucom4_state, tmpacman_port_e_w))
513   MCFG_UCOM4_WRITE_F_CB(WRITE8(hh_ucom4_state, tmpacman_plate_w))
514   MCFG_UCOM4_WRITE_G_CB(WRITE8(hh_ucom4_state, tmpacman_plate_w))
515   MCFG_UCOM4_WRITE_H_CB(WRITE8(hh_ucom4_state, tmpacman_plate_w))
516   MCFG_UCOM4_WRITE_I_CB(WRITE8(hh_ucom4_state, tmpacman_plate_w))
517467
518   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1))
519468   MCFG_DEFAULT_LAYOUT(layout_tmpacman)
520469
521470   /* no video! */
r244661r244662
546495
547496***************************************************************************/
548497
498
499
549500READ8_MEMBER(hh_ucom4_state::alnchase_input_r)
550501{
551502   // port A: buttons
r244661r244662
556507{
557508   if (offset <= NEC_UCOM4_PORTE)
558509   {
559      // ports C,D,E0: vfd matrix grid
510      // C/D/E0: vfd matrix grid
560511      int shift = (offset - NEC_UCOM4_PORTC) * 4;
561512      m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
562513
r244661r244662
567518
568519   if (offset >= NEC_UCOM4_PORTE)
569520   {
570      // ports F-I,E23: vfd matrix plate
521      // E23/F/G/H/I: vfd matrix plate
571522      int shift = (offset - NEC_UCOM4_PORTE) * 4;
572523      m_plate = ((m_plate << 2 & ~(0xf << shift)) | (data << shift)) >> 2;
573524   }
r244661r244662
577528
578529WRITE8_MEMBER(hh_ucom4_state::alnchase_port_e_w)
579530{
531   alnchase_display_w(space, offset, data);
532
580533   // E1: speaker out
581534   m_speaker->level_w(data >> 1 & 1);
582
583   alnchase_display_w(space, offset, data);
584535}
585536
586537/* physical button layout and labels is like this:


Previous 199869 Revisions Next


© 1997-2024 The MAME Team