void volfied_cchip_init(void) { state_save_register_int ("volfied", 0, "cc_bank", ¤t_bank); state_save_register_int ("volfied", 0, "cc_data", ¤t_data); state_save_register_int ("volfied", 0, "cc_flag", ¤t_flag); state_save_register_UINT8("volfied", 0, "cc_port", &cc_port, 1); }
void EEPROM_init(struct EEPROM_interface *interface) { intf = interface; if ((1 << intf->address_bits) * intf->data_bits / 8 > MEMORY_SIZE) { usrintf_showmessage("EEPROM larger than eeprom.c allows"); return; } memset(eeprom_data,0xff,(1 << intf->address_bits) * intf->data_bits / 8); serial_count = 0; latch = 0; reset_line = ASSERT_LINE; clock_line = ASSERT_LINE; eeprom_read_address = 0; sending = 0; if (intf->cmd_unlock) locked = 1; else locked = 0; state_save_register_UINT8("eeprom", 0, "data", eeprom_data, MEMORY_SIZE); state_save_register_UINT8("eeprom", 0, "serial buffer", serial_buffer, SERIAL_BUFFER_LENGTH); state_save_register_int ("eeprom", 0, "clock line", &clock_line); state_save_register_int ("eeprom", 0, "reset line", &reset_line); state_save_register_int ("eeprom", 0, "locked", &locked); state_save_register_int ("eeprom", 0, "serial count", &serial_count); state_save_register_int ("eeprom", 0, "latch", &latch); state_save_register_int ("eeprom", 0, "reset delay", &reset_delay); state_save_register_int ("eeprom", 0, "clock count", &eeprom_clock_count); state_save_register_int ("eeprom", 0, "data bits", &eeprom_data_bits); state_save_register_int ("eeprom", 0, "address", &eeprom_read_address); }
MACHINE_DRIVER_END /*******************************************************************/ static DRIVER_INIT( tceptor ) { state_save_register_int("tceptor", 0, "m6809_irq_enable", &m6809_irq_enable); state_save_register_int("tceptor", 0, "m68k_irq_enable", &m68k_irq_enable); state_save_register_int("tceptor", 0, "mcu_irq_enable", &mcu_irq_enable); }
void *exidy440_sh_start(int clock, const struct CustomSound_interface *config) { int i, length; /* reset the system */ exidy440_sound_command = 0; exidy440_sound_command_ack = 1; state_save_register_global(exidy440_sound_command); state_save_register_global(exidy440_sound_command_ack); /* reset the 6844 */ for (i = 0; i < 4; i++) { m6844_channel[i].active = 0; m6844_channel[i].control = 0x00; } m6844_priority = 0x00; m6844_interrupt = 0x00; m6844_chain = 0x00; state_save_register_int("m6844", 0, "priority", &m6844_priority); state_save_register_int("m6844", 0, "interrupt", &m6844_interrupt); state_save_register_int("m6844", 0, "chain", &m6844_chain); channel_frequency[0] = clock; /* channels 0 and 1 are run by FCLK */ channel_frequency[1] = clock; channel_frequency[2] = clock/2; /* channels 2 and 3 are run by SCLK */ channel_frequency[3] = clock/2; /* get stream channels */ stream = stream_create(0, 2, clock, NULL, channel_update); /* allocate the sample cache */ length = memory_region_length(REGION_SOUND1) * 16 + MAX_CACHE_ENTRIES * sizeof(sound_cache_entry); sound_cache = auto_malloc(length); /* determine the hard end of the cache and reset */ sound_cache_max = (sound_cache_entry *)((UINT8 *)sound_cache + length); reset_sound_cache(); /* allocate the mixer buffer */ mixer_buffer_left = auto_malloc(2 * clock * sizeof(INT32)); mixer_buffer_right = mixer_buffer_left + clock; if (SOUND_LOG) debuglog = fopen("sound.log", "w"); return auto_malloc(1); }
ROM_END static DRIVER_INIT( taitoh ) { state_save_register_int("sound1", 0, "sound region", &banknum); state_save_register_func_postload(reset_sound_region); }
/*************************************************************************** Game driver(s) ***************************************************************************/ ROM_START( rastan ) ROM_REGION( 0x60000, REGION_CPU1, 0 ) /* 6*64k for 68000 code */ ROM_LOAD16_BYTE( "ic19_38.bin", 0x00000, 0x10000, 0x1c91dbb1 ) ROM_LOAD16_BYTE( "ic07_37.bin", 0x00001, 0x10000, 0xecf20bdd ) ROM_LOAD16_BYTE( "ic20_40.bin", 0x20000, 0x10000, 0x0930d4b3 ) ROM_LOAD16_BYTE( "ic08_39.bin", 0x20001, 0x10000, 0xd95ade5e ) ROM_LOAD16_BYTE( "ic21_42.bin", 0x40000, 0x10000, 0x1857a7cb ) ROM_LOAD16_BYTE( "ic09_43.bin", 0x40001, 0x10000, 0xc34b9152 ) ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* 64k for the audio CPU */ ROM_LOAD( "ic49_19.bin", 0x00000, 0x4000, 0xee81fdd8 ) ROM_CONTINUE( 0x10000, 0xc000 ) ROM_REGION( 0x080000, REGION_GFX1, ROMREGION_DISPOSE ) ROM_LOAD( "ic40_01.bin", 0x00000, 0x20000, 0xcd30de19 ) /* 8x8 0 */ ROM_LOAD( "ic39_03.bin", 0x20000, 0x20000, 0xab67e064 ) /* 8x8 0 */ ROM_LOAD( "ic67_02.bin", 0x40000, 0x20000, 0x54040fec ) /* 8x8 1 */ ROM_LOAD( "ic66_04.bin", 0x60000, 0x20000, 0x94737e93 ) /* 8x8 1 */ ROM_REGION( 0x080000, REGION_GFX2, ROMREGION_DISPOSE ) ROM_LOAD( "ic15_05.bin", 0x00000, 0x20000, 0xc22d94ac ) /* sprites 1a */ ROM_LOAD( "ic14_07.bin", 0x20000, 0x20000, 0xb5632a51 ) /* sprites 3a */ ROM_LOAD( "ic28_06.bin", 0x40000, 0x20000, 0x002ccf39 ) /* sprites 1b */ ROM_LOAD( "ic27_08.bin", 0x60000, 0x20000, 0xfeafca05 ) /* sprites 3b */ ROM_REGION( 0x10000, REGION_SOUND1, 0 ) /* 64k for the samples */ ROM_LOAD( "ic76_20.bin", 0x0000, 0x10000, 0xfd1a34cc ) /* samples are 4bit ADPCM */ ROM_END ROM_START( rastanu ) ROM_REGION( 0x60000, REGION_CPU1, 0 ) /* 6*64k for 68000 code */ ROM_LOAD16_BYTE( "ic19_38.bin", 0x00000, 0x10000, 0x1c91dbb1 ) ROM_LOAD16_BYTE( "ic07_37.bin", 0x00001, 0x10000, 0xecf20bdd ) ROM_LOAD16_BYTE( "b04-45.20", 0x20000, 0x10000, 0x362812dd ) ROM_LOAD16_BYTE( "b04-44.8", 0x20001, 0x10000, 0x51cc5508 ) ROM_LOAD16_BYTE( "ic21_42.bin", 0x40000, 0x10000, 0x1857a7cb ) ROM_LOAD16_BYTE( "b04-41-1.9", 0x40001, 0x10000, 0xbd403269 ) ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* 64k for the audio CPU */ ROM_LOAD( "ic49_19.bin", 0x00000, 0x4000, 0xee81fdd8 ) ROM_CONTINUE( 0x10000, 0xc000 ) ROM_REGION( 0x080000, REGION_GFX1, ROMREGION_DISPOSE ) ROM_LOAD( "ic40_01.bin", 0x00000, 0x20000, 0xcd30de19 ) /* 8x8 0 */ ROM_LOAD( "ic39_03.bin", 0x20000, 0x20000, 0xab67e064 ) /* 8x8 0 */ ROM_LOAD( "ic67_02.bin", 0x40000, 0x20000, 0x54040fec ) /* 8x8 1 */ ROM_LOAD( "ic66_04.bin", 0x60000, 0x20000, 0x94737e93 ) /* 8x8 1 */ ROM_REGION( 0x080000, REGION_GFX2, ROMREGION_DISPOSE ) ROM_LOAD( "ic15_05.bin", 0x00000, 0x20000, 0xc22d94ac ) /* sprites 1a */ ROM_LOAD( "ic14_07.bin", 0x20000, 0x20000, 0xb5632a51 ) /* sprites 3a */ ROM_LOAD( "ic28_06.bin", 0x40000, 0x20000, 0x002ccf39 ) /* sprites 1b */ ROM_LOAD( "ic27_08.bin", 0x60000, 0x20000, 0xfeafca05 ) /* sprites 3b */ ROM_REGION( 0x10000, REGION_SOUND1, 0 ) /* 64k for the samples */ ROM_LOAD( "ic76_20.bin", 0x0000, 0x10000, 0xfd1a34cc ) /* samples are 4bit ADPCM */ ROM_END ROM_START( rastanu2 ) ROM_REGION( 0x60000, REGION_CPU1, 0 ) /* 6*64k for 68000 code */ ROM_LOAD16_BYTE( "rs19_38.bin", 0x00000, 0x10000, 0xa38ac909 ) ROM_LOAD16_BYTE( "b04-21.7", 0x00001, 0x10000, 0x7c8dde9a ) ROM_LOAD16_BYTE( "b04-23.20", 0x20000, 0x10000, 0x254b3dce ) ROM_LOAD16_BYTE( "b04-22.8", 0x20001, 0x10000, 0x98e8edcf ) ROM_LOAD16_BYTE( "b04-25.21", 0x40000, 0x10000, 0xd1e5adee ) ROM_LOAD16_BYTE( "b04-24.9", 0x40001, 0x10000, 0xa3dcc106 ) ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* 64k for the audio CPU */ ROM_LOAD( "ic49_19.bin", 0x00000, 0x4000, 0xee81fdd8 ) ROM_CONTINUE( 0x10000, 0xc000 ) ROM_REGION( 0x080000, REGION_GFX1, ROMREGION_DISPOSE ) ROM_LOAD( "ic40_01.bin", 0x00000, 0x20000, 0xcd30de19 ) /* 8x8 0 */ ROM_LOAD( "ic39_03.bin", 0x20000, 0x20000, 0xab67e064 ) /* 8x8 0 */ ROM_LOAD( "ic67_02.bin", 0x40000, 0x20000, 0x54040fec ) /* 8x8 1 */ ROM_LOAD( "ic66_04.bin", 0x60000, 0x20000, 0x94737e93 ) /* 8x8 1 */ ROM_REGION( 0x080000, REGION_GFX2, ROMREGION_DISPOSE ) ROM_LOAD( "ic15_05.bin", 0x00000, 0x20000, 0xc22d94ac ) /* sprites 1a */ ROM_LOAD( "ic14_07.bin", 0x20000, 0x20000, 0xb5632a51 ) /* sprites 3a */ ROM_LOAD( "ic28_06.bin", 0x40000, 0x20000, 0x002ccf39 ) /* sprites 1b */ ROM_LOAD( "ic27_08.bin", 0x60000, 0x20000, 0xfeafca05 ) /* sprites 3b */ ROM_REGION( 0x10000, REGION_SOUND1, 0 ) /* 64k for the samples */ ROM_LOAD( "ic76_20.bin", 0x0000, 0x10000, 0xfd1a34cc ) /* samples are 4bit ADPCM */ ROM_END ROM_START( rastsaga ) ROM_REGION( 0x60000, REGION_CPU1, 0 ) /* 6*64k for 68000 code */ ROM_LOAD16_BYTE( "rs19_38.bin", 0x00000, 0x10000, 0xa38ac909 ) ROM_LOAD16_BYTE( "rs07_37.bin", 0x00001, 0x10000, 0xbad60872 ) ROM_LOAD16_BYTE( "rs20_40.bin", 0x20000, 0x10000, 0x6bcf70dc ) ROM_LOAD16_BYTE( "rs08_39.bin", 0x20001, 0x10000, 0x8838ecc5 ) ROM_LOAD16_BYTE( "rs21_42.bin", 0x40000, 0x10000, 0xb626c439 ) ROM_LOAD16_BYTE( "rs09_43.bin", 0x40001, 0x10000, 0xc928a516 ) ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* 64k for the audio CPU */ ROM_LOAD( "ic49_19.bin", 0x00000, 0x4000, 0xee81fdd8 ) ROM_CONTINUE( 0x10000, 0xc000 ) ROM_REGION( 0x080000, REGION_GFX1, ROMREGION_DISPOSE ) ROM_LOAD( "ic40_01.bin", 0x00000, 0x20000, 0xcd30de19 ) /* 8x8 0 */ ROM_LOAD( "ic39_03.bin", 0x20000, 0x20000, 0xab67e064 ) /* 8x8 0 */ ROM_LOAD( "ic67_02.bin", 0x40000, 0x20000, 0x54040fec ) /* 8x8 1 */ ROM_LOAD( "ic66_04.bin", 0x60000, 0x20000, 0x94737e93 ) /* 8x8 1 */ ROM_REGION( 0x080000, REGION_GFX2, ROMREGION_DISPOSE ) ROM_LOAD( "ic15_05.bin", 0x00000, 0x20000, 0xc22d94ac ) /* sprites 1a */ ROM_LOAD( "ic14_07.bin", 0x20000, 0x20000, 0xb5632a51 ) /* sprites 3a */ ROM_LOAD( "ic28_06.bin", 0x40000, 0x20000, 0x002ccf39 ) /* sprites 1b */ ROM_LOAD( "ic27_08.bin", 0x60000, 0x20000, 0xfeafca05 ) /* sprites 3b */ ROM_REGION( 0x10000, REGION_SOUND1, 0 ) /* 64k for the samples */ ROM_LOAD( "ic76_20.bin", 0x0000, 0x10000, 0xfd1a34cc ) /* samples are 4bit ADPCM */ ROM_END static void init_rastan(void) { state_save_register_int("sound", 0, "sound region", &banknum); state_save_register_func_postload(reset_sound_region); }
void am53cf96_init( struct AM53CF96interface *interface ) { const struct hard_disk_info *hdinfo; // save interface pointer for later intf = interface; memset(scsi_regs, 0, sizeof(scsi_regs)); // try to open the disk if (interface->device == AM53CF96_DEVICE_HDD) { disk = hard_disk_open(get_disk_handle(0)); if (!disk) { logerror("53cf96: no disk found!\n"); } else { hdinfo = hard_disk_get_info(disk); if (hdinfo->sectorbytes != 512) { logerror("53cf96: Error! invalid sector size %d\n", hdinfo->sectorbytes); } } } else if (interface->device == AM53CF96_DEVICE_CDROM) { logerror("53cf96: CDROM not yet supported!\n"); } else { logerror("53cf96: unknown device type!\n"); } state_save_register_UINT8("53cf96", 0, "registers", scsi_regs, 32); state_save_register_UINT8("53cf96", 0, "fifo", fifo, 16); state_save_register_UINT8("53cf96", 0, "fifo pointer", &fptr, 1); state_save_register_UINT8("53cf96", 0, "last scsi-2 command", &last_cmd, 1); state_save_register_UINT8("53cf96", 0, "transfer state", &xfer_state, 1); state_save_register_int("53cf96", 0, "current lba", &lba); state_save_register_int("53cf96", 0, "blocks to read", &blocks); }
ROM_END static DRIVER_INIT( lethalen ) { konami_rom_deinterleave_2_half(REGION_GFX2); konami_rom_deinterleave_2(REGION_GFX3); konami_rom_deinterleave_2(REGION_GFX4); state_save_register_int("LE", 0, "control2", &cur_control2); }
static DRIVER_INIT( quizf1 ) { irem_cpu_decrypt(0,lethalth_decryption_table); bankaddress = 0; set_m90_bank(); state_save_register_int("main", 0, "bankaddress", &bankaddress); state_save_register_func_postload(set_m90_bank); }
static DRIVER_INIT( jumping ) { int i; /* Sprite colour map is reversed - switch to normal */ for (i = 0;i < memory_region_length(REGION_GFX2);i++) memory_region(REGION_GFX2)[i] ^= 0xff; state_save_register_int("jumping", 0, "sound", &jumping_latch); }
ROM_END static DRIVER_INIT( ninjaw ) { cpua_ctrl = 0xff; state_save_register_UINT16("main1", 0, "control", &cpua_ctrl, 1); state_save_register_func_postload(parse_control); state_save_register_int("sound1", 0, "sound region", &banknum); state_save_register_func_postload(reset_sound_region); }
int ide_controller_init_custom(int which, struct ide_interface *intf, struct chd_file *diskhandle) { struct ide_state *ide = &idestate[which]; const struct hard_disk_info *hdinfo; /* NULL interface is immediate failure */ if (!intf) return 1; /* reset the IDE state */ memset(ide, 0, sizeof(*ide)); ide->intf = intf; /* set MAME harddisk handle */ ide->disk = hard_disk_open(diskhandle); /* get and copy the geometry */ if (ide->disk) { hdinfo = hard_disk_get_info(ide->disk); ide->num_cylinders = hdinfo->cylinders; ide->num_sectors = hdinfo->sectors; ide->num_heads = hdinfo->heads; if (hdinfo->sectorbytes != IDE_DISK_SECTOR_SIZE) /* wrong sector len */ return 1; #if PRINTF_IDE_COMMANDS printf("CHS: %d %d %d\n", ide->num_cylinders, ide->num_heads, ide->num_sectors); #endif } /* build the features page */ ide_build_features(ide); /* create a timer for timing status */ ide->last_status_timer = timer_alloc(NULL); ide->reset_timer = timer_alloc(reset_callback); /* register ide status */ state_save_register_UINT8 ("ide", which, "adapter_control", &ide->adapter_control, 1); state_save_register_UINT8 ("ide", which, "status", &ide->status, 1); state_save_register_UINT8 ("ide", which, "error", &ide->error, 1); state_save_register_UINT8 ("ide", which, "command", &ide->command, 1); state_save_register_UINT8 ("ide", which, "interrupt_pending", &ide->interrupt_pending, 1); state_save_register_UINT8 ("ide", which, "precomp_offset", &ide->precomp_offset, 1); state_save_register_UINT8 ("ide", which, "buffer", ide->buffer, IDE_DISK_SECTOR_SIZE); state_save_register_UINT8 ("ide", which, "features", ide->features, IDE_DISK_SECTOR_SIZE); state_save_register_UINT16("ide", which, "buffer_offset", &ide->buffer_offset, 1); state_save_register_UINT16("ide", which, "sector_count", &ide->sector_count, 1); state_save_register_UINT16("ide", which, "block_count", &ide->block_count, 1); state_save_register_UINT16("ide", which, "sectors_until_int", &ide->sectors_until_int, 1); state_save_register_UINT8 ("ide", which, "dma_active", &ide->dma_active, 1); state_save_register_UINT8 ("ide", which, "dma_cpu", &ide->dma_cpu, 1); state_save_register_UINT8 ("ide", which, "dma_address_xor", &ide->dma_address_xor, 1); state_save_register_UINT8 ("ide", which, "dma_last_buffer", &ide->dma_last_buffer, 1); state_save_register_UINT32("ide", which, "dma_address", &ide->dma_address, 1); state_save_register_UINT32("ide", which, "dma_descriptor", &ide->dma_descriptor, 1); state_save_register_UINT32("ide", which, "dma_bytes_left", &ide->dma_bytes_left, 1); state_save_register_UINT8 ("ide", which, "bus_master_command", &ide->bus_master_command, 1); state_save_register_UINT8 ("ide", which, "bus_master_status", &ide->bus_master_status, 1); state_save_register_UINT32("ide", which, "bus_master_descriptor", &ide->bus_master_descriptor, 1); state_save_register_UINT16("ide", which, "cur_cylinder", &ide->cur_cylinder, 1); state_save_register_UINT8 ("ide", which, "cur_sector", &ide->cur_sector, 1); state_save_register_UINT8 ("ide", which, "cur_head", &ide->cur_head, 1); state_save_register_UINT8 ("ide", which, "cur_head_reg", &ide->cur_head_reg, 1); state_save_register_UINT32("ide", which, "cur_lba", &ide->cur_lba, 1); state_save_register_UINT16("ide", which, "num_cylinders", &ide->num_cylinders, 1); state_save_register_UINT8 ("ide", which, "num_sectors", &ide->num_sectors, 1); state_save_register_UINT8 ("ide", which, "num_heads", &ide->num_heads, 1); state_save_register_UINT8 ("ide", which, "config_unknown", &ide->config_unknown, 1); state_save_register_UINT8 ("ide", which, "config_register", ide->config_register, IDE_CONFIG_REGISTERS); state_save_register_UINT8 ("ide", which, "config_register_num", &ide->config_register_num, 1); state_save_register_int ("ide", which, "master_password_enable", &ide->master_password_enable); state_save_register_int ("ide", which, "user_password_enable", &ide->user_password_enable); return 0; }
static void *qsound_start(int sndindex, int clock, const void *config) { struct qsound_info *chip; int i; chip = auto_malloc(sizeof(*chip)); memset(chip, 0, sizeof(chip)); if (Machine->sample_rate == 0) return 0; chip->intf = config; chip->sample_rom = (QSOUND_SRC_SAMPLE *)memory_region(chip->intf->region); memset(chip->channel, 0, sizeof(chip->channel)); #if QSOUND_DRIVER1 chip->frq_ratio = ((float)clock / (float)QSOUND_CLOCKDIV) / (float) Machine->sample_rate; chip->frq_ratio *= 16.0; /* Create pan table */ for (i=0; i<33; i++) { chip->pan_table[i]=(int)((256/sqrt(32)) * sqrt(i)); } #else i=0; #endif #if LOG_QSOUND logerror("Pan table\n"); for (i=0; i<33; i++) logerror("%02x ", chip->pan_table[i]); #endif { /* Allocate stream */ #define CHANNELS ( 2 ) chip->stream = stream_create( 0, CHANNELS, Machine->sample_rate, chip, qsound_update ); } #if LOG_WAVE chip->fpRawDataR=fopen("qsoundr.raw", "w+b"); chip->fpRawDataL=fopen("qsoundl.raw", "w+b"); if (!chip->fpRawDataR || !chip->fpRawDataL) { return NULL; } #endif #if QSOUND_DRIVER1 /* state save (DRIVER1) */ for (i=0; i<QSOUND_CHANNELS; i++) { state_save_register_int("QSound", sndindex*QSOUND_CHANNELS+i, "bank", &chip->channel[i].bank); state_save_register_int("QSound", sndindex*QSOUND_CHANNELS+i, "address", &chip->channel[i].address); state_save_register_int("QSound", sndindex*QSOUND_CHANNELS+i, "pitch", &chip->channel[i].pitch); state_save_register_int("QSound", sndindex*QSOUND_CHANNELS+i, "loop", &chip->channel[i].loop); state_save_register_int("QSound", sndindex*QSOUND_CHANNELS+i, "end", &chip->channel[i].end); state_save_register_int("QSound", sndindex*QSOUND_CHANNELS+i, "vol", &chip->channel[i].vol); state_save_register_int("QSound", sndindex*QSOUND_CHANNELS+i, "pan", &chip->channel[i].pan); state_save_register_int("QSound", sndindex*QSOUND_CHANNELS+i, "key", &chip->channel[i].key); state_save_register_int("QSound", sndindex*QSOUND_CHANNELS+i, "lvol", &chip->channel[i].lvol); state_save_register_int("QSound", sndindex*QSOUND_CHANNELS+i, "rvol", &chip->channel[i].rvol); state_save_register_int("QSound", sndindex*QSOUND_CHANNELS+i, "lastdt", &chip->channel[i].lastdt); state_save_register_int("QSound", sndindex*QSOUND_CHANNELS+i, "offset", &chip->channel[i].offset); } #endif return chip; }
ROM_END static void init_bombjack(void) { state_save_register_int ("main", 0, "sound latch", &latch); }