diff options
author | Aaron Giles <aaron@aarongiles.com> | 2008-08-22 02:43:32 +0000 |
---|---|---|
committer | Aaron Giles <aaron@aarongiles.com> | 2008-08-22 02:43:32 +0000 |
commit | 7521888dd7eb024f1e83c516360c7584097a242e (patch) | |
tree | f9f50515275c6b76798bc7e9c6a425347257f5a8 | |
parent | ba5fd30bf8a37e53ffa5b378e47a4ec0c1a7f200 (diff) |
Added PR-8210 support to the ldplayer. Fixed step forward command on the PR-8210.
02136: cubeqst: from minimal UI cubeqst requires the optional CHD
02127: xymg: The game name should be Xing Yun Man Guan and "Pin Yin:"should be omitted
02138: flamegun: Debugger/Cheat System upper case cpu tag of MAIN doesn't work
02139: In audio/system16.c, there is a reference to REGION_SOUND1
02133: chindrah: The title of Zhong Guo Long?(Hong Kong,V011H) is Dong Fang Zhi Zhu(Hong Kong, V011H)
02126: corrupt CHDs are reported as missing
-rw-r--r-- | .gitattributes | 1 | ||||
-rw-r--r-- | src/emu/audit.c | 4 | ||||
-rw-r--r-- | src/emu/debug/debugcpu.c | 29 | ||||
-rw-r--r-- | src/emu/machine/laserdsc.c | 7 | ||||
-rw-r--r-- | src/emu/romload.c | 11 | ||||
-rw-r--r-- | src/ldplayer/ldpdriv.c | 1 | ||||
-rw-r--r-- | src/ldplayer/ldplayer.c | 341 | ||||
-rw-r--r-- | src/mame/audio/system16.c | 115 | ||||
-rw-r--r-- | src/mame/drivers/igs_blit.c | 28 | ||||
-rw-r--r-- | src/mame/drivers/system16.c | 15 |
10 files changed, 307 insertions, 245 deletions
diff --git a/.gitattributes b/.gitattributes index 37315a5e04c..913901c3e0e 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1169,7 +1169,6 @@ src/mame/audio/sprint4.h svneol=native#text/plain src/mame/audio/starwars.c svneol=native#text/plain src/mame/audio/subs.c svneol=native#text/plain src/mame/audio/suna8.c svneol=native#text/plain -src/mame/audio/system16.c svneol=native#text/plain src/mame/audio/t5182.c svneol=native#text/plain src/mame/audio/t5182.h svneol=native#text/plain src/mame/audio/taito_en.c svneol=native#text/plain diff --git a/src/emu/audit.c b/src/emu/audit.c index 3ad452149b6..75858f13832 100644 --- a/src/emu/audit.c +++ b/src/emu/audit.c @@ -437,6 +437,10 @@ static int audit_one_disk(core_options *options, const rom_entry *rom, const gam else if (hash_data_has_info(record->exphash, HASH_INFO_NO_DUMP)) set_status(record, AUDIT_STATUS_NOT_FOUND, SUBSTATUS_NOT_FOUND_NODUMP); + /* not found but optional */ + else if (DISK_ISOPTIONAL(rom)) + set_status(record, AUDIT_STATUS_NOT_FOUND, SUBSTATUS_NOT_FOUND_OPTIONAL); + /* not found at all */ else set_status(record, AUDIT_STATUS_NOT_FOUND, SUBSTATUS_NOT_FOUND); diff --git a/src/emu/debug/debugcpu.c b/src/emu/debug/debugcpu.c index 6454d73fe7f..3336a597a5a 100644 --- a/src/emu/debug/debugcpu.c +++ b/src/emu/debug/debugcpu.c @@ -2133,6 +2133,23 @@ UINT64 debug_read_opcode(offs_t address, int size, int arg) /*------------------------------------------------- + expression_cpu_index - return the CPU index + based on a case insensitive tag search +-------------------------------------------------*/ + +static int expression_cpu_index(running_machine *machine, const char *tag) +{ + int index; + + for (index = 0; index < ARRAY_LENGTH(machine->config->cpu); index++) + if (machine->config->cpu[index].tag != NULL && mame_stricmp(machine->config->cpu[index].tag, tag) == 0) + return index; + + return -1; +} + + +/*------------------------------------------------- expression_read_memory - read 1,2,4 or 8 bytes at the given offset in the given address space @@ -2147,14 +2164,14 @@ static UINT64 expression_read_memory(const char *name, int space, UINT32 address case EXPSPACE_PROGRAM: case EXPSPACE_DATA: case EXPSPACE_IO: - cpuindex = (name != NULL) ? mame_find_cpu_index(Machine, name) : cpu_getactivecpu(); + cpuindex = (name != NULL) ? expression_cpu_index(Machine, name) : cpu_getactivecpu(); if (cpuindex < 0) break; return expression_read_address_space(cpuindex, ADDRESS_SPACE_PROGRAM + (space - EXPSPACE_PROGRAM), address, size); case EXPSPACE_OPCODE: case EXPSPACE_RAMWRITE: - cpuindex = (name != NULL) ? mame_find_cpu_index(Machine, name) : cpu_getactivecpu(); + cpuindex = (name != NULL) ? expression_cpu_index(Machine, name) : cpu_getactivecpu(); if (cpuindex < 0) break; if (name == NULL) @@ -2356,7 +2373,7 @@ static void expression_write_memory(const char *name, int space, UINT32 address, case EXPSPACE_PROGRAM: case EXPSPACE_DATA: case EXPSPACE_IO: - cpuindex = (name != NULL) ? mame_find_cpu_index(Machine, name) : cpu_getactivecpu(); + cpuindex = (name != NULL) ? expression_cpu_index(Machine, name) : cpu_getactivecpu(); if (cpuindex < 0) break; expression_write_address_space(cpuindex, ADDRESS_SPACE_PROGRAM + (space - EXPSPACE_PROGRAM), address, size, data); @@ -2364,7 +2381,7 @@ static void expression_write_memory(const char *name, int space, UINT32 address, case EXPSPACE_OPCODE: case EXPSPACE_RAMWRITE: - cpuindex = (name != NULL) ? mame_find_cpu_index(Machine, name) : cpu_getactivecpu(); + cpuindex = (name != NULL) ? expression_cpu_index(Machine, name) : cpu_getactivecpu(); if (cpuindex < 0) break; expression_write_program_direct(cpuindex, (space == EXPSPACE_OPCODE), address, size, data); @@ -2589,7 +2606,7 @@ static EXPRERR expression_validate(const char *name, int space) case EXPSPACE_PROGRAM: case EXPSPACE_DATA: case EXPSPACE_IO: - cpuindex = (name != NULL) ? mame_find_cpu_index(Machine, name) : cpu_getactivecpu(); + cpuindex = (name != NULL) ? expression_cpu_index(Machine, name) : cpu_getactivecpu(); if (cpuindex < 0) return (name == NULL) ? EXPRERR_MISSING_MEMORY_NAME : EXPRERR_INVALID_MEMORY_NAME; if (cpunum_addrbus_width(cpuindex, ADDRESS_SPACE_PROGRAM + (space - EXPSPACE_PROGRAM)) == 0) @@ -2598,7 +2615,7 @@ static EXPRERR expression_validate(const char *name, int space) case EXPSPACE_OPCODE: case EXPSPACE_RAMWRITE: - cpuindex = (name != NULL) ? mame_find_cpu_index(Machine, name) : cpu_getactivecpu(); + cpuindex = (name != NULL) ? expression_cpu_index(Machine, name) : cpu_getactivecpu(); if (cpuindex < 0) return (name == NULL) ? EXPRERR_MISSING_MEMORY_NAME : EXPRERR_INVALID_MEMORY_NAME; break; diff --git a/src/emu/machine/laserdsc.c b/src/emu/machine/laserdsc.c index d9b0a25d88d..2a6bb0fcdd5 100644 --- a/src/emu/machine/laserdsc.c +++ b/src/emu/machine/laserdsc.c @@ -2602,9 +2602,12 @@ static void pr8210_command(laserdisc_state *ld) break; case 0x04: CMDPRINTF(("pr8210: Step forward\n")); - /* step forward */ + /* step forward one frame */ if (laserdisc_ready(ld)) - set_state(ld, LASERDISC_STEPPING_FORWARD, PR8210_STEP_SPEED, NULL_TARGET_FRAME); + { + set_state(ld, LASERDISC_STEPPING_FORWARD, STOP_SPEED, NULL_TARGET_FRAME); + add_to_current_track(ld, ONE_TRACK); + } break; case 0x06 : CMDPRINTF(("pr8210: Chapter\n")); diff --git a/src/emu/romload.c b/src/emu/romload.c index 58d215602bd..93d6f97a68e 100644 --- a/src/emu/romload.c +++ b/src/emu/romload.c @@ -1004,10 +1004,10 @@ static void process_disk_entries(rom_load_data *romdata, const char *regiontag, err = open_disk_image(Machine->gamedrv, romp, &chd.origfile, &chd.origchd); if (err != CHDERR_NONE) { - if (err == CHDERR_UNSUPPORTED_VERSION) - sprintf(&romdata->errorbuf[strlen(romdata->errorbuf)], "%s UNSUPPORTED CHD VERSION\n", astring_c(filename)); - else + if (err == CHDERR_FILE_NOT_FOUND) sprintf(&romdata->errorbuf[strlen(romdata->errorbuf)], "%s NOT FOUND\n", astring_c(filename)); + else + sprintf(&romdata->errorbuf[strlen(romdata->errorbuf)], "%s CHD ERROR: %s\n", astring_c(filename), chd_error_string(err)); /* if this is NO_DUMP, keep going, though the system may not be able to handle it */ if (hash_data_has_info(ROM_GETHASHDATA(romp), HASH_INFO_NO_DUMP) || DISK_ISOPTIONAL(romp)) @@ -1043,10 +1043,7 @@ static void process_disk_entries(rom_load_data *romdata, const char *regiontag, err = open_disk_diff(Machine->gamedrv, romp, chd.origchd, &chd.difffile, &chd.diffchd); if (err != CHDERR_NONE) { - if (err == CHDERR_UNSUPPORTED_VERSION) - sprintf(&romdata->errorbuf[strlen(romdata->errorbuf)], "%s UNSUPPORTED CHD VERSION\n", astring_c(filename)); - else - sprintf(&romdata->errorbuf[strlen(romdata->errorbuf)], "%s: CAN'T OPEN DIFF FILE\n", astring_c(filename)); + sprintf(&romdata->errorbuf[strlen(romdata->errorbuf)], "%s DIFF CHD ERROR: %s\n", astring_c(filename), chd_error_string(err)); romdata->errors++; continue; } diff --git a/src/ldplayer/ldpdriv.c b/src/ldplayer/ldpdriv.c index c25b3ad2343..1ded58502e6 100644 --- a/src/ldplayer/ldpdriv.c +++ b/src/ldplayer/ldpdriv.c @@ -39,5 +39,6 @@ const game_driver * const drivers[] = #else /* DRIVER_RECURSIVE */ DRIVER( ldv1000 ) /* Pioneer LD-V1000 */ + DRIVER( pr8210 ) /* Pioneer PR-8210 */ #endif /* DRIVER_RECURSIVE */ diff --git a/src/ldplayer/ldplayer.c b/src/ldplayer/ldplayer.c index e8a7bba492d..88528b23061 100644 --- a/src/ldplayer/ldplayer.c +++ b/src/ldplayer/ldplayer.c @@ -60,90 +60,12 @@ static input_port_value last_controls; static UINT8 playing; static UINT8 displaying; -static void (*execute_command)(const device_config *laserdisc, int command); - - - -/************************************* - * - * LD-V1000 implementation - * - *************************************/ - -static void ldv1000_execute(const device_config *laserdisc, int command) -{ - static const UINT8 digits[10] = { 0x3f, 0x0f, 0x8f, 0x4f, 0x2f, 0xaf, 0x6f, 0x1f, 0x9f, 0x5f }; - switch (command) - { - case CMD_SCAN_REVERSE: - laserdisc_data_w(laserdisc, 0xf8); - playing = TRUE; - break; - - case CMD_SCAN_REVERSE_END: - laserdisc_data_w(laserdisc, 0xfd); - playing = TRUE; - break; - - case CMD_STEP_REVERSE: - laserdisc_data_w(laserdisc, 0xfe); - playing = FALSE; - break; - - case CMD_SCAN_FORWARD: - laserdisc_data_w(laserdisc, 0xf0); - playing = TRUE; - break; +static UINT8 pr8210_last_was_number; +static emu_timer *pr8210_bit_timer; +static UINT32 pr8210_command_buffer_in, pr8210_command_buffer_out; +static UINT8 pr8210_command_buffer[10]; - case CMD_SCAN_FORWARD_END: - laserdisc_data_w(laserdisc, 0xfd); - playing = TRUE; - break; - - case CMD_STEP_FORWARD: - laserdisc_data_w(laserdisc, 0xf6); - playing = FALSE; - break; - - case CMD_PLAY: - laserdisc_data_w(laserdisc, 0xfd); - playing = TRUE; - break; - - case CMD_PAUSE: - laserdisc_data_w(laserdisc, 0xa0); - playing = FALSE; - break; - - case CMD_DISPLAY_ON: - laserdisc_data_w(laserdisc, digits[1]); - laserdisc_data_w(laserdisc, 0xf1); - break; - - case CMD_DISPLAY_OFF: - laserdisc_data_w(laserdisc, digits[0]); - laserdisc_data_w(laserdisc, 0xf1); - break; - - case CMD_0: - case CMD_1: - case CMD_2: - case CMD_3: - case CMD_4: - case CMD_5: - case CMD_6: - case CMD_7: - case CMD_8: - case CMD_9: - laserdisc_data_w(laserdisc, digits[command - CMD_0]); - break; - - case CMD_SEARCH: - laserdisc_data_w(laserdisc, 0xf7); - playing = FALSE; - break; - } -} +static void (*execute_command)(const device_config *laserdisc, int command); @@ -244,7 +166,7 @@ static TIMER_CALLBACK( autoplay ) const device_config *laserdisc = device_list_first(machine->config->devicelist, LASERDISC); /* start playing */ - laserdisc_data_w(laserdisc, 0xfd); + (*execute_command)(laserdisc, CMD_PLAY); playing = TRUE; displaying = FALSE; } @@ -263,6 +185,240 @@ static MACHINE_RESET( ldplayer ) /************************************* * + * PR-8210 implementation + * + *************************************/ + +INLINE void pr8210_add_command(UINT8 command) +{ + pr8210_command_buffer[pr8210_command_buffer_in++ % ARRAY_LENGTH(pr8210_command_buffer)] = (command & 0x1f) | 0x20; + pr8210_command_buffer[pr8210_command_buffer_in++ % ARRAY_LENGTH(pr8210_command_buffer)] = (command & 0x1f) | 0x20; + pr8210_command_buffer[pr8210_command_buffer_in++ % ARRAY_LENGTH(pr8210_command_buffer)] = 0x00 | 0x20; +} + + +static TIMER_CALLBACK( pr8210_bit_off_callback ) +{ + const device_config *laserdisc = ptr; + + /* deassert the control line */ + laserdisc_line_w(laserdisc, LASERDISC_LINE_CONTROL, CLEAR_LINE); +} + + +static TIMER_CALLBACK( pr8210_bit_callback ) +{ + attotime duration = ATTOTIME_IN_MSEC(30); + const device_config *laserdisc = ptr; + UINT8 bitsleft = param >> 16; + UINT8 data = param; + + /* if we have bits, process */ + if (bitsleft != 0) + { + /* assert the line and set a timer for deassertion */ + laserdisc_line_w(laserdisc, LASERDISC_LINE_CONTROL, ASSERT_LINE); + timer_set(ATTOTIME_IN_USEC(250), ptr, 0, pr8210_bit_off_callback); + + /* space 0 bits apart by 1msec, and 1 bits by 2msec */ + duration = attotime_mul(ATTOTIME_IN_MSEC(1), (data & 0x80) ? 2 : 1); + data <<= 1; + bitsleft--; + } + + /* if we're out of bits, queue up the next command */ + else if (bitsleft == 0 && pr8210_command_buffer_in != pr8210_command_buffer_out) + { + data = pr8210_command_buffer[pr8210_command_buffer_out++ % ARRAY_LENGTH(pr8210_command_buffer)]; + bitsleft = 12; + } + timer_adjust_oneshot(pr8210_bit_timer, duration, (bitsleft << 16) | data); +} + + +static MACHINE_START( pr8210 ) +{ + const device_config *laserdisc = device_list_first(machine->config->devicelist, LASERDISC); + MACHINE_START_CALL(ldplayer); + pr8210_bit_timer = timer_alloc(pr8210_bit_callback, (void *)laserdisc); +} + + +static MACHINE_RESET( pr8210 ) +{ + MACHINE_RESET_CALL(ldplayer); + timer_adjust_oneshot(pr8210_bit_timer, attotime_zero, 0); +} + + +static void pr8210_execute(const device_config *laserdisc, int command) +{ + static const UINT8 digits[10] = { 0x01, 0x11, 0x09, 0x19, 0x05, 0x15, 0x0d, 0x1d, 0x03, 0x13 }; + int prev_was_number = pr8210_last_was_number; + + pr8210_last_was_number = FALSE; + switch (command) + { + case CMD_SCAN_REVERSE: + pr8210_add_command(0x1c); + playing = TRUE; + break; + + case CMD_SCAN_REVERSE_END: + pr8210_add_command(0x14); + playing = TRUE; + break; + + case CMD_STEP_REVERSE: + pr8210_add_command(0x12); + playing = FALSE; + break; + + case CMD_SCAN_FORWARD: + pr8210_add_command(0x08); + playing = TRUE; + break; + + case CMD_SCAN_FORWARD_END: + pr8210_add_command(0x14); + playing = TRUE; + break; + + case CMD_STEP_FORWARD: + pr8210_add_command(0x04); + playing = FALSE; + break; + + case CMD_PLAY: + pr8210_add_command(0x14); + playing = TRUE; + break; + + case CMD_PAUSE: + pr8210_add_command(0x0a); + playing = FALSE; + break; + + case CMD_DISPLAY_ON: +// pr8210_add_command(digits[1]); +// pr8210_add_command(0xf1); + break; + + case CMD_DISPLAY_OFF: +// pr8210_add_command(digits[0]); +// pr8210_add_command(0xf1); + break; + + case CMD_0: + case CMD_1: + case CMD_2: + case CMD_3: + case CMD_4: + case CMD_5: + case CMD_6: + case CMD_7: + case CMD_8: + case CMD_9: + if (!prev_was_number) + pr8210_add_command(0x1a); + pr8210_add_command(digits[command - CMD_0]); + pr8210_last_was_number = TRUE; + break; + + case CMD_SEARCH: + pr8210_add_command(0x1a); + playing = FALSE; + break; + } +} + + + +/************************************* + * + * LD-V1000 implementation + * + *************************************/ + +static void ldv1000_execute(const device_config *laserdisc, int command) +{ + static const UINT8 digits[10] = { 0x3f, 0x0f, 0x8f, 0x4f, 0x2f, 0xaf, 0x6f, 0x1f, 0x9f, 0x5f }; + switch (command) + { + case CMD_SCAN_REVERSE: + laserdisc_data_w(laserdisc, 0xf8); + playing = TRUE; + break; + + case CMD_SCAN_REVERSE_END: + laserdisc_data_w(laserdisc, 0xfd); + playing = TRUE; + break; + + case CMD_STEP_REVERSE: + laserdisc_data_w(laserdisc, 0xfe); + playing = FALSE; + break; + + case CMD_SCAN_FORWARD: + laserdisc_data_w(laserdisc, 0xf0); + playing = TRUE; + break; + + case CMD_SCAN_FORWARD_END: + laserdisc_data_w(laserdisc, 0xfd); + playing = TRUE; + break; + + case CMD_STEP_FORWARD: + laserdisc_data_w(laserdisc, 0xf6); + playing = FALSE; + break; + + case CMD_PLAY: + laserdisc_data_w(laserdisc, 0xfd); + playing = TRUE; + break; + + case CMD_PAUSE: + laserdisc_data_w(laserdisc, 0xa0); + playing = FALSE; + break; + + case CMD_DISPLAY_ON: + laserdisc_data_w(laserdisc, digits[1]); + laserdisc_data_w(laserdisc, 0xf1); + break; + + case CMD_DISPLAY_OFF: + laserdisc_data_w(laserdisc, digits[0]); + laserdisc_data_w(laserdisc, 0xf1); + break; + + case CMD_0: + case CMD_1: + case CMD_2: + case CMD_3: + case CMD_4: + case CMD_5: + case CMD_6: + case CMD_7: + case CMD_8: + case CMD_9: + laserdisc_data_w(laserdisc, digits[command - CMD_0]); + break; + + case CMD_SEARCH: + laserdisc_data_w(laserdisc, 0xf7); + playing = FALSE; + break; + } +} + + + +/************************************* + * * Port definitions * *************************************/ @@ -323,6 +479,14 @@ static MACHINE_DRIVER_START( ldv1000 ) MACHINE_DRIVER_END +static MACHINE_DRIVER_START( pr8210 ) + MDRV_IMPORT_FROM(ldplayer_ntsc) + MDRV_MACHINE_START(pr8210) + MDRV_MACHINE_RESET(pr8210) + MDRV_LASERDISC_ADD("laserdisc", PIONEER_PR8210) +MACHINE_DRIVER_END + + /************************************* * @@ -335,6 +499,11 @@ ROM_START( ldv1000 ) ROM_END +ROM_START( pr8210 ) + DISK_REGION( "laserdisc" ) +ROM_END + + /************************************* * @@ -406,6 +575,7 @@ static DRIVER_INIT( ldplayer ) static DRIVER_INIT( ldv1000 ) { execute_command = ldv1000_execute; DRIVER_INIT_CALL(ldplayer); } +static DRIVER_INIT( pr8210 ) { execute_command = pr8210_execute; DRIVER_INIT_CALL(ldplayer); } @@ -415,4 +585,5 @@ static DRIVER_INIT( ldv1000 ) { execute_command = ldv1000_execute; DRIVER_INIT_C * *************************************/ -GAME( 2008, ldv1000, 0, ldv1000, ldplayer, ldv1000, ROT0, "MAME", "LDV-1000 Simulator", 0 ) +GAME( 2008, ldv1000, 0, ldv1000, ldplayer, ldv1000, ROT0, "MAME", "Pioneer LDV-1000 Simulator", 0 ) +GAME( 2008, pr8210, 0, pr8210, ldplayer, pr8210, ROT0, "MAME", "Pioneer PR-8210 Simulator", 0 ) diff --git a/src/mame/audio/system16.c b/src/mame/audio/system16.c deleted file mode 100644 index b91c6cf9895..00000000000 --- a/src/mame/audio/system16.c +++ /dev/null @@ -1,115 +0,0 @@ -// system 16 - 7751 emulation, based on monster bash code. -#include "driver.h" -#include "cpu/i8039/i8039.h" -#include "sound/dac.h" - -static UINT32 port_8255_c03 = 0; -static UINT32 port_8255_c47 = 0; -static UINT32 port_7751_p27 = 0; -static UINT32 rom_offset = 0; -static UINT32 rom_base = 0; -static UINT32 rom_bank = 0; - -static TIMER_CALLBACK( trigger_7751_sound ) -{ - int data = param; - - /* I think this is correct for 128k sound roms, - it's OK for smaller roms */ - if((data&0xf) == 0xc) rom_bank=0; - else if((data&0xf) == 0xd) rom_bank=0x4000; - else if((data&0xf) == 0xb) rom_bank=0xc000; - else if((data&0xf) == 0xa) rom_bank=0x8000; - - else if((data&0xf) == 0xf) rom_bank=0x1c000; - else if((data&0xf) == 0xe) rom_bank=0x18000; - else if((data&0xf) == 0x7) rom_bank=0x14000; - else if((data&0xf) == 0x6) rom_bank=0x10000; - - port_8255_c03 = (data>>5); - - cpunum_set_input_line(machine, 2, 0, PULSE_LINE); -} - -// I'm sure this must be wrong, but it seems to work for quartet music. -WRITE8_HANDLER( sys16_7751_audio_8255_w ) -{ - logerror("7751: %4x %4x\n",data,data^0xff); - - if ((data & 0x0f) != 8) - { - cpunum_set_input_line(machine, 2, INPUT_LINE_RESET, PULSE_LINE); - timer_set(ATTOTIME_IN_USEC(300), NULL, data, trigger_7751_sound); - } -} - - -READ8_HANDLER( sys16_7751_audio_8255_r ) -{ - // Only PC4 is hooked up - /* 0x00 = BUSY, 0x10 = NOT BUSY */ - return (port_8255_c47 & 0x10); -} - -/* read from BUS */ -READ8_HANDLER( sys16_7751_sh_rom_r ) -{ - UINT8 *sound_rom = memory_region(machine, REGION_SOUND1); - - return sound_rom[rom_offset+rom_base]; -} - -/* read from T1 */ -READ8_HANDLER( sys16_7751_sh_t1_r ) -{ - // Labelled as "TEST", connected to ground - return 0; -} - -/* read from P2 */ -READ8_HANDLER( sys16_7751_sh_command_r ) -{ - // 8255's PC0-2 connects to 7751's S0-2 (P24-P26 on an 8048) - return ((port_8255_c03 & 0x07) << 4) | port_7751_p27; -} - -/* write to P1 */ -WRITE8_HANDLER( sys16_7751_sh_dac_w ) -{ - dac_data_w(0,data); -} - -/* write to P2 */ -WRITE8_HANDLER( sys16_7751_sh_busy_w ) -{ - port_8255_c03 = (data & 0x70) >> 4; - port_8255_c47 = (data & 0x80) >> 3; - port_7751_p27 = data & 0x80; - rom_base = rom_bank; -} - -/* write to P4 */ -WRITE8_HANDLER( sys16_7751_sh_offset_a0_a3_w ) -{ - rom_offset = (rom_offset & 0xFFF0) | (data & 0x0F); -} - -/* write to P5 */ -WRITE8_HANDLER( sys16_7751_sh_offset_a4_a7_w ) -{ - rom_offset = (rom_offset & 0xFF0F) | ((data & 0x0F) << 4); -} - -/* write to P6 */ -WRITE8_HANDLER( sys16_7751_sh_offset_a8_a11_w ) -{ - rom_offset = (rom_offset & 0xF0FF) | ((data & 0x0F) << 8); -} - -/* write to P7 */ -WRITE8_HANDLER( sys16_7751_sh_rom_select_w ) -{ - rom_offset = (rom_offset & 0x0FFF) | ((0x4000 + ((data&0xf) << 12)) & 0x3000); - -} - diff --git a/src/mame/drivers/igs_blit.c b/src/mame/drivers/igs_blit.c index 1c2e82dd692..49270644455 100644 --- a/src/mame/drivers/igs_blit.c +++ b/src/mame/drivers/igs_blit.c @@ -3365,17 +3365,17 @@ ROM_END ***************************************************************************/ -GAME( 1995, lhb, 0, lhb, lhb, lhb, ROT0, "IGS", "Long Hu Bang (V035C)", 0 ) -GAME( 1995, lhba, lhb, lhb, lhb, lhba, ROT0, "IGS", "Long Hu Bang (V033C)", 0 ) -GAME( 1995, dbc, 0, lhb, lhb, dbc, ROT0, "IGS", "Da Ban Cheng (V027H)", 0 ) -GAME( 1996, chmplst2, 0, chmplst2, chmplst2, chmplst2, ROT0, "IGS", "Long Hu Bang II (V185H)", 0 ) -GAME( 1996, xymg, 0, xymg, xymg, xymg, ROT0, "IGS", "PinYin: Xing Yun Man Guan (V651C)", 0 ) -GAME( 1996, grtwall, xymg, grtwall, grtwall, grtwall, ROT0, "IGS", "Wan Li Chang Cheng (V638C)", 0 ) -GAME( 1996, vbowl, 0, vbowl, vbowl, vbowl, ROT0, "IGS", "Virtua Bowling (World, V101XCM)", GAME_IMPERFECT_SOUND ) -GAME( 1996, vbowlj, vbowl, vbowl, vbowlj, vbowlj, ROT0, "IGS / Alta", "Virtua Bowling (Japan, V100JCM)", GAME_IMPERFECT_SOUND ) -GAME( 1997, drgnwrld, 0, chindrag, drgnwrld, drgnwrld, ROT0, "IGS", "Dragon World (World, V0400)", 0 ) -GAME( 1995, drgwrld3, drgnwrld, chindrag, drgnwrld, drgwrld3, ROT0, "IGS", "Dragon World (World, V0300)", 0 ) -GAME( 1995, chindrag, drgnwrld, chindrag, chindrag, chindrag, ROT0, "IGS / Alta", "Zhong Guo Long (Japan, V021J)", 0 ) -GAME( 1995, chugokur, drgnwrld, chindrag, chindrag, chugokur, ROT0, "IGS / Alta", "Zhong Guo Long (Japan, V020J)", 0 ) -GAME( 1995, chindrac, drgnwrld, chindrag, chindrac, chindrac, ROT0, "IGS", "Zhong Guo Long (China, V010C)", 0 ) -GAME( 1995, chindrah, drgnwrld, chindrag, chindrac, chindrah, ROT0, "IGS", "Zhong Guo Long? (Hong Kong, V011H)", 0 ) +GAME( 1995, lhb, 0, lhb, lhb, lhb, ROT0, "IGS", "Long Hu Bang (V035C)", 0 ) +GAME( 1995, lhba, lhb, lhb, lhb, lhba, ROT0, "IGS", "Long Hu Bang (V033C)", 0 ) +GAME( 1995, dbc, 0, lhb, lhb, dbc, ROT0, "IGS", "Da Ban Cheng (V027H)", 0 ) +GAME( 1996, chmplst2, 0, chmplst2, chmplst2, chmplst2, ROT0, "IGS", "Long Hu Bang II (V185H)", 0 ) +GAME( 1996, xymg, 0, xymg, xymg, xymg, ROT0, "IGS", "Xing Yun Man Guan (V651C)", 0 ) +GAME( 1996, grtwall, xymg, grtwall, grtwall, grtwall, ROT0, "IGS", "Wan Li Chang Cheng (V638C)", 0 ) +GAME( 1996, vbowl, 0, vbowl, vbowl, vbowl, ROT0, "IGS", "Virtua Bowling (World, V101XCM)", GAME_IMPERFECT_SOUND ) +GAME( 1996, vbowlj, vbowl, vbowl, vbowlj, vbowlj, ROT0, "IGS / Alta", "Virtua Bowling (Japan, V100JCM)", GAME_IMPERFECT_SOUND ) +GAME( 1997, drgnwrld, 0, chindrag, drgnwrld, drgnwrld, ROT0, "IGS", "Dragon World (World, V0400)", 0 ) +GAME( 1995, drgwrld3, drgnwrld, chindrag, drgnwrld, drgwrld3, ROT0, "IGS", "Dragon World (World, V0300)", 0 ) +GAME( 1995, chindrag, drgnwrld, chindrag, chindrag, chindrag, ROT0, "IGS / Alta", "Zhong Guo Long (Japan, V021J)", 0 ) +GAME( 1995, chugokur, drgnwrld, chindrag, chindrag, chugokur, ROT0, "IGS / Alta", "Zhong Guo Long (Japan, V020J)", 0 ) +GAME( 1995, chindrac, drgnwrld, chindrag, chindrac, chindrac, ROT0, "IGS", "Zhong Guo Long (China, V010C)", 0 ) +GAME( 1995, chindrah, drgnwrld, chindrag, chindrac, chindrah, ROT0, "IGS", "Dong Fang Zhi Zhu (Hong Kong, V011H)", 0 ) diff --git a/src/mame/drivers/system16.c b/src/mame/drivers/system16.c index b2f9e5302be..cbd205a5f06 100644 --- a/src/mame/drivers/system16.c +++ b/src/mame/drivers/system16.c @@ -186,21 +186,6 @@ static void sys16_video_config(void (*update)(void), int sprxoffs, const int *ba /***************************************************************************/ -// 7751 emulation -WRITE8_HANDLER( sys16_7751_audio_8255_w ); - READ8_HANDLER( sys16_7751_audio_8255_r ); - READ8_HANDLER( sys16_7751_sh_rom_r ); - READ8_HANDLER( sys16_7751_sh_t1_r ); - READ8_HANDLER( sys16_7751_sh_command_r ); -WRITE8_HANDLER( sys16_7751_sh_dac_w ); -WRITE8_HANDLER( sys16_7751_sh_busy_w ); -WRITE8_HANDLER( sys16_7751_sh_offset_a0_a3_w ); -WRITE8_HANDLER( sys16_7751_sh_offset_a4_a7_w ); -WRITE8_HANDLER( sys16_7751_sh_offset_a8_a11_w ); -WRITE8_HANDLER( sys16_7751_sh_rom_select_w ); - -/***************************************************************************/ - static UINT16 coinctrl; static WRITE16_HANDLER( sys16_3d_coinctrl_w ) |