272
drawgfx(bitmap, machine->gfx[1], code, color, flipx, flipy, sx, sy, cliprect, TRANSPARENCY_PEN, 0);
272
drawgfx_transpen(bitmap, cliprect, machine->gfx[1], code, color, flipx, flipy, sx, sy, 0);
335
static void looping_spcint(const device_config *device, int state)
335
static WRITE_LINE_DEVICE_HANDLER( looping_spcint )
337
cputag_set_input_line_and_vector(device->machine, "audiocpu", 0, state, 6);
337
cputag_set_input_line_and_vector(device->machine, "audiocpu", 0, !state, 6);
430
430
*************************************/
432
static READ8_HANDLER( cop_io_r )
434
// if (offset == 1) return mame_rand(space->machine) & 0x01;
435
return 1; // cop_io[offset];
438
static WRITE8_HANDLER( cop_io_w )
440
cop_io[offset] = data;
441
if (offset == 0) logerror("%02x ",data);
432
444
static READ8_HANDLER( protection_r )
435
The code reads ($7002) ($7004) alternately
436
The result must change at least once every 10 reads
437
A read from ($34b0 + result) must == $01
446
Because they read alternately from different locations,
447
it is trivial to bypass the protection.
446
// The code reads ($7002) ($7004) alternately
447
// The result must change at least once every 10 reads
448
// A read from ($34b0 + result) must == $01
457
// Because they read alternately from different locations,
458
// it is trivial to bypass the protection.
460
// cop write alternately $02 $01 $08 $04 in port $102
461
// cop write randomly fc (unfortunatly) but 61,67,b7,bf,db,e1,f3,fd,ff too and only these values
464
if(cop_io[0] != 0xfc) return cop_io[0];
457
469
/*************************************
513
525
AM_RANGE(0x008, 0x008) AM_DEVWRITE("ay", ay_enable_w)
514
526
AM_RANGE(0x009, 0x009) AM_DEVWRITE("tms", speech_enable_w)
515
527
AM_RANGE(0x00a, 0x00a) AM_WRITE(ballon_enable_w)
528
AM_RANGE(0x00b, 0x00f) AM_NOP
602
618
MDRV_CPU_ADD("mcu", COP420, COP_CLOCK)
603
619
MDRV_CPU_PROGRAM_MAP(looping_cop_map)
604
620
MDRV_CPU_DATA_MAP(looping_cop_data_map)
621
MDRV_CPU_IO_MAP(looping_cop_io_map)
605
622
MDRV_CPU_CONFIG(looping_cop_intf)
607
624
MDRV_MACHINE_START(looping)
718
735
ROM_LOAD( "i-o.11a", 0x2800, 0x1000, CRC(61c74c79) SHA1(9f34d18a919446dd76857b851cea23fc1526f3c2) ) /* speech */
720
737
ROM_REGION( 0x1000, "mcu", 0 ) /* COP420 microcontroller code */
721
ROM_LOAD( "cop.bin", 0x0000, 0x1000, BAD_DUMP CRC(bbfd26d5) SHA1(5f78b32b6e7c003841ef5b635084db2cdfebf0e1) ) // overdumped 4 times, and starting PC is not 0
739
ROM_LOAD( "cop.bin", 0x0000, 0x0400, BAD_DUMP CRC(bbfd26d5) SHA1(5f78b32b6e7c003841ef5b635084db2cdfebf0e1) ) // overdumped 4 times, and starting PC is not 0
740
ROM_CONTINUE( 0x0000, 0x0400)
741
ROM_CONTINUE( 0x0000, 0x0400)
742
ROM_CONTINUE( 0x0000, 0x0400)
744
ROM_LOAD( "cop.bin", 0x00c2, 0x033e, CRC(bbfd26d5) SHA1(5f78b32b6e7c003841ef5b635084db2cdfebf0e1) ) // overdumped 4 times and shifted
745
ROM_CONTINUE( 0x0000, 0x00c2)
746
ROM_CONTINUE( 0x00c2, 0x033e)
747
ROM_CONTINUE( 0x0000, 0x00c2)
748
ROM_CONTINUE( 0x00c2, 0x033e)
749
ROM_CONTINUE( 0x0000, 0x00c2)
750
ROM_CONTINUE( 0x00c2, 0x033e)
751
ROM_CONTINUE( 0x0000, 0x00c2)
723
ROM_REGION( 0x1000, "gfx1", ROMREGION_DISPOSE )
753
ROM_REGION( 0x1000, "gfx1", 0 )
724
754
ROM_LOAD( "log2.8a", 0x0000, 0x800, CRC(ef3284ac) SHA1(8719c9df8c972a56c306b3c707aaa53092ffa2d6) )
725
755
ROM_LOAD( "log1-9-3.6a", 0x0800, 0x800, CRC(c434c14c) SHA1(3669aaf7adc6b250378bcf62eb8e7058f55476ef) )
739
769
ROM_REGION( 0x3800, "audiocpu", 0 ) /* TMS9980 code */
740
770
ROM_LOAD( "i-o-v2.13c", 0x0000, 0x0800, CRC(09765ebe) SHA1(93b035c3a94f2f6d5e463256e26b600a4dd5d3ea) )
741
ROM_LOAD( "i-o.13a", 0x0800, 0x1000, CRC(1de29f25) SHA1(535acb132266d6137b0610ee9a9b946459ae44af) ) /* speech */
771
ROM_LOAD( "i-o.13a", 0x0800, 0x1000, CRC(1de29f25) SHA1(535acb132266d6137b0610ee9a9b946459ae44af) ) /* speech */
742
772
ROM_LOAD( "i-o.11a", 0x2800, 0x1000, CRC(61c74c79) SHA1(9f34d18a919446dd76857b851cea23fc1526f3c2) )
744
774
ROM_REGION( 0x1000, "mcu", 0 ) /* COP420 microcontroller code */
745
ROM_LOAD( "cop.bin", 0x0000, 0x1000, BAD_DUMP CRC(bbfd26d5) SHA1(5f78b32b6e7c003841ef5b635084db2cdfebf0e1) ) // overdumped 4 times, and starting PC is not 0
776
ROM_LOAD( "cop.bin", 0x0000, 0x0400, BAD_DUMP CRC(bbfd26d5) SHA1(5f78b32b6e7c003841ef5b635084db2cdfebf0e1) ) // overdumped 4 times, and starting PC is not 0
777
ROM_CONTINUE( 0x0000, 0x0400)
778
ROM_CONTINUE( 0x0000, 0x0400)
779
ROM_CONTINUE( 0x0000, 0x0400)
781
ROM_LOAD( "cop.bin", 0x00c2, 0x033e, CRC(bbfd26d5) SHA1(5f78b32b6e7c003841ef5b635084db2cdfebf0e1) ) // overdumped 4 times and shifted
782
ROM_CONTINUE( 0x0000, 0x00c2)
783
ROM_CONTINUE( 0x00c2, 0x033e)
784
ROM_CONTINUE( 0x0000, 0x00c2)
785
ROM_CONTINUE( 0x00c2, 0x033e)
786
ROM_CONTINUE( 0x0000, 0x00c2)
787
ROM_CONTINUE( 0x00c2, 0x033e)
788
ROM_CONTINUE( 0x0000, 0x00c2)
747
ROM_REGION( 0x1000, "gfx1", ROMREGION_DISPOSE )
790
ROM_REGION( 0x1000, "gfx1", 0 )
748
791
ROM_LOAD( "log2.8a", 0x0000, 0x800, CRC(ef3284ac) SHA1(8719c9df8c972a56c306b3c707aaa53092ffa2d6) )
749
792
ROM_LOAD( "log1-9-3.6a", 0x0800, 0x800, CRC(c434c14c) SHA1(3669aaf7adc6b250378bcf62eb8e7058f55476ef) )
759
802
ROM_LOAD( "cpu.9a", 0x4000, 0x2000, CRC(c7a50797) SHA1(60aa0a28ba970f12d0a0e538ae1c6807d105855c) )
760
803
ROM_LOAD( "cpu.8a", 0x6000, 0x2000, CRC(a718c6f2) SHA1(19afa8c353829232cb96c27b87f13b43166ab6fc) )
762
ROM_REGION( 0x3800, "audiocpu", 0 ) /* TMS9980 code */
805
ROM_REGION( 0x3800, "audiocpu", 0 ) /* TMS9980 code */
763
806
ROM_LOAD( "snd.13c", 0x0000, 0x0800, CRC(21e9350c) SHA1(f30a180309e373a17569351944f5e7982c3b3f9d) )
764
807
ROM_LOAD( "snd.13a", 0x0800, 0x1000, CRC(1de29f25) SHA1(535acb132266d6137b0610ee9a9b946459ae44af) )
765
808
ROM_LOAD( "snd.11a", 0x2800, 0x1000, CRC(61c74c79) SHA1(9f34d18a919446dd76857b851cea23fc1526f3c2) )
767
810
ROM_REGION( 0x1000, "mcu", 0 ) /* COP420 microcontroller code */
768
ROM_LOAD( "cop.bin", 0x0000, 0x1000, BAD_DUMP CRC(bbfd26d5) SHA1(5f78b32b6e7c003841ef5b635084db2cdfebf0e1) ) // overdumped 4 times, and starting PC is not 0
812
ROM_LOAD( "cop.bin", 0x0000, 0x0400, BAD_DUMP CRC(bbfd26d5) SHA1(5f78b32b6e7c003841ef5b635084db2cdfebf0e1) ) // overdumped 4 times, and starting PC is not 0
813
ROM_CONTINUE( 0x0000, 0x0400)
814
ROM_CONTINUE( 0x0000, 0x0400)
815
ROM_CONTINUE( 0x0000, 0x0400)
817
ROM_LOAD( "cop.bin", 0x00c2, 0x033e, CRC(bbfd26d5) SHA1(5f78b32b6e7c003841ef5b635084db2cdfebf0e1) ) // overdumped 4 times and shifted
818
ROM_CONTINUE( 0x0000, 0x00c2)
819
ROM_CONTINUE( 0x00c2, 0x033e)
820
ROM_CONTINUE( 0x0000, 0x00c2)
821
ROM_CONTINUE( 0x00c2, 0x033e)
822
ROM_CONTINUE( 0x0000, 0x00c2)
823
ROM_CONTINUE( 0x00c2, 0x033e)
824
ROM_CONTINUE( 0x0000, 0x00c2)
770
ROM_REGION( 0x1000, "gfx1", ROMREGION_DISPOSE )
826
ROM_REGION( 0x1000, "gfx1", 0 )
771
827
ROM_LOAD( "vid.8a", 0x0000, 0x800, CRC(459ccc55) SHA1(747f6789605b48be9e22f779f9e3f6c98ad4e594) )
772
828
ROM_LOAD( "vid.6a", 0x0800, 0x800, CRC(12ebbe74) SHA1(0f87c81a45d1bf3b8c6a70ee5e1a014069f67755) )
789
845
UINT8 *rom = memory_region(machine, "maincpu");
848
cop_io = auto_alloc_array(machine, UINT8, 0x08);
792
850
/* bitswap the TMS9995 ROMs */
793
851
for (i = 0; i < length; i++)
794
852
rom[i] = BITSWAP8(rom[i], 0,1,2,3,4,5,6,7);