Previous 199869 Revisions Next

r17756 Sunday 9th September, 2012 at 16:11:37 UTC by hap
rommask makes more sense
[src/emu/sound]upd7759.c
[src/mame/drivers]homerun.c snk68.c

trunk/src/mame/drivers/snk68.c
r17755r17756
665665   ROM_LOAD16_BYTE( "snk880.22a", 0x1c0000, 0x20000, CRC(aa9c00d8) SHA1(1017ed1cc036c6084b71204a998fd05557a6e59f) )
666666   ROM_LOAD16_BYTE( "snk880.26a", 0x1c0001, 0x20000, CRC(9bc261c5) SHA1(f07fef465191d48ccc149d1a62e6382d3fc0ef9f) )
667667
668   ROM_REGION( 0x20000, "upd", ROMREGION_ERASE00 )   /* UPD7759 samples */
668   ROM_REGION( 0x10000, "upd", 0 )   /* UPD7759 samples */
669669   ROM_LOAD( "dg7.d20",  0x000000, 0x10000, CRC(aba9a9d3) SHA1(5098cd3a064b8ede24797de8879a277d79e79d75) )
670670
671671   ROM_REGION( 0x0100, "plds", 0 )
r17755r17756
702702   ROM_LOAD16_BYTE( "snk880.22a", 0x1c0000, 0x20000, CRC(aa9c00d8) SHA1(1017ed1cc036c6084b71204a998fd05557a6e59f) )
703703   ROM_LOAD16_BYTE( "snk880.26a", 0x1c0001, 0x20000, CRC(9bc261c5) SHA1(f07fef465191d48ccc149d1a62e6382d3fc0ef9f) )
704704
705   ROM_REGION( 0x20000, "upd", ROMREGION_ERASE00 )   /* UPD7759 samples */
705   ROM_REGION( 0x10000, "upd", 0 )   /* UPD7759 samples */
706706   ROM_LOAD( "dg7.d20",  0x000000, 0x10000, CRC(aba9a9d3) SHA1(5098cd3a064b8ede24797de8879a277d79e79d75) )
707707
708708   ROM_REGION( 0x0100, "plds", 0 )
trunk/src/mame/drivers/homerun.c
r17755r17756
361361   ROM_REGION( 0x20000, "gfx2", 0 )
362362   ROM_LOAD( "homerun.ic120",  0x00000, 0x20000, CRC(52f0709b) SHA1(19e675bcccadb774f60ec5929fc1fb5cf0d3f617) )
363363
364   ROM_REGION( 0x20000, "d7756c", ROMREGION_ERASE00 )
364   ROM_REGION( 0x08000, "d7756c", ROMREGION_ERASE00 )
365365   ROM_LOAD( "d7756c.ic98",    0x00000, 0x08000, NO_DUMP ) /* D7756C built-in rom */
366366ROM_END
367367
r17755r17756
377377   ROM_REGION( 0x20000, "gfx2", 0 )
378378   ROM_LOAD( "2.ic120",        0x00000, 0x20000, CRC(bedf7b98) SHA1(cb6c5fcaf8df5f5c7636c3c8f79b9dda78e30c2e) )
379379
380   ROM_REGION( 0x20000, "d7756c", ROMREGION_ERASE00 )
380   ROM_REGION( 0x08000, "d7756c", ROMREGION_ERASE00 )
381381   ROM_LOAD( "d7756c.ic98",    0x00000, 0x08000, NO_DUMP ) /* D7756C built-in rom */
382382ROM_END
383383
r17755r17756
393393   ROM_REGION( 0x20000, "gfx2", 0 )
394394   ROM_LOAD( "2.ic120",        0x00000, 0x20000, CRC(e65d4d57) SHA1(2ec9e5bdaa94b808573313b6eca657d798004b53) )
395395
396   ROM_REGION( 0x20000, "d7756c", ROMREGION_ERASE00 )
396   ROM_REGION( 0x08000, "d7756c", 0 )
397397   ROM_LOAD( "d77p56cr.ic98",  0x00000, 0x08000, CRC(06a234ac) SHA1(b4ceff3f9f78551cf4a085642e162e33b266f067) ) /* D77P56CR OTP rom (One-Time Programmable, note the extra P) */
398398ROM_END
399399
trunk/src/emu/sound/upd7759.c
r17755r17756
189189   UINT8 *      rom;                  /* pointer to ROM data or NULL for slave mode */
190190   UINT8 *      rombase;               /* pointer to ROM data or NULL for slave mode */
191191   UINT32      romoffset;               /* ROM offset to make save/restore easier */
192   UINT32      rommask;               /* maximum address offset */
192193};
193194
194195
r17755r17756
342343      case STATE_ADDR_LSB:
343344         chip->offset |= (chip->rom ? chip->rom[chip->req_sample * 2 + 6] : chip->fifo_in) << chip->sample_offset_shift;
344345         if (DEBUG_STATES) DEBUG_METHOD("UPD7759: offset_lo = %02X, requesting dummy 2\n", (chip->offset >> chip->sample_offset_shift) & 0xff);
346         if (chip->offset > chip->rommask) logerror("upd7759 offset %X > rommask %X\n",chip->offset, chip->rommask);
345347         chip->drq = 1;
346348
347349         /* 36 cycles later, we will latch this value and request another byte */
r17755r17756
371373            chip->repeat_count--;
372374            chip->offset = chip->repeat_offset;
373375         }
374         chip->block_header = chip->rom ? chip->rom[chip->offset++ & 0x1ffff] : chip->fifo_in;
376         chip->block_header = chip->rom ? chip->rom[chip->offset++ & chip->rommask] : chip->fifo_in;
375377         if (DEBUG_STATES) DEBUG_METHOD("UPD7759: header (@%05X) = %02X, requesting next byte\n", chip->offset, chip->block_header);
376378         chip->drq = 1;
377379
r17755r17756
414416      /* Nibble count state: latch the number of nibbles to play and request another byte */
415417      /* The expected response will be the first data byte */
416418      case STATE_NIBBLE_COUNT:
417         chip->nibbles_left = (chip->rom ? chip->rom[chip->offset++ & 0x1ffff] : chip->fifo_in) + 1;
419         chip->nibbles_left = (chip->rom ? chip->rom[chip->offset++ & chip->rommask] : chip->fifo_in) + 1;
418420         if (DEBUG_STATES) DEBUG_METHOD("UPD7759: nibble_count = %u, requesting next byte\n", (unsigned)chip->nibbles_left);
419421         chip->drq = 1;
420422
r17755r17756
426428      /* MSN state: latch the data for this pair of samples and request another byte */
427429      /* The expected response will be the next sample data or another header */
428430      case STATE_NIBBLE_MSN:
429         chip->adpcm_data = chip->rom ? chip->rom[chip->offset++ & 0x1ffff] : chip->fifo_in;
431         chip->adpcm_data = chip->rom ? chip->rom[chip->offset++ & chip->rommask] : chip->fifo_in;
430432         update_adpcm(chip, chip->adpcm_data >> 4);
431433         chip->drq = 1;
432434
r17755r17756
544546   advance_state(chip);
545547
546548   /* if the DRQ changed, update it */
547   logerror("slave_update: DRQ %d->%d\n", olddrq, chip->drq);
549   logerror("upd7759_slave_update: DRQ %d->%d\n", olddrq, chip->drq);
548550   if (olddrq != chip->drq && chip->drqcallback)
549551      (*chip->drqcallback)(chip->device, chip->drq);
550552
r17755r17756
662664   chip->romoffset = 0;
663665   chip->rom = chip->rombase = *device->region();
664666   if (chip->rombase == NULL)
667   {
665668      chip->timer = device->machine().scheduler().timer_alloc(FUNC(upd7759_slave_update), chip);
669      chip->rommask = 0;
670   }
666671   else
667      assert((device->region()->bytes() & 0x1ffff) == 0);
672   {
673      UINT32 romsize = device->region()->bytes();
674      if (romsize >= 0x20000) chip->rommask = 0x1ffff;
675      else chip->rommask = romsize - 1;
676   }
668677
669678   /* set the DRQ callback */
670679   chip->drqcallback = intf->drqcallback;

Previous 199869 Revisions Next


© 1997-2024 The MAME Team